eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.33 kB
JavaScript
import{isObject}from"#shared/guards.js";function readLegacyTurnInput(e){if(!isObject(e)||e.version!==1&&e.version!==2)throw Error(`Unsupported legacy turn input version.`);let t=e.stepInput;if(!isObject(t)||typeof e.completionToken!=`string`||!e.completionToken||e.mode!==`conversation`&&e.mode!==`task`)throw Error(`Invalid legacy turn input.`);let n=isObject(e.initialStep)&&isObject(e.initialStep.result)?e.initialStep.result:void 0,r=(n?.action===`cancelled`?n.backgroundTaskState:void 0)??n?.sessionState??n?.backgroundTaskState??t.sessionState,i=n?.serializedContext??n?.backgroundTaskContext??t.serializedContext;if(!isObject(r)||typeof r.sessionId!=`string`||!r.sessionId||!isObject(i)||t.parentWritable===void 0)throw Error(`Legacy turn input has no session checkpoint or output stream.`);let a=t.input;if(n===void 0&&a!==void 0&&(!isObject(a)||![`deliver`,`clear`,`compact`,`runtime-action-result`].includes(String(a.kind))||a.kind===`deliver`&&!Array.isArray(a.payloads)))throw Error(`Unsupported legacy turn delivery.`);let o=n===void 0&&isObject(a)&&a.kind===`deliver`?a:void 0;return{completionToken:e.completionToken,mode:e.mode,capabilities:e.capabilities,retention:e.retention,sessionWritable:t.parentWritable,serializedContext:i,sessionState:r,delivery:o,inputCommitted:n!==void 0}}export{readLegacyTurnInput};