eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.86 kB
JavaScript
import{expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{lazyBackend}from"#execution/sandbox/lazy-backend.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{defaultSandbox}from"#public/sandbox/backends/default.js";async function resolveSandboxDefinition(e,t,n){try{let r=e.inheritsParent?void 0:await loadResolvedModuleExport({definition:e,kindLabel:`sandbox`,moduleMap:t,nodeId:n}),i=e.inheritsParent?{}:expectObjectRecord(r,`Expected the sandbox export "${e.exportName??`default`}" from "${e.logicalPath}" to return an object.`);return{backend:resolveBackend(i.backend,e.logicalPath),bootstrap:i.bootstrap,description:e.description,inheritsParent:e.inheritsParent,exportName:e.exportName,logicalPath:e.logicalPath,onSession:i.onSession,revalidationKey:e.revalidationKey,sourceHash:e.sourceHash,sourceId:e.sourceId,sourceKind:`module`}}catch(t){throw t instanceof ResolveAgentError?t:new ResolveAgentError(`Failed to attach the sandbox lifecycle handlers from "${e.logicalPath}": ${toErrorMessage(t)}`,{logicalPath:e.logicalPath,sourceId:e.sourceId})}}function resolveBackend(e,t){if(e===void 0)return defaultSandbox();if(typeof e==`function`)return lazyBackend(e);if(typeof e!=`object`||!e)throw new ResolveAgentError(`Sandbox "${t}" exposed a non-object "backend" field. Use docker(), vercel(), another factory that returns a SandboxBackend value, or a zero-arg callback returning one.`,{logicalPath:t});let n=e;if(typeof n.name!=`string`||n.name.length===0)throw new ResolveAgentError(`Sandbox "${t}" backend is missing a non-empty string "name" identifier.`,{logicalPath:t});if(typeof n.create!=`function`)throw new ResolveAgentError(`Sandbox "${t}" backend is missing a "create" function.`,{logicalPath:t});return n}export{resolveSandboxDefinition};