UNPKG

eve

Version:

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

1 lines • 1.3 kB
import{createHash}from"node:crypto";import{readFile}from"node:fs/promises";import{getAuthoredModuleExport}from"#internal/authored-module.js";import{getBoundSandboxEnvironment,isSandboxEnvironment}from"#shared/sandbox-environment.js";const PARENT=Symbol.for(`eve.sandbox-parent-definition`),SELECTOR=Symbol.for(`eve.sandbox-selector`);async function compileSandboxDefinition(e,t,n){let r=await n.loadNamespace(t.sourceId),i=getAuthoredModuleExport(r,t);if(typeof i!=`function`||Reflect.get(i,SELECTOR)!==!0)throw Error(`Expected sandbox "${t.logicalPath}" to default-export defineSandbox().`);let a=Reflect.get(i,PARENT)===!0,o=isSandboxEnvironment(r.environment)?r.environment:getBoundSandboxEnvironment(i);if(!a&&o===void 0)throw Error(`Sandbox "${t.logicalPath}" must export an environment.`);let s=n.binding.backing.kind===`programmatic`?n.binding.backing.semanticRevision??n.binding.backing.revision:await readFile(n.binding.backing.sourcePath),c=createHash(`sha256`).update(`sandbox-source\0`).update(s);return{providerName:o?.provider,environmentExportName:isSandboxEnvironment(r.environment)?`environment`:void 0,exportName:t.exportName,inheritsParent:a||void 0,logicalPath:t.logicalPath,revisionHash:c.digest(`hex`),sourceId:t.sourceId,sourceKind:`module`}}export{compileSandboxDefinition};