UNPKG

eve

Version:

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

1 lines 924 B
import{createActionsRequestedEvent}from"#protocol/message.js";function createProviderStreamActionBatch(t){let n=new Map,r=Promise.resolve(),i,a,o=!1,s,emitPendingActions=async()=>{if(o){n.clear();return}if(n.size===0)return;let r=[...n.values()];n.clear(),await t.emitFn(createActionsRequestedEvent({actions:r,sequence:t.state.sequence,stepIndex:t.state.stepIndex,turnId:t.state.turnId}))},scheduleFlush=()=>{if(o||a!==void 0)return;let e,t=new Promise(t=>{e=t});s=e,a=setTimeout(()=>{a=void 0,s=void 0,e?.()},0),r=r.then(()=>t).then(emitPendingActions).catch(e=>{i??=e})},releaseFlushTimer=()=>{if(a===void 0)return;clearTimeout(a),a=void 0;let e=s;s=void 0,e?.()};return{async cancel(){o=!0,n.clear(),releaseFlushTimer(),await r},observe(e){o||(n.set(e.callId,e),scheduleFlush())},async flush(){if(!o){if(releaseFlushTimer(),await r,i!==void 0)throw i;await emitPendingActions()}}}}export{createProviderStreamActionBatch};