UNPKG

eve

Version:

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

1 lines • 2.35 kB
import{isObject}from"#shared/guards.js";import{sessionCommandHookToken,sessionInboxHookToken}from"#execution/session-inbox/address.js";import{getHookByToken,resumeHook}from"#internal/workflow/runtime.js";import{HookNotFoundError}from"#compiled/@workflow/errors/index.js";import{coalesceDeliverPayloads}from"#execution/deliver-payloads.js";var UnsupportedLegacySessionError=class extends Error{constructor(){super(`This session predates eve 0.45 and cannot be continued. Start a new session.`),this.name=`UnsupportedLegacySessionError`}};async function resolveLegacyInbox(e){let t=await getHookByToken(e),n=await t.metadata,r=isObject(n)&&typeof n.sessionId==`string`?n.sessionId:t.runId;try{return{hook:await getHookByToken(sessionInboxHookToken(sessionCommandHookToken(r))),sessionId:r,current:!0}}catch(e){if(!HookNotFoundError.is(e))throw e;return{hook:t,sessionId:r,current:!1}}}async function resumeLegacyInbox(e,t){let n=await resolveLegacyInbox(e),r=t;if(!n.current){let e=await n.hook.metadata;r=encodeLegacyCommand(t,isObject(e)?e.sessionInboxWireVersion:void 0)}return{ownerRunId:(await resumeHook(n.hook.token,r)).runId,sessionId:Promise.resolve(n.sessionId)}}function encodeLegacyCommand(e,t){let n=t;if(typeof n!=`number`||!Number.isInteger(n)||n<1||n>7)throw new UnsupportedLegacySessionError;if(e.kind!==`send`&&e.kind!==`deliver`){let t={...e,version:n};if(e.kind===`cancel`&&n<6){if(e.tasks===!0)throw Error(`This session cannot cancel owned tasks before import.`);delete t.tasks}return t}let r=(e.kind===`send`?[e.payload]:e.payloads).map(e=>{if(e.task===void 0||n>=5)return e;let{agentRequests:t,inputRequests:r,...i}=e.task;return{...e,task:i}}),i=e.caller;if(i?.activityObserver!==void 0&&n<7){let{activityObserver:e,...t}=i;if(n<2)i=t;else{let n=e.workIdentity===void 0?void 0:{...e.workIdentity};n!==void 0&&delete n.label,i={...t,activityObserver:{...e,workIdentity:n}}}}let a=e.kind===`send`?e.delivery===void 0?void 0:[{...e.delivery,payloadIndex:0}]:e.deliveryMetadata;return n<3&&a!==void 0&&(a=a.map(({acceptedDeploymentId:e,...t})=>t)),{auth:e.auth,caller:i,deliveryMetadata:a,kind:`deliver`,payload:coalesceDeliverPayloads(r),payloads:r,requestId:e.requestId,taskDeliveryId:e.taskDeliveryId,turnPolicy:e.turnPolicy,version:n}}export{UnsupportedLegacySessionError,encodeLegacyCommand,resolveLegacyInbox,resumeLegacyInbox};