- 390a1bf: Add an
E2Bclient to the Code Interpreter SDKs that binds the connection configuration explicitly, so the API key and domain no longer have to come from the environment variables:new E2B({ apiKey, domain }).Sandbox.create()in JavaScript andE2B(api_key=..., domain=...).Sandbox.create()in Python. The client exposes the package's ownSandbox(andAsyncSandboxin Python) together with the coreVolume,TemplateandSecretresources, per-call options still take precedence, and multiple clients are isolated from each other and from the env-configured top-level exports.
- 5a56c87: Bump past 2.9.2, which was already published to PyPI from the pre-migration e2b-dev/code-interpreter repository with different file contents, causing
uv publish --check-urlto fail during release.
- e1532e9: Move the Code Interpreter and Desktop JavaScript and Python SDKs into the E2B monorepo.
-
8d0a81b: Bump E2B SDK dependency: JavaScript to 2.39.0, Python to 2.39.1.
The Python floor is 2.39.1 specifically: e2b 2.38.0 moved the SDK's HTTP stack onto
pyqwestand dropped thehttp2parameter that Jupyter requests rely on to pin HTTP/1.1, so any e2b in>=2.38.0, <2.39.1raisesTypeErroron every code execution. 2.39.1 restores it.Also fixes
run_code'stimeoutin the Python SDK. The new transport collapses httpx's per-phase timeouts into a single whole-request deadline and takes the longest phase, so passingtimeoutas the read timeout alongsiderequest_timeouton the write and pool phases made the effective deadlinemax(timeout, request_timeout)— anytimeoutshorter thanrequest_timeout(60s by default) was ignored and the execution ran on untilrequest_timeout.timeoutnow bounds the request on its own, andtimeout=0disables the deadline instead of inheriting the connect timeout.