feat(sandbox-adapter): add sandbox providers for agentOS, E2B, and Daytona - #5799
eersnington wants to merge 3 commits into
Conversation
|
This PR was not deployed automatically as @eersnington does not have access to the Railway project. In order to get automatic PR deploys, please add @eersnington to your workspace on Railway. |
|
Review: The interface is small and the providers are easy to follow. Most findings concern contract consistency across providers. I read the code only; I did not build or run anything. Bugs and contract gaps
Design and API
Tests Housekeeping
|
| const kill = () => void handle.kill(); | ||
| options.signal?.addEventListener("abort", kill, { once: true }); |
There was a problem hiding this comment.
🟠 Medium · Handle signals that abort before the listener is attached
AbortSignal.addEventListener does not replay an abort that already happened. If the signal is pre-aborted, or aborts while commands.run is awaiting startup, this listener never kills the handle; exec waits for the command to finish and only then throws. Check signal.aborted before launching and again immediately after acquiring the handle (killing it in the latter case) before installing the listener.
e89e085 to
c791b5c
Compare
c791b5c to
608d1c4
Compare
608d1c4 to
dd527df
Compare
Adds
@rivet-dev/sandbox-adapter, where an agent's file and shell tools run.SandboxProvidercreates, connects, suspends, and destroys one sandbox per actor.Sandboxisexecplus file operations.agentOSactor (poolservices), so the app registers nothing. The VM sleeps when idle and is kept when the agent is destroyed.SandboxProvider.This is part 1 of 3 in a stack: