@vercel/sandbox 1.0.3 → 1.1.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.
Files changed (63) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +18 -0
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/CHANGELOG.md +22 -0
  5. package/LICENSE +21 -0
  6. package/README.md +4 -4
  7. package/dist/api-client/api-client.d.ts +11 -3
  8. package/dist/api-client/api-client.js +6 -1
  9. package/dist/api-client/api-client.js.map +1 -0
  10. package/dist/api-client/api-error.js +1 -0
  11. package/dist/api-client/api-error.js.map +1 -0
  12. package/dist/api-client/base-client.d.ts +1 -0
  13. package/dist/api-client/base-client.js +2 -1
  14. package/dist/api-client/base-client.js.map +1 -0
  15. package/dist/api-client/file-writer.js +1 -0
  16. package/dist/api-client/file-writer.js.map +1 -0
  17. package/dist/api-client/index.js +1 -0
  18. package/dist/api-client/index.js.map +1 -0
  19. package/dist/api-client/validators.d.ts +23 -0
  20. package/dist/api-client/validators.js +2 -0
  21. package/dist/api-client/validators.js.map +1 -0
  22. package/dist/api-client/with-retry.js +11 -0
  23. package/dist/api-client/with-retry.js.map +1 -0
  24. package/dist/command.js +1 -0
  25. package/dist/command.js.map +1 -0
  26. package/dist/constants.d.ts +1 -0
  27. package/dist/constants.js +3 -0
  28. package/dist/constants.js.map +1 -0
  29. package/dist/index.js +1 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/sandbox.d.ts +14 -5
  32. package/dist/sandbox.js +27 -5
  33. package/dist/sandbox.js.map +1 -0
  34. package/dist/utils/array.js +1 -0
  35. package/dist/utils/array.js.map +1 -0
  36. package/dist/utils/consume-readable.js +1 -0
  37. package/dist/utils/consume-readable.js.map +1 -0
  38. package/dist/utils/decode-base64-url.js +1 -0
  39. package/dist/utils/decode-base64-url.js.map +1 -0
  40. package/dist/utils/get-credentials.js +1 -0
  41. package/dist/utils/get-credentials.js.map +1 -0
  42. package/dist/utils/jwt-expiry.js +1 -0
  43. package/dist/utils/jwt-expiry.js.map +1 -0
  44. package/dist/utils/normalizePath.js +1 -0
  45. package/dist/utils/normalizePath.js.map +1 -0
  46. package/dist/utils/resolveSignal.js +1 -0
  47. package/dist/utils/resolveSignal.js.map +1 -0
  48. package/dist/utils/types.js +1 -0
  49. package/dist/utils/types.js.map +1 -0
  50. package/dist/version.d.ts +1 -1
  51. package/dist/version.js +2 -1
  52. package/dist/version.js.map +1 -0
  53. package/package.json +2 -2
  54. package/src/api-client/api-client.ts +20 -4
  55. package/src/api-client/base-client.ts +7 -2
  56. package/src/api-client/validators.ts +1 -0
  57. package/src/api-client/with-retry.ts +11 -0
  58. package/src/command.test.ts +81 -77
  59. package/src/constants.ts +1 -0
  60. package/src/sandbox.test.ts +60 -58
  61. package/src/sandbox.ts +37 -10
  62. package/src/version.ts +1 -1
  63. package/tsconfig.json +1 -0
@@ -1,4 +1,4 @@
1
1
 
2
- > @vercel/sandbox@1.0.3 build /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
2
+ > @vercel/sandbox@1.1.0 build /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
3
3
  > tsc
4
4
 
@@ -0,0 +1,18 @@
1
+
2
+ > @vercel/sandbox@1.1.0 test /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
3
+ > vitest run
4
+
5
+
6
+  RUN  v3.2.1 /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
7
+
8
+ ✓ src/utils/jwt-expiry.test.ts (10 tests) 23ms
9
+ ↓ src/sandbox.test.ts (4 tests | 4 skipped)
10
+ ✓ src/utils/normalizePath.test.ts (6 tests) 24ms
11
+ ↓ src/command.test.ts (5 tests | 5 skipped)
12
+ ✓ src/utils/types.test.js (1 test) 13ms
13
+
14
+  Test Files  3 passed | 2 skipped (5)
15
+  Tests  17 passed | 9 skipped (26)
16
+  Start at  13:55:18
17
+  Duration  6.11s (transform 561ms, setup 221ms, collect 1.62s, tests 59ms, environment 5ms, prepare 1.53s)
18
+
@@ -1,4 +1,4 @@
1
1
 
