UNPKG

eve

Version:

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

1 lines 1.07 kB
import{createLogger,logError}from"#internal/logging.js";import{ContextContainer}from"#context/container.js";import{resolveKey}from"#context/key.js";import{BundleKey}from"#runtime/sessions/runtime-context-keys.js";const log=createLogger(`context.serialize`);function serializeContext(e){let t={};for(let[n,r]of e.entries())try{t[n.name]=n.codec?n.codec.serialize(r):r}catch(e){throw logError(log,`failed to serialize context key`,e,{key:n.name}),e}return t}async function deserializeContext(e){let t=new ContextContainer,n=e[BundleKey.name];if(n!==void 0){let e=BundleKey.codec;if(e===void 0)throw Error(`Context key "eve.bundle" is missing a codec.`);t.set(BundleKey,await e.deserialize(n,t))}for(let[n,r]of Object.entries(e)){if(r===void 0||n===BundleKey.name)continue;let e=resolveKey(n);if(e===void 0){log.warn(`dropping unknown context key during deserialization`,{key:n});continue}try{t.set(e,e.codec?await e.codec.deserialize(r,t):r)}catch(e){throw logError(log,`failed to deserialize context key`,e,{key:n}),e}}return t}export{deserializeContext,serializeContext};