@vercel/sandbox 1.1.5 → 1.1.7

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @vercel/sandbox@1.1.5 build /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
2
+ > @vercel/sandbox@1.1.7 build /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
3
3
  > tsc
4
4
 
@@ -1,24 +1,24 @@
1
1
 
2
- > @vercel/sandbox@1.1.5 test /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
2
+ > @vercel/sandbox@1.1.7 test /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
3
3
  > vitest run
4
4
 
5
5
 
6
6
   RUN  v3.2.1 /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
7
7
 
8
- ✓ src/utils/dev-credentials.test.ts (7 tests) 572ms
9
- ✓ signInAndGetToken > times out after provided timeout  548ms
10
- ✓ src/auth/infer-scope.test.ts (9 tests) 79ms
11
- ✓ src/utils/jwt-expiry.test.ts (10 tests) 33ms
12
- ✓ src/api-client/api-client.test.ts (5 tests) 100ms
8
+ ✓ src/utils/dev-credentials.test.ts (7 tests) 550ms
9
+ ✓ signInAndGetToken > times out after provided timeout  539ms
10
+ ✓ src/api-client/api-client.test.ts (7 tests) 106ms
11
+ ✓ src/auth/infer-scope.test.ts (9 tests) 45ms
12
+ ✓ src/utils/jwt-expiry.test.ts (10 tests) 45ms
13
13
  ↓ src/sandbox.test.ts (4 tests | 4 skipped)
14
- ✓ src/utils/normalizePath.test.ts (6 tests) 18ms
14
+ ✓ src/utils/normalizePath.test.ts (6 tests) 28ms
15
15
  ↓ src/command.test.ts (5 tests | 5 skipped)
16
- ✓ src/auth/linked-project.test.ts (6 tests) 47ms
17
- ✓ src/utils/get-credentials.test.ts (2 tests) 31ms
18
- ✓ src/utils/types.test.js (1 test) 6ms
16
+ ✓ src/auth/linked-project.test.ts (6 tests) 53ms
17
+ ✓ src/utils/get-credentials.test.ts (2 tests) 30ms
18
+ ✓ src/utils/types.test.js (1 test) 12ms
19
19
 
20
20
   Test Files  8 passed | 2 skipped (10)
21
-  Tests  46 passed | 9 skipped (55)
22
-  Start at  07:58:13
23
-  Duration  12.88s (transform 1.06s, setup 296ms, collect 3.68s, tests 886ms, environment 6ms, prepare 2.95s)
21
+  Tests  48 passed | 9 skipped (57)
22
+  Start at  11:47:33
23
+  Duration  12.79s (transform 953ms, setup 317ms, collect 3.53s, tests 868ms, environment 3ms, prepare 3.13s)
24
24
 
@@ -1,4 +1,4 @@
1
1
 
2
- > @vercel/sandbox@1.1.5 typecheck /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
2
+ > @vercel/sandbox@1.1.7 typecheck /home/runner/work/sandbox-sdk/sandbox-sdk/packages/vercel-sandbox
3
3
  > tsc --noEmit
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @vercel/sandbox
2
2
 
