eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.07 kB
JavaScript
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 i=new ContextContainer,a=e[BundleKey.name];if(a!==void 0){let e=BundleKey.codec;if(e===void 0)throw Error(`Context key "eve.bundle" is missing a codec.`);i.set(BundleKey,await e.deserialize(a,i))}for(let[t,a]of Object.entries(e)){if(a===void 0||t===BundleKey.name)continue;let e=resolveKey(t);if(e===void 0){log.warn(`dropping unknown context key during deserialization`,{key:t});continue}try{i.set(e,e.codec?await e.codec.deserialize(a,i):a)}catch(e){throw logError(log,`failed to deserialize context key`,e,{key:t}),e}}return i}export{deserializeContext,serializeContext};