eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.59 kB
JavaScript
import{expectFunction,expectObjectRecord,expectOnlyKnownKeys}from"#internal/authored-module.js";import{lazyBackend}from"#execution/sandbox/lazy-backend.js";function normalizeSandboxDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`backend`,`bootstrap`,`description`,`onSession`,`revalidationKey`],t);let r={};if(n.backend!==void 0&&(r.backend=expectSandboxBackend(n.backend,t)),n.description!==void 0){if(typeof n.description!=`string`)throw Error(`${t} The "description" field must be a string when set.`);r.description=n.description}if(n.bootstrap!==void 0&&(r.bootstrap=expectFunction(n.bootstrap,t)),n.revalidationKey!==void 0&&(r.revalidationKey=expectFunction(n.revalidationKey,t)),r.bootstrap===void 0&&r.revalidationKey!==void 0)throw Error(`${t} The "revalidationKey" field can only be set when "bootstrap" is set.`);return n.onSession!==void 0&&(r.onSession=expectFunction(n.onSession,t)),r}function expectSandboxBackend(e,t){if(typeof e==`function`)return lazyBackend(e);let n=expectObjectRecord(e,`${t} The "backend" field must be a SandboxBackend value (use docker(), vercel(), or your own factory) or a zero-arg function returning one.`);if(typeof n.name!=`string`||n.name.length===0)throw Error(`${t} The "backend" value must expose a non-empty string "name" identifier.`);if(typeof n.create!=`function`)throw Error(`${t} The "backend" value must expose a "create" function.`);if(n.prewarm!==void 0&&typeof n.prewarm!=`function`)throw Error(`${t} The "backend.prewarm" property must be a function when set.`);return n}export{normalizeSandboxDefinition};