3
+ ## 1.1.7
4
+
5
+ ### Patch Changes
6
+
7
+ - Change default runtime to node24 ([#212](https://github.com/vercel/sandbox-sdk/pull/212))
8
+
9
+ ## 1.1.6
10
+
11
+ ### Patch Changes
12
+
13
+ - Fixed race in stdout/stderr buffering ([#213](https://github.com/vercel/sandbox-sdk/pull/213))
14
+
3
15
  ## 1.1.5
4
16
 
5
17
  ### Patch Changes
@@ -108,12 +108,12 @@ export declare class APIClient extends BaseClient {
108
108
  signal?: AbortSignal;
109
109
  }): Promise<Parsed<{
110
110
  command: {
111
+ sandboxId: string;
111
112
  id: string;
112
113
  startedAt: number;
113
114
  cwd: string;
114
115
  name: string;
115
116
  args: string[];
116
- sandboxId: string;
117
117
  exitCode: number | null;
118
118
  };
119
119
  }>>;
@@ -215,12 +215,12 @@ export declare class APIClient extends BaseClient {
215
215
  abortSignal?: AbortSignal;
216
216
  }): Promise<Parsed<{
217
217
  command: {
218
+ sandboxId: string;
218
219
  id: string;
219
220
  startedAt: number;
220
221
  cwd: string;
221
222
  name: string;
222
223
  args: string[];
223
- sandboxId: string;
224
224
  exitCode: number | null;
225
225
  };
226
226
  }>>;
@@ -190,11 +190,13 @@ class APIClient extends base_client_1.BaseClient {
190
190
  if (response.headers.get("content-type") !== "application/x-ndjson") {
191
191
  throw new api_error_1.APIError(response, {
192
192
  message: "Expected a stream of logs",
193
+ sandboxId: params.sandboxId,
193
194
  });
194
195
  }
195
196
  if (response.body === null) {
196
197
  throw new api_error_1.APIError(response, {
197
198
  message: "No response body",
199
+ sandboxId: params.sandboxId,
198
200
  });
199
201
  }
200
202
  const jsonlinesStream = jsonlines_1.default.parse();
@@ -204,7 +206,7 @@ class APIClient extends base_client_1.BaseClient {
204
206
  for await (const chunk of jsonlinesStream) {
205
207
  const parsed = validators_1.LogLine.parse(chunk);
206
208
  if (parsed.stream === "error") {
207
- throw new api_error_1.StreamError(parsed.data.code, parsed.data.message);
209
+ throw new api_error_1.StreamError(parsed.data.code, parsed.data.message, params.sandboxId);
208
210
  }
209
211
  yield parsed;
210
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api-client/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api-client/api-client.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,14 @@ interface Options<ErrorData> {
2
2
  message?: string;
3
3
  json?: ErrorData;
4
4
  text?: string;
5
+ sandboxId?: string;
5
6
  }
6
7
  export declare class APIError<ErrorData> extends Error {
7
8
  response: Response;
8
9
  message: string;
9
10
  json?: ErrorData;
10
11
  text?: string;
12
+ sandboxId?: string;
11
13
  constructor(response: Response, options?: Options<ErrorData>);
12
14
  }
13
15
  /**
@@ -16,6 +18,7 @@ export declare class APIError<ErrorData> extends Error {
16
18
  */
17
19
  export declare class StreamError extends Error {
18
20
  code: string;
19
- constructor(code: string, message: string);
21
+ sandboxId: string;
22
+ constructor(code: string, message: string, sandboxId: string);
20
23
  }
21
24
  export {};
@@ -11,6 +11,7 @@ class APIError extends Error {
11
11
  this.message = options?.message ?? "";
12
12
  this.json = options?.json;
13
13
  this.text = options?.text;
14
+ this.sandboxId = options?.sandboxId;
14
15
  }
15
16
  }
16
17
  exports.APIError = APIError;
@@ -19,10 +20,11 @@ exports.APIError = APIError;
19
20
  * This typically occurs when the sandbox is stopped while streaming.
20
21
  */
21
22
  class StreamError extends Error {
22
- constructor(code, message) {
23
+ constructor(code, message, sandboxId) {
23
24
  super(message);
24
25
  this.name = "StreamError";
25
26
  this.code = code;
27
+ this.sandboxId = sandboxId;
26
28
  if (Error.captureStackTrace) {
27
29
  Error.captureStackTrace(this, StreamError);
28
30
  }
@@ -1 +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;AAED;;;GAGG;AACH,MAAa,WAAY,SAAQ,KAAK;IAGpC,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF;AAXD,kCAWC"}
1
+ {"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../src/api-client/api-error.ts"],"names":[],"mappings":";;;AAOA,MAAa,QAAoB,SAAQ,KAAK;IAO5C,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;QAC1B,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;IACtC,CAAC;CACF;AAnBD,4BAmBC;AAED;;;GAGG;AACH,MAAa,WAAY,SAAQ,KAAK;IAIpC,YAAY,IAAY,EAAE,OAAe,EAAE,SAAiB;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF;AAbD,kCAaC"}
@@ -58,6 +58,14 @@ class BaseClient {
58
58
  }
59
59
  }
60
60
  exports.BaseClient = BaseClient;
61
+ /**
62
+ * Extract sandboxId from a sandbox API URL.
63
+ * URLs follow the pattern: /v1/sandboxes/{sandboxId}/...
64
+ */
65
+ function extractSandboxId(url) {
66
+ const match = url.match(/\/v1\/sandboxes\/([^/?]+)/);
67
+ return match?.[1];
68
+ }
61
69
  /**
62
70
  * Allows to read the response text and parse it as JSON casting to the given
63
71
  * type. If the response is not ok or cannot be parsed it will return error.
@@ -66,9 +74,11 @@ exports.BaseClient = BaseClient;
66
74
  * @returns Parsed response or error.
67
75
  */
68
76
  async function parse(validator, response) {
77
+ const sandboxId = extractSandboxId(response.url);
69
78
  const text = await response.text().catch((err) => {
70
79
  return new api_error_1.APIError(response, {
71
80
  message: `Can't read response text: ${String(err)}`,
81
+ sandboxId,
72
82
  });
73
83
  });
74
84
  if (typeof text !== "string") {
@@ -82,6 +92,7 @@ async function parse(validator, response) {
82
92
  return new api_error_1.APIError(response, {
83
93
  message: `Can't parse JSON: ${String(error)}`,
84
94
  text,
95
+ sandboxId,
85
96
  });
86
97
  }
87
98
  if (!response.ok) {
@@ -89,6 +100,7 @@ async function parse(validator, response) {
89
100
  message: `Status code ${response.status} is not ok`,
90
101
  json: json,
91
102
  text,
103
+ sandboxId,
92
104
  });
93
105
  }
94
106
  const validated = validator.safeParse(json);
@@ -97,6 +109,7 @@ async function parse(validator, response) {
97
109
  message: `Response JSON is not valid: ${validated.error}`,
98
110
  json: json,
99
111
  text,
112
+ sandboxId,
100
113
  });
101
114
  }
102
115
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/api-client/base-client.ts"],"names":[],"mappings":";;;AAgGA,sBA+CC;AAED,oCAUC;AA1JD,2CAAuC;AAEvC,0CAAuC;AACvC,6CAA8D;AAC9D,mCAA+B;AAU/B;;;;GAIG;AACH,MAAa,UAAU;IAOrB,YAAY,MAKX;QACC,IAAI,CAAC,KAAK,GAAG,IAAA,sBAAS,EAAC,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,cAAK,CAAC;YACrB,WAAW,EAAE,CAAC,EAAE,oDAAoD;SACrE,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,IAAoB;QACxD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,IAAA,aAAK,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC7B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YAChD,GAAG,IAAI;YACP,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK;YAC7B,OAAO,EAAE,IAAI,CAAC,KAAK;gBACjB,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;gBAC7D,CAAC,CAAC,IAAI,EAAE,OAAO;YACjB,oEAAoE;YACpE,UAAU,EAAE,IAAI,CAAC,KAAK;YACtB,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC;YAC/D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;gBAC5C,MAAM,OAAO,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CACV,SAAS,GAAG,8BAA8B,KAAK,KAAK,OAAO,KAAK,OAAO,GAAG,CAC3E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA7DD,gCA6DC;AAQD;;;;;;GAMG;AACI,KAAK,UAAU,KAAK,CACzB,SAAwB,EACxB,QAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/C,OAAO,IAAI,oBAAQ,CAAY,QAAQ,EAAE;YACvC,OAAO,EAAE,6BAA6B,MAAM,CAAC,GAAG,CAAC,EAAE;SACpD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAsB,CAAC;IAE3B,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,oBAAQ,CAAY,QAAQ,EAAE;YACvC,OAAO,EAAE,qBAAqB,MAAM,CAAC,KAAK,CAAC,EAAE;YAC7C,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,IAAI,oBAAQ,CAAY,QAAQ,EAAE;YACvC,OAAO,EAAE,eAAe,QAAQ,CAAC,MAAM,YAAY;YACnD,IAAI,EAAE,IAAiB;YACvB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,IAAI,oBAAQ,CAAY,QAAQ,EAAE;YACvC,OAAO,EAAE,+BAA+B,SAAS,CAAC,KAAK,EAAE;YACzD,IAAI,EAAE,IAAiB;YACvB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,QAAQ;QACR,IAAI;KACL,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,SAAwB,EACxB,QAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAkB,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjE,IAAI,MAAM,YAAY,oBAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/api-client/base-client.ts"],"names":[],"mappings":"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"}
@@ -136,20 +136,20 @@ export declare const Command: z.ZodObject<{
136
136
  exitCode: z.ZodNullable<z.ZodNumber>;
137
137
  startedAt: z.ZodNumber;
138
138
  }, "strip", z.ZodTypeAny, {
139
+ sandboxId: string;
139
140
  id: string;
140
141
  startedAt: number;
141
142
  cwd: string;
142
143
  name: string;
143
144
  args: string[];
144
- sandboxId: string;
145
145
  exitCode: number | null;
146
146
  }, {
147
+ sandboxId: string;
147
148
  id: string;
148
149
  startedAt: number;
149
150
  cwd: string;
150
151
  name: string;
151
152
  args: string[];
152
- sandboxId: string;
153
153
  exitCode: number | null;
154
154
  }>;
155
155
  export declare const SandboxResponse: z.ZodObject<{
@@ -390,40 +390,40 @@ export declare const CommandResponse: z.ZodObject<{
390
390
  exitCode: z.ZodNullable<z.ZodNumber>;
391
391
  startedAt: z.ZodNumber;
392
392
  }, "strip", z.ZodTypeAny, {
393
+ sandboxId: string;
393
394
  id: string;
394
395
  startedAt: number;
395
396
  cwd: string;
396
397
  name: string;
397
398
  args: string[];
398
- sandboxId: string;
399
399
  exitCode: number | null;
400
400
  }, {
401
+ sandboxId: string;
401
402
  id: string;
402
403
  startedAt: number;
403
404
  cwd: string;
404
405
  name: string;
405
406
  args: string[];
406
- sandboxId: string;
407
407
  exitCode: number | null;
408
408
  }>;
409
409
  }, "strip", z.ZodTypeAny, {
410
410
  command: {
411
+ sandboxId: string;
411
412
  id: string;
412
413
  startedAt: number;
413
414
  cwd: string;
414
415
  name: string;
415
416
  args: string[];
416
- sandboxId: string;
417
417
  exitCode: number | null;
418
418
  };
419
419
  }, {
420
420
  command: {
421
+ sandboxId: string;
421
422
  id: string;
422
423
  startedAt: number;
423
424
  cwd: string;
424
425
  name: string;
425
426
  args: string[];
426
- sandboxId: string;
427
427
  exitCode: number | null;
428
428
  };
429
429
  }>;
@@ -438,40 +438,40 @@ export declare const CommandFinishedResponse: z.ZodObject<{
438
438
  } & {
439
439
  exitCode: z.ZodNumber;
440
440
  }, "strip", z.ZodTypeAny, {
441
+ sandboxId: string;
441
442
  id: string;
442
443
  startedAt: number;
443
444
  cwd: string;
444
445
  name: string;
445
446
  args: string[];
446
- sandboxId: string;
447
447
  exitCode: number;
448
448
  }, {
449
+ sandboxId: string;
449
450
  id: string;
450
451
  startedAt: number;
451
452
  cwd: string;
452
453
  name: string;
453
454
  args: string[];
454
- sandboxId: string;
455
455
  exitCode: number;
456
456
  }>;
457
457
  }, "strip", z.ZodTypeAny, {
458
458
  command: {
459
+ sandboxId: string;
459
460
  id: string;
460
461
  startedAt: number;
461
462
  cwd: string;
462
463
  name: string;
463
464
  args: string[];
464
- sandboxId: string;
465
465
  exitCode: number;
466
466
  };
467
467
  }, {
468
468
  command: {
469
+ sandboxId: string;
469
470
  id: string;
470
471
  startedAt: number;
471
472
  cwd: string;
472
473
  name: string;
473
474
  args: string[];
474
- sandboxId: string;
475
475
  exitCode: number;
476
476
  };
477
477
  }>;
package/dist/command.d.ts CHANGED
@@ -28,6 +28,8 @@ export declare class Command {
28
28
  */
29
29
  private cmd;
30
30
  exitCode: number | null;
31
+ private outputCache;
32
+ private outputCachePromise;
31
33
  /**
32
34
  * ID of the command execution.
33
35
  */
@@ -98,6 +100,11 @@ export declare class Command {
98
100
  wait(params?: {
99
101
  signal?: AbortSignal;
100
102
  }): Promise<CommandFinished>;
103
+ /**
104
+ * Get cached output, fetching logs only once and reusing for concurrent calls.
105
+ * This prevents race conditions when stdout() and stderr() are called in parallel.
106
+ */
107
+ private getCachedOutput;
101
108
  /**
102
109
  * Get the output of `stdout`, `stderr`, or both as a string.
103
110
  *
package/dist/command.js CHANGED
@@ -35,6 +35,8 @@ class Command {
35
35
  * @param params.cmdId - The ID of the command execution.
36
36
  */
37
37
  constructor({ client, sandboxId, cmd, }) {
38
+ this.outputCache = null;
39
+ this.outputCachePromise = null;
38
40
  this.client = client;
39
41
  this.sandboxId = sandboxId;
40
42
  this.cmd = cmd;
@@ -101,6 +103,41 @@ class Command {
101
103
  exitCode: command.json.command.exitCode,
102
104
  });
103
105
  }
106
+ /**
107
+ * Get cached output, fetching logs only once and reusing for concurrent calls.
108
+ * This prevents race conditions when stdout() and stderr() are called in parallel.
109
+ */
110
+ async getCachedOutput(opts) {
111
+ if (this.outputCache) {
112
+ return this.outputCache;
113
+ }
114
+ if (!this.outputCachePromise) {
115
+ this.outputCachePromise = (async () => {
116
+ try {
117
+ let stdout = "";
118
+ let stderr = "";
119
+ let both = "";
120
+ for await (const log of this.logs({ signal: opts?.signal })) {
121
+ both += log.data;
122
+ if (log.stream === "stdout") {
123
+ stdout += log.data;
124
+ }
125
+ else {
126
+ stderr += log.data;
127
+ }
128
+ }
129
+ this.outputCache = { stdout, stderr, both };
130
+ return this.outputCache;
131
+ }
132
+ catch (err) {
133
+ // Clear the promise so future calls can retry
134
+ this.outputCachePromise = null;
135
+ throw err;
136
+ }
137
+ })();
138
+ }
139
+ return this.outputCachePromise;
140
+ }
104
141
  /**
105
142
  * Get the output of `stdout`, `stderr`, or both as a string.
106
143
  *
@@ -113,13 +150,8 @@ class Command {
113
150
  * @returns The output of the specified stream(s) as a string.
114
151
  */
115
152
  async output(stream = "both", opts) {
116
- let data = "";
117
- for await (const log of this.logs({ signal: opts?.signal })) {
118
- if (stream === "both" || log.stream === stream) {
119
- data += log.data;
120
- }
121
- }
122
- return data;
153
+ const cached = await this.getCachedOutput(opts);
154
+ return cached[stream];
123
155
  }
124
156
  /**
125
157
  * Get the output of `stdout` as a string.
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
package/dist/sandbox.d.ts CHANGED
@@ -54,7 +54,7 @@ export interface BaseCreateSandboxParams {
54
54
  };
55
55
  /**
56
56
  * The runtime of the sandbox, currently only `node24`, `node22` and `python3.13` are supported.
57
- * If not specified, the default runtime `node22` will be used.
57
+ * If not specified, the default runtime `node24` will be used.
58
58
  */
59
59
  runtime?: RUNTIMES | (string & {});
60
60
  /**
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "1.1.5";
1
+ export declare const VERSION = "1.1.7";
package/dist/version.js CHANGED
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Autogenerated by inject-version.ts
5
- exports.VERSION = "1.1.5";
5
+ exports.VERSION = "1.1.7";
6
6
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/sandbox",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -124,5 +124,53 @@ describe("APIClient", () => {
124
124
  expect(results).toHaveLength(1);
125
125
  expect(results[0]).toEqual({ stream: "stdout", data: "some logs" });
126
126
  });
127
+
128
+ it("includes sandboxId in APIError", async () => {
129
+ mockFetch.mockResolvedValue(
130
+ new Response(null, {
131
+ headers: { "content-type": "application/json" },
132
+ }),
133
+ );
134
+
135
+ const logs = client.getLogs({ sandboxId: "sbx_123", cmdId: "cmd_456" });
136
+
137
+ try {
138
+ for await (const _ of logs) {
139
+ }
140
+ expect.fail("Expected APIError to be thrown");
141
+ } catch (err) {
142
+ expect(err).toBeInstanceOf(APIError);
143
+ expect((err as APIError<unknown>).sandboxId).toBe("sbx_123");
144
+ }
145
+ });
146
+
147
+ it("includes sandboxId in StreamError", async () => {
148
+ const logLines = [
149
+ {
150
+ stream: "error",
151
+ data: {
152
+ code: "sandbox_stopped",
153
+ message: "Sandbox has stopped",
154
+ },
155
+ },
156
+ ];
157
+
158
+ mockFetch.mockResolvedValue(
159
+ new Response(createNdjsonStream(logLines), {
160
+ headers: { "content-type": "application/x-ndjson" },
161
+ }),
162
+ );
163
+
164
+ const logs = client.getLogs({ sandboxId: "sbx_123", cmdId: "cmd_456" });
165
+
166
+ try {
167
+ for await (const _ of logs) {
168
+ }
169
+ expect.fail("Expected StreamError to be thrown");
170
+ } catch (err) {
171
+ expect(err).toBeInstanceOf(StreamError);
172
+ expect((err as StreamError).sandboxId).toBe("sbx_123");
173
+ }
174
+ });
127
175
  });
128
176
  });
@@ -381,12 +381,14 @@ export class APIClient extends BaseClient {
381
381
  if (response.headers.get("content-type") !== "application/x-ndjson") {
382
382
  throw new APIError(response, {
383
383
  message: "Expected a stream of logs",
384
+ sandboxId: params.sandboxId,
384
385
  });
385
386
  }
386
387
 
387
388
  if (response.body === null) {
388
389
  throw new APIError(response, {
389
390
  message: "No response body",
391
+ sandboxId: params.sandboxId,
390
392
  });
391
393
  }
392
394
 
@@ -398,7 +400,11 @@ export class APIClient extends BaseClient {
398
400
  for await (const chunk of jsonlinesStream) {
399
401
  const parsed = LogLine.parse(chunk);
400
402
  if (parsed.stream === "error") {
401
- throw new StreamError(parsed.data.code, parsed.data.message);
403
+ throw new StreamError(
404
+ parsed.data.code,
405
+ parsed.data.message,
406
+ params.sandboxId,
407
+ );
402
408
  }
403
409
  yield parsed;
404
410
  }
@@ -2,6 +2,7 @@ interface Options<ErrorData> {
2
2
  message?: string;
3
3
  json?: ErrorData;
4
4
  text?: string;
5
+ sandboxId?: string;
5
6
  }
6
7
 
7
8
  export class APIError<ErrorData> extends Error {
@@ -9,6 +10,7 @@ export class APIError<ErrorData> extends Error {
9
10
  public message: string;
10
11
  public json?: ErrorData;
11
12
  public text?: string;
13
+ public sandboxId?: string;
12
14
 
13
15
  constructor(response: Response, options?: Options<ErrorData>) {
14
16
  super(response.statusText);
@@ -20,6 +22,7 @@ export class APIError<ErrorData> extends Error {
20
22
  this.message = options?.message ?? "";
21
23
  this.json = options?.json;
22
24
  this.text = options?.text;
25
+ this.sandboxId = options?.sandboxId;
23
26
  }
24
27
  }
25
28
 
@@ -29,11 +32,13 @@ export class APIError<ErrorData> extends Error {
29
32
  */
30
33
  export class StreamError extends Error {
31
34
  public code: string;
35
+ public sandboxId: string;
32
36
 
33
- constructor(code: string, message: string) {
37
+ constructor(code: string, message: string, sandboxId: string) {
34
38
  super(message);
35
39
  this.name = "StreamError";
36
40
  this.code = code;
41
+ this.sandboxId = sandboxId;
37
42
  if (Error.captureStackTrace) {
38
43
  Error.captureStackTrace(this, StreamError);
39
44
  }
@@ -87,6 +87,15 @@ export interface Parsed<Data> {
87
87
  json: Data;
88
88
  }
89
89
 
90
+ /**
91
+ * Extract sandboxId from a sandbox API URL.
92
+ * URLs follow the pattern: /v1/sandboxes/{sandboxId}/...
93
+ */
94
+ function extractSandboxId(url: string): string | undefined {
95
+ const match = url.match(/\/v1\/sandboxes\/([^/?]+)/);
96
+ return match?.[1];
97
+ }
98
+
90
99
  /**
91
100
  * Allows to read the response text and parse it as JSON casting to the given
92
101
  * type. If the response is not ok or cannot be parsed it will return error.
@@ -98,9 +107,12 @@ export async function parse<Data, ErrorData>(
98
107
  validator: ZodType<Data>,
99
108
  response: Response,
100
109
  ): Promise<Parsed<Data> | APIError<ErrorData>> {
110
+ const sandboxId = extractSandboxId(response.url);
111
+
101
112
  const text = await response.text().catch((err) => {
102
113
  return new APIError<ErrorData>(response, {
103
114
  message: `Can't read response text: ${String(err)}`,
115
+ sandboxId,
104
116
  });
105
117
  });
106
118
 
@@ -116,6 +128,7 @@ export async function parse<Data, ErrorData>(
116
128
  return new APIError<ErrorData>(response, {
117
129
  message: `Can't parse JSON: ${String(error)}`,
118
130
  text,
131
+ sandboxId,
119
132
  });
120
133
  }
121
134
 
@@ -124,6 +137,7 @@ export async function parse<Data, ErrorData>(
124
137
  message: `Status code ${response.status} is not ok`,
125
138
  json: json as ErrorData,
126
139
  text,
140
+ sandboxId,
127
141
  });
128
142
  }
129
143
 
@@ -133,6 +147,7 @@ export async function parse<Data, ErrorData>(
133
147
  message: `Response JSON is not valid: ${validated.error}`,
134
148
  json: json as ErrorData,
135
149
  text,
150
+ sandboxId,
136
151
  });
137
152
  }
138
153
 
package/src/command.ts CHANGED
@@ -33,6 +33,14 @@ export class Command {
33
33
 
34
34
  public exitCode: number | null;
35
35
 
36
+ private outputCache: { stdout: string; stderr: string; both: string } | null =
37
+ null;
38
+ private outputCachePromise: Promise<{
39
+ stdout: string;
40
+ stderr: string;
41
+ both: string;
42
+ }> | null = null;
43
+
36
44
  /**
37
45
  * ID of the command execution.
38
46
  */
@@ -134,6 +142,46 @@ export class Command {
134
142
  });
135
143
  }
136
144
 
145
+ /**
146
+ * Get cached output, fetching logs only once and reusing for concurrent calls.
147
+ * This prevents race conditions when stdout() and stderr() are called in parallel.
148
+ */
149
+ private async getCachedOutput(opts?: { signal?: AbortSignal }): Promise<{
150
+ stdout: string;
151
+ stderr: string;
152
+ both: string;
153
+ }> {
154
+ if (this.outputCache) {
155
+ return this.outputCache;
156
+ }
157
+
158
+ if (!this.outputCachePromise) {
159
+ this.outputCachePromise = (async () => {
160
+ try {
161
+ let stdout = "";
162
+ let stderr = "";
163
+ let both = "";
164
+ for await (const log of this.logs({ signal: opts?.signal })) {
165
+ both += log.data;
166
+ if (log.stream === "stdout") {
167
+ stdout += log.data;
168
+ } else {
169
+ stderr += log.data;
170
+ }
171
+ }
172
+ this.outputCache = { stdout, stderr, both };
173
+ return this.outputCache;
174
+ } catch (err) {
175
+ // Clear the promise so future calls can retry
176
+ this.outputCachePromise = null;
177
+ throw err;
178
+ }
179
+ })();
180
+ }
181
+
182
+ return this.outputCachePromise;
183
+ }
184
+
137
185
  /**
138
186
  * Get the output of `stdout`, `stderr`, or both as a string.
139
187
  *
@@ -149,13 +197,8 @@ export class Command {
149
197
  stream: "stdout" | "stderr" | "both" = "both",
150
198
  opts?: { signal?: AbortSignal },
151
199
  ) {
152
- let data = "";
153
- for await (const log of this.logs({ signal: opts?.signal })) {
154
- if (stream === "both" || log.stream === stream) {
155
- data += log.data;
156
- }
157
- }
158
- return data;
200
+ const cached = await this.getCachedOutput(opts);
201
+ return cached[stream];
159
202
  }
160
203
 
161
204
  /**
package/src/sandbox.ts CHANGED
@@ -54,7 +54,7 @@ export interface BaseCreateSandboxParams {
54
54
 
55
55
  /**
56
56
  * The runtime of the sandbox, currently only `node24`, `node22` and `python3.13` are supported.
57
- * If not specified, the default runtime `node22` will be used.
57
+ * If not specified, the default runtime `node24` will be used.
58
58
  */
59
59
  runtime?: RUNTIMES | (string & {});
60
60
 
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // Autogenerated by inject-version.ts
2
- export const VERSION = "1.1.5";
2
+ export const VERSION = "1.1.7";