eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 911 B
JavaScript
import{isCurrentTurnBoundaryEvent,isTurnFailureEvent}from"#protocol/message.js";function summarizeTurnEvents(e){let t,n,r,i=[],a=new Map;for(let o of e)isCurrentTurnBoundaryEvent(o)&&(t=o),isTurnFailureEvent(o)&&(n=o),isFinalMessageCompleted(o)&&(r=o.data.message??void 0),o.type===`input.requested`&&i.push(...o.data.requests),o.type===`authorization.required`&&a.set(o.data.name,o.data),o.type===`authorization.completed`&&a.delete(o.data.name);return{boundary:t,failure:n,inputRequests:i,message:r,pendingAuthorizations:[...a.values()],status:t?.type===`session.waiting`?`waiting`:t?.type===`session.failed`?`failed`:`completed`}}async function collectTurnEvents(e){let t=[];for await(let n of e)if(t.push(n),isCurrentTurnBoundaryEvent(n))break;return t}function isFinalMessageCompleted(e){return e.type===`message.completed`&&e.data.finishReason!==`tool-calls`}export{collectTurnEvents,summarizeTurnEvents};