UNPKG

eve

Version:

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

1 lines • 1.56 kB
import{readLegacyTurnInput}from"./input.js";import{importConversation,readLegacySnapshot}from"./snapshot.js";import{isObject}from"#shared/guards.js";import{SESSION_INBOX_CONTEXT_KEY}from"#execution/session-inbox/address.js";import{getWorld,resolveRunEncryptionKey}from"#internal/workflow/runtime.js";import{hydrateWorkflowArguments}from"#compiled/@workflow/core/serialization.js";import{DEFAULT_SESSION_TIMEOUT_MS}from"#execution/session/timeout.js";async function prepareLegacySessionStep(e){"use step";let t=readLegacyTurnInput(e),n=readLegacySnapshot(t.sessionState),r=importConversation(n),i=await getWorld(),a=await i.runs.get(r.sessionId),o=await hydrateWorkflowArguments(a.input,a.runId,await resolveRunEncryptionKey(i,a)),s=Array.isArray(o)&&isObject(o[0])?o[0]:void 0;if(s===void 0)throw Error(`Cannot read the original session timeout.`);let c=s.sessionTimeoutMs;if(c!==void 0&&c!==!1&&(typeof c!=`number`||!Number.isFinite(c)||c<0))throw Error(`Invalid original session timeout.`);let l=c??DEFAULT_SESSION_TIMEOUT_MS,u={...t.serializedContext,"eve.sessionId":r.sessionId,[SESSION_INBOX_CONTEXT_KEY]:{sessionId:r.sessionId}};delete u[`eve.sessionCallback`];let d=u[`eve.channel`];return isObject(d)&&d.kind===`subagent`&&isObject(d.state)&&(u[`eve.channel`]={...d,state:{...d.state,parentContinuationToken:``}}),{input:{...t,retention:t.retention??s.retention},originalSession:n,sessionState:r,serializedContext:u,sessionTimeoutMs:l,deploymentId:process.env.VERCEL_DEPLOYMENT_ID?.trim()||await i.getDeploymentId()}}export{prepareLegacySessionStep};