@mastra/e2b 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@
7
7
  * @see https://e2b.dev/docs
8
8
  */
9
9
  import type { RequestContext } from '@mastra/core/di';
10
- import type { SandboxInfo, WorkspaceFilesystem, MountResult, ProviderStatus, MountManager, MastraSandboxOptions } from '@mastra/core/workspace';
10
+ import type { SandboxInfo, WorkspaceFilesystem, MountResult, ProviderStatus, MountManager, MastraSandboxOptions, SandboxFileInput, SandboxNetworking, SandboxCloneOptions } from '@mastra/core/workspace';
11
11
  /**
12
12
  * Inlined from `@mastra/core/workspace` to avoid requiring a newer core peer dep.
13
13
  */
@@ -115,6 +115,16 @@ export declare class E2BSandbox extends MastraSandbox {
115
115
  status: ProviderStatus;
116
116
  readonly mounts: MountManager;
117
117
  readonly processes: E2BProcessManager;
118
+ /**
119
+ * Networking capability: public HTTPS URLs for sandbox ports.
120
+ * E2B exposes every port via `getHost(port)` — no upfront declaration needed.
121
+ *
122
+ * When not attached in this process, the URL is resolved by looking up the
123
+ * existing sandbox by identity (without resuming it) and deriving the host
124
+ * (`{port}-{sandboxId}.{domain}`), so other processes can resolve
125
+ * deployments without waking a paused sandbox.
126
+ */
127
+ readonly networking: SandboxNetworking;
118
128
  private _sandbox;
119
129
  private _createdAt;
120
130
  private _isRetrying;
@@ -125,11 +135,26 @@ export declare class E2BSandbox extends MastraSandbox {
125
135
  private readonly network?;
126
136
  private readonly connectionOpts;
127
137
  private readonly _instructionsOverride?;
138
+ private readonly _constructorOptions;
128
139
  /** Resolved template ID after building (if needed) */
129
140
  private _resolvedTemplateId?;
130
141
  /** Promise for template preparation (started in constructor) */
131
142
  private _templatePreparePromise?;
132
143
  constructor(options?: E2BSandboxOptions);
144
+ /**
145
+ * Construct a sibling `E2BSandbox` that inherits this sandbox's
146
+ * configuration (credentials, template, network, metadata, instructions)
147
+ * with per-instance overrides.
148
+ *
149
+ * Performs no I/O — the sandbox clone provisions (or reconnects to an
150
+ * existing E2B sandbox with the same logical `id`) on its own `start()`.
151
+ * Use it when one configured sandbox acts as the template for a fleet of
152
+ * independent sandboxes (e.g. one per project).
153
+ *
154
+ * `options.idleTimeoutMinutes` maps to the E2B sandbox `timeout` (ms);
155
+ * `options.sandboxId` is ignored because E2B reconnects by logical `id`.
156
+ */
157
+ clone(options?: SandboxCloneOptions): E2BSandbox;
133
158
  /**
134
159
  * Get the underlying E2B Sandbox instance for direct access to E2B APIs.
135
160
  *
@@ -161,8 +186,13 @@ export declare class E2BSandbox extends MastraSandbox {
161
186
  */
162
187
  start(): Promise<void>;
163
188
  /**
164
- * Stop the E2B sandbox.
165
- * Unmounts all filesystems and releases the sandbox reference.
189
+ * Stop the E2B sandbox by pausing it (snapshot-stop).
190
+ *
191
+ * Pausing freezes the whole VM — filesystem, memory, and running processes —
192
+ * and stops billing immediately. The next `start()` reconnects and resumes it,
193
+ * with background processes still running. Filesystem mounts are unmounted
194
+ * first (FUSE mounts don't survive pause) and reconciled again on start.
195
+ *
166
196
  * Status management is handled by the base class.
167
197
  */
168
198
  stop(): Promise<void>;
@@ -173,6 +203,10 @@ export declare class E2BSandbox extends MastraSandbox {
173
203
  */
174
204
  destroy(): Promise<void>;
175
205
  getInfo(): Promise<SandboxInfo>;
206
+ /**
207
+ * Bulk-write files into the sandbox filesystem via the SDK's native upload.
208
+ */
209
+ writeFiles(files: SandboxFileInput[]): Promise<void>;
176
210
  /**
177
211
  * Get instructions describing this E2B sandbox.
178
212
  * Used by agents to understand the execution environment.
@@ -201,9 +235,17 @@ export declare class E2BSandbox extends MastraSandbox {
201
235
  /** @deprecated Use `status === 'running'` instead. */
202
236
  isReady(): Promise<boolean>;
203
237
  private generateId;
238
+ /** Domain used to derive public sandbox hosts (self-hosted E2B or e2b.app). */
239
+ private get sandboxDomain();
240
+ /**
241
+ * Look up an existing sandbox with matching mastra-sandbox-id metadata
242
+ * WITHOUT connecting or resuming it. Returns its list info or null.
243
+ */
244
+ private lookupExistingSandboxInfo;
204
245
  /**
205
246
  * Find an existing sandbox with matching mastra-sandbox-id metadata.
206
247
  * Returns the connected sandbox if found, null otherwise.
248
+ * Connecting to a paused sandbox resumes it.
207
249
  */
208
250
  private findExistingSandbox;
209
251
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/e2b",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "E2B cloud sandbox provider for Mastra workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,16 +28,16 @@
28
28
  "@vitest/coverage-v8": "4.1.10",
29
29
  "@vitest/ui": "4.1.10",
30
30
  "dotenv": "^17.4.2",
31
- "eslint": "^10.4.1",
31
+ "eslint": "^10.7.0",
32
32
  "tsup": "^8.5.1",
33
33
  "typescript": "^6.0.3",
34
34
  "vitest": "4.1.10",
35
- "@internal/lint": "0.0.114",
36
- "@internal/types-builder": "0.0.89",
37
- "@internal/workspace-test-utils": "0.0.58",
35
+ "@internal/types-builder": "0.0.90",
36
+ "@internal/workspace-test-utils": "0.0.59",
37
+ "@internal/lint": "0.0.115",
38
38
  "@mastra/gcs": "0.3.1",
39
39
  "@mastra/s3": "0.6.0",
40
- "@mastra/core": "1.51.0"
40
+ "@mastra/core": "1.52.0"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "@mastra/core": ">=1.12.0-0 <2.0.0-0"