inngest 4.19.0 → 4.20.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.
- package/CHANGELOG.md +8 -0
- package/components/realtime/types.d.cts +3 -3
- package/components/realtime/types.d.cts.map +1 -1
- package/components/realtime/types.d.ts +3 -3
- package/components/realtime/types.d.ts.map +1 -1
- package/components/sandbox/client.cjs +243 -29
- package/components/sandbox/client.cjs.map +1 -1
- package/components/sandbox/client.js +239 -31
- package/components/sandbox/client.js.map +1 -1
- package/components/sandbox/durable.cjs +158 -1
- package/components/sandbox/durable.cjs.map +1 -1
- package/components/sandbox/durable.js +160 -3
- package/components/sandbox/durable.js.map +1 -1
- package/components/sandbox/middleware.cjs +1 -0
- package/components/sandbox/middleware.cjs.map +1 -1
- package/components/sandbox/middleware.d.cts.map +1 -1
- package/components/sandbox/middleware.d.ts.map +1 -1
- package/components/sandbox/middleware.js +1 -0
- package/components/sandbox/middleware.js.map +1 -1
- package/components/sandbox/protocol.cjs +100 -4
- package/components/sandbox/protocol.cjs.map +1 -1
- package/components/sandbox/protocol.js +101 -5
- package/components/sandbox/protocol.js.map +1 -1
- package/components/sandbox/types.cjs +2 -0
- package/components/sandbox/types.cjs.map +1 -1
- package/components/sandbox/types.d.cts +100 -15
- package/components/sandbox/types.d.cts.map +1 -1
- package/components/sandbox/types.d.ts +100 -15
- package/components/sandbox/types.d.ts.map +1 -1
- package/components/sandbox/types.js +2 -0
- package/components/sandbox/types.js.map +1 -1
- package/components/sandbox/validation.cjs +75 -3
- package/components/sandbox/validation.cjs.map +1 -1
- package/components/sandbox/validation.js +71 -4
- package/components/sandbox/validation.js.map +1 -1
- package/experimental.d.cts +2 -2
- package/experimental.d.ts +2 -2
- package/package.json +1 -1
- package/react.d.cts +1 -1
- package/react.d.ts +1 -1
- package/types.d.cts +8 -8
- package/types.d.ts +8 -8
- package/version.cjs +1 -1
- package/version.cjs.map +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
|
@@ -3,7 +3,7 @@ import { StepOptionsOrId } from "../../types.js";
|
|
|
3
3
|
|
|
4
4
|
//#region src/components/sandbox/types.d.ts
|
|
5
5
|
type SandboxDuration = number | string | DurationLike;
|
|
6
|
-
type SandboxStatus = "PENDING" | "STARTING" | "RUNNING" | "PAUSED" | "TERMINATING" | "TERMINATED" | "FAILED";
|
|
6
|
+
type SandboxStatus = "PENDING" | "STARTING" | "PAUSING" | "RUNNING" | "PAUSED" | "RESUMING" | "TERMINATING" | "TERMINATED" | "FAILED";
|
|
7
7
|
interface SandboxResources {
|
|
8
8
|
readonly vcpu: number;
|
|
9
9
|
readonly memoryMb: number;
|
|
@@ -24,22 +24,13 @@ interface SandboxRef extends SandboxResource {
|
|
|
24
24
|
kind: "inngest/sandbox";
|
|
25
25
|
version: 1;
|
|
26
26
|
}
|
|
27
|
-
interface
|
|
27
|
+
interface SandboxCreateBaseOptions {
|
|
28
28
|
/**
|
|
29
29
|
* Stable identity for an active sandbox. Creating the same name again with
|
|
30
30
|
* the same configuration returns the existing sandbox. Names are
|
|
31
31
|
* case-sensitive and may contain up to 255 characters.
|
|
32
32
|
*/
|
|
33
33
|
name: string;
|
|
34
|
-
vcpu: number;
|
|
35
|
-
memoryMb: number;
|
|
36
|
-
/**
|
|
37
|
-
* Environment inherited by commands and managed processes. Values are
|
|
38
|
-
* persisted as literal sandbox configuration; this is not a secrets
|
|
39
|
-
* mechanism, so do not use this field for secrets. Guest defaults are
|
|
40
|
-
* retained, and operation-specific values override matching keys.
|
|
41
|
-
*/
|
|
42
|
-
environment?: Record<string, string>;
|
|
43
34
|
/**
|
|
44
35
|
* How long to wait for the sandbox to reach RUNNING after Create succeeds.
|
|
45
36
|
*
|
|
@@ -64,6 +55,25 @@ interface SandboxCreateOptions {
|
|
|
64
55
|
*/
|
|
65
56
|
runningTimeout?: SandboxDuration | false;
|
|
66
57
|
}
|
|
58
|
+
interface SandboxCreateFreshOptions extends SandboxCreateBaseOptions {
|
|
59
|
+
vcpu: number;
|
|
60
|
+
memoryMb: number;
|
|
61
|
+
/**
|
|
62
|
+
* Environment inherited by commands and managed processes. Values are
|
|
63
|
+
* persisted as literal sandbox configuration; this is not a secrets
|
|
64
|
+
* mechanism, so do not use this field for secrets. Guest defaults are
|
|
65
|
+
* retained, and operation-specific values override matching keys.
|
|
66
|
+
*/
|
|
67
|
+
environment?: Record<string, string>;
|
|
68
|
+
snapshotId?: never;
|
|
69
|
+
}
|
|
70
|
+
interface SandboxCreateFromSnapshotOptions extends SandboxCreateBaseOptions {
|
|
71
|
+
snapshotId: string;
|
|
72
|
+
vcpu?: never;
|
|
73
|
+
memoryMb?: never;
|
|
74
|
+
environment?: never;
|
|
75
|
+
}
|
|
76
|
+
type SandboxCreateOptions = SandboxCreateFreshOptions | SandboxCreateFromSnapshotOptions;
|
|
67
77
|
interface SandboxWaitUntilRunningOptions {
|
|
68
78
|
timeout: SandboxDuration;
|
|
69
79
|
}
|
|
@@ -198,8 +208,41 @@ interface SandboxFileUploadResult {
|
|
|
198
208
|
interface SandboxFileDownloadOptions {
|
|
199
209
|
path: string;
|
|
200
210
|
}
|
|
201
|
-
type
|
|
202
|
-
|
|
211
|
+
type SandboxSnapshotStatus = "CREATING" | "READY" | "DELETING" | "DELETED" | "FAILED" | "LOST";
|
|
212
|
+
interface SandboxSnapshotResource {
|
|
213
|
+
id: string;
|
|
214
|
+
sourceImageId: string;
|
|
215
|
+
status: SandboxSnapshotStatus;
|
|
216
|
+
compatibilityId?: string;
|
|
217
|
+
resources: SandboxResources;
|
|
218
|
+
memoryPackCount: number;
|
|
219
|
+
diskPackCount: number;
|
|
220
|
+
storedBytes: number;
|
|
221
|
+
createdAt: string;
|
|
222
|
+
updatedAt: string;
|
|
223
|
+
expiresAt: string;
|
|
224
|
+
error?: string;
|
|
225
|
+
}
|
|
226
|
+
interface SandboxSnapshotRef extends SandboxSnapshotResource {
|
|
227
|
+
kind: "inngest/sandbox.snapshot";
|
|
228
|
+
version: 1;
|
|
229
|
+
}
|
|
230
|
+
interface SandboxSnapshotWaitOptions {
|
|
231
|
+
timeout: SandboxDuration;
|
|
232
|
+
}
|
|
233
|
+
interface SandboxLifecycleOptions {
|
|
234
|
+
timeout?: SandboxDuration;
|
|
235
|
+
signal?: AbortSignal;
|
|
236
|
+
}
|
|
237
|
+
type SandboxSnapshotCreateOptions = Record<string, never>;
|
|
238
|
+
interface SandboxSnapshotCloneOptions {
|
|
239
|
+
name: string;
|
|
240
|
+
runningTimeout?: SandboxDuration;
|
|
241
|
+
}
|
|
242
|
+
type SandboxSnapshotListOptions = SandboxListOptions;
|
|
243
|
+
type SandboxSnapshotListResult<TSnapshot = SandboxSnapshotRef> = SandboxListResult<TSnapshot>;
|
|
244
|
+
type SandboxAction = "create" | "list" | "get" | "waitUntilRunning" | "exec" | "destroy" | "pause" | "resume" | "process.start" | "process.list" | "process.get" | "process.signal" | "process.wait" | "process.output" | "process.stream" | "logs.stream" | "file.upload" | "file.download" | "snapshot.create" | "snapshot.list" | "snapshot.get" | "snapshot.waitUntilReady" | "snapshot.delete";
|
|
245
|
+
type SandboxErrorCode = "access_denied" | "compute_unavailable" | "internal_error" | "invalid_field_format" | "invalid_request" | "missing_field" | "operation_ambiguous" | "rate_limited" | "sandbox_exec_output_too_large" | "sandbox_exec_timed_out" | "sandbox_name_taken" | "sandbox_not_found" | "sandbox_start_failed" | "sandbox_start_timed_out" | "sandbox_process_not_found" | "sandbox_process_output_not_retained" | "sandbox_process_wait_timed_out" | "sandbox_snapshot_limit_exceeded" | "sandbox_snapshot_not_found" | "sandbox_snapshot_not_ready" | "sandbox_snapshot_wait_timed_out" | (string & {});
|
|
203
246
|
type SandboxErrorDetail = Record<string, unknown>;
|
|
204
247
|
interface SandboxErrorOptions {
|
|
205
248
|
action: SandboxAction;
|
|
@@ -208,6 +251,7 @@ interface SandboxErrorOptions {
|
|
|
208
251
|
status?: number;
|
|
209
252
|
sandboxId?: string;
|
|
210
253
|
processId?: string;
|
|
254
|
+
snapshotId?: string;
|
|
211
255
|
ambiguous?: boolean;
|
|
212
256
|
retryable?: boolean;
|
|
213
257
|
requestId?: string;
|
|
@@ -227,6 +271,7 @@ declare class SandboxError extends Error {
|
|
|
227
271
|
readonly status?: number;
|
|
228
272
|
readonly sandboxId?: string;
|
|
229
273
|
readonly processId?: string;
|
|
274
|
+
readonly snapshotId?: string;
|
|
230
275
|
readonly ambiguous: boolean;
|
|
231
276
|
readonly retryable: boolean;
|
|
232
277
|
readonly requestId?: string;
|
|
@@ -263,6 +308,9 @@ interface Sandbox {
|
|
|
263
308
|
get(processId: string): Promise<SandboxProcess | null>;
|
|
264
309
|
};
|
|
265
310
|
waitUntilRunning(options: SandboxWaitUntilRunningOptions): Promise<Sandbox>;
|
|
311
|
+
pause(options?: SandboxLifecycleOptions): Promise<Sandbox>;
|
|
312
|
+
resume(options?: SandboxLifecycleOptions): Promise<Sandbox>;
|
|
313
|
+
snapshot(options?: SandboxSnapshotCreateOptions, waitOptions?: SandboxLifecycleOptions): Promise<SandboxSnapshot>;
|
|
266
314
|
destroy(): Promise<SandboxDestroyResult>;
|
|
267
315
|
}
|
|
268
316
|
interface SandboxProcess {
|
|
@@ -282,10 +330,18 @@ interface SandboxProcess {
|
|
|
282
330
|
getOutput(options?: SandboxProcessOutputOptions): Promise<SandboxProcessOutput>;
|
|
283
331
|
streamOutput(options?: SandboxProcessOutputOptions): Promise<ReadableStream<SandboxOutputChunk>>;
|
|
284
332
|
}
|
|
333
|
+
interface SandboxSnapshot extends Readonly<SandboxSnapshotRef> {
|
|
334
|
+
clone(options: SandboxSnapshotCloneOptions, waitOptions?: SandboxLifecycleOptions): Promise<Sandbox>;
|
|
335
|
+
delete(): Promise<void>;
|
|
336
|
+
}
|
|
285
337
|
interface SandboxClient {
|
|
286
|
-
create(options:
|
|
338
|
+
create(options: SandboxCreateFreshOptions): Promise<Sandbox>;
|
|
287
339
|
list(options?: SandboxListOptions): Promise<SandboxListResult<Sandbox>>;
|
|
288
340
|
get(sandboxId: string): Promise<Sandbox | null>;
|
|
341
|
+
readonly snapshots: {
|
|
342
|
+
list(options?: SandboxSnapshotListOptions): Promise<SandboxSnapshotListResult<SandboxSnapshot>>;
|
|
343
|
+
get(snapshotId: string): Promise<SandboxSnapshot | null>;
|
|
344
|
+
};
|
|
289
345
|
}
|
|
290
346
|
interface DurableSandbox {
|
|
291
347
|
readonly kind: "inngest/sandbox";
|
|
@@ -308,9 +364,34 @@ interface DurableSandbox {
|
|
|
308
364
|
list(idOrOptions: StepOptionsOrId, options?: SandboxProcessListOptions): Promise<SandboxProcessListResult<DurableSandboxProcess>>;
|
|
309
365
|
get(idOrOptions: StepOptionsOrId, processId: string): Promise<DurableSandboxProcess | null>;
|
|
310
366
|
};
|
|
367
|
+
readonly snapshots: {
|
|
368
|
+
create(idOrOptions: StepOptionsOrId, options?: SandboxSnapshotCreateOptions, waitOptions?: SandboxLifecycleOptions): Promise<DurableSandboxSnapshot>;
|
|
369
|
+
};
|
|
370
|
+
snapshot(idOrOptions: StepOptionsOrId, options?: SandboxSnapshotCreateOptions, waitOptions?: SandboxLifecycleOptions): Promise<DurableSandboxSnapshot>;
|
|
371
|
+
pause(idOrOptions: StepOptionsOrId, options?: SandboxLifecycleOptions): Promise<DurableSandbox>;
|
|
372
|
+
resume(idOrOptions: StepOptionsOrId, options?: SandboxLifecycleOptions): Promise<DurableSandbox>;
|
|
311
373
|
waitUntilRunning(idOrOptions: StepOptionsOrId, options: SandboxWaitUntilRunningOptions): Promise<DurableSandbox>;
|
|
312
374
|
destroy(idOrOptions: StepOptionsOrId): Promise<SandboxDestroyResult>;
|
|
313
375
|
}
|
|
376
|
+
interface DurableSandboxSnapshot {
|
|
377
|
+
readonly kind: "inngest/sandbox.snapshot";
|
|
378
|
+
readonly version: 1;
|
|
379
|
+
readonly id: string;
|
|
380
|
+
readonly sourceImageId: string;
|
|
381
|
+
readonly status: SandboxSnapshotStatus;
|
|
382
|
+
readonly compatibilityId?: string;
|
|
383
|
+
readonly resources: SandboxResources;
|
|
384
|
+
readonly memoryPackCount: number;
|
|
385
|
+
readonly diskPackCount: number;
|
|
386
|
+
readonly storedBytes: number;
|
|
387
|
+
readonly createdAt: string;
|
|
388
|
+
readonly updatedAt: string;
|
|
389
|
+
readonly expiresAt: string;
|
|
390
|
+
readonly error?: string;
|
|
391
|
+
waitUntilReady(idOrOptions: StepOptionsOrId, options: SandboxSnapshotWaitOptions): Promise<DurableSandboxSnapshot>;
|
|
392
|
+
delete(idOrOptions: StepOptionsOrId): Promise<void>;
|
|
393
|
+
clone(idOrOptions: StepOptionsOrId, options: SandboxSnapshotCloneOptions, waitOptions?: SandboxLifecycleOptions): Promise<DurableSandbox>;
|
|
394
|
+
}
|
|
314
395
|
interface DurableSandboxProcess {
|
|
315
396
|
readonly kind: "inngest/sandbox.process";
|
|
316
397
|
readonly version: 1;
|
|
@@ -331,7 +412,11 @@ interface DurableSandboxTools {
|
|
|
331
412
|
create(idOrOptions: StepOptionsOrId, options: SandboxCreateOptions): Promise<DurableSandbox>;
|
|
332
413
|
list(idOrOptions: StepOptionsOrId, options?: SandboxListOptions): Promise<SandboxListResult<DurableSandbox>>;
|
|
333
414
|
get(idOrOptions: StepOptionsOrId, sandboxId: string): Promise<DurableSandbox | null>;
|
|
415
|
+
readonly snapshots: {
|
|
416
|
+
list(idOrOptions: StepOptionsOrId, options?: SandboxSnapshotListOptions): Promise<SandboxSnapshotListResult<DurableSandboxSnapshot>>;
|
|
417
|
+
get(idOrOptions: StepOptionsOrId, snapshotId: string): Promise<DurableSandboxSnapshot | null>;
|
|
418
|
+
};
|
|
334
419
|
}
|
|
335
420
|
//#endregion
|
|
336
|
-
export { DurableSandbox, DurableSandboxProcess, DurableSandboxTools, Sandbox, SandboxAction, SandboxClient, SandboxCommand, SandboxCommandOptions, SandboxCommandOutputMetadata, SandboxCommandResult, SandboxCreateOptions, SandboxDestroyResult, SandboxDuration, SandboxError, SandboxErrorCode, SandboxErrorDetail, SandboxFileDownloadOptions, SandboxFileUploadOptions, SandboxFileUploadResult, SandboxListOptions, SandboxListResult, SandboxLogStreamOptions, SandboxOutputChunk, SandboxPageInfo, SandboxProcess, SandboxProcessListOptions, SandboxProcessListResult, SandboxProcessOutput, SandboxProcessOutputOptions, SandboxProcessRef, SandboxProcessResource, SandboxProcessSignalOptions, SandboxProcessStartOptions, SandboxProcessState, SandboxProcessWaitOptions, SandboxRef, SandboxResource, SandboxResources, SandboxStatus, SandboxValidationError, SandboxWaitUntilRunningOptions };
|
|
421
|
+
export { DurableSandbox, DurableSandboxProcess, DurableSandboxSnapshot, DurableSandboxTools, Sandbox, SandboxAction, SandboxClient, SandboxCommand, SandboxCommandOptions, SandboxCommandOutputMetadata, SandboxCommandResult, SandboxCreateFreshOptions, SandboxCreateFromSnapshotOptions, SandboxCreateOptions, SandboxDestroyResult, SandboxDuration, SandboxError, SandboxErrorCode, SandboxErrorDetail, SandboxFileDownloadOptions, SandboxFileUploadOptions, SandboxFileUploadResult, SandboxLifecycleOptions, SandboxListOptions, SandboxListResult, SandboxLogStreamOptions, SandboxOutputChunk, SandboxPageInfo, SandboxProcess, SandboxProcessListOptions, SandboxProcessListResult, SandboxProcessOutput, SandboxProcessOutputOptions, SandboxProcessRef, SandboxProcessResource, SandboxProcessSignalOptions, SandboxProcessStartOptions, SandboxProcessState, SandboxProcessWaitOptions, SandboxRef, SandboxResource, SandboxResources, SandboxSnapshot, SandboxSnapshotCloneOptions, SandboxSnapshotCreateOptions, SandboxSnapshotListOptions, SandboxSnapshotListResult, SandboxSnapshotRef, SandboxSnapshotResource, SandboxSnapshotStatus, SandboxSnapshotWaitOptions, SandboxStatus, SandboxValidationError, SandboxWaitUntilRunningOptions };
|
|
337
422
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/components/sandbox/types.ts"],"sourcesContent":[],"mappings":";;;;KAKY,eAAA,qBAAoC;AAApC,KAEA,aAAA,GAFe,SAAqB,GAAA,UAAY,GAAA,SAAA,GAAA,QAAA,GAAA,aAAA,GAAA,YAAA,GAAA,QAAA;AAEhD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/components/sandbox/types.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ var SandboxError = class extends Error {
|
|
|
15
15
|
status;
|
|
16
16
|
sandboxId;
|
|
17
17
|
processId;
|
|
18
|
+
snapshotId;
|
|
18
19
|
ambiguous;
|
|
19
20
|
retryable;
|
|
20
21
|
requestId;
|
|
@@ -28,6 +29,7 @@ var SandboxError = class extends Error {
|
|
|
28
29
|
this.status = options.status;
|
|
29
30
|
this.sandboxId = options.sandboxId;
|
|
30
31
|
this.processId = options.processId;
|
|
32
|
+
this.snapshotId = options.snapshotId;
|
|
31
33
|
this.ambiguous = options.ambiguous ?? options.code === "operation_ambiguous";
|
|
32
34
|
this.retryable = options.retryable ?? false;
|
|
33
35
|
this.requestId = options.requestId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/sandbox/types.ts"],"sourcesContent":["import type { DurationLike } from \"../../helpers/temporal.ts\";\nimport type { StepOptionsOrId } from \"../../types.ts\";\n\nexport const sandboxProtocolVersion = 1 as const;\n\nexport type SandboxDuration = number | string | DurationLike;\n\nexport type SandboxStatus =\n | \"PENDING\"\n | \"STARTING\"\n | \"RUNNING\"\n | \"PAUSED\"\n | \"TERMINATING\"\n | \"TERMINATED\"\n | \"FAILED\";\n\nexport interface SandboxResources {\n readonly vcpu: number;\n readonly memoryMb: number;\n}\n\nexport interface SandboxResource {\n id: string;\n name: string;\n status: SandboxStatus;\n vpcId: string;\n imageRef: string;\n resources: SandboxResources;\n createdAt: string;\n startedAt?: string;\n endedAt?: string;\n error?: string;\n}\n\nexport interface SandboxRef extends SandboxResource {\n kind: \"inngest/sandbox\";\n version: 1;\n}\n\nexport interface SandboxCreateOptions {\n /**\n * Stable identity for an active sandbox. Creating the same name again with\n * the same configuration returns the existing sandbox. Names are\n * case-sensitive and may contain up to 255 characters.\n */\n name: string;\n vcpu: number;\n memoryMb: number;\n\n /**\n * Environment inherited by commands and managed processes. Values are\n * persisted as literal sandbox configuration; this is not a secrets\n * mechanism, so do not use this field for secrets. Guest defaults are\n * retained, and operation-specific values override matching keys.\n */\n environment?: Record<string, string>;\n\n /**\n * How long to wait for the sandbox to reach RUNNING after Create succeeds.\n *\n * Defaults to 120 seconds. Set this to `false` to return as soon as Create is\n * accepted, with either STARTING or RUNNING status.\n *\n * @example\n * ```ts\n * const sandbox = await inngest.sandboxes.create({\n * ...options,\n * runningTimeout: \"30s\",\n * });\n * ```\n *\n * @example Return immediately without waiting\n * ```ts\n * const sandbox = await inngest.sandboxes.create({\n * ...options,\n * runningTimeout: false,\n * });\n * ```\n */\n runningTimeout?: SandboxDuration | false;\n}\n\nexport interface SandboxWaitUntilRunningOptions {\n timeout: SandboxDuration;\n}\n\nexport interface SandboxListOptions {\n cursor?: string;\n limit?: number;\n}\n\nexport interface SandboxPageInfo {\n cursor?: string;\n hasMore: boolean;\n limit: number;\n}\n\nexport interface SandboxListResult<TSandbox = SandboxRef> {\n items: TSandbox[];\n page: SandboxPageInfo;\n fetchedAt: string;\n}\n\n/**\n * A shell command string or an argv array for direct execution.\n *\n * Strings run as `[\"/bin/sh\", \"-c\", command]`. They are passed to the shell\n * unchanged, so normal shell quoting, variables, pipes, redirects, and\n * chaining apply. Arrays bypass the shell and must begin with an absolute\n * executable path.\n */\nexport type SandboxCommand = string | readonly string[];\n\nexport interface SandboxCommandOptions {\n /**\n * Overrides matching sandbox environment values for this command.\n * Omitted or empty inherits the sandbox environment unchanged.\n */\n environment?: Record<string, string>;\n cwd?: string;\n timeout?: SandboxDuration;\n}\n\nexport type SandboxCommandOutputMetadata =\n | {\n truncated: false;\n }\n | {\n truncated: true;\n strategy: \"tail\";\n originalBytes: {\n stdout: number;\n stderr: number;\n };\n retainedBytes: {\n stdout: number;\n stderr: number;\n };\n };\n\nexport interface SandboxCommandResult {\n /**\n * Captured stdout decoded as UTF-8. Invalid or truncated byte sequences are\n * represented by the Unicode replacement character.\n */\n stdout: string;\n /**\n * Captured stderr decoded as UTF-8. Invalid or truncated byte sequences are\n * represented by the Unicode replacement character.\n */\n stderr: string;\n exitCode: number;\n output: SandboxCommandOutputMetadata;\n}\n\nexport type SandboxDestroyResult =\n | {\n status: \"TERMINATING\";\n sandbox: SandboxRef;\n }\n | {\n status: \"TERMINATED\";\n sandbox: null;\n };\n\nexport type SandboxProcessState =\n | \"STARTING\"\n | \"RUNNING\"\n | \"EXITED\"\n | \"KILLED\"\n | \"FAILED\"\n | \"LOST\";\n\nexport interface SandboxProcessResource {\n id: string;\n command: readonly string[];\n pid?: number;\n state: SandboxProcessState;\n exitCode?: number;\n terminationSignal?: number;\n startedAt?: string;\n endedAt?: string;\n}\n\nexport interface SandboxProcessRef extends SandboxProcessResource {\n kind: \"inngest/sandbox.process\";\n version: 1;\n sandboxId: string;\n}\n\nexport interface SandboxProcessStartOptions {\n command: SandboxCommand;\n\n /**\n * Overrides matching sandbox environment values for this process.\n * Omitted or empty inherits the sandbox environment unchanged.\n */\n environment?: Record<string, string>;\n cwd?: string;\n}\n\nexport interface SandboxProcessSignalOptions {\n signal: number;\n /**\n * Also signal the process's descendants. Defaults to `true` so shell-backed\n * commands do not leave their child processes running.\n */\n includeChildren?: boolean;\n}\n\nexport interface SandboxProcessWaitOptions {\n timeout?: SandboxDuration;\n}\n\nexport interface SandboxProcessOutputOptions {\n tailBytes?: number;\n}\n\nexport type SandboxProcessListOptions = SandboxListOptions;\nexport type SandboxProcessListResult<TProcess = SandboxProcessRef> =\n SandboxListResult<TProcess>;\n\nexport interface SandboxOutputChunk {\n stream: \"STDOUT\" | \"STDERR\";\n data: Uint8Array;\n at?: string;\n}\n\nexport interface SandboxProcessOutput {\n chunks: SandboxOutputChunk[];\n}\n\nexport interface SandboxLogStreamOptions {\n follow?: boolean;\n}\n\nexport interface SandboxFileUploadOptions {\n path: string;\n data: BodyInit;\n mode?: number;\n}\n\nexport interface SandboxFileUploadResult {\n path: string;\n bytesWritten: number;\n}\n\nexport interface SandboxFileDownloadOptions {\n path: string;\n}\n\nexport type SandboxAction =\n | \"create\"\n | \"list\"\n | \"get\"\n | \"waitUntilRunning\"\n | \"exec\"\n | \"destroy\"\n | \"process.start\"\n | \"process.list\"\n | \"process.get\"\n | \"process.signal\"\n | \"process.wait\"\n | \"process.output\"\n | \"process.stream\"\n | \"logs.stream\"\n | \"file.upload\"\n | \"file.download\";\n\nexport type SandboxErrorCode =\n | \"access_denied\"\n | \"compute_unavailable\"\n | \"internal_error\"\n | \"invalid_field_format\"\n | \"invalid_request\"\n | \"missing_field\"\n | \"operation_ambiguous\"\n | \"rate_limited\"\n | \"sandbox_exec_output_too_large\"\n | \"sandbox_exec_timed_out\"\n | \"sandbox_name_taken\"\n | \"sandbox_not_found\"\n | \"sandbox_start_failed\"\n | \"sandbox_start_timed_out\"\n | \"sandbox_process_not_found\"\n | \"sandbox_process_output_not_retained\"\n | \"sandbox_process_wait_timed_out\"\n | (string & {});\n\nexport type SandboxErrorDetail = Record<string, unknown>;\n\nexport interface SandboxErrorOptions {\n action: SandboxAction;\n code: SandboxErrorCode;\n message: string;\n status?: number;\n sandboxId?: string;\n processId?: string;\n ambiguous?: boolean;\n retryable?: boolean;\n requestId?: string;\n details?: readonly SandboxErrorDetail[];\n cause?: unknown;\n}\n\nexport class SandboxValidationError extends Error {\n public override readonly cause?: unknown;\n\n constructor(message: string, options?: { cause?: unknown }) {\n super(message);\n this.name = \"SandboxValidationError\";\n this.cause = options?.cause;\n }\n}\n\nexport class SandboxError extends Error {\n public readonly protocolVersion = sandboxProtocolVersion;\n public readonly action: SandboxAction;\n public readonly code: SandboxErrorCode;\n public readonly status?: number;\n public readonly sandboxId?: string;\n public readonly processId?: string;\n public readonly ambiguous: boolean;\n public readonly retryable: boolean;\n public readonly requestId?: string;\n public readonly details: readonly SandboxErrorDetail[];\n public override readonly cause?: unknown;\n\n constructor(options: SandboxErrorOptions) {\n super(options.message);\n this.name = \"SandboxError\";\n this.action = options.action;\n this.code = options.code;\n this.status = options.status;\n this.sandboxId = options.sandboxId;\n this.processId = options.processId;\n this.ambiguous =\n options.ambiguous ?? options.code === \"operation_ambiguous\";\n this.retryable = options.retryable ?? false;\n this.requestId = options.requestId;\n this.details = options.details ?? [];\n this.cause = options.cause;\n }\n}\n\nexport interface Sandbox {\n readonly kind: \"inngest/sandbox\";\n readonly version: 1;\n readonly id: string;\n readonly name: string;\n readonly status: SandboxStatus;\n readonly vpcId: string;\n readonly imageRef: string;\n readonly resources: SandboxResources;\n readonly createdAt: string;\n readonly startedAt?: string;\n readonly endedAt?: string;\n readonly error?: string;\n readonly commands: {\n run(\n command: SandboxCommand,\n options?: SandboxCommandOptions,\n ): Promise<SandboxCommandResult>;\n };\n readonly logs: {\n stream(\n options?: SandboxLogStreamOptions,\n ): Promise<ReadableStream<SandboxOutputChunk>>;\n };\n readonly files: {\n upload(options: SandboxFileUploadOptions): Promise<SandboxFileUploadResult>;\n download(options: SandboxFileDownloadOptions): Promise<Response>;\n };\n readonly processes: {\n start(options: SandboxProcessStartOptions): Promise<SandboxProcess>;\n list(\n options?: SandboxProcessListOptions,\n ): Promise<SandboxProcessListResult<SandboxProcess>>;\n get(processId: string): Promise<SandboxProcess | null>;\n };\n waitUntilRunning(options: SandboxWaitUntilRunningOptions): Promise<Sandbox>;\n destroy(): Promise<SandboxDestroyResult>;\n}\n\nexport interface SandboxProcess {\n readonly kind: \"inngest/sandbox.process\";\n readonly version: 1;\n readonly sandboxId: string;\n readonly id: string;\n readonly command: readonly string[];\n readonly pid?: number;\n readonly state: SandboxProcessState;\n readonly exitCode?: number;\n readonly terminationSignal?: number;\n readonly startedAt?: string;\n readonly endedAt?: string;\n signal(options: SandboxProcessSignalOptions): Promise<void>;\n wait(options?: SandboxProcessWaitOptions): Promise<SandboxProcess>;\n getOutput(\n options?: SandboxProcessOutputOptions,\n ): Promise<SandboxProcessOutput>;\n streamOutput(\n options?: SandboxProcessOutputOptions,\n ): Promise<ReadableStream<SandboxOutputChunk>>;\n}\n\nexport interface SandboxClient {\n create(options: SandboxCreateOptions): Promise<Sandbox>;\n list(options?: SandboxListOptions): Promise<SandboxListResult<Sandbox>>;\n get(sandboxId: string): Promise<Sandbox | null>;\n}\n\nexport interface DurableSandbox {\n readonly kind: \"inngest/sandbox\";\n readonly version: 1;\n readonly id: string;\n readonly name: string;\n readonly status: SandboxStatus;\n readonly vpcId: string;\n readonly imageRef: string;\n readonly resources: SandboxResources;\n readonly createdAt: string;\n readonly startedAt?: string;\n readonly endedAt?: string;\n readonly error?: string;\n readonly commands: {\n run(\n idOrOptions: StepOptionsOrId,\n command: SandboxCommand,\n options?: SandboxCommandOptions,\n ): Promise<SandboxCommandResult>;\n };\n readonly processes: {\n start(\n idOrOptions: StepOptionsOrId,\n options: SandboxProcessStartOptions,\n ): Promise<DurableSandboxProcess>;\n list(\n idOrOptions: StepOptionsOrId,\n options?: SandboxProcessListOptions,\n ): Promise<SandboxProcessListResult<DurableSandboxProcess>>;\n get(\n idOrOptions: StepOptionsOrId,\n processId: string,\n ): Promise<DurableSandboxProcess | null>;\n };\n waitUntilRunning(\n idOrOptions: StepOptionsOrId,\n options: SandboxWaitUntilRunningOptions,\n ): Promise<DurableSandbox>;\n destroy(idOrOptions: StepOptionsOrId): Promise<SandboxDestroyResult>;\n}\n\nexport interface DurableSandboxProcess {\n readonly kind: \"inngest/sandbox.process\";\n readonly version: 1;\n readonly sandboxId: string;\n readonly id: string;\n readonly command: readonly string[];\n readonly pid?: number;\n readonly state: SandboxProcessState;\n readonly exitCode?: number;\n readonly terminationSignal?: number;\n readonly startedAt?: string;\n readonly endedAt?: string;\n signal(\n idOrOptions: StepOptionsOrId,\n options: SandboxProcessSignalOptions,\n ): Promise<void>;\n wait(\n idOrOptions: StepOptionsOrId,\n options?: SandboxProcessWaitOptions,\n ): Promise<DurableSandboxProcess>;\n getOutput(\n idOrOptions: StepOptionsOrId,\n options?: SandboxProcessOutputOptions,\n ): Promise<SandboxProcessOutput>;\n}\n\nexport interface DurableSandboxTools {\n create(\n idOrOptions: StepOptionsOrId,\n options: SandboxCreateOptions,\n ): Promise<DurableSandbox>;\n list(\n idOrOptions: StepOptionsOrId,\n options?: SandboxListOptions,\n ): Promise<SandboxListResult<DurableSandbox>>;\n get(\n idOrOptions: StepOptionsOrId,\n sandboxId: string,\n ): Promise<DurableSandbox | null>;\n}\n"],"mappings":";AAGA,MAAa,yBAAyB;AA8StC,IAAa,yBAAb,cAA4C,MAAM;CAChD,AAAyB;CAEzB,YAAY,SAAiB,SAA+B;AAC1D,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,QAAQ,SAAS;;;AAI1B,IAAa,eAAb,cAAkC,MAAM;CACtC,AAAgB,kBAAkB;CAClC,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAyB;CAEzB,YAAY,SAA8B;AACxC,QAAM,QAAQ,QAAQ;AACtB,OAAK,OAAO;AACZ,OAAK,SAAS,QAAQ;AACtB,OAAK,OAAO,QAAQ;AACpB,OAAK,SAAS,QAAQ;AACtB,OAAK,YAAY,QAAQ;AACzB,OAAK,YAAY,QAAQ;AACzB,OAAK,YACH,QAAQ,aAAa,QAAQ,SAAS;AACxC,OAAK,YAAY,QAAQ,aAAa;AACtC,OAAK,YAAY,QAAQ;AACzB,OAAK,UAAU,QAAQ,WAAW,EAAE;AACpC,OAAK,QAAQ,QAAQ"}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/sandbox/types.ts"],"sourcesContent":["import type { DurationLike } from \"../../helpers/temporal.ts\";\nimport type { StepOptionsOrId } from \"../../types.ts\";\n\nexport const sandboxProtocolVersion = 1 as const;\n\nexport type SandboxDuration = number | string | DurationLike;\n\nexport type SandboxStatus =\n | \"PENDING\"\n | \"STARTING\"\n | \"PAUSING\"\n | \"RUNNING\"\n | \"PAUSED\"\n | \"RESUMING\"\n | \"TERMINATING\"\n | \"TERMINATED\"\n | \"FAILED\";\n\nexport interface SandboxResources {\n readonly vcpu: number;\n readonly memoryMb: number;\n}\n\nexport interface SandboxResource {\n id: string;\n name: string;\n status: SandboxStatus;\n vpcId: string;\n imageRef: string;\n resources: SandboxResources;\n createdAt: string;\n startedAt?: string;\n endedAt?: string;\n error?: string;\n}\n\nexport interface SandboxRef extends SandboxResource {\n kind: \"inngest/sandbox\";\n version: 1;\n}\n\ninterface SandboxCreateBaseOptions {\n /**\n * Stable identity for an active sandbox. Creating the same name again with\n * the same configuration returns the existing sandbox. Names are\n * case-sensitive and may contain up to 255 characters.\n */\n name: string;\n\n /**\n * How long to wait for the sandbox to reach RUNNING after Create succeeds.\n *\n * Defaults to 120 seconds. Set this to `false` to return as soon as Create is\n * accepted, with either STARTING or RUNNING status.\n *\n * @example\n * ```ts\n * const sandbox = await inngest.sandboxes.create({\n * ...options,\n * runningTimeout: \"30s\",\n * });\n * ```\n *\n * @example Return immediately without waiting\n * ```ts\n * const sandbox = await inngest.sandboxes.create({\n * ...options,\n * runningTimeout: false,\n * });\n * ```\n */\n runningTimeout?: SandboxDuration | false;\n}\n\nexport interface SandboxCreateFreshOptions extends SandboxCreateBaseOptions {\n vcpu: number;\n memoryMb: number;\n\n /**\n * Environment inherited by commands and managed processes. Values are\n * persisted as literal sandbox configuration; this is not a secrets\n * mechanism, so do not use this field for secrets. Guest defaults are\n * retained, and operation-specific values override matching keys.\n */\n environment?: Record<string, string>;\n\n snapshotId?: never;\n}\n\nexport interface SandboxCreateFromSnapshotOptions\n extends SandboxCreateBaseOptions {\n snapshotId: string;\n vcpu?: never;\n memoryMb?: never;\n environment?: never;\n}\n\nexport type SandboxCreateOptions =\n | SandboxCreateFreshOptions\n | SandboxCreateFromSnapshotOptions;\n\nexport interface SandboxWaitUntilRunningOptions {\n timeout: SandboxDuration;\n}\n\nexport interface SandboxListOptions {\n cursor?: string;\n limit?: number;\n}\n\nexport interface SandboxPageInfo {\n cursor?: string;\n hasMore: boolean;\n limit: number;\n}\n\nexport interface SandboxListResult<TSandbox = SandboxRef> {\n items: TSandbox[];\n page: SandboxPageInfo;\n fetchedAt: string;\n}\n\n/**\n * A shell command string or an argv array for direct execution.\n *\n * Strings run as `[\"/bin/sh\", \"-c\", command]`. They are passed to the shell\n * unchanged, so normal shell quoting, variables, pipes, redirects, and\n * chaining apply. Arrays bypass the shell and must begin with an absolute\n * executable path.\n */\nexport type SandboxCommand = string | readonly string[];\n\nexport interface SandboxCommandOptions {\n /**\n * Overrides matching sandbox environment values for this command.\n * Omitted or empty inherits the sandbox environment unchanged.\n */\n environment?: Record<string, string>;\n cwd?: string;\n timeout?: SandboxDuration;\n}\n\nexport type SandboxCommandOutputMetadata =\n | {\n truncated: false;\n }\n | {\n truncated: true;\n strategy: \"tail\";\n originalBytes: {\n stdout: number;\n stderr: number;\n };\n retainedBytes: {\n stdout: number;\n stderr: number;\n };\n };\n\nexport interface SandboxCommandResult {\n /**\n * Captured stdout decoded as UTF-8. Invalid or truncated byte sequences are\n * represented by the Unicode replacement character.\n */\n stdout: string;\n /**\n * Captured stderr decoded as UTF-8. Invalid or truncated byte sequences are\n * represented by the Unicode replacement character.\n */\n stderr: string;\n exitCode: number;\n output: SandboxCommandOutputMetadata;\n}\n\nexport type SandboxDestroyResult =\n | {\n status: \"TERMINATING\";\n sandbox: SandboxRef;\n }\n | {\n status: \"TERMINATED\";\n sandbox: null;\n };\n\nexport type SandboxProcessState =\n | \"STARTING\"\n | \"RUNNING\"\n | \"EXITED\"\n | \"KILLED\"\n | \"FAILED\"\n | \"LOST\";\n\nexport interface SandboxProcessResource {\n id: string;\n command: readonly string[];\n pid?: number;\n state: SandboxProcessState;\n exitCode?: number;\n terminationSignal?: number;\n startedAt?: string;\n endedAt?: string;\n}\n\nexport interface SandboxProcessRef extends SandboxProcessResource {\n kind: \"inngest/sandbox.process\";\n version: 1;\n sandboxId: string;\n}\n\nexport interface SandboxProcessStartOptions {\n command: SandboxCommand;\n\n /**\n * Overrides matching sandbox environment values for this process.\n * Omitted or empty inherits the sandbox environment unchanged.\n */\n environment?: Record<string, string>;\n cwd?: string;\n}\n\nexport interface SandboxProcessSignalOptions {\n signal: number;\n /**\n * Also signal the process's descendants. Defaults to `true` so shell-backed\n * commands do not leave their child processes running.\n */\n includeChildren?: boolean;\n}\n\nexport interface SandboxProcessWaitOptions {\n timeout?: SandboxDuration;\n}\n\nexport interface SandboxProcessOutputOptions {\n tailBytes?: number;\n}\n\nexport type SandboxProcessListOptions = SandboxListOptions;\nexport type SandboxProcessListResult<TProcess = SandboxProcessRef> =\n SandboxListResult<TProcess>;\n\nexport interface SandboxOutputChunk {\n stream: \"STDOUT\" | \"STDERR\";\n data: Uint8Array;\n at?: string;\n}\n\nexport interface SandboxProcessOutput {\n chunks: SandboxOutputChunk[];\n}\n\nexport interface SandboxLogStreamOptions {\n follow?: boolean;\n}\n\nexport interface SandboxFileUploadOptions {\n path: string;\n data: BodyInit;\n mode?: number;\n}\n\nexport interface SandboxFileUploadResult {\n path: string;\n bytesWritten: number;\n}\n\nexport interface SandboxFileDownloadOptions {\n path: string;\n}\n\nexport type SandboxSnapshotStatus =\n | \"CREATING\"\n | \"READY\"\n | \"DELETING\"\n | \"DELETED\"\n | \"FAILED\"\n | \"LOST\";\n\nexport interface SandboxSnapshotResource {\n id: string;\n sourceImageId: string;\n status: SandboxSnapshotStatus;\n compatibilityId?: string;\n resources: SandboxResources;\n memoryPackCount: number;\n diskPackCount: number;\n storedBytes: number;\n createdAt: string;\n updatedAt: string;\n expiresAt: string;\n error?: string;\n}\n\nexport interface SandboxSnapshotRef extends SandboxSnapshotResource {\n kind: \"inngest/sandbox.snapshot\";\n version: 1;\n}\n\nexport interface SandboxSnapshotWaitOptions {\n timeout: SandboxDuration;\n}\n\nexport interface SandboxLifecycleOptions {\n timeout?: SandboxDuration;\n signal?: AbortSignal;\n}\n\nexport type SandboxSnapshotCreateOptions = Record<string, never>;\nexport interface SandboxSnapshotCloneOptions {\n name: string;\n runningTimeout?: SandboxDuration;\n}\n\nexport type SandboxSnapshotListOptions = SandboxListOptions;\nexport type SandboxSnapshotListResult<TSnapshot = SandboxSnapshotRef> =\n SandboxListResult<TSnapshot>;\n\nexport type SandboxAction =\n | \"create\"\n | \"list\"\n | \"get\"\n | \"waitUntilRunning\"\n | \"exec\"\n | \"destroy\"\n | \"pause\"\n | \"resume\"\n | \"process.start\"\n | \"process.list\"\n | \"process.get\"\n | \"process.signal\"\n | \"process.wait\"\n | \"process.output\"\n | \"process.stream\"\n | \"logs.stream\"\n | \"file.upload\"\n | \"file.download\"\n | \"snapshot.create\"\n | \"snapshot.list\"\n | \"snapshot.get\"\n | \"snapshot.waitUntilReady\"\n | \"snapshot.delete\";\n\nexport type SandboxErrorCode =\n | \"access_denied\"\n | \"compute_unavailable\"\n | \"internal_error\"\n | \"invalid_field_format\"\n | \"invalid_request\"\n | \"missing_field\"\n | \"operation_ambiguous\"\n | \"rate_limited\"\n | \"sandbox_exec_output_too_large\"\n | \"sandbox_exec_timed_out\"\n | \"sandbox_name_taken\"\n | \"sandbox_not_found\"\n | \"sandbox_start_failed\"\n | \"sandbox_start_timed_out\"\n | \"sandbox_process_not_found\"\n | \"sandbox_process_output_not_retained\"\n | \"sandbox_process_wait_timed_out\"\n | \"sandbox_snapshot_limit_exceeded\"\n | \"sandbox_snapshot_not_found\"\n | \"sandbox_snapshot_not_ready\"\n | \"sandbox_snapshot_wait_timed_out\"\n | (string & {});\n\nexport type SandboxErrorDetail = Record<string, unknown>;\n\nexport interface SandboxErrorOptions {\n action: SandboxAction;\n code: SandboxErrorCode;\n message: string;\n status?: number;\n sandboxId?: string;\n processId?: string;\n snapshotId?: string;\n ambiguous?: boolean;\n retryable?: boolean;\n requestId?: string;\n details?: readonly SandboxErrorDetail[];\n cause?: unknown;\n}\n\nexport class SandboxValidationError extends Error {\n public override readonly cause?: unknown;\n\n constructor(message: string, options?: { cause?: unknown }) {\n super(message);\n this.name = \"SandboxValidationError\";\n this.cause = options?.cause;\n }\n}\n\nexport class SandboxError extends Error {\n public readonly protocolVersion = sandboxProtocolVersion;\n public readonly action: SandboxAction;\n public readonly code: SandboxErrorCode;\n public readonly status?: number;\n public readonly sandboxId?: string;\n public readonly processId?: string;\n public readonly snapshotId?: string;\n public readonly ambiguous: boolean;\n public readonly retryable: boolean;\n public readonly requestId?: string;\n public readonly details: readonly SandboxErrorDetail[];\n public override readonly cause?: unknown;\n\n constructor(options: SandboxErrorOptions) {\n super(options.message);\n this.name = \"SandboxError\";\n this.action = options.action;\n this.code = options.code;\n this.status = options.status;\n this.sandboxId = options.sandboxId;\n this.processId = options.processId;\n this.snapshotId = options.snapshotId;\n this.ambiguous =\n options.ambiguous ?? options.code === \"operation_ambiguous\";\n this.retryable = options.retryable ?? false;\n this.requestId = options.requestId;\n this.details = options.details ?? [];\n this.cause = options.cause;\n }\n}\n\nexport interface Sandbox {\n readonly kind: \"inngest/sandbox\";\n readonly version: 1;\n readonly id: string;\n readonly name: string;\n readonly status: SandboxStatus;\n readonly vpcId: string;\n readonly imageRef: string;\n readonly resources: SandboxResources;\n readonly createdAt: string;\n readonly startedAt?: string;\n readonly endedAt?: string;\n readonly error?: string;\n readonly commands: {\n run(\n command: SandboxCommand,\n options?: SandboxCommandOptions,\n ): Promise<SandboxCommandResult>;\n };\n readonly logs: {\n stream(\n options?: SandboxLogStreamOptions,\n ): Promise<ReadableStream<SandboxOutputChunk>>;\n };\n readonly files: {\n upload(options: SandboxFileUploadOptions): Promise<SandboxFileUploadResult>;\n download(options: SandboxFileDownloadOptions): Promise<Response>;\n };\n readonly processes: {\n start(options: SandboxProcessStartOptions): Promise<SandboxProcess>;\n list(\n options?: SandboxProcessListOptions,\n ): Promise<SandboxProcessListResult<SandboxProcess>>;\n get(processId: string): Promise<SandboxProcess | null>;\n };\n waitUntilRunning(options: SandboxWaitUntilRunningOptions): Promise<Sandbox>;\n pause(options?: SandboxLifecycleOptions): Promise<Sandbox>;\n resume(options?: SandboxLifecycleOptions): Promise<Sandbox>;\n snapshot(\n options?: SandboxSnapshotCreateOptions,\n waitOptions?: SandboxLifecycleOptions,\n ): Promise<SandboxSnapshot>;\n destroy(): Promise<SandboxDestroyResult>;\n}\n\nexport interface SandboxProcess {\n readonly kind: \"inngest/sandbox.process\";\n readonly version: 1;\n readonly sandboxId: string;\n readonly id: string;\n readonly command: readonly string[];\n readonly pid?: number;\n readonly state: SandboxProcessState;\n readonly exitCode?: number;\n readonly terminationSignal?: number;\n readonly startedAt?: string;\n readonly endedAt?: string;\n signal(options: SandboxProcessSignalOptions): Promise<void>;\n wait(options?: SandboxProcessWaitOptions): Promise<SandboxProcess>;\n getOutput(\n options?: SandboxProcessOutputOptions,\n ): Promise<SandboxProcessOutput>;\n streamOutput(\n options?: SandboxProcessOutputOptions,\n ): Promise<ReadableStream<SandboxOutputChunk>>;\n}\n\nexport interface SandboxSnapshot extends Readonly<SandboxSnapshotRef> {\n clone(\n options: SandboxSnapshotCloneOptions,\n waitOptions?: SandboxLifecycleOptions,\n ): Promise<Sandbox>;\n delete(): Promise<void>;\n}\n\nexport interface SandboxClient {\n create(options: SandboxCreateFreshOptions): Promise<Sandbox>;\n list(options?: SandboxListOptions): Promise<SandboxListResult<Sandbox>>;\n get(sandboxId: string): Promise<Sandbox | null>;\n readonly snapshots: {\n list(\n options?: SandboxSnapshotListOptions,\n ): Promise<SandboxSnapshotListResult<SandboxSnapshot>>;\n get(snapshotId: string): Promise<SandboxSnapshot | null>;\n };\n}\n\nexport interface DurableSandbox {\n readonly kind: \"inngest/sandbox\";\n readonly version: 1;\n readonly id: string;\n readonly name: string;\n readonly status: SandboxStatus;\n readonly vpcId: string;\n readonly imageRef: string;\n readonly resources: SandboxResources;\n readonly createdAt: string;\n readonly startedAt?: string;\n readonly endedAt?: string;\n readonly error?: string;\n readonly commands: {\n run(\n idOrOptions: StepOptionsOrId,\n command: SandboxCommand,\n options?: SandboxCommandOptions,\n ): Promise<SandboxCommandResult>;\n };\n readonly processes: {\n start(\n idOrOptions: StepOptionsOrId,\n options: SandboxProcessStartOptions,\n ): Promise<DurableSandboxProcess>;\n list(\n idOrOptions: StepOptionsOrId,\n options?: SandboxProcessListOptions,\n ): Promise<SandboxProcessListResult<DurableSandboxProcess>>;\n get(\n idOrOptions: StepOptionsOrId,\n processId: string,\n ): Promise<DurableSandboxProcess | null>;\n };\n readonly snapshots: {\n create(\n idOrOptions: StepOptionsOrId,\n options?: SandboxSnapshotCreateOptions,\n waitOptions?: SandboxLifecycleOptions,\n ): Promise<DurableSandboxSnapshot>;\n };\n snapshot(\n idOrOptions: StepOptionsOrId,\n options?: SandboxSnapshotCreateOptions,\n waitOptions?: SandboxLifecycleOptions,\n ): Promise<DurableSandboxSnapshot>;\n pause(\n idOrOptions: StepOptionsOrId,\n options?: SandboxLifecycleOptions,\n ): Promise<DurableSandbox>;\n resume(\n idOrOptions: StepOptionsOrId,\n options?: SandboxLifecycleOptions,\n ): Promise<DurableSandbox>;\n waitUntilRunning(\n idOrOptions: StepOptionsOrId,\n options: SandboxWaitUntilRunningOptions,\n ): Promise<DurableSandbox>;\n destroy(idOrOptions: StepOptionsOrId): Promise<SandboxDestroyResult>;\n}\n\nexport interface DurableSandboxSnapshot {\n readonly kind: \"inngest/sandbox.snapshot\";\n readonly version: 1;\n readonly id: string;\n readonly sourceImageId: string;\n readonly status: SandboxSnapshotStatus;\n readonly compatibilityId?: string;\n readonly resources: SandboxResources;\n readonly memoryPackCount: number;\n readonly diskPackCount: number;\n readonly storedBytes: number;\n readonly createdAt: string;\n readonly updatedAt: string;\n readonly expiresAt: string;\n readonly error?: string;\n waitUntilReady(\n idOrOptions: StepOptionsOrId,\n options: SandboxSnapshotWaitOptions,\n ): Promise<DurableSandboxSnapshot>;\n delete(idOrOptions: StepOptionsOrId): Promise<void>;\n clone(\n idOrOptions: StepOptionsOrId,\n options: SandboxSnapshotCloneOptions,\n waitOptions?: SandboxLifecycleOptions,\n ): Promise<DurableSandbox>;\n}\n\nexport interface DurableSandboxProcess {\n readonly kind: \"inngest/sandbox.process\";\n readonly version: 1;\n readonly sandboxId: string;\n readonly id: string;\n readonly command: readonly string[];\n readonly pid?: number;\n readonly state: SandboxProcessState;\n readonly exitCode?: number;\n readonly terminationSignal?: number;\n readonly startedAt?: string;\n readonly endedAt?: string;\n signal(\n idOrOptions: StepOptionsOrId,\n options: SandboxProcessSignalOptions,\n ): Promise<void>;\n wait(\n idOrOptions: StepOptionsOrId,\n options?: SandboxProcessWaitOptions,\n ): Promise<DurableSandboxProcess>;\n getOutput(\n idOrOptions: StepOptionsOrId,\n options?: SandboxProcessOutputOptions,\n ): Promise<SandboxProcessOutput>;\n}\n\nexport interface DurableSandboxTools {\n create(\n idOrOptions: StepOptionsOrId,\n options: SandboxCreateOptions,\n ): Promise<DurableSandbox>;\n list(\n idOrOptions: StepOptionsOrId,\n options?: SandboxListOptions,\n ): Promise<SandboxListResult<DurableSandbox>>;\n get(\n idOrOptions: StepOptionsOrId,\n sandboxId: string,\n ): Promise<DurableSandbox | null>;\n readonly snapshots: {\n list(\n idOrOptions: StepOptionsOrId,\n options?: SandboxSnapshotListOptions,\n ): Promise<SandboxSnapshotListResult<DurableSandboxSnapshot>>;\n get(\n idOrOptions: StepOptionsOrId,\n snapshotId: string,\n ): Promise<DurableSandboxSnapshot | null>;\n };\n}\n"],"mappings":";AAGA,MAAa,yBAAyB;AA4XtC,IAAa,yBAAb,cAA4C,MAAM;CAChD,AAAyB;CAEzB,YAAY,SAAiB,SAA+B;AAC1D,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,QAAQ,SAAS;;;AAI1B,IAAa,eAAb,cAAkC,MAAM;CACtC,AAAgB,kBAAkB;CAClC,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAgB;CAChB,AAAyB;CAEzB,YAAY,SAA8B;AACxC,QAAM,QAAQ,QAAQ;AACtB,OAAK,OAAO;AACZ,OAAK,SAAS,QAAQ;AACtB,OAAK,OAAO,QAAQ;AACpB,OAAK,SAAS,QAAQ;AACtB,OAAK,YAAY,QAAQ;AACzB,OAAK,YAAY,QAAQ;AACzB,OAAK,aAAa,QAAQ;AAC1B,OAAK,YACH,QAAQ,aAAa,QAAQ,SAAS;AACxC,OAAK,YAAY,QAAQ,aAAa;AACtC,OAAK,YAAY,QAAQ;AACzB,OAAK,UAAU,QAAQ,WAAW,EAAE;AACpC,OAAK,QAAQ,QAAQ"}
|
|
@@ -10,6 +10,7 @@ const maxSandboxProcessTimeoutMs = 300 * 1e3;
|
|
|
10
10
|
const defaultSandboxProcessTimeoutMs = 30 * 1e3;
|
|
11
11
|
const maxSandboxRunningTimeoutMs = 300 * 1e3;
|
|
12
12
|
const defaultSandboxRunningTimeoutMs = 120 * 1e3;
|
|
13
|
+
const maxSandboxSnapshotWaitTimeoutMs = 300 * 1e3;
|
|
13
14
|
const maxSandboxProcessTailBytes = 512 * 1024;
|
|
14
15
|
const maxProcessArgvCount = 128;
|
|
15
16
|
const maxProcessArgvBytes = 32 * 1024;
|
|
@@ -76,8 +77,10 @@ const timestampSchema = zod_v3.z.string().regex(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:
|
|
|
76
77
|
const sandboxStatusSchema = zod_v3.z.enum([
|
|
77
78
|
"PENDING",
|
|
78
79
|
"STARTING",
|
|
80
|
+
"PAUSING",
|
|
79
81
|
"RUNNING",
|
|
80
82
|
"PAUSED",
|
|
83
|
+
"RESUMING",
|
|
81
84
|
"TERMINATING",
|
|
82
85
|
"TERMINATED",
|
|
83
86
|
"FAILED"
|
|
@@ -113,6 +116,52 @@ const sandboxRefSchema = sandboxResourceSchema.extend({
|
|
|
113
116
|
kind: zod_v3.z.literal("inngest/sandbox"),
|
|
114
117
|
version: zod_v3.z.literal(1)
|
|
115
118
|
}).strict();
|
|
119
|
+
const sandboxSnapshotStatusSchema = zod_v3.z.enum([
|
|
120
|
+
"CREATING",
|
|
121
|
+
"READY",
|
|
122
|
+
"DELETING",
|
|
123
|
+
"DELETED",
|
|
124
|
+
"FAILED",
|
|
125
|
+
"LOST"
|
|
126
|
+
]);
|
|
127
|
+
const sandboxSnapshotResourceBaseSchema = zod_v3.z.object({
|
|
128
|
+
id: canonicalUuidSchema,
|
|
129
|
+
sourceImageId: zod_v3.z.string().min(1),
|
|
130
|
+
status: sandboxSnapshotStatusSchema,
|
|
131
|
+
compatibilityId: zod_v3.z.string().min(1).optional(),
|
|
132
|
+
resources: sandboxResourcesSchema,
|
|
133
|
+
memoryPackCount: zod_v3.z.number().int().nonnegative().max(4294967295),
|
|
134
|
+
diskPackCount: zod_v3.z.number().int().nonnegative().max(4294967295),
|
|
135
|
+
storedBytes: zod_v3.z.number().int().nonnegative().safe(),
|
|
136
|
+
createdAt: timestampSchema,
|
|
137
|
+
updatedAt: timestampSchema,
|
|
138
|
+
expiresAt: timestampSchema,
|
|
139
|
+
error: zod_v3.z.string().min(1).optional()
|
|
140
|
+
}).strict();
|
|
141
|
+
const validateSandboxSnapshotResource = (snapshot, ctx) => {
|
|
142
|
+
if (snapshot.status === "READY" && snapshot.compatibilityId === void 0) ctx.addIssue({
|
|
143
|
+
code: zod_v3.z.ZodIssueCode.custom,
|
|
144
|
+
message: "compatibilityId is required for READY snapshots",
|
|
145
|
+
path: ["compatibilityId"]
|
|
146
|
+
});
|
|
147
|
+
if (snapshot.status === "READY" && !/^[a-f0-9]{64}$/.test(snapshot.sourceImageId)) ctx.addIssue({
|
|
148
|
+
code: zod_v3.z.ZodIssueCode.custom,
|
|
149
|
+
message: "Source image ID must be a lowercase SHA-256 for READY snapshots",
|
|
150
|
+
path: ["sourceImageId"]
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
const sandboxSnapshotResourceSchema = sandboxSnapshotResourceBaseSchema.superRefine(validateSandboxSnapshotResource);
|
|
154
|
+
const wireSandboxSnapshotResourceSchema = sandboxSnapshotResourceBaseSchema.omit({
|
|
155
|
+
resources: true,
|
|
156
|
+
error: true
|
|
157
|
+
}).extend({
|
|
158
|
+
resources: sandboxResourcesSchema.strip(),
|
|
159
|
+
error: zod_v3.z.string().min(1).nullish()
|
|
160
|
+
}).strip().superRefine(validateSandboxSnapshotResource);
|
|
161
|
+
const sandboxSnapshotRefSchema = sandboxSnapshotResourceBaseSchema.extend({
|
|
162
|
+
kind: zod_v3.z.literal("inngest/sandbox.snapshot"),
|
|
163
|
+
version: zod_v3.z.literal(1)
|
|
164
|
+
}).strict().superRefine(validateSandboxSnapshotResource);
|
|
116
165
|
const sandboxProcessStateSchema = zod_v3.z.enum([
|
|
117
166
|
"STARTING",
|
|
118
167
|
"RUNNING",
|
|
@@ -209,15 +258,28 @@ const sandboxProcessRefFromResource = (sandboxId, value) => parseWithSchema(sand
|
|
|
209
258
|
sandboxId,
|
|
210
259
|
...parseWithSchema(wireSandboxProcessResourceSchema, value, "sandbox process resource")
|
|
211
260
|
}, "sandbox process reference");
|
|
261
|
+
const sandboxSnapshotRefFromResource = (value) => {
|
|
262
|
+
const { error, ...base } = parseWithSchema(wireSandboxSnapshotResourceSchema, value, "sandbox snapshot resource");
|
|
263
|
+
return {
|
|
264
|
+
kind: "inngest/sandbox.snapshot",
|
|
265
|
+
version: 1,
|
|
266
|
+
...base,
|
|
267
|
+
...error != null && { error }
|
|
268
|
+
};
|
|
269
|
+
};
|
|
212
270
|
const normalizeSandboxCreateOptions = (options) => {
|
|
213
|
-
const parsed = parseWithSchema(zod_v3.z.object({
|
|
271
|
+
const parsed = parseWithSchema(zod_v3.z.union([zod_v3.z.object({
|
|
214
272
|
name: sandboxNameSchema,
|
|
215
273
|
vcpu: zod_v3.z.number().int().positive().max(4294967295),
|
|
216
274
|
memoryMb: zod_v3.z.number().int().positive().max(4294967295),
|
|
217
275
|
environment: zod_v3.z.record(zod_v3.z.string()).optional(),
|
|
218
276
|
runningTimeout: zod_v3.z.unknown().optional()
|
|
219
|
-
}).strict(),
|
|
220
|
-
|
|
277
|
+
}).strict(), zod_v3.z.object({
|
|
278
|
+
name: sandboxNameSchema,
|
|
279
|
+
snapshotId: canonicalUuidSchema,
|
|
280
|
+
runningTimeout: zod_v3.z.unknown().optional()
|
|
281
|
+
}).strict()]), options, "sandbox create options");
|
|
282
|
+
if ("environment" in parsed) validateSandboxEnvironment(parsed.environment);
|
|
221
283
|
const { runningTimeout, ...create } = parsed;
|
|
222
284
|
return {
|
|
223
285
|
...create,
|
|
@@ -238,6 +300,11 @@ const normalizeSandboxListOptions = (options = {}) => {
|
|
|
238
300
|
};
|
|
239
301
|
};
|
|
240
302
|
const normalizeSandboxProcessListOptions = normalizeSandboxListOptions;
|
|
303
|
+
const normalizeSandboxSnapshotListOptions = (options = {}) => normalizeSandboxListOptions(options);
|
|
304
|
+
const normalizeSandboxSnapshotCreateOptions = (options = {}) => parseWithSchema(zod_v3.z.object({}).strict(), options, "sandbox snapshot create options");
|
|
305
|
+
const normalizeSandboxSnapshotWaitOptions = (options) => {
|
|
306
|
+
return { timeoutMs: normalizeDurationMs(parseWithSchema(zod_v3.z.object({ timeout: zod_v3.z.unknown() }).strict(), options, "sandbox snapshot waitUntilReady options").timeout, maxSandboxSnapshotWaitTimeoutMs, "timeout") };
|
|
307
|
+
};
|
|
241
308
|
const normalizeProcessSpec = (options, includeTimeout) => {
|
|
242
309
|
const parsed = parseWithSchema(zod_v3.z.object({
|
|
243
310
|
command: zod_v3.z.union([zod_v3.z.string().min(1, "command must not be empty"), zod_v3.z.array(zod_v3.z.string()).min(1).max(maxProcessArgvCount)]),
|
|
@@ -377,6 +444,9 @@ exports.normalizeSandboxProcessOutputOptions = normalizeSandboxProcessOutputOpti
|
|
|
377
444
|
exports.normalizeSandboxProcessSignalOptions = normalizeSandboxProcessSignalOptions;
|
|
378
445
|
exports.normalizeSandboxProcessStartOptions = normalizeSandboxProcessStartOptions;
|
|
379
446
|
exports.normalizeSandboxProcessWaitOptions = normalizeSandboxProcessWaitOptions;
|
|
447
|
+
exports.normalizeSandboxSnapshotCreateOptions = normalizeSandboxSnapshotCreateOptions;
|
|
448
|
+
exports.normalizeSandboxSnapshotListOptions = normalizeSandboxSnapshotListOptions;
|
|
449
|
+
exports.normalizeSandboxSnapshotWaitOptions = normalizeSandboxSnapshotWaitOptions;
|
|
380
450
|
exports.normalizeSandboxWaitUntilRunningOptions = normalizeSandboxWaitUntilRunningOptions;
|
|
381
451
|
exports.parseWithSchema = parseWithSchema;
|
|
382
452
|
exports.restOutputChunkSchema = restOutputChunkSchema;
|
|
@@ -385,5 +455,7 @@ exports.sandboxProcessRefFromResource = sandboxProcessRefFromResource;
|
|
|
385
455
|
exports.sandboxProcessRefSchema = sandboxProcessRefSchema;
|
|
386
456
|
exports.sandboxRefFromResource = sandboxRefFromResource;
|
|
387
457
|
exports.sandboxRefSchema = sandboxRefSchema;
|
|
458
|
+
exports.sandboxSnapshotRefFromResource = sandboxSnapshotRefFromResource;
|
|
459
|
+
exports.sandboxSnapshotRefSchema = sandboxSnapshotRefSchema;
|
|
388
460
|
exports.wireOutputChunkSchema = wireOutputChunkSchema;
|
|
389
461
|
//# sourceMappingURL=validation.cjs.map
|