d21b936bf7
## Summary When `lifecycle.on_timeout` is set it wins; otherwise we fall back to the `auto_pause` argument. Previously the Python SDKs subscripted `lifecycle["on_timeout"]`, which raised `KeyError` if a caller passed a `lifecycle` dict missing that key (TypedDict is not enforced at runtime). The JS SDK silently used the whole `lifecycle` object even when `onTimeout` was undefined. In both cases, mixing `lifecycle` and `auto_pause` had inconsistent and surprising behavior across the public surfaces (`create` vs `beta_create`). Now both SDKs use `.get`/optional chaining on `on_timeout` and only treat `lifecycle` as authoritative when that field is actually present. Touched files: - `packages/python-sdk/e2b/sandbox_async/sandbox_api.py` - `packages/python-sdk/e2b/sandbox_sync/sandbox_api.py` - `packages/js-sdk/src/sandbox/sandboxApi.ts` --------- Co-authored-by: Jakub Novak <jakub@e2b.dev>
What is E2B?
E2B is an open-source infrastructure that allows you to run AI-generated code in secure isolated sandboxes in the cloud. To start and control sandboxes, use our JavaScript SDK or Python SDK.
Run your first Sandbox
1. Install SDK
npm i e2b
2. Get your E2B API key
E2B_API_KEY=e2b_***
3. Start a sandbox and run commands
import Sandbox from 'e2b'
const sandbox = await Sandbox.create()
const result = await sandbox.commands.run('echo "Hello from E2B!"')
console.log(result.stdout) // Hello from E2B!
4. Code execution with Code Interpreter
If you need runCode(), install the Code Interpreter SDK:
npm i @e2b/code-interpreter
import { Sandbox } from '@e2b/code-interpreter'
const sandbox = await Sandbox.create()
const execution = await sandbox.runCode('x = 1; x += 1; x')
console.log(execution.text) // outputs 2
5. Check docs
Visit E2B documentation.
6. E2B cookbook
Visit our Cookbook to get inspired by examples with different LLMs and AI frameworks.
