eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.43 kB
JavaScript
import{sendTurnControlStep}from"#execution/turn-control-protocol.js";var TurnExecutionCursor=class{controlToken;parentWritable;currentSerializedContext;currentSessionState;lastReportedContinuationToken;constructor(e){this.controlToken=e.controlToken,this.currentSerializedContext=e.serializedContext,this.currentSessionState=e.sessionState,this.lastReportedContinuationToken=e.sessionState.continuationToken,this.parentWritable=e.parentWritable}get serializedContext(){return this.currentSerializedContext}get sessionState(){return this.currentSessionState}async adopt(e){this.setState(e);let t=e.sessionState.continuationToken;t===``||t===this.lastReportedContinuationToken||(this.lastReportedContinuationToken=t,await this.send({continuationToken:t,kind:`turn-continuation-token`}))}createStepInput(e,t){return{abortSignal:t,input:e,parentWritable:this.parentWritable,serializedContext:this.currentSerializedContext,sessionState:this.currentSessionState}}async finish(e,t,n){this.setState(e),await this.send({action:{...t,serializedContext:this.currentSerializedContext,sessionState:this.currentSessionState},bufferedDeliveries:n.length===0?void 0:[...n],kind:`turn-result`})}async send(t){await sendTurnControlStep({controlToken:this.controlToken,payload:t})}setState(e){this.currentSerializedContext=e.serializedContext??this.currentSerializedContext,this.currentSessionState=e.sessionState}};export{TurnExecutionCursor};