2
- > @vercel/sandbox@1.0.3 typecheck /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
2
+ > @vercel/sandbox@1.1.0 typecheck /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
3
3
  > tsc --noEmit
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @vercel/sandbox
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add support for node24 runtime. ([#179](https://github.com/vercel/sandbox-sdk/pull/179))
8
+
9
+ ### Patch Changes
10
+
11
+ - allow to override the fetch implementation ([#177](https://github.com/vercel/sandbox-sdk/pull/177))
12
+
13
+ ## 1.0.4
14
+
15
+ ### Patch Changes
16
+
17
+ - add jsdoc example for sandbox.extendTimeout ([#171](https://github.com/vercel/sandbox-sdk/pull/171))
18
+
19
+ - change license to MIT (more permissive, therefore not breaking change) ([#169](https://github.com/vercel/sandbox-sdk/pull/169))
20
+
21
+ - when streaming stdout/stderr on command creation, don't throw AbortError when AbortSignal is done. Instead silently exit the loop. It's fine. ([#172](https://github.com/vercel/sandbox-sdk/pull/172))
22
+
23
+ - Make interactive sandbox command execution use WebSocket instead of WebRTC to support more diverse network conditions. ([#164](https://github.com/vercel/sandbox-sdk/pull/164))
24
+
3
25
  ## 1.0.3
4
26
 
5
27
  ### Patch Changes
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Vercel
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -50,7 +50,7 @@ async function main() {
50
50
  resources: { vcpus: 4 },
51
51
  timeout: ms("5m"),
52
52
  ports: [3000],
53
- runtime: "node22",
53
+ runtime: "node24",
54
54
  });
55
55
 
56
56
  console.log(`Installing dependencies...`);
@@ -137,7 +137,7 @@ const sandbox = await Sandbox.create({
137
137
  // Defaults to 5 minutes. The maximum is 5 hours for Pro/Enterprise, and 45 minutes for Hobby.
138
138
  timeout: ms("5m"),
139
139
  ports: [3000],
140
- runtime: "node22",
140
+ runtime: "node24",
141
141
  });
142
142
  ```
143
143
 
@@ -173,14 +173,14 @@ whois
173
173
  zstd
174
174
  ```
175
175
 
176
- - The `node22` image ships a Node 22 runtime under `/vercel/runtimes/node22`.
176
+ - The `node24` and `node22` images ship Node runtimes under `/vercel/runtimes/node{22,24}`.
177
177
  - The `python3.13` image ships a Python 3.13 runtime under `/vercel/runtimes/python`.
178
178
  - User code is executed as the `vercel-sandbox` user.
179
179
  - `/vercel/sandbox` is writable.
180
180
 
181
181
  ## Sudo access
182
182
 
183
- The `node22` and `python3.13` images allow users to run commands as root. This
183
+ The `nodeX` and `python3.13` images allow users to run commands as root. This
184
184
  can be used to install packages and system tools:
185
185
 
186
186
  ```typescript
@@ -3,6 +3,10 @@ import { SandboxResponse, CommandResponse, CommandFinishedResponse, LogLine, Ext
3
3
  import { FileWriter } from "./file-writer";
4
4
  import { z } from "zod";
5
5
  import { WithPrivate } from "../utils/types";
6
+ import { RUNTIMES } from "../constants";
7
+ export interface WithFetchOptions {
8
+ fetch?: typeof globalThis.fetch;
9
+ }
6
10
  export declare class APIClient extends BaseClient {
7
11
  private teamId;
8
12
  private tokenExpiry;
@@ -10,13 +14,14 @@ export declare class APIClient extends BaseClient {
10
14
  baseUrl?: string;
11
15
  teamId: string;
12
16
  token: string;
17
+ fetch?: typeof globalThis.fetch;
13
18
  });
14
19
  private ensureValidToken;
15
20
  protected request(path: string, params?: RequestParams): Promise<Response>;
16
- getSandbox(params: {
21
+ getSandbox(params: WithPrivate<{
17
22
  sandboxId: string;
18
23
  signal?: AbortSignal;
19
- }): Promise<Parsed<{
24
+ }>): Promise<Parsed<{
20
25
  sandbox: {
21
26
  region: string;
22
27
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -33,6 +38,7 @@ export declare class APIClient extends BaseClient {
33
38
  startedAt?: number | undefined;
34
39
  requestedStopAt?: number | undefined;
35
40
  stoppedAt?: number | undefined;
41
+ interactivePort?: number | undefined;
36
42
  };
37
43
  routes: {
38
44
  url: string;
@@ -58,7 +64,7 @@ export declare class APIClient extends BaseClient {
58
64
  resources?: {
59
65
  vcpus: number;
60
66
  };
61
- runtime?: "node22" | "python3.13" | (string & {});
67
+ runtime?: RUNTIMES | (string & {});
62
68
  signal?: AbortSignal;
63
69
  }>): Promise<Parsed<{
64
70
  sandbox: {
@@ -77,6 +83,7 @@ export declare class APIClient extends BaseClient {
77
83
  startedAt?: number | undefined;
78
84
  requestedStopAt?: number | undefined;
79
85
  stoppedAt?: number | undefined;
86
+ interactivePort?: number | undefined;
80
87
  };
81
88
  routes: {
82
89
  url: string;
@@ -168,6 +175,7 @@ export declare class APIClient extends BaseClient {
168
175
  startedAt?: number | undefined;
169
176
  requestedStopAt?: number | undefined;
170
177
  stoppedAt?: number | undefined;
178
+ interactivePort?: number | undefined;
171
179
  }[];
172
180
  pagination: {
173
181
  count: number;
@@ -22,6 +22,7 @@ class APIClient extends base_client_1.BaseClient {
22
22
  baseUrl: params.baseUrl ?? "https://vercel.com/api",
23
23
  token: params.token,
24
24
  debug: false,
25
+ fetch: params.fetch,
25
26
  });
26
27
  this.teamId = params.teamId;
27
28
  this.tokenExpiry = jwt_expiry_1.JwtExpiry.fromToken(params.token);
@@ -53,7 +54,10 @@ class APIClient extends base_client_1.BaseClient {
53
54
  });
54
55
  }
55
56
  async getSandbox(params) {
56
- return (0, base_client_1.parseOrThrow)(validators_1.SandboxAndRoutesResponse, await this.request(`/v1/sandboxes/${params.sandboxId}`, {
57
+ const privateParams = (0, types_1.getPrivateParams)(params);
58
+ let querystring = new URLSearchParams(privateParams).toString();
59
+ querystring = querystring ? `?${querystring}` : "";
60
+ return (0, base_client_1.parseOrThrow)(validators_1.SandboxAndRoutesResponse, await this.request(`/v1/sandboxes/${params.sandboxId}${querystring}`, {
57
61
  signal: params.signal,
58
62
  }));
59
63
  }
@@ -259,3 +263,4 @@ function mergeSignals(...signals) {
259
263
  }
260
264
  return controller.signal;
261
265
  }
266
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api-client/api-client.ts"],"names":[],"mappings":"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"}
@@ -14,3 +14,4 @@ class APIError extends Error {
14
14
  }
15
15
  }
16
16
  exports.APIError = APIError;
17
+ //# sourceMappingURL=api-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../src/api-client/api-error.ts"],"names":[],"mappings":";;;AAMA,MAAa,QAAoB,SAAQ,KAAK;IAM5C,YAAY,QAAkB,EAAE,OAA4B;QAC1D,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3B,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC5B,CAAC;CACF;AAjBD,4BAiBC"}
@@ -24,6 +24,7 @@ export declare class BaseClient {
24
24
  debug?: boolean;
25
25
  baseUrl: string;
26
26
  token?: string;
27
+ fetch?: typeof globalThis.fetch;
27
28
  });
28
29
  protected request(path: string, opts?: RequestParams): Promise<Response>;
29
30
  }
@@ -14,7 +14,7 @@ const undici_1 = require("undici");
14
14
  */
15
15
  class BaseClient {
16
16
  constructor(params) {
17
- this.fetch = (0, with_retry_1.withRetry)(globalThis.fetch);
17
+ this.fetch = (0, with_retry_1.withRetry)(params.fetch ?? globalThis.fetch);
18
18
  this.baseUrl = params.baseUrl;
19
19
  this.debug = params.debug ?? process.env.DEBUG_FETCH === "true";
20
20
  this.token = params.token;
@@ -112,3 +112,4 @@ async function parseOrThrow(validator, response) {
112
112
  }
113
113
  return result;
114
114
  }
115
+ //# sourceMappingURL=base-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/api-client/base-client.ts"],"names":[],"mappings":"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"}
@@ -60,3 +60,4 @@ class FileWriter {
60
60
  }
61
61
  }
62
62
  exports.FileWriter = FileWriter;
63
+ //# sourceMappingURL=file-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-writer.js","sourceRoot":"","sources":["../../src/api-client/file-writer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4DAA4C;AAC5C,mCAAkC;AA6BlC;;;;GAIG;AACH,MAAa,UAAU;IAIrB;QACE,MAAM,IAAI,GAAG,cAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,oBAAG,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CAAC,IAA6B;QACzC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAC3B,MAAM,IAAI,IAAI;gBACZ,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACtC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAClD,CAAC,KAAK,EAAE,EAAE;gBACR,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CACF,CAAC;YAEF,IAAI,IAAI,CAAC,OAAO,YAAY,iBAAQ,EAAE,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AArDD,gCAqDC"}
@@ -18,3 +18,4 @@ exports.APIClient = void 0;
18
18
  var api_client_1 = require("./api-client");
19
19
  Object.defineProperty(exports, "APIClient", { enumerable: true, get: function () { return api_client_1.APIClient; } });
20
20
  __exportStar(require("./validators"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api-client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA6B"}
@@ -16,6 +16,7 @@ export declare const Sandbox: z.ZodObject<{
16
16
  createdAt: z.ZodNumber;
17
17
  cwd: z.ZodString;
18
18
  updatedAt: z.ZodNumber;
19
+ interactivePort: z.ZodOptional<z.ZodNumber>;
19
20
  }, "strip", z.ZodTypeAny, {
20
21
  region: string;
21
22
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -32,6 +33,7 @@ export declare const Sandbox: z.ZodObject<{
32
33
  startedAt?: number | undefined;
33
34
  requestedStopAt?: number | undefined;
34
35
  stoppedAt?: number | undefined;
36
+ interactivePort?: number | undefined;
35
37
  }, {
36
38
  region: string;
37
39
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -48,6 +50,7 @@ export declare const Sandbox: z.ZodObject<{
48
50
  startedAt?: number | undefined;
49
51
  requestedStopAt?: number | undefined;
50
52
  stoppedAt?: number | undefined;
53
+ interactivePort?: number | undefined;
51
54
  }>;
52
55
  export type SandboxRouteData = z.infer<typeof SandboxRoute>;
53
56
  export declare const SandboxRoute: z.ZodObject<{
@@ -131,6 +134,7 @@ export declare const SandboxResponse: z.ZodObject<{
131
134
  createdAt: z.ZodNumber;
132
135
  cwd: z.ZodString;
133
136
  updatedAt: z.ZodNumber;
137
+ interactivePort: z.ZodOptional<z.ZodNumber>;
134
138
  }, "strip", z.ZodTypeAny, {
135
139
  region: string;
136
140
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -147,6 +151,7 @@ export declare const SandboxResponse: z.ZodObject<{
147
151
  startedAt?: number | undefined;
148
152
  requestedStopAt?: number | undefined;
149
153
  stoppedAt?: number | undefined;
154
+ interactivePort?: number | undefined;
150
155
  }, {
151
156
  region: string;
152
157
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -163,6 +168,7 @@ export declare const SandboxResponse: z.ZodObject<{
163
168
  startedAt?: number | undefined;
164
169
  requestedStopAt?: number | undefined;
165
170
  stoppedAt?: number | undefined;
171
+ interactivePort?: number | undefined;
166
172
  }>;
167
173
  }, "strip", z.ZodTypeAny, {
168
174
  sandbox: {
@@ -181,6 +187,7 @@ export declare const SandboxResponse: z.ZodObject<{
181
187
  startedAt?: number | undefined;
182
188
  requestedStopAt?: number | undefined;
183
189
  stoppedAt?: number | undefined;
190
+ interactivePort?: number | undefined;
184
191
  };
185
192
  }, {
186
193
  sandbox: {
@@ -199,6 +206,7 @@ export declare const SandboxResponse: z.ZodObject<{
199
206
  startedAt?: number | undefined;
200
207
  requestedStopAt?: number | undefined;
201
208
  stoppedAt?: number | undefined;
209
+ interactivePort?: number | undefined;
202
210
  };
203
211
  }>;
204
212
  export declare const SandboxAndRoutesResponse: z.ZodObject<{
@@ -218,6 +226,7 @@ export declare const SandboxAndRoutesResponse: z.ZodObject<{
218
226
  createdAt: z.ZodNumber;
219
227
  cwd: z.ZodString;
220
228
  updatedAt: z.ZodNumber;
229
+ interactivePort: z.ZodOptional<z.ZodNumber>;
221
230
  }, "strip", z.ZodTypeAny, {
222
231
  region: string;
223
232
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -234,6 +243,7 @@ export declare const SandboxAndRoutesResponse: z.ZodObject<{
234
243
  startedAt?: number | undefined;
235
244
  requestedStopAt?: number | undefined;
236
245
  stoppedAt?: number | undefined;
246
+ interactivePort?: number | undefined;
237
247
  }, {
238
248
  region: string;
239
249
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -250,6 +260,7 @@ export declare const SandboxAndRoutesResponse: z.ZodObject<{
250
260
  startedAt?: number | undefined;
251
261
  requestedStopAt?: number | undefined;
252
262
  stoppedAt?: number | undefined;
263
+ interactivePort?: number | undefined;
253
264
  }>;
254
265
  } & {
255
266
  routes: z.ZodArray<z.ZodObject<{
@@ -282,6 +293,7 @@ export declare const SandboxAndRoutesResponse: z.ZodObject<{
282
293
  startedAt?: number | undefined;
283
294
  requestedStopAt?: number | undefined;
284
295
  stoppedAt?: number | undefined;
296
+ interactivePort?: number | undefined;
285
297
  };
286
298
  routes: {
287
299
  url: string;
@@ -305,6 +317,7 @@ export declare const SandboxAndRoutesResponse: z.ZodObject<{
305
317
  startedAt?: number | undefined;
306
318
  requestedStopAt?: number | undefined;
307
319
  stoppedAt?: number | undefined;
320
+ interactivePort?: number | undefined;
308
321
  };
309
322
  routes: {
310
323
  url: string;
@@ -435,6 +448,7 @@ export declare const SandboxesResponse: z.ZodObject<{
435
448
  createdAt: z.ZodNumber;
436
449
  cwd: z.ZodString;
437
450
  updatedAt: z.ZodNumber;
451
+ interactivePort: z.ZodOptional<z.ZodNumber>;
438
452
  }, "strip", z.ZodTypeAny, {
439
453
  region: string;
440
454
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -451,6 +465,7 @@ export declare const SandboxesResponse: z.ZodObject<{
451
465
  startedAt?: number | undefined;
452
466
  requestedStopAt?: number | undefined;
453
467
  stoppedAt?: number | undefined;
468
+ interactivePort?: number | undefined;
454
469
  }, {
455
470
  region: string;
456
471
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -467,6 +482,7 @@ export declare const SandboxesResponse: z.ZodObject<{
467
482
  startedAt?: number | undefined;
468
483
  requestedStopAt?: number | undefined;
469
484
  stoppedAt?: number | undefined;
485
+ interactivePort?: number | undefined;
470
486
  }>, "many">;
471
487
  pagination: z.ZodObject<{
472
488
  /**
@@ -510,6 +526,7 @@ export declare const SandboxesResponse: z.ZodObject<{
510
526
  startedAt?: number | undefined;
511
527
  requestedStopAt?: number | undefined;
512
528
  stoppedAt?: number | undefined;
529
+ interactivePort?: number | undefined;
513
530
  }[];
514
531
  pagination: {
515
532
  count: number;
@@ -533,6 +550,7 @@ export declare const SandboxesResponse: z.ZodObject<{
533
550
  startedAt?: number | undefined;
534
551
  requestedStopAt?: number | undefined;
535
552
  stoppedAt?: number | undefined;
553
+ interactivePort?: number | undefined;
536
554
  }[];
537
555
  pagination: {
538
556
  count: number;
@@ -557,6 +575,7 @@ export declare const ExtendTimeoutResponse: z.ZodObject<{
557
575
  createdAt: z.ZodNumber;
558
576
  cwd: z.ZodString;
559
577
  updatedAt: z.ZodNumber;
578
+ interactivePort: z.ZodOptional<z.ZodNumber>;
560
579
  }, "strip", z.ZodTypeAny, {
561
580
  region: string;
562
581
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -573,6 +592,7 @@ export declare const ExtendTimeoutResponse: z.ZodObject<{
573
592
  startedAt?: number | undefined;
574
593
  requestedStopAt?: number | undefined;
575
594
  stoppedAt?: number | undefined;
595
+ interactivePort?: number | undefined;
576
596
  }, {
577
597
  region: string;
578
598
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -589,6 +609,7 @@ export declare const ExtendTimeoutResponse: z.ZodObject<{
589
609
  startedAt?: number | undefined;
590
610
  requestedStopAt?: number | undefined;
591
611
  stoppedAt?: number | undefined;
612
+ interactivePort?: number | undefined;
592
613
  }>;
593
614
  }, "strip", z.ZodTypeAny, {
594
615
  sandbox: {
@@ -607,6 +628,7 @@ export declare const ExtendTimeoutResponse: z.ZodObject<{
607
628
  startedAt?: number | undefined;
608
629
  requestedStopAt?: number | undefined;
609
630
  stoppedAt?: number | undefined;
631
+ interactivePort?: number | undefined;
610
632
  };
611
633
  }, {
612
634
  sandbox: {
@@ -625,5 +647,6 @@ export declare const ExtendTimeoutResponse: z.ZodObject<{
625
647
  startedAt?: number | undefined;
626
648
  requestedStopAt?: number | undefined;
627
649
  stoppedAt?: number | undefined;
650
+ interactivePort?: number | undefined;
628
651
  };
629
652
  }>;
@@ -18,6 +18,7 @@ exports.Sandbox = zod_1.z.object({
18
18
  createdAt: zod_1.z.number(),
19
19
  cwd: zod_1.z.string(),
20
20
  updatedAt: zod_1.z.number(),
21
+ interactivePort: zod_1.z.number().optional(),
21
22
  });
22
23
  exports.SandboxRoute = zod_1.z.object({
23
24
  url: zod_1.z.string(),
@@ -77,3 +78,4 @@ exports.SandboxesResponse = zod_1.z.object({
77
78
  exports.ExtendTimeoutResponse = zod_1.z.object({
78
79
  sandbox: exports.Sandbox,
79
80
  });
81
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/api-client/validators.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,9 @@ function withRetry(rawFetch) {
38
38
  try {
39
39
  return (await (0, async_retry_1.default)(async (bail) => {
40
40
  try {
41
+ if (opts.signal?.aborted) {
42
+ return bail(opts.signal.reason || new Error("Request aborted"));
43
+ }
41
44
  const response = await rawFetch(url, opts);
42
45
  /**
43
46
  * When the response is 429 we will try to parse the Retry-After
@@ -73,6 +76,13 @@ function withRetry(rawFetch) {
73
76
  if (isAbortError(error)) {
74
77
  return bail(error);
75
78
  }
79
+ /**
80
+ * If the signal was aborted meanwhile we were
81
+ * waiting, we bail from retrying.
82
+ */
83
+ if (opts.signal?.aborted) {
84
+ return bail(opts.signal.reason || new Error("Request aborted"));
85
+ }
76
86
  throw error;
77
87
  }
78
88
  }, retryOpts));
@@ -95,3 +105,4 @@ function isAbortError(error) {
95
105
  error !== null &&
96
106
  error.name === "AbortError");
97
107
  }
108
+ //# sourceMappingURL=with-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-retry.js","sourceRoot":"","sources":["../../src/api-client/with-retry.ts"],"names":[],"mappings":"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"}
package/dist/command.js CHANGED
@@ -199,3 +199,4 @@ class CommandFinished extends Command {
199
199
  }
200
200
  }
201
201
  exports.CommandFinished = CommandFinished;
202
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export type RUNTIMES = "node24" | "node22" | "python3.13";
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":""}
package/dist/index.js CHANGED
@@ -6,3 +6,4 @@ Object.defineProperty(exports, "Sandbox", { enumerable: true, get: function () {
6
6
  var command_1 = require("./command");
7
7
  Object.defineProperty(exports, "Command", { enumerable: true, get: function () { return command_1.Command; } });
8
8
  Object.defineProperty(exports, "CommandFinished", { enumerable: true, get: function () { return command_1.CommandFinished; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,qCAAqD;AAA5C,kGAAA,OAAO,OAAA;AAAE,0GAAA,eAAe,OAAA"}
package/dist/sandbox.d.ts CHANGED
@@ -4,6 +4,8 @@ import { APIClient } from "./api-client";
4
4
  import { Command, type CommandFinished } from "./command";
5
5
  import { type Credentials } from "./utils/get-credentials";
6
6
  import { WithPrivate } from "./utils/types";
7
+ import { WithFetchOptions } from "./api-client/api-client";
8
+ import { RUNTIMES } from "./constants";
7
9
  /** @inline */
8
10
  export interface CreateSandboxParams {
9
11
  /**
@@ -50,10 +52,10 @@ export interface CreateSandboxParams {
50
52
  vcpus: number;
51
53
  };
52
54
  /**
53
- * The runtime of the sandbox, currently only `node22` and `python3.13` are supported.
55
+ * The runtime of the sandbox, currently only `node24`, `node22` and `python3.13` are supported.
54
56
  * If not specified, the default runtime `node22` will be used.
55
57
  */
56
- runtime?: "node22" | "python3.13" | (string & {});
58
+ runtime?: RUNTIMES | (string & {});
57
59
  /**
58
60
  * An AbortSignal to cancel sandbox creation.
59
61
  */
@@ -126,6 +128,7 @@ export declare class Sandbox {
126
128
  * Unique ID of this sandbox.
127
129
  */
128
130
  get sandboxId(): string;
131
+ get interactivePort(): number | undefined;
129
132
  /**
130
133
  * The status of the sandbox.
131
134
  */
@@ -143,7 +146,7 @@ export declare class Sandbox {
143
146
  * It returns both the sandboxes and the pagination metadata to allow getting
144
147
  * the next page of results.
145
148
  */
146
- static list(params: Parameters<APIClient["listSandboxes"]>[0] & Partial<Credentials>): Promise<import("./api-client/base-client").Parsed<{
149
+ static list(params: Parameters<APIClient["listSandboxes"]>[0] & Partial<Credentials> & WithFetchOptions): Promise<import("./api-client/base-client").Parsed<{
147
150
  sandboxes: {
148
151
  region: string;
149
152
  status: "pending" | "running" | "stopping" | "stopped" | "failed";
@@ -160,6 +163,7 @@ export declare class Sandbox {
160
163
  startedAt?: number | undefined;
161
164
  requestedStopAt?: number | undefined;
162
165
  stoppedAt?: number | undefined;
166
+ interactivePort?: number | undefined;
163
167
  }[];
164
168
  pagination: {
165
169
  count: number;
@@ -173,14 +177,14 @@ export declare class Sandbox {
173
177
  * @param params - Creation parameters and optional credentials.
174
178
  * @returns A promise resolving to the created {@link Sandbox}.
175
179
  */
176
- static create(params?: WithPrivate<CreateSandboxParams | (CreateSandboxParams & Credentials)>): Promise<Sandbox>;
180
+ static create(params?: WithPrivate<CreateSandboxParams | (CreateSandboxParams & Credentials)> & WithFetchOptions): Promise<Sandbox>;
177
181
  /**
178
182
  * Retrieve an existing sandbox.
179
183
  *
180
184
  * @param params - Get parameters and optional credentials.
181
185
  * @returns A promise resolving to the {@link Sandbox}.
182
186
  */
183
- static get(params: GetSandboxParams | (GetSandboxParams & Credentials)): Promise<Sandbox>;
187
+ static get(params: WithPrivate<GetSandboxParams | (GetSandboxParams & Credentials)> & WithFetchOptions): Promise<Sandbox>;
184
188
  /**
185
189
  * Create a new Sandbox instance.
186
190
  *
@@ -308,6 +312,11 @@ export declare class Sandbox {
308
312
  * @param opts - Optional parameters.
309
313
  * @param opts.signal - An AbortSignal to cancel the operation.
310
314
  * @returns A promise that resolves when the timeout is extended
315
+ *
316
+ * @example
317
+ * const sandbox = await Sandbox.create({ timeout: ms('10m') });
318
+ * // Extends timeout by 5 minutes, to a total of 15 minutes.
319
+ * await sandbox.extendTimeout(ms('5m'));
311
320
  */
312
321
  extendTimeout(duration: number, opts?: {
313
322
  signal?: AbortSignal;