eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.32 kB
JavaScript
import{getAdapterKind}from"#channel/adapter.js";import{contextStorage}from"#context/container.js";import{SandboxKey,SessionIdKey}from"#context/keys.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{getActiveRuntimeNode}from"#context/node.js";import{ensureSandboxAccess}from"#execution/sandbox/ensure.js";const sandboxProvider={key:SandboxKey,async create(e,t){let n=e.get(BundleKey);if(n===void 0)return;let r=getActiveRuntimeNode(e),i=r.sandboxRegistry,a=e.require(SessionIdKey),o=e.get(ChannelKey),s=o?.state,c=s?.parentSandboxState,l=i.sandbox?.definition.inheritsParent===!0,u=s?.sandboxSessionId,d=l||u!==void 0,f=d?u??a:a;return{value:await ensureSandboxAccess({compiledArtifactsSource:n.compiledArtifactsSource,nodeId:r.nodeId,ownsSandbox:!d,registry:i,runOnSession:async t=>await contextStorage.run(e,t),sessionId:f,state:t.sandboxState??(d?c:void 0)??null,tags:{agent:resolveTagAgentName({bundle:n,node:r}),channel:resolveTagChannelKind(o),sessionId:a}})}},async commit(e,t){let n=await e.captureState();return{...t,sandboxState:n}}};function resolveTagAgentName(e){let t=e.node,n=e.bundle;return t.agent?.config?.name??n.resolvedAgent?.config?.name??t.nodeId??`unknown`}function resolveTagChannelKind(e){return e===void 0?`unknown`:getAdapterKind(e)}export{sandboxProvider};