Jakub Novák
edc138cbf9
Improve envd version handling ( #920 )
...
The envd is always present, so we can simplify the handling + pass it to
filesystem module as a preparation for stdin
2025-09-26 14:59:34 -07:00
github-actions[bot]
4de9dabca0
[skip ci] Release new versions
2025-09-26 13:44:26 +00:00
Jakub Dobry
2ec9ea8a44
feat: add template init for new template SDK ( #881 )
@e2b/cli@2.2.4
2025-09-26 06:40:58 -07:00
github-actions[bot]
ae19d941f0
[skip ci] Release new versions
2025-09-26 12:09:44 +00:00
Jakub Novák
d90c201cf3
Update docstring in toml after CLI template build ( #868 )
...
Forgotten text with old way how to create sandbox in sync Python
@e2b/cli@2.2.3
2025-09-26 12:06:27 +00:00
Jakub Dobry
4b463bd09b
Fix template SDK tests ( #918 )
2025-09-26 05:01:41 -07:00
github-actions[bot]
0726589667
[skip ci] Release new versions
2025-09-25 09:12:18 +00:00
Jakub Dobry
b43793ceb9
Fix CLI template migrate copy target ( #915 )
@e2b/cli@2.2.2
2025-09-25 02:09:04 -07:00
Tomas Valenta
a730bff1f1
Fix sandbox auto-pause doc syntax ( #914 )
...
This PR includes the changes from
https://github.com/e2b-dev/E2B/pull/913 , as the workflows there are not
properly configured to handle external PRs without any change.
---------
Co-authored-by: wong2 <wonderfuly@gmail.com >
2025-09-23 11:31:33 -07:00
uucloud
2fc839197d
fix: resuming sandbox docs can't print sandbox id ( #912 )
2025-09-22 00:37:39 -07:00
github-actions[bot]
138f85dd07
[skip ci] Release new versions
2025-09-19 19:03:53 +00:00
Jakub Dobry
e81c59be8c
Fix template folder copy ( #911 )
@e2b/python-sdk@2.1.4
e2b@2.1.5
2025-09-19 18:55:07 +00:00
github-actions[bot]
2eeca3f807
[skip ci] Release new versions
2025-09-19 15:44:52 +00:00
Jakub Dobry
b9c4b16baa
feat: add template migration to CLI ( #880 )
...
## 🔄 Add Template Migration to CLI
### Summary
This PR introduces a new `migrate` command to the E2B CLI that helps
users transition from the legacy Dockerfile + TOML configuration format
to the new Template SDK format. The migration tool automatically
converts existing `e2b.Dockerfile` and `e2b.toml` configurations into
SDK-compatible template files using Handlebars templates.
### What's Changed
#### ✨ New Features
- **Template Migration Command**: Added `e2b template migrate` command
for converting legacy configurations to SDK format
- **Multi-Language Support**: Supports migration to TypeScript, Python
(sync), and Python (async) formats
- **Interactive Language Selection**: CLI prompts for target language
when not specified
- **Multi-stage Dockerfile Support**: Added fallback handling for
complex multi-stage Dockerfiles
#### 🔧 Technical Improvements
- **Enhanced ENV Handling**: Improved parsing of multiple environment
variables from single ENV instructions
- **File Name Conflict Resolution**: Automatic unique filename
generation to prevent overwriting existing files
- **Comprehensive Template Generation**: Creates both development and
production build files
#### 📁 New Template Files
- `typescript-template.hbs` - TypeScript template generation
- `typescript-build.hbs` - TypeScript build script template
- `python-template.hbs` - Python template generation (supports both
sync/async)
- `python-build-async.hbs` - Python async build script template
- `python-build-sync.hbs` - Python sync build script template
### Usage
```bash
# Migrate with interactive language selection
e2b template migrate
# Migrate to specific language
e2b template migrate --language typescript
e2b template migrate --language python-sync
e2b template migrate --language python-async
# Custom paths
e2b template migrate --dockerfile custom.dockerfile --config custom.toml
```
### Generated Output
The migration command generates three files per target:
- `template.{ts|py}` - Template definition using SDK
- `build{.|_}dev.{ts|py}` - Development build script
- `build{.|_}prod.{ts|py}` - Production build script
### Migration Process
1. **Parse Configuration**: Reads `e2b.toml` for template settings
2. **Dockerfile Analysis**: Uses E2B SDK to parse Dockerfile
instructions
3. **Transformation**: Converts Docker instructions to SDK method calls
4. **Code Generation**: Uses Handlebars templates to generate target
language files
5. **File Creation**: Writes template and build files with conflict
resolution
### Error Handling
- **Graceful Dockerfile Parsing**: Falls back to custom image reference
for unparseable Dockerfiles
- **Clear User Guidance**: Provides manual build instructions when
automatic conversion fails
- **Validation**: Ensures required configuration files exist before
migration
@e2b/cli@2.2.1
2025-09-19 17:41:28 +02:00
github-actions[bot]
8255ba42c0
[skip ci] Release new versions
2025-09-19 10:40:39 +00:00
Mish Ushakov
9f9e2a8f20
Render failed layer stack traces on build error ( #901 )
...
### Changelog
- Added traces for Python and JavaScript SDK.
- Added methods for stack trace collection, stack trace context
- Updated file upload mechanism for tracing
- Changed API handling to support throwing API errors with traces
> **Note**
> For functions like `aptInstall`, `fromRegistry` which call `.run` and
`.fromImage`, the stack trace has to be replaced so it throws correctly
from parent.
> **Note**
> There are no build logs in the trace, we can add this at later point.
### Examples
Keep in mind that the way the traces are rendered entirely depends on
environment (Bun, Node, Deno, Vitest, Pytest)
**Standard Python**
```
Traceback (most recent call last):
File "/Users/mish/Documents/Projects/E2B/E2B/packages/python-sdk/tests/sync/template_sync/test_stacktrace.py", line 17, in <module>
Template.build(
~~~~~~~~~~~~~~^
template,
^^^^^^^^^
...<2 lines>...
memory_mb=1024,
^^^^^^^^^^^^^^^
)
^
File "/Users/mish/Documents/Projects/E2B/E2B/packages/python-sdk/e2b/template_sync/main.py", line 157, in build
wait_for_build_finish(
~~~~~~~~~~~~~~~~~~~~~^
api_client,
^^^^^^^^^^^
...<4 lines>...
stack_traces=template._template._stack_traces,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/mish/Documents/Projects/E2B/E2B/packages/python-sdk/e2b/template_sync/build_api.py", line 199, in wait_for_build_finish
raise BuildException(error_message).with_traceback(stack_trace)
File "/Users/mish/Documents/Projects/E2B/E2B/packages/python-sdk/tests/sync/template_sync/test_stacktrace.py", line 12, in <module>
.run_cmd("cat non_existing_file.txt")
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
e2b.template.exceptions.BuildException: failed to run command: exit status 1
```
**Pytest**
```
[gw0] darwin -- Python 3.13.3 /Users/mish/Library/Caches/pypoetry/virtualenvs/e2b-e6GdLxLZ-py3.13/bin/python
@pytest.mark.skip_debug()
def test_build():
template = (
Template()
.from_image("ubuntu:22.04")
.run_cmd("cat non_existing_file.txt")
.set_workdir("/app")
.set_start_cmd("echo 'Hello, world!'", wait_for_timeout(10_000))
)
# try:
> Template.build(
template,
alias=str(uuid4()),
cpu_count=1,
memory_mb=1024,
)
tests/sync/template_sync/test_stacktrace.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
e2b/template_sync/main.py:157: in build
wait_for_build_finish(
e2b/template_sync/build_api.py:199: in wait_for_build_finish
raise BuildException(error_message).with_traceback(stack_trace)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
@pytest.mark.skip_debug()
def test_build():
template = (
Template()
.from_image("ubuntu:22.04")
> .run_cmd("cat non_existing_file.txt")
.set_workdir("/app")
.set_start_cmd("echo 'Hello, world!'", wait_for_timeout(10_000))
)
E e2b.template.exceptions.BuildException: failed to run command: exit status 1
tests/sync/template_sync/test_stacktrace.py:12: BuildException
========================================================== short test summary info ==========================================================
FAILED tests/sync/template_sync/test_stacktrace.py::test_build - e2b.template.exceptions.BuildException: failed to run command: exit status 1
```
**Node**
```
node:internal/modules/run_main:104
triggerUncaughtException(
^
at file:///Users/mish/Documents/Projects/E2B/E2B/packages/js-sdk/tests/template/trace.test.mts:8:4
at ModuleJob.run (node:internal/modules/esm/module_job:274:25)
at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:644:26)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:98:5) {
name: 'BuildError'
}
Node.js v23.11.0
```
**Bun**
```
1 | export class BuildError extends Error {
2 | constructor(message: string, stackTrace?: string) {
3 | super(message)
^
BuildError: failed to run command: exit status 1
at /Users/mish/Documents/Projects/E2B/E2B/packages/js-sdk/src/template/errors.ts:3:5
Bun v1.2.4 (macOS arm64)
```
**Vitest**
```
BuildError: failed to run command: exit status 1
❯ tests/template/trace.test.ts:8:6
6| const template = Template()
7| .fromImage('ubuntu:22.04')
8| .runCmd('cat folder/test.txt')
| ^
9| .setWorkdir('/app')
10| .setStartCmd('echo "Hello, world!"', waitForTimeout(10_000))
```
---------
Co-authored-by: Jakub Dobry <jakub.dobry8@gmail.com >
@e2b/python-sdk@2.1.3
e2b@2.1.4
2025-09-19 12:34:08 +02:00
Tomas Valenta
345b2c4b4e
Fix outdated example in docs ( #910 )
2025-09-16 18:27:29 +00:00
github-actions[bot]
fba88a7aea
[skip ci] Release new versions
2025-09-15 05:30:29 +00:00
Mish Ushakov
c6efe1f26c
CLI: format table > pretty to match rest of DX, added docs ( #905 )
...
Follow up my last PR, improves DX consistency and added docs.
Changelog
- format "table" > "pretty" to match other commands (metrics, logs)
- added doc section
@e2b/cli@2.2.0
2025-09-14 22:27:29 -07:00
github-actions[bot]
742ed67a80
[skip ci] Release new versions
2025-09-12 19:51:16 +00:00
Mish Ushakov
2a346bfcd2
Added format option to CLI sandbox + templates list ( #903 )
...
This PR is based on https://github.com/e2b-dev/E2B/pull/902 , please
proceed with that first
**Changelog**
- Added `--format` option to "e2b sandbox list" and "e2b template list".
Can either be "table" or "json"
Sandboxes list in JSON format
<img width="471" height="341" alt="Screenshot 2025-09-12 at 11 17 45"
src="https://github.com/user-attachments/assets/13455b62-5efb-4b11-8fe3-a39b3fb6dffc "
/>
Templates list in JSON format
<img width="449" height="377" alt="Screenshot 2025-09-12 at 11 18 55"
src="https://github.com/user-attachments/assets/47fa3c2b-2e4c-4854-a87f-65c325261521 "
/>
2025-09-12 21:47:07 +02:00
Mish Ushakov
a116679b87
CLI: Refactored sandbox kill command ( #904 )
...
**Changelog**
- Added ability to pass multiple sandbox ids to "sbx kill id1 id2 id3"
- Added ability to filter sandboxes to be killed by metadata and by
state using --state, --metadata (requires --all)
- Fixed metadata parser and moved to utils
@e2b/cli@2.1.0
2025-09-12 21:45:25 +02:00
github-actions[bot]
9cbcaa40c4
[skip ci] Release new versions
2025-09-09 19:57:39 +00:00
Mish Ushakov
3d6418184f
Add custom registries support for pulling base images ( #897 )
...
### Changelog
- added support for pulling base images from AWS, Docker, GCP
registries.
- removed unnecessary conversion in build_api.py.
- synced serialize implementation in TypeScript and Python.
- added Cursor Pylance config (side-effect, can delete if unwanted).
### Examples
**TypeScript**
```ts
import { Template } from 'e2b'
// Generic Docker registry
Template().fromRegistry('ubuntu:22.04', {
username: 'jirka',
password: 'password',
})
// AWS ECR registry
Template().fromAWSRegistry('ubuntu:22.04', {
accessKeyId: '123',
secretAccessKey: '456',
region: 'eu-west-1',
})
// GCP GCR registry from file path
Template().fromGCPRegistry('ubuntu:22.04', {
serviceAccountJSON: './service_account.json',
})
// GCP GCR registry from object
Template().fromGCPRegistry('ubuntu:22.04', {
serviceAccountJSON: { project_id: '123', private_key_id: '456' },
})
```
**Python**
```py
from e2b import Template
# Generic Docker registry
Template().from_registry(
image="ubuntu:22.04",
username="jirka",
password="password",
)
# AWS ECR registry
Template().from_aws_registry(
image="ubuntu:22.04",
access_key_id="123",
secret_access_key="456",
region="eu-west-1",
)
# GCP GCR registry from file path
Template().from_gcp_registry(
image="ubuntu:22.04",
service_account_json="./service_account.json",
)
# GCP GCR registry from object
Template().from_gcp_registry(
image="ubuntu:22.04",
service_account_json={"project_id": "123", "private_key_id": "456"},
)
```
@e2b/python-sdk@2.1.2
e2b@2.1.3
2025-09-09 19:51:40 +00:00
Jakub Novák
155db28189
Add title for Sandbox persistence in docs ( #900 )
2025-09-09 09:12:28 -07:00
dependabot[bot]
50b9c92498
Bump the npm_and_yarn group across 2 directories with 1 update ( #789 )
...
Bumps the npm_and_yarn group with 1 update in the / directory:
[next](https://github.com/vercel/next.js ).
Bumps the npm_and_yarn group with 1 update in the /apps/web directory:
[next](https://github.com/vercel/next.js ).
Updates `next` from 14.2.26 to 14.2.30
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/next.js/releases ">next's
releases</a>.</em></p>
<blockquote>
<h2>v14.2.30</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Backport <code>config.allowedDevOrigins</code> (<a
href="https://redirect.github.com/vercel/next.js/issues/80410 ">#80410</a>)
(<a
href="https://nextjs.org/docs/app/api-reference/config/next-config-js/allowedDevOrigins ">Learn
More</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ijjk "><code>@ijjk</code></a> and <a
href="https://github.com/ztanner "><code>@ztanner</code></a> for
helping!</p>
<h2>v14.2.29</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Only share incremental cache for edge in next start (<a
href="https://redirect.github.com/vercel/next.js/issues/79389 ">#79389</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ijjk "><code>@ijjk</code></a> for helping!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vercel/next.js/commit/243072b7a8b7fb3be74a8d9256847669b131ea7e "><code>243072b</code></a>
v14.2.30</li>
<li><a
href="https://github.com/vercel/next.js/commit/f523d4a142913fa9f9f743241cc6132a39f6883b "><code>f523d4a</code></a>
[backport]: config.allowedDevOrigins (<a
href="https://redirect.github.com/vercel/next.js/issues/80410 ">#80410</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/ca9211576c9a21c15980dcc6f022c2cd21542561 "><code>ca92115</code></a>
v14.2.29</li>
<li><a
href="https://github.com/vercel/next.js/commit/ec9ee8749e9c6820148ead09a20983afd7ba9482 "><code>ec9ee87</code></a>
Only share incremental cache for edge in next start (<a
href="https://redirect.github.com/vercel/next.js/issues/79389 ">#79389</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/e65628a237ea76d77d911aedb12d5137fddd90fb "><code>e65628a</code></a>
v14.2.28</li>
<li><a
href="https://github.com/vercel/next.js/commit/3f5d77418da40d1e7766cbf46668dae0db268776 "><code>3f5d774</code></a>
fix: node.js module import error when using middleware (<a
href="https://redirect.github.com/vercel/next.js/issues/77945 ">#77945</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/43f10b8ead008ba36ddf0a955353949e200c409a "><code>43f10b8</code></a>
v14.2.27</li>
<li><a
href="https://github.com/vercel/next.js/commit/649ba863b3ea92436ff1136231d38138535853a9 "><code>649ba86</code></a>
backport: fix dynamic route interception not working when deployed with
middl...</li>
<li>See full diff in <a
href="https://github.com/vercel/next.js/compare/v14.2.26...v14.2.30 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `next` from 14.2.26 to 14.2.30
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/next.js/releases ">next's
releases</a>.</em></p>
<blockquote>
<h2>v14.2.30</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Backport <code>config.allowedDevOrigins</code> (<a
href="https://redirect.github.com/vercel/next.js/issues/80410 ">#80410</a>)
(<a
href="https://nextjs.org/docs/app/api-reference/config/next-config-js/allowedDevOrigins ">Learn
More</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ijjk "><code>@ijjk</code></a> and <a
href="https://github.com/ztanner "><code>@ztanner</code></a> for
helping!</p>
<h2>v14.2.29</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Only share incremental cache for edge in next start (<a
href="https://redirect.github.com/vercel/next.js/issues/79389 ">#79389</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ijjk "><code>@ijjk</code></a> for helping!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vercel/next.js/commit/243072b7a8b7fb3be74a8d9256847669b131ea7e "><code>243072b</code></a>
v14.2.30</li>
<li><a
href="https://github.com/vercel/next.js/commit/f523d4a142913fa9f9f743241cc6132a39f6883b "><code>f523d4a</code></a>
[backport]: config.allowedDevOrigins (<a
href="https://redirect.github.com/vercel/next.js/issues/80410 ">#80410</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/ca9211576c9a21c15980dcc6f022c2cd21542561 "><code>ca92115</code></a>
v14.2.29</li>
<li><a
href="https://github.com/vercel/next.js/commit/ec9ee8749e9c6820148ead09a20983afd7ba9482 "><code>ec9ee87</code></a>
Only share incremental cache for edge in next start (<a
href="https://redirect.github.com/vercel/next.js/issues/79389 ">#79389</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/e65628a237ea76d77d911aedb12d5137fddd90fb "><code>e65628a</code></a>
v14.2.28</li>
<li><a
href="https://github.com/vercel/next.js/commit/3f5d77418da40d1e7766cbf46668dae0db268776 "><code>3f5d774</code></a>
fix: node.js module import error when using middleware (<a
href="https://redirect.github.com/vercel/next.js/issues/77945 ">#77945</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/43f10b8ead008ba36ddf0a955353949e200c409a "><code>43f10b8</code></a>
v14.2.27</li>
<li><a
href="https://github.com/vercel/next.js/commit/649ba863b3ea92436ff1136231d38138535853a9 "><code>649ba86</code></a>
backport: fix dynamic route interception not working when deployed with
middl...</li>
<li>See full diff in <a
href="https://github.com/vercel/next.js/compare/v14.2.26...v14.2.30 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `next` from 14.2.26 to 14.2.30
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/next.js/releases ">next's
releases</a>.</em></p>
<blockquote>
<h2>v14.2.30</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Backport <code>config.allowedDevOrigins</code> (<a
href="https://redirect.github.com/vercel/next.js/issues/80410 ">#80410</a>)
(<a
href="https://nextjs.org/docs/app/api-reference/config/next-config-js/allowedDevOrigins ">Learn
More</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ijjk "><code>@ijjk</code></a> and <a
href="https://github.com/ztanner "><code>@ztanner</code></a> for
helping!</p>
<h2>v14.2.29</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Only share incremental cache for edge in next start (<a
href="https://redirect.github.com/vercel/next.js/issues/79389 ">#79389</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ijjk "><code>@ijjk</code></a> for helping!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vercel/next.js/commit/243072b7a8b7fb3be74a8d9256847669b131ea7e "><code>243072b</code></a>
v14.2.30</li>
<li><a
href="https://github.com/vercel/next.js/commit/f523d4a142913fa9f9f743241cc6132a39f6883b "><code>f523d4a</code></a>
[backport]: config.allowedDevOrigins (<a
href="https://redirect.github.com/vercel/next.js/issues/80410 ">#80410</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/ca9211576c9a21c15980dcc6f022c2cd21542561 "><code>ca92115</code></a>
v14.2.29</li>
<li><a
href="https://github.com/vercel/next.js/commit/ec9ee8749e9c6820148ead09a20983afd7ba9482 "><code>ec9ee87</code></a>
Only share incremental cache for edge in next start (<a
href="https://redirect.github.com/vercel/next.js/issues/79389 ">#79389</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/e65628a237ea76d77d911aedb12d5137fddd90fb "><code>e65628a</code></a>
v14.2.28</li>
<li><a
href="https://github.com/vercel/next.js/commit/3f5d77418da40d1e7766cbf46668dae0db268776 "><code>3f5d774</code></a>
fix: node.js module import error when using middleware (<a
href="https://redirect.github.com/vercel/next.js/issues/77945 ">#77945</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/43f10b8ead008ba36ddf0a955353949e200c409a "><code>43f10b8</code></a>
v14.2.27</li>
<li><a
href="https://github.com/vercel/next.js/commit/649ba863b3ea92436ff1136231d38138535853a9 "><code>649ba86</code></a>
backport: fix dynamic route interception not working when deployed with
middl...</li>
<li>See full diff in <a
href="https://github.com/vercel/next.js/compare/v14.2.26...v14.2.30 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `next` from 14.2.26 to 14.2.30
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/next.js/releases ">next's
releases</a>.</em></p>
<blockquote>
<h2>v14.2.30</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Backport <code>config.allowedDevOrigins</code> (<a
href="https://redirect.github.com/vercel/next.js/issues/80410 ">#80410</a>)
(<a
href="https://nextjs.org/docs/app/api-reference/config/next-config-js/allowedDevOrigins ">Learn
More</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ijjk "><code>@ijjk</code></a> and <a
href="https://github.com/ztanner "><code>@ztanner</code></a> for
helping!</p>
<h2>v14.2.29</h2>
<blockquote>
<p>[!NOTE]<br />
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>Only share incremental cache for edge in next start (<a
href="https://redirect.github.com/vercel/next.js/issues/79389 ">#79389</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/ijjk "><code>@ijjk</code></a> for helping!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vercel/next.js/commit/243072b7a8b7fb3be74a8d9256847669b131ea7e "><code>243072b</code></a>
v14.2.30</li>
<li><a
href="https://github.com/vercel/next.js/commit/f523d4a142913fa9f9f743241cc6132a39f6883b "><code>f523d4a</code></a>
[backport]: config.allowedDevOrigins (<a
href="https://redirect.github.com/vercel/next.js/issues/80410 ">#80410</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/ca9211576c9a21c15980dcc6f022c2cd21542561 "><code>ca92115</code></a>
v14.2.29</li>
<li><a
href="https://github.com/vercel/next.js/commit/ec9ee8749e9c6820148ead09a20983afd7ba9482 "><code>ec9ee87</code></a>
Only share incremental cache for edge in next start (<a
href="https://redirect.github.com/vercel/next.js/issues/79389 ">#79389</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/e65628a237ea76d77d911aedb12d5137fddd90fb "><code>e65628a</code></a>
v14.2.28</li>
<li><a
href="https://github.com/vercel/next.js/commit/3f5d77418da40d1e7766cbf46668dae0db268776 "><code>3f5d774</code></a>
fix: node.js module import error when using middleware (<a
href="https://redirect.github.com/vercel/next.js/issues/77945 ">#77945</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/43f10b8ead008ba36ddf0a955353949e200c409a "><code>43f10b8</code></a>
v14.2.27</li>
<li><a
href="https://github.com/vercel/next.js/commit/649ba863b3ea92436ff1136231d38138535853a9 "><code>649ba86</code></a>
backport: fix dynamic route interception not working when deployed with
middl...</li>
<li>See full diff in <a
href="https://github.com/vercel/next.js/compare/v14.2.26...v14.2.30 ">compare
view</a></li>
</ul>
</details>
<br />
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts page](https://github.com/e2b-dev/E2B/network/alerts ).
</details>
> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-09 01:52:32 -07:00
0div
0c1a67722f
Add webhooks docs and update routes ( #877 )
...
Adds the docs on the RESTful API point to manage webhooks.
---------
Co-authored-by: Vasek Mlejnsky <vasek@e2b.dev >
2025-09-08 15:09:52 -07:00
Mish Ushakov
79d4ce34e2
Templates SDK: simplify exports ( #898 )
...
- Removed unnecessary deep export chains
2025-09-08 08:38:16 -07:00
github-actions[bot]
448beca40c
[skip ci] Release new versions
2025-09-08 05:23:08 +00:00
Mish Ushakov
44365999e1
Vendor strip-ansi npm module to avoid ESM-related issues ( #895 )
...
- Fixes #894
e2b@2.1.2
2025-09-08 08:17:25 +03:00
github-actions[bot]
bee91610dc
[skip ci] Release new versions
2025-09-06 10:58:21 +00:00
Jakub Dobry
6fc97604f7
Add ready command for JS and Python ( #893 )
@e2b/python-sdk@2.1.1
e2b@2.1.1
2025-09-06 03:52:42 -07:00
github-actions[bot]
9d82bd60fc
[skip ci] Release new versions
2025-09-05 20:06:19 +00:00
Mish Ushakov
4a2a6c7051
Add Templates SDK ( #871 )
...
### Merge Templates SDK into E2B SDK.
This PR merges code from Templates SDK to E2B SDK.
**Changelog**
- Added new error classes: BuildError, FileUploadError.
- Added template API endpoints to API Client generation (Python).
- Updated API Clients error handling to throw BuildError in addition to
SandboxError.
- Exported Template and TemplateAsync classes.
- Moved `getRuntime` utility method from api to utils.
- Browser is supported except file operations (COPY). Incompatible
modules are not bundled, using dynamic imports (tar, glob) in supported
environments (Node, Deno, Bun) instead.
- Basic tests were added, subject to expansion in a follow-up PR.
- Breaking: Before, 401 error was raising `SandboxError`, which was
incorrect, now it will raise `AuthenticationError`. I have also changed
the `AuthenticationError` to extend Error class, not `SandboxError`
anymore as it's now thrown by both Sandbox and Template.
**Usage**
JavaScript
```js
import { Template } from 'e2b';
const template = Template()
.fromImage('ubuntu:22.04')
.copy('folder/*.txt', 'folder', { forceUpload: true })
.setEnvs({
ENV_1: 'value1',
ENV_2: 'value2',
})
.runCmd('cat folder/test.txt')
.setWorkdir('/app')
.setStartCmd('echo "Hello, world!"', Template.waitForTimeout('10s'))
await Template.build(template, {
alias: 'test-template',
cpuCount: 1,
memoryMB: 1024,
onBuildLogs: (logEntry) => console.log(logEntry.toString()),
})
```
Python
```py
from e2b import Template
template = (
Template()
.from_image("ubuntu:22.04")
.copy("folder/*.txt", "folder", force_upload=True)
.set_envs(
{
"ENV_1": "value1",
"ENV_2": "value2",
}
)
.run_cmd("cat folder/test.txt")
.set_workdir("/app")
.set_start_cmd("echo 'Hello, world!'", Template.wait_for_timeout("10s"))
)
Template.build(
template,
alias="test-template",
cpu_count=1,
memory_mb=1024,
on_build_logs=lambda log_entry: print(log_entry),
)
```
Python Async
```py
from e2b import AsyncTemplate
template = (
AsyncTemplate()
.from_image("ubuntu:22.04")
.copy("folder/*.txt", "folder", force_upload=True)
.set_envs(
{
"ENV_1": "value1",
"ENV_2": "value2",
}
)
.run_cmd("cat folder/test.txt")
.set_workdir("/app")
.set_start_cmd("echo 'Hello, world!'", Template.wait_for_timeout("10s"))
)
await AsyncTemplate.build(
template,
alias="test-template",
cpu_count=1,
memory_mb=1024,
on_build_logs=lambda log_entry: print(log_entry),
)
```
---
Merge progress
- [x] JavaScript SDK
- [x] Python SDK
- [x] Tests
- [x] Split files for review
@e2b/python-sdk@2.1.0
e2b@2.1.0
2025-09-05 22:00:22 +02:00
github-actions[bot]
2162c6191f
[skip ci] Release new versions
2025-09-03 12:49:17 +00:00
Mish Ushakov
67070bb9ea
Synced spec + generated API client ( #889 )
...
Changelog
- Synced latest spec from e2b-dev/infra
- Regenerated API clients
@e2b/cli@2.0.3
@e2b/python-sdk@2.0.2
e2b@2.0.3
2025-09-03 05:43:47 -07:00
github-actions[bot]
787a3192ce
[skip ci] Release new versions
2025-09-03 12:01:10 +00:00
Jakub Novák
cf0bb40ed3
Fix autopause ( #876 )
...
# Description
Autopause option shouldn't be passed for resume
e2b@2.0.2
@e2b/python-sdk@2.0.1
2025-09-03 11:48:12 +00:00
github-actions[bot]
0070938d01
[skip ci] Release new versions
2025-09-01 07:47:17 +00:00
Jakub Novák
99b9ed768d
Deprecate spawn instead of remove ( #885 )
...
Adds a deprecated `spawn` command to the CLI, ensuring backward
compatibility and guiding users toward the preferred `create` command.
```
$ e2b sandbox
Usage: index sandbox|sbx [options] [command]
work with sandboxes
Options:
-h, --help display help for command
Commands:
connect|cn <sandboxID> connect terminal to already running sandbox
list|ls [options] list all sandboxes, by default it list only running ones
kill|kl [options] [sandboxID] kill sandbox
create|cr [options] [template] create sandbox and connect terminal to it
logs|lg [options] <sandboxID> show logs for sandbox
metrics|mt [options] <sandboxID> show metrics for sandbox
help [command] display help for command
```
```
$ sbx sp base
Warning: The 'spawn' command is deprecated and will be removed in future releases. Please use 'e2b sandbox create' instead.
Terminal connecting to template base with sandbox ID in897x2dqs7aws8h1x0in
```
@e2b/cli@2.0.2
2025-09-01 07:44:10 +00:00
Jakub Novák
b42ab2a86b
Add pipeline for linting and formatting ( #883 )
...
Setup linting and formatting in all packages
2025-08-31 12:06:00 -07:00
Jakub Novák
a5f4802ec5
Add migration guide to docs ( #870 )
...
Adds migration guide for SDK v2
Adds mentions about auto pause
https://e2b-web-git-migration-guide-v2.e2b-preview.dev/docs/migration/v2
---------
Co-authored-by: Vasek Mlejnsky <vasek@e2b.dev >
2025-08-28 01:21:43 -07:00
Mish Ushakov
8743907edb
Update pnpm github action to v4 ( #874 )
...
Co-authored-by: Jakub Novak <jakub@e2b.dev >
2025-08-25 11:45:23 -07:00
Mish Ushakov
abebb40d2a
Update github actions to node v20 ( #872 )
...
We were using EOL version of Node.js in our GitHub Actions
https://endoflife.date/nodejs
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
2025-08-25 07:21:20 -07:00
github-actions[bot]
663d832ddc
[skip ci] Release new versions
2025-08-22 09:45:46 +00:00
Jakub Novák
c2195d832f
Fix API key check in JS SDK & remove deprecated fields ( #869 )
...
Fix the check and remove deprecated fields
@e2b/cli@2.0.1
2025-08-22 09:42:49 +00:00
github-actions[bot]
4eb3a2d322
[skip ci] Release new versions
2025-08-21 20:08:42 +00:00
Jakub Novák
fe214af0ce
Change envd access token to protected ( #867 )
e2b@2.0.1
2025-08-21 19:56:11 +00:00
Jakub Novák
400bb86e41
Fix docs build ( #866 )
...
```
Type error: Property 'some' does not exist on type 'SandboxPaginator'.
10 | export async function verifySandbox(apiKey: string, sandboxId: string) {
11 | const sandboxes = await Sandbox.list({ apiKey })
> 12 | return sandboxes.some((sandbox) => sandbox.sandboxId === sandboxId)
| ^
13 | }
```
2025-08-21 09:39:54 -07:00
github-actions[bot]
774dfd7667
[skip ci] Release new versions
2025-08-21 15:51:16 +00:00