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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable.cjs","names":["maxDurableSandboxExecOutputBytes","encodeBase64","parseSandboxOperation","sandboxProtocolVersion","sandboxForOperation","runSandboxCommandForOperation","sandboxProcessForOperation","validateSandboxResult","SandboxValidationError","findSandboxErrorOptions","SandboxError","findSandboxValidationError","parseWithSchema","sandboxProcessRefSchema","facade: DurableSandboxProcess","parseSandboxOperationForAction","normalizeSandboxProcessSignalOptions","normalizeSandboxProcessWaitOptions","normalizeSandboxProcessOutputOptions","decodeOutputChunk","sandboxRefSchema","facade: DurableSandbox","normalizeSandboxCommandOptions","decodeUtf8","decodeBase64","normalizeSandboxProcessStartOptions","normalizeSandboxProcessListOptions","canonicalUuidSchema","normalizeSandboxWaitUntilRunningOptions","normalizeSandboxCreateOptions","normalizeSandboxListOptions"],"sources":["../../../src/components/sandbox/durable.ts"],"sourcesContent":["import type { StepOptionsOrId } from \"../../types.ts\";\nimport {\n runSandboxCommandForOperation,\n sandboxForOperation,\n sandboxProcessForOperation,\n} from \"./client.ts\";\nimport {\n findSandboxErrorOptions,\n findSandboxValidationError,\n maxDurableSandboxExecOutputBytes,\n parseSandboxOperation,\n parseSandboxOperationForAction,\n type SandboxOperationForAction,\n type SandboxOperationResultV1,\n type SandboxOperationV1,\n type SandboxRawToolResolver,\n type SandboxResultForAction,\n validateSandboxResult,\n} from \"./protocol.ts\";\nimport {\n type DurableSandbox,\n type DurableSandboxProcess,\n type DurableSandboxTools,\n type Sandbox,\n type SandboxAction,\n type SandboxClient,\n type SandboxCommandOutputMetadata,\n type SandboxDestroyResult,\n SandboxError,\n type SandboxOutputChunk,\n type SandboxProcess,\n type SandboxProcessRef,\n type SandboxRef,\n SandboxValidationError,\n sandboxProtocolVersion,\n} from \"./types.ts\";\nimport {\n canonicalUuidSchema,\n decodeBase64,\n decodeOutputChunk,\n decodeUtf8,\n encodeBase64,\n normalizeSandboxCommandOptions,\n normalizeSandboxCreateOptions,\n normalizeSandboxListOptions,\n normalizeSandboxProcessListOptions,\n normalizeSandboxProcessOutputOptions,\n normalizeSandboxProcessSignalOptions,\n normalizeSandboxProcessStartOptions,\n normalizeSandboxProcessWaitOptions,\n normalizeSandboxWaitUntilRunningOptions,\n parseWithSchema,\n sandboxProcessRefSchema,\n sandboxRefSchema,\n} from \"./validation.ts\";\n\nconst fitDurableSandboxExecOutput = (\n stdout: Uint8Array,\n stderr: Uint8Array,\n): {\n stdout: Uint8Array;\n stderr: Uint8Array;\n output: SandboxCommandOutputMetadata;\n} => {\n const originalBytes = {\n stdout: stdout.byteLength,\n stderr: stderr.byteLength,\n };\n if (\n originalBytes.stdout + originalBytes.stderr <=\n maxDurableSandboxExecOutputBytes\n ) {\n return { stdout, stderr, output: { truncated: false } };\n }\n\n // This bound intentionally lives in the `step.sandbox.exec` wrapper rather\n // than the direct client. `step.run` persists at most 4 MiB of serialized\n // output, and base64 expands captured bytes. Reserve half of the safe raw\n // budget for each stream, donate unused capacity to the other stream, and\n // retain tails because command failures generally appear at the end.\n const streamShare = Math.floor(maxDurableSandboxExecOutputBytes / 2);\n let retainedStdoutBytes = Math.min(originalBytes.stdout, streamShare);\n let retainedStderrBytes = Math.min(originalBytes.stderr, streamShare);\n let remainingBytes =\n maxDurableSandboxExecOutputBytes -\n retainedStdoutBytes -\n retainedStderrBytes;\n\n const extraStdoutBytes = Math.min(\n originalBytes.stdout - retainedStdoutBytes,\n remainingBytes,\n );\n retainedStdoutBytes += extraStdoutBytes;\n remainingBytes -= extraStdoutBytes;\n retainedStderrBytes += Math.min(\n originalBytes.stderr - retainedStderrBytes,\n remainingBytes,\n );\n\n const retainedBytes = {\n stdout: retainedStdoutBytes,\n stderr: retainedStderrBytes,\n };\n return {\n stdout: stdout.subarray(originalBytes.stdout - retainedBytes.stdout),\n stderr: stderr.subarray(originalBytes.stderr - retainedBytes.stderr),\n output: {\n truncated: true,\n strategy: \"tail\",\n originalBytes,\n retainedBytes,\n },\n };\n};\n\nconst encodeOutputChunk = (\n chunk: SandboxOutputChunk,\n): {\n stream: \"STDOUT\" | \"STDERR\";\n data: string;\n encoding: \"base64\";\n at?: string;\n} => ({\n stream: chunk.stream,\n data: encodeBase64(chunk.data),\n encoding: \"base64\",\n ...(chunk.at !== undefined && { at: chunk.at }),\n});\n\nconst sandboxRefForWire = (sandbox: Sandbox): SandboxRef => ({\n kind: sandbox.kind,\n version: sandbox.version,\n id: sandbox.id,\n name: sandbox.name,\n status: sandbox.status,\n vpcId: sandbox.vpcId,\n imageRef: sandbox.imageRef,\n resources: { ...sandbox.resources },\n createdAt: sandbox.createdAt,\n ...(sandbox.startedAt !== undefined && { startedAt: sandbox.startedAt }),\n ...(sandbox.endedAt !== undefined && { endedAt: sandbox.endedAt }),\n ...(sandbox.error !== undefined && { error: sandbox.error }),\n});\n\nconst processRefForWire = (process: SandboxProcess) => ({\n kind: process.kind,\n version: process.version,\n sandboxId: process.sandboxId,\n id: process.id,\n command: [...process.command],\n ...(process.pid !== undefined && { pid: process.pid }),\n state: process.state,\n ...(process.exitCode !== undefined && { exitCode: process.exitCode }),\n ...(process.terminationSignal !== undefined && {\n terminationSignal: process.terminationSignal,\n }),\n ...(process.startedAt !== undefined && { startedAt: process.startedAt }),\n ...(process.endedAt !== undefined && { endedAt: process.endedAt }),\n});\n\n/**\n * Execute a durable sandbox operation through the public REST client and\n * reduce its result to JSON-safe data suitable for normal step memoization.\n */\nexport const executeSandboxOperation = async (\n client: SandboxClient,\n rawOperation: unknown,\n): Promise<SandboxOperationResultV1> => {\n const operation = parseSandboxOperation(rawOperation);\n\n switch (operation.action) {\n case \"create\": {\n const { runningTimeoutMs, ...options } = operation.input[0];\n const sandbox = await client.create({\n ...options,\n ...(runningTimeoutMs !== undefined && {\n runningTimeout: runningTimeoutMs,\n }),\n });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"list\": {\n const result = await client.list(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandboxes: result.items.map(sandboxRefForWire),\n page: result.page,\n fetchedAt: result.fetchedAt,\n };\n }\n case \"get\": {\n const sandbox = await client.get(operation.input[0].sandboxId);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandbox ? sandboxRefForWire(sandbox) : null,\n };\n }\n case \"waitUntilRunning\": {\n const sandbox = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).waitUntilRunning({\n timeout: operation.input[0].timeoutMs,\n });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"exec\": {\n const { command, timeoutMs, ...options } = operation.input[0];\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const result = await runSandboxCommandForOperation(sandbox, command, {\n ...options,\n timeout: timeoutMs,\n });\n const output = fitDurableSandboxExecOutput(result.stdout, result.stderr);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: {\n stdout: encodeBase64(output.stdout),\n stderr: encodeBase64(output.stderr),\n encoding: \"base64\",\n exitCode: result.exitCode,\n output: output.output,\n },\n };\n }\n case \"destroy\": {\n const result = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).destroy();\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result,\n };\n }\n case \"process.start\": {\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const process = await sandbox.processes.start(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: processRefForWire(process),\n };\n }\n case \"process.list\": {\n const result = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).processes.list(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n processes: result.items.map(processRefForWire),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n }\n case \"process.get\": {\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const process = await sandbox.processes.get(operation.target.processId);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: process ? processRefForWire(process) : null,\n };\n }\n case \"process.signal\": {\n await sandboxProcessForOperation(client, operation.target.process).signal(\n operation.input[0],\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: null,\n };\n }\n case \"process.wait\": {\n const process = await sandboxProcessForOperation(\n client,\n operation.target.process,\n ).wait({ timeout: operation.input[0].timeoutMs });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: {\n kind: process.kind,\n version: process.version,\n sandboxId: process.sandboxId,\n id: process.id,\n state: process.state as \"EXITED\" | \"KILLED\" | \"FAILED\" | \"LOST\",\n ...(process.exitCode !== undefined && {\n exitCode: process.exitCode,\n }),\n ...(process.terminationSignal !== undefined && {\n terminationSignal: process.terminationSignal,\n }),\n },\n };\n }\n case \"process.output\": {\n const result = await sandboxProcessForOperation(\n client,\n operation.target.process,\n ).getOutput(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: { chunks: result.chunks.map(encodeOutputChunk) },\n };\n }\n }\n};\n\nconst callRawTool = async <A extends SandboxAction>(\n rawToolResolver: SandboxRawToolResolver,\n idOrOptions: StepOptionsOrId,\n operation: SandboxOperationForAction<A>,\n): Promise<SandboxResultForAction<A>> => {\n try {\n const rawTool = await rawToolResolver();\n return validateSandboxResult(\n operation,\n await rawTool(idOrOptions, operation),\n );\n } catch (error) {\n if (error instanceof SandboxValidationError) {\n throw error;\n }\n const options = findSandboxErrorOptions(error);\n if (options) {\n if (options.action !== operation.action) {\n throw new SandboxValidationError(\n `Sandbox operation returned a ${options.action} error for ${operation.action}`,\n );\n }\n throw new SandboxError(options);\n }\n const validationError = findSandboxValidationError(error);\n if (validationError) {\n throw new SandboxValidationError(validationError.message, {\n cause: error,\n });\n }\n throw error;\n }\n};\n\nconst sandboxTarget = (ref: SandboxRef) => ({ sandbox: ref });\nconst processTarget = (sandbox: SandboxRef, process: SandboxProcessRef) => ({\n sandbox,\n process,\n});\n\nexport const createDurableSandboxProcessFacade = (\n rawRef: unknown,\n sandboxRef: SandboxRef,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxProcess => {\n const ref = parseWithSchema(\n sandboxProcessRefSchema,\n rawRef,\n \"sandbox process reference\",\n );\n if (ref.sandboxId !== sandboxRef.id) {\n throw new SandboxValidationError(\n \"Sandbox process reference belongs to another sandbox\",\n );\n }\n const facade: DurableSandboxProcess = {\n ...ref,\n command: Object.freeze([...ref.command]),\n signal: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.signal\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.signal\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessSignalOptions(options)],\n });\n await callRawTool(rawToolResolver, idOrOptions, operation);\n },\n wait: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.wait\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.wait\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessWaitOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n const {\n exitCode: _previousExitCode,\n terminationSignal: _previousTerminationSignal,\n ...baseRef\n } = ref;\n return createDurableSandboxProcessFacade(\n parseWithSchema(\n sandboxProcessRefSchema,\n {\n ...baseRef,\n state: result.process.state,\n ...(result.process.exitCode !== undefined && {\n exitCode: result.process.exitCode,\n }),\n ...(result.process.terminationSignal !== undefined && {\n terminationSignal: result.process.terminationSignal,\n }),\n },\n \"sandbox process reference\",\n ),\n sandboxRef,\n rawToolResolver,\n );\n },\n getOutput: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.output\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.output\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessOutputOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n chunks: result.result.chunks.map(decodeOutputChunk),\n };\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createDurableSandboxFacade = (\n rawRef: unknown,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandbox => {\n const ref = parseWithSchema(sandboxRefSchema, rawRef, \"sandbox reference\");\n const facade: DurableSandbox = {\n ...ref,\n resources: Object.freeze({ ...ref.resources }),\n commands: Object.freeze({\n run: async (idOrOptions, command, options) => {\n const normalized = normalizeSandboxCommandOptions(command, options);\n const { timeout: _timeout, ...input } = normalized;\n const operation = parseSandboxOperationForAction(\"exec\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"exec\",\n target: sandboxTarget(ref),\n input: [input],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return {\n stdout: decodeUtf8(\n decodeBase64(result.result.stdout, \"sandbox exec stdout\"),\n ),\n stderr: decodeUtf8(\n decodeBase64(result.result.stderr, \"sandbox exec stderr\"),\n ),\n exitCode: result.result.exitCode,\n output: result.result.output,\n };\n },\n }),\n processes: Object.freeze({\n start: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.start\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.start\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxProcessStartOptions(options)],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return createDurableSandboxProcessFacade(\n result.process,\n ref,\n rawToolResolver,\n );\n },\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.list\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxProcessListOptions(options)],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return {\n items: result.processes.map((process) =>\n createDurableSandboxProcessFacade(process, ref, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, processId) => {\n const parsedProcessId = parseWithSchema(\n canonicalUuidSchema,\n processId,\n \"sandbox process ID\",\n );\n const operation = parseSandboxOperationForAction(\"process.get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.get\",\n target: { sandbox: ref, processId: parsedProcessId },\n input: [],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return result.process\n ? createDurableSandboxProcessFacade(\n result.process,\n ref,\n rawToolResolver,\n )\n : null;\n },\n }),\n waitUntilRunning: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"waitUntilRunning\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"waitUntilRunning\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxWaitUntilRunningOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n destroy: async (idOrOptions): Promise<SandboxDestroyResult> => {\n const operation = parseSandboxOperationForAction(\"destroy\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"destroy\",\n target: sandboxTarget(ref),\n input: [],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.result;\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createSandboxTools = (\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxTools => ({\n create: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"create\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"create\",\n input: [normalizeSandboxCreateOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"list\",\n input: [normalizeSandboxListOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n items: result.sandboxes.map((sandbox) =>\n createDurableSandboxFacade(sandbox, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, sandboxId) => {\n const parsedSandboxId = parseWithSchema(\n canonicalUuidSchema,\n sandboxId,\n \"sandbox ID\",\n );\n const operation = parseSandboxOperationForAction(\"get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"get\",\n input: [{ sandboxId: parsedSandboxId }],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.sandbox\n ? createDurableSandboxFacade(result.sandbox, rawToolResolver)\n : null;\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"durable.cjs","names":["maxDurableSandboxExecOutputBytes","encodeBase64","parseSandboxOperation","createSandboxForOperation","sandboxProtocolVersion","sandboxForOperation","runSandboxCommandForOperation","sandboxProcessForOperation","createSandboxSnapshotForOperation","listSandboxSnapshotsForOperation","getSandboxSnapshotForOperation","waitUntilSandboxSnapshotReadyForOperation","deleteSandboxSnapshotForOperation","validateSandboxResult","SandboxValidationError","findSandboxErrorOptions","SandboxError","findSandboxValidationError","parseWithSchema","sandboxSnapshotRefSchema","facade: DurableSandboxSnapshot","parseSandboxOperationForAction","normalizeSandboxSnapshotWaitOptions","normalizeSandboxCreateOptions","sandboxProcessRefSchema","facade: DurableSandboxProcess","normalizeSandboxProcessSignalOptions","normalizeSandboxProcessWaitOptions","normalizeSandboxProcessOutputOptions","decodeOutputChunk","sandboxRefSchema","createSnapshot: DurableSandbox[\"snapshot\"]","normalizeSandboxSnapshotCreateOptions","facade: DurableSandbox","normalizeSandboxCommandOptions","decodeUtf8","decodeBase64","normalizeSandboxProcessStartOptions","normalizeSandboxProcessListOptions","canonicalUuidSchema","normalizeSandboxWaitUntilRunningOptions","normalizeSandboxListOptions","normalizeSandboxSnapshotListOptions"],"sources":["../../../src/components/sandbox/durable.ts"],"sourcesContent":["import type { StepOptionsOrId } from \"../../types.ts\";\nimport {\n createSandboxForOperation,\n createSandboxSnapshotForOperation,\n deleteSandboxSnapshotForOperation,\n getSandboxSnapshotForOperation,\n listSandboxSnapshotsForOperation,\n runSandboxCommandForOperation,\n sandboxForOperation,\n sandboxProcessForOperation,\n waitUntilSandboxSnapshotReadyForOperation,\n} from \"./client.ts\";\nimport {\n findSandboxErrorOptions,\n findSandboxValidationError,\n maxDurableSandboxExecOutputBytes,\n parseSandboxOperation,\n parseSandboxOperationForAction,\n type SandboxOperationForAction,\n type SandboxOperationResultV1,\n type SandboxOperationV1,\n type SandboxRawToolResolver,\n type SandboxResultForAction,\n validateSandboxResult,\n} from \"./protocol.ts\";\nimport {\n type DurableSandbox,\n type DurableSandboxProcess,\n type DurableSandboxSnapshot,\n type DurableSandboxTools,\n type Sandbox,\n type SandboxAction,\n type SandboxClient,\n type SandboxCommandOutputMetadata,\n type SandboxDestroyResult,\n SandboxError,\n type SandboxOutputChunk,\n type SandboxProcess,\n type SandboxProcessRef,\n type SandboxRef,\n type SandboxSnapshotRef,\n SandboxValidationError,\n sandboxProtocolVersion,\n} from \"./types.ts\";\nimport {\n canonicalUuidSchema,\n decodeBase64,\n decodeOutputChunk,\n decodeUtf8,\n encodeBase64,\n normalizeSandboxCommandOptions,\n normalizeSandboxCreateOptions,\n normalizeSandboxListOptions,\n normalizeSandboxProcessListOptions,\n normalizeSandboxProcessOutputOptions,\n normalizeSandboxProcessSignalOptions,\n normalizeSandboxProcessStartOptions,\n normalizeSandboxProcessWaitOptions,\n normalizeSandboxSnapshotCreateOptions,\n normalizeSandboxSnapshotListOptions,\n normalizeSandboxSnapshotWaitOptions,\n normalizeSandboxWaitUntilRunningOptions,\n parseWithSchema,\n sandboxProcessRefSchema,\n sandboxRefSchema,\n sandboxSnapshotRefSchema,\n} from \"./validation.ts\";\n\nconst fitDurableSandboxExecOutput = (\n stdout: Uint8Array,\n stderr: Uint8Array,\n): {\n stdout: Uint8Array;\n stderr: Uint8Array;\n output: SandboxCommandOutputMetadata;\n} => {\n const originalBytes = {\n stdout: stdout.byteLength,\n stderr: stderr.byteLength,\n };\n if (\n originalBytes.stdout + originalBytes.stderr <=\n maxDurableSandboxExecOutputBytes\n ) {\n return { stdout, stderr, output: { truncated: false } };\n }\n\n // This bound intentionally lives in the `step.sandbox.exec` wrapper rather\n // than the direct client. `step.run` persists at most 4 MiB of serialized\n // output, and base64 expands captured bytes. Reserve half of the safe raw\n // budget for each stream, donate unused capacity to the other stream, and\n // retain tails because command failures generally appear at the end.\n const streamShare = Math.floor(maxDurableSandboxExecOutputBytes / 2);\n let retainedStdoutBytes = Math.min(originalBytes.stdout, streamShare);\n let retainedStderrBytes = Math.min(originalBytes.stderr, streamShare);\n let remainingBytes =\n maxDurableSandboxExecOutputBytes -\n retainedStdoutBytes -\n retainedStderrBytes;\n\n const extraStdoutBytes = Math.min(\n originalBytes.stdout - retainedStdoutBytes,\n remainingBytes,\n );\n retainedStdoutBytes += extraStdoutBytes;\n remainingBytes -= extraStdoutBytes;\n retainedStderrBytes += Math.min(\n originalBytes.stderr - retainedStderrBytes,\n remainingBytes,\n );\n\n const retainedBytes = {\n stdout: retainedStdoutBytes,\n stderr: retainedStderrBytes,\n };\n return {\n stdout: stdout.subarray(originalBytes.stdout - retainedBytes.stdout),\n stderr: stderr.subarray(originalBytes.stderr - retainedBytes.stderr),\n output: {\n truncated: true,\n strategy: \"tail\",\n originalBytes,\n retainedBytes,\n },\n };\n};\n\nconst encodeOutputChunk = (\n chunk: SandboxOutputChunk,\n): {\n stream: \"STDOUT\" | \"STDERR\";\n data: string;\n encoding: \"base64\";\n at?: string;\n} => ({\n stream: chunk.stream,\n data: encodeBase64(chunk.data),\n encoding: \"base64\",\n ...(chunk.at !== undefined && { at: chunk.at }),\n});\n\nconst sandboxRefForWire = (sandbox: Sandbox): SandboxRef => ({\n kind: sandbox.kind,\n version: sandbox.version,\n id: sandbox.id,\n name: sandbox.name,\n status: sandbox.status,\n vpcId: sandbox.vpcId,\n imageRef: sandbox.imageRef,\n resources: { ...sandbox.resources },\n createdAt: sandbox.createdAt,\n ...(sandbox.startedAt !== undefined && { startedAt: sandbox.startedAt }),\n ...(sandbox.endedAt !== undefined && { endedAt: sandbox.endedAt }),\n ...(sandbox.error !== undefined && { error: sandbox.error }),\n});\n\nconst processRefForWire = (process: SandboxProcess) => ({\n kind: process.kind,\n version: process.version,\n sandboxId: process.sandboxId,\n id: process.id,\n command: [...process.command],\n ...(process.pid !== undefined && { pid: process.pid }),\n state: process.state,\n ...(process.exitCode !== undefined && { exitCode: process.exitCode }),\n ...(process.terminationSignal !== undefined && {\n terminationSignal: process.terminationSignal,\n }),\n ...(process.startedAt !== undefined && { startedAt: process.startedAt }),\n ...(process.endedAt !== undefined && { endedAt: process.endedAt }),\n});\n\nconst snapshotRefForWire = (snapshot: SandboxSnapshotRef) => ({\n ...snapshot,\n resources: { ...snapshot.resources },\n});\n\n/**\n * Execute a durable sandbox operation through the public REST client and\n * reduce its result to JSON-safe data suitable for normal step memoization.\n */\nexport const executeSandboxOperation = async (\n client: SandboxClient,\n rawOperation: unknown,\n): Promise<SandboxOperationResultV1> => {\n const operation = parseSandboxOperation(rawOperation);\n\n switch (operation.action) {\n case \"create\": {\n const { runningTimeoutMs, ...options } = operation.input[0];\n const sandbox = await createSandboxForOperation(client, {\n ...options,\n ...(runningTimeoutMs !== undefined && {\n runningTimeout: runningTimeoutMs,\n }),\n });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"list\": {\n const result = await client.list(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandboxes: result.items.map(sandboxRefForWire),\n page: result.page,\n fetchedAt: result.fetchedAt,\n };\n }\n case \"get\": {\n const sandbox = await client.get(operation.input[0].sandboxId);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandbox ? sandboxRefForWire(sandbox) : null,\n };\n }\n case \"waitUntilRunning\": {\n const sandbox = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).waitUntilRunning({\n timeout: operation.input[0].timeoutMs,\n });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"exec\": {\n const { command, timeoutMs, ...options } = operation.input[0];\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const result = await runSandboxCommandForOperation(sandbox, command, {\n ...options,\n timeout: timeoutMs,\n });\n const output = fitDurableSandboxExecOutput(result.stdout, result.stderr);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: {\n stdout: encodeBase64(output.stdout),\n stderr: encodeBase64(output.stderr),\n encoding: \"base64\",\n exitCode: result.exitCode,\n output: output.output,\n },\n };\n }\n case \"destroy\": {\n const result = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).destroy();\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result,\n };\n }\n case \"pause\":\n case \"resume\": {\n const sandbox = await sandboxForOperation(\n client,\n operation.target.sandbox,\n )[operation.action]({ timeout: operation.input[0].timeoutMs });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"process.start\": {\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const process = await sandbox.processes.start(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: processRefForWire(process),\n };\n }\n case \"process.list\": {\n const result = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).processes.list(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n processes: result.items.map(processRefForWire),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n }\n case \"process.get\": {\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const process = await sandbox.processes.get(operation.target.processId);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: process ? processRefForWire(process) : null,\n };\n }\n case \"process.signal\": {\n await sandboxProcessForOperation(client, operation.target.process).signal(\n operation.input[0],\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: null,\n };\n }\n case \"process.wait\": {\n const process = await sandboxProcessForOperation(\n client,\n operation.target.process,\n ).wait({ timeout: operation.input[0].timeoutMs });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: {\n kind: process.kind,\n version: process.version,\n sandboxId: process.sandboxId,\n id: process.id,\n state: process.state as \"EXITED\" | \"KILLED\" | \"FAILED\" | \"LOST\",\n ...(process.exitCode !== undefined && {\n exitCode: process.exitCode,\n }),\n ...(process.terminationSignal !== undefined && {\n terminationSignal: process.terminationSignal,\n }),\n },\n };\n }\n case \"process.output\": {\n const result = await sandboxProcessForOperation(\n client,\n operation.target.process,\n ).getOutput(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: { chunks: result.chunks.map(encodeOutputChunk) },\n };\n }\n case \"snapshot.create\": {\n const snapshot = await createSandboxSnapshotForOperation(\n client,\n operation.target.sandbox.id,\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n snapshot: snapshotRefForWire(snapshot),\n };\n }\n case \"snapshot.list\": {\n const result = await listSandboxSnapshotsForOperation(\n client,\n operation.input[0],\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n snapshots: result.items.map(snapshotRefForWire),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n }\n case \"snapshot.get\": {\n const snapshot = await getSandboxSnapshotForOperation(\n client,\n operation.target.snapshotId,\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n snapshot: snapshot ? snapshotRefForWire(snapshot) : null,\n };\n }\n case \"snapshot.waitUntilReady\": {\n const snapshot = await waitUntilSandboxSnapshotReadyForOperation(\n client,\n operation.target.snapshot,\n operation.input[0].timeoutMs,\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n snapshot: snapshotRefForWire(snapshot),\n };\n }\n case \"snapshot.delete\": {\n await deleteSandboxSnapshotForOperation(\n client,\n operation.target.snapshot.id,\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: null,\n };\n }\n }\n};\n\nconst callRawTool = async <A extends SandboxAction>(\n rawToolResolver: SandboxRawToolResolver,\n idOrOptions: StepOptionsOrId,\n operation: SandboxOperationForAction<A>,\n): Promise<SandboxResultForAction<A>> => {\n try {\n const rawTool = await rawToolResolver();\n return validateSandboxResult(\n operation,\n await rawTool(idOrOptions, operation),\n );\n } catch (error) {\n if (error instanceof SandboxValidationError) {\n throw error;\n }\n const options = findSandboxErrorOptions(error);\n if (options) {\n if (options.action !== operation.action) {\n throw new SandboxValidationError(\n `Sandbox operation returned a ${options.action} error for ${operation.action}`,\n );\n }\n throw new SandboxError(options);\n }\n const validationError = findSandboxValidationError(error);\n if (validationError) {\n throw new SandboxValidationError(validationError.message, {\n cause: error,\n });\n }\n throw error;\n }\n};\n\nconst snapshotWaitStepOptions = (\n idOrOptions: StepOptionsOrId,\n): StepOptionsOrId => {\n if (typeof idOrOptions === \"string\") {\n return `${idOrOptions}:wait-until-ready`;\n }\n return {\n ...idOrOptions,\n id: `${idOrOptions.id}:wait-until-ready`,\n ...(idOrOptions.name && {\n name: `${idOrOptions.name} (wait until ready)`,\n }),\n };\n};\n\nconst sandboxTarget = (ref: SandboxRef) => ({ sandbox: ref });\nconst processTarget = (sandbox: SandboxRef, process: SandboxProcessRef) => ({\n sandbox,\n process,\n});\nconst snapshotTarget = (snapshot: SandboxSnapshotRef) => ({ snapshot });\n\nexport const createDurableSandboxSnapshotFacade = (\n rawRef: unknown,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxSnapshot => {\n const ref = parseWithSchema(\n sandboxSnapshotRefSchema,\n rawRef,\n \"sandbox snapshot reference\",\n );\n const facade: DurableSandboxSnapshot = {\n ...ref,\n resources: Object.freeze({ ...ref.resources }),\n waitUntilReady: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\n \"snapshot.waitUntilReady\",\n {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.waitUntilReady\",\n target: snapshotTarget(ref),\n input: [normalizeSandboxSnapshotWaitOptions(options)],\n },\n );\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxSnapshotFacade(\n result.snapshot,\n rawToolResolver,\n );\n },\n delete: async (idOrOptions) => {\n const operation = parseSandboxOperationForAction(\"snapshot.delete\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.delete\",\n target: snapshotTarget(ref),\n input: [],\n });\n await callRawTool(rawToolResolver, idOrOptions, operation);\n },\n clone: async (idOrOptions, options, waitOptions) => {\n const operation = parseSandboxOperationForAction(\"create\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"create\",\n input: [\n normalizeSandboxCreateOptions({\n name: options.name,\n snapshotId: ref.id,\n runningTimeout: options.runningTimeout ?? waitOptions?.timeout,\n }),\n ],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createDurableSandboxProcessFacade = (\n rawRef: unknown,\n sandboxRef: SandboxRef,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxProcess => {\n const ref = parseWithSchema(\n sandboxProcessRefSchema,\n rawRef,\n \"sandbox process reference\",\n );\n if (ref.sandboxId !== sandboxRef.id) {\n throw new SandboxValidationError(\n \"Sandbox process reference belongs to another sandbox\",\n );\n }\n const facade: DurableSandboxProcess = {\n ...ref,\n command: Object.freeze([...ref.command]),\n signal: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.signal\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.signal\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessSignalOptions(options)],\n });\n await callRawTool(rawToolResolver, idOrOptions, operation);\n },\n wait: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.wait\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.wait\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessWaitOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n const {\n exitCode: _previousExitCode,\n terminationSignal: _previousTerminationSignal,\n ...baseRef\n } = ref;\n return createDurableSandboxProcessFacade(\n parseWithSchema(\n sandboxProcessRefSchema,\n {\n ...baseRef,\n state: result.process.state,\n ...(result.process.exitCode !== undefined && {\n exitCode: result.process.exitCode,\n }),\n ...(result.process.terminationSignal !== undefined && {\n terminationSignal: result.process.terminationSignal,\n }),\n },\n \"sandbox process reference\",\n ),\n sandboxRef,\n rawToolResolver,\n );\n },\n getOutput: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.output\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.output\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessOutputOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n chunks: result.result.chunks.map(decodeOutputChunk),\n };\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createDurableSandboxFacade = (\n rawRef: unknown,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandbox => {\n const ref = parseWithSchema(sandboxRefSchema, rawRef, \"sandbox reference\");\n const createSnapshot: DurableSandbox[\"snapshot\"] = async (\n idOrOptions,\n options,\n waitOptions,\n ) => {\n const createOptions = normalizeSandboxSnapshotCreateOptions(options);\n const wait = normalizeSandboxSnapshotWaitOptions({\n timeout: waitOptions?.timeout ?? 5 * 60_000,\n });\n const createOperation = parseSandboxOperationForAction(\"snapshot.create\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.create\",\n target: sandboxTarget(ref),\n input: [createOptions],\n });\n const created = await callRawTool(\n rawToolResolver,\n idOrOptions,\n createOperation,\n );\n const waitOperation = parseSandboxOperationForAction(\n \"snapshot.waitUntilReady\",\n {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.waitUntilReady\",\n target: snapshotTarget(created.snapshot),\n input: [wait],\n },\n );\n const ready = await callRawTool(\n rawToolResolver,\n snapshotWaitStepOptions(idOrOptions),\n waitOperation,\n );\n return createDurableSandboxSnapshotFacade(ready.snapshot, rawToolResolver);\n };\n const facade: DurableSandbox = {\n ...ref,\n resources: Object.freeze({ ...ref.resources }),\n commands: Object.freeze({\n run: async (idOrOptions, command, options) => {\n const normalized = normalizeSandboxCommandOptions(command, options);\n const { timeout: _timeout, ...input } = normalized;\n const operation = parseSandboxOperationForAction(\"exec\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"exec\",\n target: sandboxTarget(ref),\n input: [input],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return {\n stdout: decodeUtf8(\n decodeBase64(result.result.stdout, \"sandbox exec stdout\"),\n ),\n stderr: decodeUtf8(\n decodeBase64(result.result.stderr, \"sandbox exec stderr\"),\n ),\n exitCode: result.result.exitCode,\n output: result.result.output,\n };\n },\n }),\n processes: Object.freeze({\n start: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.start\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.start\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxProcessStartOptions(options)],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return createDurableSandboxProcessFacade(\n result.process,\n ref,\n rawToolResolver,\n );\n },\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.list\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxProcessListOptions(options)],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return {\n items: result.processes.map((process) =>\n createDurableSandboxProcessFacade(process, ref, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, processId) => {\n const parsedProcessId = parseWithSchema(\n canonicalUuidSchema,\n processId,\n \"sandbox process ID\",\n );\n const operation = parseSandboxOperationForAction(\"process.get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.get\",\n target: { sandbox: ref, processId: parsedProcessId },\n input: [],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return result.process\n ? createDurableSandboxProcessFacade(\n result.process,\n ref,\n rawToolResolver,\n )\n : null;\n },\n }),\n snapshots: Object.freeze({\n create: createSnapshot,\n }),\n snapshot: createSnapshot,\n waitUntilRunning: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"waitUntilRunning\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"waitUntilRunning\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxWaitUntilRunningOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n pause: async (idOrOptions, options) => {\n const input = normalizeSandboxWaitUntilRunningOptions({\n timeout: options?.timeout ?? 5 * 60_000,\n });\n const operation = parseSandboxOperationForAction(\"pause\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"pause\",\n target: sandboxTarget(ref),\n input: [input],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n resume: async (idOrOptions, options) => {\n const input = normalizeSandboxWaitUntilRunningOptions({\n timeout: options?.timeout ?? 5 * 60_000,\n });\n const operation = parseSandboxOperationForAction(\"resume\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"resume\",\n target: sandboxTarget(ref),\n input: [input],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n destroy: async (idOrOptions): Promise<SandboxDestroyResult> => {\n const operation = parseSandboxOperationForAction(\"destroy\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"destroy\",\n target: sandboxTarget(ref),\n input: [],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.result;\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createSandboxTools = (\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxTools => ({\n create: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"create\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"create\",\n input: [normalizeSandboxCreateOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"list\",\n input: [normalizeSandboxListOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n items: result.sandboxes.map((sandbox) =>\n createDurableSandboxFacade(sandbox, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, sandboxId) => {\n const parsedSandboxId = parseWithSchema(\n canonicalUuidSchema,\n sandboxId,\n \"sandbox ID\",\n );\n const operation = parseSandboxOperationForAction(\"get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"get\",\n input: [{ sandboxId: parsedSandboxId }],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.sandbox\n ? createDurableSandboxFacade(result.sandbox, rawToolResolver)\n : null;\n },\n snapshots: {\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"snapshot.list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.list\",\n input: [normalizeSandboxSnapshotListOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n items: result.snapshots.map((snapshot) =>\n createDurableSandboxSnapshotFacade(snapshot, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, snapshotId) => {\n const parsedSnapshotId = parseWithSchema(\n canonicalUuidSchema,\n snapshotId,\n \"sandbox snapshot ID\",\n );\n const operation = parseSandboxOperationForAction(\"snapshot.get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.get\",\n target: { snapshotId: parsedSnapshotId },\n input: [],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.snapshot\n ? createDurableSandboxSnapshotFacade(result.snapshot, rawToolResolver)\n : null;\n },\n },\n});\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SandboxError, SandboxValidationError, sandboxProtocolVersion } from "./types.js";
|
|
2
|
-
import { canonicalUuidSchema, decodeBase64, decodeOutputChunk, decodeUtf8, encodeBase64, normalizeSandboxCommandOptions, normalizeSandboxCreateOptions, normalizeSandboxListOptions, normalizeSandboxProcessListOptions, normalizeSandboxProcessOutputOptions, normalizeSandboxProcessSignalOptions, normalizeSandboxProcessStartOptions, normalizeSandboxProcessWaitOptions, normalizeSandboxWaitUntilRunningOptions, parseWithSchema, sandboxProcessRefSchema, sandboxRefSchema } from "./validation.js";
|
|
3
|
-
import { runSandboxCommandForOperation, sandboxForOperation, sandboxProcessForOperation } from "./client.js";
|
|
2
|
+
import { canonicalUuidSchema, decodeBase64, decodeOutputChunk, decodeUtf8, encodeBase64, normalizeSandboxCommandOptions, normalizeSandboxCreateOptions, normalizeSandboxListOptions, normalizeSandboxProcessListOptions, normalizeSandboxProcessOutputOptions, normalizeSandboxProcessSignalOptions, normalizeSandboxProcessStartOptions, normalizeSandboxProcessWaitOptions, normalizeSandboxSnapshotCreateOptions, normalizeSandboxSnapshotListOptions, normalizeSandboxSnapshotWaitOptions, normalizeSandboxWaitUntilRunningOptions, parseWithSchema, sandboxProcessRefSchema, sandboxRefSchema, sandboxSnapshotRefSchema } from "./validation.js";
|
|
3
|
+
import { createSandboxForOperation, createSandboxSnapshotForOperation, deleteSandboxSnapshotForOperation, getSandboxSnapshotForOperation, listSandboxSnapshotsForOperation, runSandboxCommandForOperation, sandboxForOperation, sandboxProcessForOperation, waitUntilSandboxSnapshotReadyForOperation } from "./client.js";
|
|
4
4
|
import { findSandboxErrorOptions, findSandboxValidationError, maxDurableSandboxExecOutputBytes, parseSandboxOperation, parseSandboxOperationForAction, validateSandboxResult } from "./protocol.js";
|
|
5
5
|
|
|
6
6
|
//#region src/components/sandbox/durable.ts
|
|
@@ -70,6 +70,10 @@ const processRefForWire = (process) => ({
|
|
|
70
70
|
...process.startedAt !== void 0 && { startedAt: process.startedAt },
|
|
71
71
|
...process.endedAt !== void 0 && { endedAt: process.endedAt }
|
|
72
72
|
});
|
|
73
|
+
const snapshotRefForWire = (snapshot) => ({
|
|
74
|
+
...snapshot,
|
|
75
|
+
resources: { ...snapshot.resources }
|
|
76
|
+
});
|
|
73
77
|
/**
|
|
74
78
|
* Execute a durable sandbox operation through the public REST client and
|
|
75
79
|
* reduce its result to JSON-safe data suitable for normal step memoization.
|
|
@@ -79,7 +83,7 @@ const executeSandboxOperation = async (client, rawOperation) => {
|
|
|
79
83
|
switch (operation.action) {
|
|
80
84
|
case "create": {
|
|
81
85
|
const { runningTimeoutMs, ...options } = operation.input[0];
|
|
82
|
-
const sandbox = await client
|
|
86
|
+
const sandbox = await createSandboxForOperation(client, {
|
|
83
87
|
...options,
|
|
84
88
|
...runningTimeoutMs !== void 0 && { runningTimeout: runningTimeoutMs }
|
|
85
89
|
});
|
|
@@ -142,6 +146,15 @@ const executeSandboxOperation = async (client, rawOperation) => {
|
|
|
142
146
|
result
|
|
143
147
|
};
|
|
144
148
|
}
|
|
149
|
+
case "pause":
|
|
150
|
+
case "resume": {
|
|
151
|
+
const sandbox = await sandboxForOperation(client, operation.target.sandbox)[operation.action]({ timeout: operation.input[0].timeoutMs });
|
|
152
|
+
return {
|
|
153
|
+
protocolVersion: sandboxProtocolVersion,
|
|
154
|
+
action: operation.action,
|
|
155
|
+
sandbox: sandboxRefForWire(sandbox)
|
|
156
|
+
};
|
|
157
|
+
}
|
|
145
158
|
case "process.start": {
|
|
146
159
|
const process = await sandboxForOperation(client, operation.target.sandbox).processes.start(operation.input[0]);
|
|
147
160
|
return {
|
|
@@ -199,6 +212,47 @@ const executeSandboxOperation = async (client, rawOperation) => {
|
|
|
199
212
|
result: { chunks: result.chunks.map(encodeOutputChunk) }
|
|
200
213
|
};
|
|
201
214
|
}
|
|
215
|
+
case "snapshot.create": {
|
|
216
|
+
const snapshot = await createSandboxSnapshotForOperation(client, operation.target.sandbox.id);
|
|
217
|
+
return {
|
|
218
|
+
protocolVersion: sandboxProtocolVersion,
|
|
219
|
+
action: operation.action,
|
|
220
|
+
snapshot: snapshotRefForWire(snapshot)
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
case "snapshot.list": {
|
|
224
|
+
const result = await listSandboxSnapshotsForOperation(client, operation.input[0]);
|
|
225
|
+
return {
|
|
226
|
+
protocolVersion: sandboxProtocolVersion,
|
|
227
|
+
action: operation.action,
|
|
228
|
+
snapshots: result.items.map(snapshotRefForWire),
|
|
229
|
+
page: { ...result.page },
|
|
230
|
+
fetchedAt: result.fetchedAt
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
case "snapshot.get": {
|
|
234
|
+
const snapshot = await getSandboxSnapshotForOperation(client, operation.target.snapshotId);
|
|
235
|
+
return {
|
|
236
|
+
protocolVersion: sandboxProtocolVersion,
|
|
237
|
+
action: operation.action,
|
|
238
|
+
snapshot: snapshot ? snapshotRefForWire(snapshot) : null
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
case "snapshot.waitUntilReady": {
|
|
242
|
+
const snapshot = await waitUntilSandboxSnapshotReadyForOperation(client, operation.target.snapshot, operation.input[0].timeoutMs);
|
|
243
|
+
return {
|
|
244
|
+
protocolVersion: sandboxProtocolVersion,
|
|
245
|
+
action: operation.action,
|
|
246
|
+
snapshot: snapshotRefForWire(snapshot)
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
case "snapshot.delete":
|
|
250
|
+
await deleteSandboxSnapshotForOperation(client, operation.target.snapshot.id);
|
|
251
|
+
return {
|
|
252
|
+
protocolVersion: sandboxProtocolVersion,
|
|
253
|
+
action: operation.action,
|
|
254
|
+
result: null
|
|
255
|
+
};
|
|
202
256
|
}
|
|
203
257
|
};
|
|
204
258
|
const callRawTool = async (rawToolResolver, idOrOptions, operation) => {
|
|
@@ -216,11 +270,55 @@ const callRawTool = async (rawToolResolver, idOrOptions, operation) => {
|
|
|
216
270
|
throw error;
|
|
217
271
|
}
|
|
218
272
|
};
|
|
273
|
+
const snapshotWaitStepOptions = (idOrOptions) => {
|
|
274
|
+
if (typeof idOrOptions === "string") return `${idOrOptions}:wait-until-ready`;
|
|
275
|
+
return {
|
|
276
|
+
...idOrOptions,
|
|
277
|
+
id: `${idOrOptions.id}:wait-until-ready`,
|
|
278
|
+
...idOrOptions.name && { name: `${idOrOptions.name} (wait until ready)` }
|
|
279
|
+
};
|
|
280
|
+
};
|
|
219
281
|
const sandboxTarget = (ref) => ({ sandbox: ref });
|
|
220
282
|
const processTarget = (sandbox, process) => ({
|
|
221
283
|
sandbox,
|
|
222
284
|
process
|
|
223
285
|
});
|
|
286
|
+
const snapshotTarget = (snapshot) => ({ snapshot });
|
|
287
|
+
const createDurableSandboxSnapshotFacade = (rawRef, rawToolResolver) => {
|
|
288
|
+
const ref = parseWithSchema(sandboxSnapshotRefSchema, rawRef, "sandbox snapshot reference");
|
|
289
|
+
const facade = {
|
|
290
|
+
...ref,
|
|
291
|
+
resources: Object.freeze({ ...ref.resources }),
|
|
292
|
+
waitUntilReady: async (idOrOptions, options) => {
|
|
293
|
+
return createDurableSandboxSnapshotFacade((await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("snapshot.waitUntilReady", {
|
|
294
|
+
protocolVersion: sandboxProtocolVersion,
|
|
295
|
+
action: "snapshot.waitUntilReady",
|
|
296
|
+
target: snapshotTarget(ref),
|
|
297
|
+
input: [normalizeSandboxSnapshotWaitOptions(options)]
|
|
298
|
+
}))).snapshot, rawToolResolver);
|
|
299
|
+
},
|
|
300
|
+
delete: async (idOrOptions) => {
|
|
301
|
+
await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("snapshot.delete", {
|
|
302
|
+
protocolVersion: sandboxProtocolVersion,
|
|
303
|
+
action: "snapshot.delete",
|
|
304
|
+
target: snapshotTarget(ref),
|
|
305
|
+
input: []
|
|
306
|
+
}));
|
|
307
|
+
},
|
|
308
|
+
clone: async (idOrOptions, options, waitOptions) => {
|
|
309
|
+
return createDurableSandboxFacade((await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("create", {
|
|
310
|
+
protocolVersion: sandboxProtocolVersion,
|
|
311
|
+
action: "create",
|
|
312
|
+
input: [normalizeSandboxCreateOptions({
|
|
313
|
+
name: options.name,
|
|
314
|
+
snapshotId: ref.id,
|
|
315
|
+
runningTimeout: options.runningTimeout ?? waitOptions?.timeout
|
|
316
|
+
})]
|
|
317
|
+
}))).sandbox, rawToolResolver);
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
return Object.freeze(facade);
|
|
321
|
+
};
|
|
224
322
|
const createDurableSandboxProcessFacade = (rawRef, sandboxRef, rawToolResolver) => {
|
|
225
323
|
const ref = parseWithSchema(sandboxProcessRefSchema, rawRef, "sandbox process reference");
|
|
226
324
|
if (ref.sandboxId !== sandboxRef.id) throw new SandboxValidationError("Sandbox process reference belongs to another sandbox");
|
|
@@ -263,6 +361,22 @@ const createDurableSandboxProcessFacade = (rawRef, sandboxRef, rawToolResolver)
|
|
|
263
361
|
};
|
|
264
362
|
const createDurableSandboxFacade = (rawRef, rawToolResolver) => {
|
|
265
363
|
const ref = parseWithSchema(sandboxRefSchema, rawRef, "sandbox reference");
|
|
364
|
+
const createSnapshot = async (idOrOptions, options, waitOptions) => {
|
|
365
|
+
const createOptions = normalizeSandboxSnapshotCreateOptions(options);
|
|
366
|
+
const wait = normalizeSandboxSnapshotWaitOptions({ timeout: waitOptions?.timeout ?? 5 * 6e4 });
|
|
367
|
+
const waitOperation = parseSandboxOperationForAction("snapshot.waitUntilReady", {
|
|
368
|
+
protocolVersion: sandboxProtocolVersion,
|
|
369
|
+
action: "snapshot.waitUntilReady",
|
|
370
|
+
target: snapshotTarget((await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("snapshot.create", {
|
|
371
|
+
protocolVersion: sandboxProtocolVersion,
|
|
372
|
+
action: "snapshot.create",
|
|
373
|
+
target: sandboxTarget(ref),
|
|
374
|
+
input: [createOptions]
|
|
375
|
+
}))).snapshot),
|
|
376
|
+
input: [wait]
|
|
377
|
+
});
|
|
378
|
+
return createDurableSandboxSnapshotFacade((await callRawTool(rawToolResolver, snapshotWaitStepOptions(idOrOptions), waitOperation)).snapshot, rawToolResolver);
|
|
379
|
+
};
|
|
266
380
|
const facade = {
|
|
267
381
|
...ref,
|
|
268
382
|
resources: Object.freeze({ ...ref.resources }),
|
|
@@ -316,6 +430,8 @@ const createDurableSandboxFacade = (rawRef, rawToolResolver) => {
|
|
|
316
430
|
return result.process ? createDurableSandboxProcessFacade(result.process, ref, rawToolResolver) : null;
|
|
317
431
|
}
|
|
318
432
|
}),
|
|
433
|
+
snapshots: Object.freeze({ create: createSnapshot }),
|
|
434
|
+
snapshot: createSnapshot,
|
|
319
435
|
waitUntilRunning: async (idOrOptions, options) => {
|
|
320
436
|
return createDurableSandboxFacade((await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("waitUntilRunning", {
|
|
321
437
|
protocolVersion: sandboxProtocolVersion,
|
|
@@ -324,6 +440,24 @@ const createDurableSandboxFacade = (rawRef, rawToolResolver) => {
|
|
|
324
440
|
input: [normalizeSandboxWaitUntilRunningOptions(options)]
|
|
325
441
|
}))).sandbox, rawToolResolver);
|
|
326
442
|
},
|
|
443
|
+
pause: async (idOrOptions, options) => {
|
|
444
|
+
const input = normalizeSandboxWaitUntilRunningOptions({ timeout: options?.timeout ?? 5 * 6e4 });
|
|
445
|
+
return createDurableSandboxFacade((await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("pause", {
|
|
446
|
+
protocolVersion: sandboxProtocolVersion,
|
|
447
|
+
action: "pause",
|
|
448
|
+
target: sandboxTarget(ref),
|
|
449
|
+
input: [input]
|
|
450
|
+
}))).sandbox, rawToolResolver);
|
|
451
|
+
},
|
|
452
|
+
resume: async (idOrOptions, options) => {
|
|
453
|
+
const input = normalizeSandboxWaitUntilRunningOptions({ timeout: options?.timeout ?? 5 * 6e4 });
|
|
454
|
+
return createDurableSandboxFacade((await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("resume", {
|
|
455
|
+
protocolVersion: sandboxProtocolVersion,
|
|
456
|
+
action: "resume",
|
|
457
|
+
target: sandboxTarget(ref),
|
|
458
|
+
input: [input]
|
|
459
|
+
}))).sandbox, rawToolResolver);
|
|
460
|
+
},
|
|
327
461
|
destroy: async (idOrOptions) => {
|
|
328
462
|
return (await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("destroy", {
|
|
329
463
|
protocolVersion: sandboxProtocolVersion,
|
|
@@ -362,6 +496,29 @@ const createSandboxTools = (rawToolResolver) => ({
|
|
|
362
496
|
input: [{ sandboxId: parseWithSchema(canonicalUuidSchema, sandboxId, "sandbox ID") }]
|
|
363
497
|
}));
|
|
364
498
|
return result.sandbox ? createDurableSandboxFacade(result.sandbox, rawToolResolver) : null;
|
|
499
|
+
},
|
|
500
|
+
snapshots: {
|
|
501
|
+
list: async (idOrOptions, options) => {
|
|
502
|
+
const result = await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("snapshot.list", {
|
|
503
|
+
protocolVersion: sandboxProtocolVersion,
|
|
504
|
+
action: "snapshot.list",
|
|
505
|
+
input: [normalizeSandboxSnapshotListOptions(options)]
|
|
506
|
+
}));
|
|
507
|
+
return {
|
|
508
|
+
items: result.snapshots.map((snapshot) => createDurableSandboxSnapshotFacade(snapshot, rawToolResolver)),
|
|
509
|
+
page: { ...result.page },
|
|
510
|
+
fetchedAt: result.fetchedAt
|
|
511
|
+
};
|
|
512
|
+
},
|
|
513
|
+
get: async (idOrOptions, snapshotId) => {
|
|
514
|
+
const result = await callRawTool(rawToolResolver, idOrOptions, parseSandboxOperationForAction("snapshot.get", {
|
|
515
|
+
protocolVersion: sandboxProtocolVersion,
|
|
516
|
+
action: "snapshot.get",
|
|
517
|
+
target: { snapshotId: parseWithSchema(canonicalUuidSchema, snapshotId, "sandbox snapshot ID") },
|
|
518
|
+
input: []
|
|
519
|
+
}));
|
|
520
|
+
return result.snapshot ? createDurableSandboxSnapshotFacade(result.snapshot, rawToolResolver) : null;
|
|
521
|
+
}
|
|
365
522
|
}
|
|
366
523
|
});
|
|
367
524
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable.js","names":["facade: DurableSandboxProcess","facade: DurableSandbox"],"sources":["../../../src/components/sandbox/durable.ts"],"sourcesContent":["import type { StepOptionsOrId } from \"../../types.ts\";\nimport {\n runSandboxCommandForOperation,\n sandboxForOperation,\n sandboxProcessForOperation,\n} from \"./client.ts\";\nimport {\n findSandboxErrorOptions,\n findSandboxValidationError,\n maxDurableSandboxExecOutputBytes,\n parseSandboxOperation,\n parseSandboxOperationForAction,\n type SandboxOperationForAction,\n type SandboxOperationResultV1,\n type SandboxOperationV1,\n type SandboxRawToolResolver,\n type SandboxResultForAction,\n validateSandboxResult,\n} from \"./protocol.ts\";\nimport {\n type DurableSandbox,\n type DurableSandboxProcess,\n type DurableSandboxTools,\n type Sandbox,\n type SandboxAction,\n type SandboxClient,\n type SandboxCommandOutputMetadata,\n type SandboxDestroyResult,\n SandboxError,\n type SandboxOutputChunk,\n type SandboxProcess,\n type SandboxProcessRef,\n type SandboxRef,\n SandboxValidationError,\n sandboxProtocolVersion,\n} from \"./types.ts\";\nimport {\n canonicalUuidSchema,\n decodeBase64,\n decodeOutputChunk,\n decodeUtf8,\n encodeBase64,\n normalizeSandboxCommandOptions,\n normalizeSandboxCreateOptions,\n normalizeSandboxListOptions,\n normalizeSandboxProcessListOptions,\n normalizeSandboxProcessOutputOptions,\n normalizeSandboxProcessSignalOptions,\n normalizeSandboxProcessStartOptions,\n normalizeSandboxProcessWaitOptions,\n normalizeSandboxWaitUntilRunningOptions,\n parseWithSchema,\n sandboxProcessRefSchema,\n sandboxRefSchema,\n} from \"./validation.ts\";\n\nconst fitDurableSandboxExecOutput = (\n stdout: Uint8Array,\n stderr: Uint8Array,\n): {\n stdout: Uint8Array;\n stderr: Uint8Array;\n output: SandboxCommandOutputMetadata;\n} => {\n const originalBytes = {\n stdout: stdout.byteLength,\n stderr: stderr.byteLength,\n };\n if (\n originalBytes.stdout + originalBytes.stderr <=\n maxDurableSandboxExecOutputBytes\n ) {\n return { stdout, stderr, output: { truncated: false } };\n }\n\n // This bound intentionally lives in the `step.sandbox.exec` wrapper rather\n // than the direct client. `step.run` persists at most 4 MiB of serialized\n // output, and base64 expands captured bytes. Reserve half of the safe raw\n // budget for each stream, donate unused capacity to the other stream, and\n // retain tails because command failures generally appear at the end.\n const streamShare = Math.floor(maxDurableSandboxExecOutputBytes / 2);\n let retainedStdoutBytes = Math.min(originalBytes.stdout, streamShare);\n let retainedStderrBytes = Math.min(originalBytes.stderr, streamShare);\n let remainingBytes =\n maxDurableSandboxExecOutputBytes -\n retainedStdoutBytes -\n retainedStderrBytes;\n\n const extraStdoutBytes = Math.min(\n originalBytes.stdout - retainedStdoutBytes,\n remainingBytes,\n );\n retainedStdoutBytes += extraStdoutBytes;\n remainingBytes -= extraStdoutBytes;\n retainedStderrBytes += Math.min(\n originalBytes.stderr - retainedStderrBytes,\n remainingBytes,\n );\n\n const retainedBytes = {\n stdout: retainedStdoutBytes,\n stderr: retainedStderrBytes,\n };\n return {\n stdout: stdout.subarray(originalBytes.stdout - retainedBytes.stdout),\n stderr: stderr.subarray(originalBytes.stderr - retainedBytes.stderr),\n output: {\n truncated: true,\n strategy: \"tail\",\n originalBytes,\n retainedBytes,\n },\n };\n};\n\nconst encodeOutputChunk = (\n chunk: SandboxOutputChunk,\n): {\n stream: \"STDOUT\" | \"STDERR\";\n data: string;\n encoding: \"base64\";\n at?: string;\n} => ({\n stream: chunk.stream,\n data: encodeBase64(chunk.data),\n encoding: \"base64\",\n ...(chunk.at !== undefined && { at: chunk.at }),\n});\n\nconst sandboxRefForWire = (sandbox: Sandbox): SandboxRef => ({\n kind: sandbox.kind,\n version: sandbox.version,\n id: sandbox.id,\n name: sandbox.name,\n status: sandbox.status,\n vpcId: sandbox.vpcId,\n imageRef: sandbox.imageRef,\n resources: { ...sandbox.resources },\n createdAt: sandbox.createdAt,\n ...(sandbox.startedAt !== undefined && { startedAt: sandbox.startedAt }),\n ...(sandbox.endedAt !== undefined && { endedAt: sandbox.endedAt }),\n ...(sandbox.error !== undefined && { error: sandbox.error }),\n});\n\nconst processRefForWire = (process: SandboxProcess) => ({\n kind: process.kind,\n version: process.version,\n sandboxId: process.sandboxId,\n id: process.id,\n command: [...process.command],\n ...(process.pid !== undefined && { pid: process.pid }),\n state: process.state,\n ...(process.exitCode !== undefined && { exitCode: process.exitCode }),\n ...(process.terminationSignal !== undefined && {\n terminationSignal: process.terminationSignal,\n }),\n ...(process.startedAt !== undefined && { startedAt: process.startedAt }),\n ...(process.endedAt !== undefined && { endedAt: process.endedAt }),\n});\n\n/**\n * Execute a durable sandbox operation through the public REST client and\n * reduce its result to JSON-safe data suitable for normal step memoization.\n */\nexport const executeSandboxOperation = async (\n client: SandboxClient,\n rawOperation: unknown,\n): Promise<SandboxOperationResultV1> => {\n const operation = parseSandboxOperation(rawOperation);\n\n switch (operation.action) {\n case \"create\": {\n const { runningTimeoutMs, ...options } = operation.input[0];\n const sandbox = await client.create({\n ...options,\n ...(runningTimeoutMs !== undefined && {\n runningTimeout: runningTimeoutMs,\n }),\n });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"list\": {\n const result = await client.list(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandboxes: result.items.map(sandboxRefForWire),\n page: result.page,\n fetchedAt: result.fetchedAt,\n };\n }\n case \"get\": {\n const sandbox = await client.get(operation.input[0].sandboxId);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandbox ? sandboxRefForWire(sandbox) : null,\n };\n }\n case \"waitUntilRunning\": {\n const sandbox = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).waitUntilRunning({\n timeout: operation.input[0].timeoutMs,\n });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"exec\": {\n const { command, timeoutMs, ...options } = operation.input[0];\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const result = await runSandboxCommandForOperation(sandbox, command, {\n ...options,\n timeout: timeoutMs,\n });\n const output = fitDurableSandboxExecOutput(result.stdout, result.stderr);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: {\n stdout: encodeBase64(output.stdout),\n stderr: encodeBase64(output.stderr),\n encoding: \"base64\",\n exitCode: result.exitCode,\n output: output.output,\n },\n };\n }\n case \"destroy\": {\n const result = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).destroy();\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result,\n };\n }\n case \"process.start\": {\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const process = await sandbox.processes.start(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: processRefForWire(process),\n };\n }\n case \"process.list\": {\n const result = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).processes.list(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n processes: result.items.map(processRefForWire),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n }\n case \"process.get\": {\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const process = await sandbox.processes.get(operation.target.processId);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: process ? processRefForWire(process) : null,\n };\n }\n case \"process.signal\": {\n await sandboxProcessForOperation(client, operation.target.process).signal(\n operation.input[0],\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: null,\n };\n }\n case \"process.wait\": {\n const process = await sandboxProcessForOperation(\n client,\n operation.target.process,\n ).wait({ timeout: operation.input[0].timeoutMs });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: {\n kind: process.kind,\n version: process.version,\n sandboxId: process.sandboxId,\n id: process.id,\n state: process.state as \"EXITED\" | \"KILLED\" | \"FAILED\" | \"LOST\",\n ...(process.exitCode !== undefined && {\n exitCode: process.exitCode,\n }),\n ...(process.terminationSignal !== undefined && {\n terminationSignal: process.terminationSignal,\n }),\n },\n };\n }\n case \"process.output\": {\n const result = await sandboxProcessForOperation(\n client,\n operation.target.process,\n ).getOutput(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: { chunks: result.chunks.map(encodeOutputChunk) },\n };\n }\n }\n};\n\nconst callRawTool = async <A extends SandboxAction>(\n rawToolResolver: SandboxRawToolResolver,\n idOrOptions: StepOptionsOrId,\n operation: SandboxOperationForAction<A>,\n): Promise<SandboxResultForAction<A>> => {\n try {\n const rawTool = await rawToolResolver();\n return validateSandboxResult(\n operation,\n await rawTool(idOrOptions, operation),\n );\n } catch (error) {\n if (error instanceof SandboxValidationError) {\n throw error;\n }\n const options = findSandboxErrorOptions(error);\n if (options) {\n if (options.action !== operation.action) {\n throw new SandboxValidationError(\n `Sandbox operation returned a ${options.action} error for ${operation.action}`,\n );\n }\n throw new SandboxError(options);\n }\n const validationError = findSandboxValidationError(error);\n if (validationError) {\n throw new SandboxValidationError(validationError.message, {\n cause: error,\n });\n }\n throw error;\n }\n};\n\nconst sandboxTarget = (ref: SandboxRef) => ({ sandbox: ref });\nconst processTarget = (sandbox: SandboxRef, process: SandboxProcessRef) => ({\n sandbox,\n process,\n});\n\nexport const createDurableSandboxProcessFacade = (\n rawRef: unknown,\n sandboxRef: SandboxRef,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxProcess => {\n const ref = parseWithSchema(\n sandboxProcessRefSchema,\n rawRef,\n \"sandbox process reference\",\n );\n if (ref.sandboxId !== sandboxRef.id) {\n throw new SandboxValidationError(\n \"Sandbox process reference belongs to another sandbox\",\n );\n }\n const facade: DurableSandboxProcess = {\n ...ref,\n command: Object.freeze([...ref.command]),\n signal: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.signal\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.signal\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessSignalOptions(options)],\n });\n await callRawTool(rawToolResolver, idOrOptions, operation);\n },\n wait: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.wait\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.wait\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessWaitOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n const {\n exitCode: _previousExitCode,\n terminationSignal: _previousTerminationSignal,\n ...baseRef\n } = ref;\n return createDurableSandboxProcessFacade(\n parseWithSchema(\n sandboxProcessRefSchema,\n {\n ...baseRef,\n state: result.process.state,\n ...(result.process.exitCode !== undefined && {\n exitCode: result.process.exitCode,\n }),\n ...(result.process.terminationSignal !== undefined && {\n terminationSignal: result.process.terminationSignal,\n }),\n },\n \"sandbox process reference\",\n ),\n sandboxRef,\n rawToolResolver,\n );\n },\n getOutput: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.output\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.output\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessOutputOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n chunks: result.result.chunks.map(decodeOutputChunk),\n };\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createDurableSandboxFacade = (\n rawRef: unknown,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandbox => {\n const ref = parseWithSchema(sandboxRefSchema, rawRef, \"sandbox reference\");\n const facade: DurableSandbox = {\n ...ref,\n resources: Object.freeze({ ...ref.resources }),\n commands: Object.freeze({\n run: async (idOrOptions, command, options) => {\n const normalized = normalizeSandboxCommandOptions(command, options);\n const { timeout: _timeout, ...input } = normalized;\n const operation = parseSandboxOperationForAction(\"exec\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"exec\",\n target: sandboxTarget(ref),\n input: [input],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return {\n stdout: decodeUtf8(\n decodeBase64(result.result.stdout, \"sandbox exec stdout\"),\n ),\n stderr: decodeUtf8(\n decodeBase64(result.result.stderr, \"sandbox exec stderr\"),\n ),\n exitCode: result.result.exitCode,\n output: result.result.output,\n };\n },\n }),\n processes: Object.freeze({\n start: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.start\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.start\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxProcessStartOptions(options)],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return createDurableSandboxProcessFacade(\n result.process,\n ref,\n rawToolResolver,\n );\n },\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.list\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxProcessListOptions(options)],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return {\n items: result.processes.map((process) =>\n createDurableSandboxProcessFacade(process, ref, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, processId) => {\n const parsedProcessId = parseWithSchema(\n canonicalUuidSchema,\n processId,\n \"sandbox process ID\",\n );\n const operation = parseSandboxOperationForAction(\"process.get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.get\",\n target: { sandbox: ref, processId: parsedProcessId },\n input: [],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return result.process\n ? createDurableSandboxProcessFacade(\n result.process,\n ref,\n rawToolResolver,\n )\n : null;\n },\n }),\n waitUntilRunning: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"waitUntilRunning\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"waitUntilRunning\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxWaitUntilRunningOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n destroy: async (idOrOptions): Promise<SandboxDestroyResult> => {\n const operation = parseSandboxOperationForAction(\"destroy\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"destroy\",\n target: sandboxTarget(ref),\n input: [],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.result;\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createSandboxTools = (\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxTools => ({\n create: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"create\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"create\",\n input: [normalizeSandboxCreateOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"list\",\n input: [normalizeSandboxListOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n items: result.sandboxes.map((sandbox) =>\n createDurableSandboxFacade(sandbox, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, sandboxId) => {\n const parsedSandboxId = parseWithSchema(\n canonicalUuidSchema,\n sandboxId,\n \"sandbox ID\",\n );\n const operation = parseSandboxOperationForAction(\"get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"get\",\n input: [{ sandboxId: parsedSandboxId }],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.sandbox\n ? createDurableSandboxFacade(result.sandbox, rawToolResolver)\n : null;\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"durable.js","names":["facade: DurableSandboxSnapshot","facade: DurableSandboxProcess","createSnapshot: DurableSandbox[\"snapshot\"]","facade: DurableSandbox"],"sources":["../../../src/components/sandbox/durable.ts"],"sourcesContent":["import type { StepOptionsOrId } from \"../../types.ts\";\nimport {\n createSandboxForOperation,\n createSandboxSnapshotForOperation,\n deleteSandboxSnapshotForOperation,\n getSandboxSnapshotForOperation,\n listSandboxSnapshotsForOperation,\n runSandboxCommandForOperation,\n sandboxForOperation,\n sandboxProcessForOperation,\n waitUntilSandboxSnapshotReadyForOperation,\n} from \"./client.ts\";\nimport {\n findSandboxErrorOptions,\n findSandboxValidationError,\n maxDurableSandboxExecOutputBytes,\n parseSandboxOperation,\n parseSandboxOperationForAction,\n type SandboxOperationForAction,\n type SandboxOperationResultV1,\n type SandboxOperationV1,\n type SandboxRawToolResolver,\n type SandboxResultForAction,\n validateSandboxResult,\n} from \"./protocol.ts\";\nimport {\n type DurableSandbox,\n type DurableSandboxProcess,\n type DurableSandboxSnapshot,\n type DurableSandboxTools,\n type Sandbox,\n type SandboxAction,\n type SandboxClient,\n type SandboxCommandOutputMetadata,\n type SandboxDestroyResult,\n SandboxError,\n type SandboxOutputChunk,\n type SandboxProcess,\n type SandboxProcessRef,\n type SandboxRef,\n type SandboxSnapshotRef,\n SandboxValidationError,\n sandboxProtocolVersion,\n} from \"./types.ts\";\nimport {\n canonicalUuidSchema,\n decodeBase64,\n decodeOutputChunk,\n decodeUtf8,\n encodeBase64,\n normalizeSandboxCommandOptions,\n normalizeSandboxCreateOptions,\n normalizeSandboxListOptions,\n normalizeSandboxProcessListOptions,\n normalizeSandboxProcessOutputOptions,\n normalizeSandboxProcessSignalOptions,\n normalizeSandboxProcessStartOptions,\n normalizeSandboxProcessWaitOptions,\n normalizeSandboxSnapshotCreateOptions,\n normalizeSandboxSnapshotListOptions,\n normalizeSandboxSnapshotWaitOptions,\n normalizeSandboxWaitUntilRunningOptions,\n parseWithSchema,\n sandboxProcessRefSchema,\n sandboxRefSchema,\n sandboxSnapshotRefSchema,\n} from \"./validation.ts\";\n\nconst fitDurableSandboxExecOutput = (\n stdout: Uint8Array,\n stderr: Uint8Array,\n): {\n stdout: Uint8Array;\n stderr: Uint8Array;\n output: SandboxCommandOutputMetadata;\n} => {\n const originalBytes = {\n stdout: stdout.byteLength,\n stderr: stderr.byteLength,\n };\n if (\n originalBytes.stdout + originalBytes.stderr <=\n maxDurableSandboxExecOutputBytes\n ) {\n return { stdout, stderr, output: { truncated: false } };\n }\n\n // This bound intentionally lives in the `step.sandbox.exec` wrapper rather\n // than the direct client. `step.run` persists at most 4 MiB of serialized\n // output, and base64 expands captured bytes. Reserve half of the safe raw\n // budget for each stream, donate unused capacity to the other stream, and\n // retain tails because command failures generally appear at the end.\n const streamShare = Math.floor(maxDurableSandboxExecOutputBytes / 2);\n let retainedStdoutBytes = Math.min(originalBytes.stdout, streamShare);\n let retainedStderrBytes = Math.min(originalBytes.stderr, streamShare);\n let remainingBytes =\n maxDurableSandboxExecOutputBytes -\n retainedStdoutBytes -\n retainedStderrBytes;\n\n const extraStdoutBytes = Math.min(\n originalBytes.stdout - retainedStdoutBytes,\n remainingBytes,\n );\n retainedStdoutBytes += extraStdoutBytes;\n remainingBytes -= extraStdoutBytes;\n retainedStderrBytes += Math.min(\n originalBytes.stderr - retainedStderrBytes,\n remainingBytes,\n );\n\n const retainedBytes = {\n stdout: retainedStdoutBytes,\n stderr: retainedStderrBytes,\n };\n return {\n stdout: stdout.subarray(originalBytes.stdout - retainedBytes.stdout),\n stderr: stderr.subarray(originalBytes.stderr - retainedBytes.stderr),\n output: {\n truncated: true,\n strategy: \"tail\",\n originalBytes,\n retainedBytes,\n },\n };\n};\n\nconst encodeOutputChunk = (\n chunk: SandboxOutputChunk,\n): {\n stream: \"STDOUT\" | \"STDERR\";\n data: string;\n encoding: \"base64\";\n at?: string;\n} => ({\n stream: chunk.stream,\n data: encodeBase64(chunk.data),\n encoding: \"base64\",\n ...(chunk.at !== undefined && { at: chunk.at }),\n});\n\nconst sandboxRefForWire = (sandbox: Sandbox): SandboxRef => ({\n kind: sandbox.kind,\n version: sandbox.version,\n id: sandbox.id,\n name: sandbox.name,\n status: sandbox.status,\n vpcId: sandbox.vpcId,\n imageRef: sandbox.imageRef,\n resources: { ...sandbox.resources },\n createdAt: sandbox.createdAt,\n ...(sandbox.startedAt !== undefined && { startedAt: sandbox.startedAt }),\n ...(sandbox.endedAt !== undefined && { endedAt: sandbox.endedAt }),\n ...(sandbox.error !== undefined && { error: sandbox.error }),\n});\n\nconst processRefForWire = (process: SandboxProcess) => ({\n kind: process.kind,\n version: process.version,\n sandboxId: process.sandboxId,\n id: process.id,\n command: [...process.command],\n ...(process.pid !== undefined && { pid: process.pid }),\n state: process.state,\n ...(process.exitCode !== undefined && { exitCode: process.exitCode }),\n ...(process.terminationSignal !== undefined && {\n terminationSignal: process.terminationSignal,\n }),\n ...(process.startedAt !== undefined && { startedAt: process.startedAt }),\n ...(process.endedAt !== undefined && { endedAt: process.endedAt }),\n});\n\nconst snapshotRefForWire = (snapshot: SandboxSnapshotRef) => ({\n ...snapshot,\n resources: { ...snapshot.resources },\n});\n\n/**\n * Execute a durable sandbox operation through the public REST client and\n * reduce its result to JSON-safe data suitable for normal step memoization.\n */\nexport const executeSandboxOperation = async (\n client: SandboxClient,\n rawOperation: unknown,\n): Promise<SandboxOperationResultV1> => {\n const operation = parseSandboxOperation(rawOperation);\n\n switch (operation.action) {\n case \"create\": {\n const { runningTimeoutMs, ...options } = operation.input[0];\n const sandbox = await createSandboxForOperation(client, {\n ...options,\n ...(runningTimeoutMs !== undefined && {\n runningTimeout: runningTimeoutMs,\n }),\n });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"list\": {\n const result = await client.list(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandboxes: result.items.map(sandboxRefForWire),\n page: result.page,\n fetchedAt: result.fetchedAt,\n };\n }\n case \"get\": {\n const sandbox = await client.get(operation.input[0].sandboxId);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandbox ? sandboxRefForWire(sandbox) : null,\n };\n }\n case \"waitUntilRunning\": {\n const sandbox = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).waitUntilRunning({\n timeout: operation.input[0].timeoutMs,\n });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"exec\": {\n const { command, timeoutMs, ...options } = operation.input[0];\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const result = await runSandboxCommandForOperation(sandbox, command, {\n ...options,\n timeout: timeoutMs,\n });\n const output = fitDurableSandboxExecOutput(result.stdout, result.stderr);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: {\n stdout: encodeBase64(output.stdout),\n stderr: encodeBase64(output.stderr),\n encoding: \"base64\",\n exitCode: result.exitCode,\n output: output.output,\n },\n };\n }\n case \"destroy\": {\n const result = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).destroy();\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result,\n };\n }\n case \"pause\":\n case \"resume\": {\n const sandbox = await sandboxForOperation(\n client,\n operation.target.sandbox,\n )[operation.action]({ timeout: operation.input[0].timeoutMs });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n sandbox: sandboxRefForWire(sandbox),\n };\n }\n case \"process.start\": {\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const process = await sandbox.processes.start(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: processRefForWire(process),\n };\n }\n case \"process.list\": {\n const result = await sandboxForOperation(\n client,\n operation.target.sandbox,\n ).processes.list(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n processes: result.items.map(processRefForWire),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n }\n case \"process.get\": {\n const sandbox = sandboxForOperation(client, operation.target.sandbox);\n const process = await sandbox.processes.get(operation.target.processId);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: process ? processRefForWire(process) : null,\n };\n }\n case \"process.signal\": {\n await sandboxProcessForOperation(client, operation.target.process).signal(\n operation.input[0],\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: null,\n };\n }\n case \"process.wait\": {\n const process = await sandboxProcessForOperation(\n client,\n operation.target.process,\n ).wait({ timeout: operation.input[0].timeoutMs });\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n process: {\n kind: process.kind,\n version: process.version,\n sandboxId: process.sandboxId,\n id: process.id,\n state: process.state as \"EXITED\" | \"KILLED\" | \"FAILED\" | \"LOST\",\n ...(process.exitCode !== undefined && {\n exitCode: process.exitCode,\n }),\n ...(process.terminationSignal !== undefined && {\n terminationSignal: process.terminationSignal,\n }),\n },\n };\n }\n case \"process.output\": {\n const result = await sandboxProcessForOperation(\n client,\n operation.target.process,\n ).getOutput(operation.input[0]);\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: { chunks: result.chunks.map(encodeOutputChunk) },\n };\n }\n case \"snapshot.create\": {\n const snapshot = await createSandboxSnapshotForOperation(\n client,\n operation.target.sandbox.id,\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n snapshot: snapshotRefForWire(snapshot),\n };\n }\n case \"snapshot.list\": {\n const result = await listSandboxSnapshotsForOperation(\n client,\n operation.input[0],\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n snapshots: result.items.map(snapshotRefForWire),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n }\n case \"snapshot.get\": {\n const snapshot = await getSandboxSnapshotForOperation(\n client,\n operation.target.snapshotId,\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n snapshot: snapshot ? snapshotRefForWire(snapshot) : null,\n };\n }\n case \"snapshot.waitUntilReady\": {\n const snapshot = await waitUntilSandboxSnapshotReadyForOperation(\n client,\n operation.target.snapshot,\n operation.input[0].timeoutMs,\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n snapshot: snapshotRefForWire(snapshot),\n };\n }\n case \"snapshot.delete\": {\n await deleteSandboxSnapshotForOperation(\n client,\n operation.target.snapshot.id,\n );\n return {\n protocolVersion: sandboxProtocolVersion,\n action: operation.action,\n result: null,\n };\n }\n }\n};\n\nconst callRawTool = async <A extends SandboxAction>(\n rawToolResolver: SandboxRawToolResolver,\n idOrOptions: StepOptionsOrId,\n operation: SandboxOperationForAction<A>,\n): Promise<SandboxResultForAction<A>> => {\n try {\n const rawTool = await rawToolResolver();\n return validateSandboxResult(\n operation,\n await rawTool(idOrOptions, operation),\n );\n } catch (error) {\n if (error instanceof SandboxValidationError) {\n throw error;\n }\n const options = findSandboxErrorOptions(error);\n if (options) {\n if (options.action !== operation.action) {\n throw new SandboxValidationError(\n `Sandbox operation returned a ${options.action} error for ${operation.action}`,\n );\n }\n throw new SandboxError(options);\n }\n const validationError = findSandboxValidationError(error);\n if (validationError) {\n throw new SandboxValidationError(validationError.message, {\n cause: error,\n });\n }\n throw error;\n }\n};\n\nconst snapshotWaitStepOptions = (\n idOrOptions: StepOptionsOrId,\n): StepOptionsOrId => {\n if (typeof idOrOptions === \"string\") {\n return `${idOrOptions}:wait-until-ready`;\n }\n return {\n ...idOrOptions,\n id: `${idOrOptions.id}:wait-until-ready`,\n ...(idOrOptions.name && {\n name: `${idOrOptions.name} (wait until ready)`,\n }),\n };\n};\n\nconst sandboxTarget = (ref: SandboxRef) => ({ sandbox: ref });\nconst processTarget = (sandbox: SandboxRef, process: SandboxProcessRef) => ({\n sandbox,\n process,\n});\nconst snapshotTarget = (snapshot: SandboxSnapshotRef) => ({ snapshot });\n\nexport const createDurableSandboxSnapshotFacade = (\n rawRef: unknown,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxSnapshot => {\n const ref = parseWithSchema(\n sandboxSnapshotRefSchema,\n rawRef,\n \"sandbox snapshot reference\",\n );\n const facade: DurableSandboxSnapshot = {\n ...ref,\n resources: Object.freeze({ ...ref.resources }),\n waitUntilReady: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\n \"snapshot.waitUntilReady\",\n {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.waitUntilReady\",\n target: snapshotTarget(ref),\n input: [normalizeSandboxSnapshotWaitOptions(options)],\n },\n );\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxSnapshotFacade(\n result.snapshot,\n rawToolResolver,\n );\n },\n delete: async (idOrOptions) => {\n const operation = parseSandboxOperationForAction(\"snapshot.delete\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.delete\",\n target: snapshotTarget(ref),\n input: [],\n });\n await callRawTool(rawToolResolver, idOrOptions, operation);\n },\n clone: async (idOrOptions, options, waitOptions) => {\n const operation = parseSandboxOperationForAction(\"create\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"create\",\n input: [\n normalizeSandboxCreateOptions({\n name: options.name,\n snapshotId: ref.id,\n runningTimeout: options.runningTimeout ?? waitOptions?.timeout,\n }),\n ],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createDurableSandboxProcessFacade = (\n rawRef: unknown,\n sandboxRef: SandboxRef,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxProcess => {\n const ref = parseWithSchema(\n sandboxProcessRefSchema,\n rawRef,\n \"sandbox process reference\",\n );\n if (ref.sandboxId !== sandboxRef.id) {\n throw new SandboxValidationError(\n \"Sandbox process reference belongs to another sandbox\",\n );\n }\n const facade: DurableSandboxProcess = {\n ...ref,\n command: Object.freeze([...ref.command]),\n signal: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.signal\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.signal\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessSignalOptions(options)],\n });\n await callRawTool(rawToolResolver, idOrOptions, operation);\n },\n wait: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.wait\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.wait\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessWaitOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n const {\n exitCode: _previousExitCode,\n terminationSignal: _previousTerminationSignal,\n ...baseRef\n } = ref;\n return createDurableSandboxProcessFacade(\n parseWithSchema(\n sandboxProcessRefSchema,\n {\n ...baseRef,\n state: result.process.state,\n ...(result.process.exitCode !== undefined && {\n exitCode: result.process.exitCode,\n }),\n ...(result.process.terminationSignal !== undefined && {\n terminationSignal: result.process.terminationSignal,\n }),\n },\n \"sandbox process reference\",\n ),\n sandboxRef,\n rawToolResolver,\n );\n },\n getOutput: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.output\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.output\",\n target: processTarget(sandboxRef, ref),\n input: [normalizeSandboxProcessOutputOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n chunks: result.result.chunks.map(decodeOutputChunk),\n };\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createDurableSandboxFacade = (\n rawRef: unknown,\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandbox => {\n const ref = parseWithSchema(sandboxRefSchema, rawRef, \"sandbox reference\");\n const createSnapshot: DurableSandbox[\"snapshot\"] = async (\n idOrOptions,\n options,\n waitOptions,\n ) => {\n const createOptions = normalizeSandboxSnapshotCreateOptions(options);\n const wait = normalizeSandboxSnapshotWaitOptions({\n timeout: waitOptions?.timeout ?? 5 * 60_000,\n });\n const createOperation = parseSandboxOperationForAction(\"snapshot.create\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.create\",\n target: sandboxTarget(ref),\n input: [createOptions],\n });\n const created = await callRawTool(\n rawToolResolver,\n idOrOptions,\n createOperation,\n );\n const waitOperation = parseSandboxOperationForAction(\n \"snapshot.waitUntilReady\",\n {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.waitUntilReady\",\n target: snapshotTarget(created.snapshot),\n input: [wait],\n },\n );\n const ready = await callRawTool(\n rawToolResolver,\n snapshotWaitStepOptions(idOrOptions),\n waitOperation,\n );\n return createDurableSandboxSnapshotFacade(ready.snapshot, rawToolResolver);\n };\n const facade: DurableSandbox = {\n ...ref,\n resources: Object.freeze({ ...ref.resources }),\n commands: Object.freeze({\n run: async (idOrOptions, command, options) => {\n const normalized = normalizeSandboxCommandOptions(command, options);\n const { timeout: _timeout, ...input } = normalized;\n const operation = parseSandboxOperationForAction(\"exec\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"exec\",\n target: sandboxTarget(ref),\n input: [input],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return {\n stdout: decodeUtf8(\n decodeBase64(result.result.stdout, \"sandbox exec stdout\"),\n ),\n stderr: decodeUtf8(\n decodeBase64(result.result.stderr, \"sandbox exec stderr\"),\n ),\n exitCode: result.result.exitCode,\n output: result.result.output,\n };\n },\n }),\n processes: Object.freeze({\n start: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.start\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.start\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxProcessStartOptions(options)],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return createDurableSandboxProcessFacade(\n result.process,\n ref,\n rawToolResolver,\n );\n },\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"process.list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.list\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxProcessListOptions(options)],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return {\n items: result.processes.map((process) =>\n createDurableSandboxProcessFacade(process, ref, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, processId) => {\n const parsedProcessId = parseWithSchema(\n canonicalUuidSchema,\n processId,\n \"sandbox process ID\",\n );\n const operation = parseSandboxOperationForAction(\"process.get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"process.get\",\n target: { sandbox: ref, processId: parsedProcessId },\n input: [],\n });\n const result = await callRawTool(\n rawToolResolver,\n idOrOptions,\n operation,\n );\n return result.process\n ? createDurableSandboxProcessFacade(\n result.process,\n ref,\n rawToolResolver,\n )\n : null;\n },\n }),\n snapshots: Object.freeze({\n create: createSnapshot,\n }),\n snapshot: createSnapshot,\n waitUntilRunning: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"waitUntilRunning\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"waitUntilRunning\",\n target: sandboxTarget(ref),\n input: [normalizeSandboxWaitUntilRunningOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n pause: async (idOrOptions, options) => {\n const input = normalizeSandboxWaitUntilRunningOptions({\n timeout: options?.timeout ?? 5 * 60_000,\n });\n const operation = parseSandboxOperationForAction(\"pause\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"pause\",\n target: sandboxTarget(ref),\n input: [input],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n resume: async (idOrOptions, options) => {\n const input = normalizeSandboxWaitUntilRunningOptions({\n timeout: options?.timeout ?? 5 * 60_000,\n });\n const operation = parseSandboxOperationForAction(\"resume\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"resume\",\n target: sandboxTarget(ref),\n input: [input],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n destroy: async (idOrOptions): Promise<SandboxDestroyResult> => {\n const operation = parseSandboxOperationForAction(\"destroy\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"destroy\",\n target: sandboxTarget(ref),\n input: [],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.result;\n },\n };\n return Object.freeze(facade);\n};\n\nexport const createSandboxTools = (\n rawToolResolver: SandboxRawToolResolver,\n): DurableSandboxTools => ({\n create: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"create\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"create\",\n input: [normalizeSandboxCreateOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return createDurableSandboxFacade(result.sandbox, rawToolResolver);\n },\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"list\",\n input: [normalizeSandboxListOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n items: result.sandboxes.map((sandbox) =>\n createDurableSandboxFacade(sandbox, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, sandboxId) => {\n const parsedSandboxId = parseWithSchema(\n canonicalUuidSchema,\n sandboxId,\n \"sandbox ID\",\n );\n const operation = parseSandboxOperationForAction(\"get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"get\",\n input: [{ sandboxId: parsedSandboxId }],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.sandbox\n ? createDurableSandboxFacade(result.sandbox, rawToolResolver)\n : null;\n },\n snapshots: {\n list: async (idOrOptions, options) => {\n const operation = parseSandboxOperationForAction(\"snapshot.list\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.list\",\n input: [normalizeSandboxSnapshotListOptions(options)],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return {\n items: result.snapshots.map((snapshot) =>\n createDurableSandboxSnapshotFacade(snapshot, rawToolResolver),\n ),\n page: { ...result.page },\n fetchedAt: result.fetchedAt,\n };\n },\n get: async (idOrOptions, snapshotId) => {\n const parsedSnapshotId = parseWithSchema(\n canonicalUuidSchema,\n snapshotId,\n \"sandbox snapshot ID\",\n );\n const operation = parseSandboxOperationForAction(\"snapshot.get\", {\n protocolVersion: sandboxProtocolVersion,\n action: \"snapshot.get\",\n target: { snapshotId: parsedSnapshotId },\n input: [],\n });\n const result = await callRawTool(rawToolResolver, idOrOptions, operation);\n return result.snapshot\n ? createDurableSandboxSnapshotFacade(result.snapshot, rawToolResolver)\n : null;\n },\n },\n});\n"],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ const executeAsStep = async (client, operation) => {
|
|
|
17
17
|
...error.status !== void 0 && { status: error.status },
|
|
18
18
|
...error.sandboxId !== void 0 && { sandboxId: error.sandboxId },
|
|
19
19
|
...error.processId !== void 0 && { processId: error.processId },
|
|
20
|
+
...error.snapshotId !== void 0 && { snapshotId: error.snapshotId },
|
|
20
21
|
ambiguous: error.ambiguous,
|
|
21
22
|
retryable: error.retryable,
|
|
22
23
|
...error.requestId !== void 0 && { requestId: error.requestId },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.cjs","names":["executeSandboxOperation","SandboxError","NonRetriableError","SandboxValidationError","sandboxProtocolVersion","Middleware","rawTool: SandboxRawTool","createSandboxTools"],"sources":["../../../src/components/sandbox/middleware.ts"],"sourcesContent":["import type { Inngest } from \"../Inngest.ts\";\nimport { Middleware } from \"../middleware/middleware.ts\";\nimport { NonRetriableError } from \"../NonRetriableError.ts\";\nimport { createSandboxTools, executeSandboxOperation } from \"./durable.ts\";\nimport type { SandboxRawTool } from \"./protocol.ts\";\nimport {\n type DurableSandboxTools,\n SandboxError,\n SandboxValidationError,\n sandboxProtocolVersion,\n} from \"./types.ts\";\n\ntype SandboxStepExtension = {\n sandbox: DurableSandboxTools;\n};\n\nconst executeAsStep = async (\n client: Inngest.Any,\n operation: unknown,\n): Promise<unknown> => {\n try {\n return await executeSandboxOperation(client.sandboxes, operation);\n } catch (error) {\n if (error instanceof SandboxError) {\n const cause = {\n protocolVersion: error.protocolVersion,\n action: error.action,\n code: error.code,\n message: error.message,\n ...(error.status !== undefined && { status: error.status }),\n ...(error.sandboxId !== undefined && {\n sandboxId: error.sandboxId,\n }),\n ...(error.processId !== undefined && {\n processId: error.processId,\n }),\n ambiguous: error.ambiguous,\n retryable: error.retryable,\n ...(error.requestId !== undefined && {\n requestId: error.requestId,\n }),\n details: [...error.details],\n };\n if (error.retryable) {\n const retryableError = new Error(error.message, { cause });\n retryableError.name = error.name;\n throw retryableError;\n }\n throw new NonRetriableError(error.message, { cause });\n }\n if (error instanceof SandboxValidationError) {\n throw new NonRetriableError(error.message, {\n cause: {\n protocolVersion: sandboxProtocolVersion,\n type: \"sandbox_validation_error\" as const,\n message: error.message,\n },\n });\n }\n throw error;\n }\n};\n\n/**\n * Adds the durable `step.sandbox` facade using ordinary `step.run` calls.\n *\n * The executor only sees a normal planned step. Its handler calls the same REST\n * client exposed as `inngest.sandboxes`, then returns JSON-safe wire data for\n * replay.\n */\nexport class SandboxMiddleware extends Middleware.BaseMiddleware {\n readonly id = \"inngest:sandbox\";\n\n override transformFunctionInput(\n arg: Middleware.TransformFunctionInputArgs,\n ): Middleware.TransformFunctionInputArgs & {\n ctx: Middleware.TransformFunctionInputArgs[\"ctx\"] & {\n step: Middleware.TransformFunctionInputArgs[\"ctx\"][\"step\"] &\n SandboxStepExtension;\n };\n } {\n const rawTool: SandboxRawTool = (idOrOptions, operation) =>\n arg.ctx.step.run(\n idOrOptions,\n (input) => executeAsStep(this.client, input),\n operation,\n );\n\n return {\n ...arg,\n ctx: {\n ...arg.ctx,\n step: {\n ...arg.ctx.step,\n sandbox: createSandboxTools(() => rawTool),\n },\n },\n };\n }\n}\n\n/**\n * EXPERIMENTAL: This API is not yet stable and may change in the future without\n * a major version bump.\n *\n * Middleware that enables the experimental durable `step.sandbox` API.\n *\n * The direct `inngest.sandboxes` client does not require this middleware.\n *\n * @example\n * ```ts\n * import { sandboxMiddleware } from \"inngest/experimental\";\n *\n * const inngest = new Inngest({\n * id: \"my-app\",\n * middleware: [sandboxMiddleware()],\n * });\n * ```\n */\nexport const sandboxMiddleware = () => SandboxMiddleware;\n"],"mappings":";;;;;;AAgBA,MAAM,gBAAgB,OACpB,QACA,cACqB;AACrB,KAAI;AACF,SAAO,MAAMA,wCAAwB,OAAO,WAAW,UAAU;UAC1D,OAAO;AACd,MAAI,iBAAiBC,4BAAc;GACjC,MAAM,QAAQ;IACZ,iBAAiB,MAAM;IACvB,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,SAAS,MAAM;IACf,GAAI,MAAM,WAAW,UAAa,EAAE,QAAQ,MAAM,QAAQ;IAC1D,GAAI,MAAM,cAAc,UAAa,EACnC,WAAW,MAAM,WAClB;IACD,GAAI,MAAM,cAAc,UAAa,EACnC,WAAW,MAAM,WAClB;IACD,WAAW,MAAM;IACjB,WAAW,MAAM;IACjB,GAAI,MAAM,cAAc,UAAa,EACnC,WAAW,MAAM,WAClB;IACD,SAAS,CAAC,GAAG,MAAM,QAAQ;IAC5B;AACD,OAAI,MAAM,WAAW;IACnB,MAAM,iBAAiB,IAAI,MAAM,MAAM,SAAS,EAAE,OAAO,CAAC;AAC1D,mBAAe,OAAO,MAAM;AAC5B,UAAM;;AAER,SAAM,IAAIC,4CAAkB,MAAM,SAAS,EAAE,OAAO,CAAC;;AAEvD,MAAI,iBAAiBC,qCACnB,OAAM,IAAID,4CAAkB,MAAM,SAAS,EACzC,OAAO;GACL,iBAAiBE;GACjB,MAAM;GACN,SAAS,MAAM;GAChB,EACF,CAAC;AAEJ,QAAM;;;;;;;;;;AAWV,IAAa,oBAAb,cAAuCC,8BAAW,eAAe;CAC/D,AAAS,KAAK;CAEd,AAAS,uBACP,KAMA;EACA,MAAMC,WAA2B,aAAa,cAC5C,IAAI,IAAI,KAAK,IACX,cACC,UAAU,cAAc,KAAK,QAAQ,MAAM,EAC5C,UACD;AAEH,SAAO;GACL,GAAG;GACH,KAAK;IACH,GAAG,IAAI;IACP,MAAM;KACJ,GAAG,IAAI,IAAI;KACX,SAASC,yCAAyB,QAAQ;KAC3C;IACF;GACF;;;;;;;;;;;;;;;;;;;;;AAsBL,MAAa,0BAA0B"}
|
|
1
|
+
{"version":3,"file":"middleware.cjs","names":["executeSandboxOperation","SandboxError","NonRetriableError","SandboxValidationError","sandboxProtocolVersion","Middleware","rawTool: SandboxRawTool","createSandboxTools"],"sources":["../../../src/components/sandbox/middleware.ts"],"sourcesContent":["import type { Inngest } from \"../Inngest.ts\";\nimport { Middleware } from \"../middleware/middleware.ts\";\nimport { NonRetriableError } from \"../NonRetriableError.ts\";\nimport { createSandboxTools, executeSandboxOperation } from \"./durable.ts\";\nimport type { SandboxRawTool } from \"./protocol.ts\";\nimport {\n type DurableSandboxTools,\n SandboxError,\n SandboxValidationError,\n sandboxProtocolVersion,\n} from \"./types.ts\";\n\ntype SandboxStepExtension = {\n sandbox: DurableSandboxTools;\n};\n\nconst executeAsStep = async (\n client: Inngest.Any,\n operation: unknown,\n): Promise<unknown> => {\n try {\n return await executeSandboxOperation(client.sandboxes, operation);\n } catch (error) {\n if (error instanceof SandboxError) {\n const cause = {\n protocolVersion: error.protocolVersion,\n action: error.action,\n code: error.code,\n message: error.message,\n ...(error.status !== undefined && { status: error.status }),\n ...(error.sandboxId !== undefined && {\n sandboxId: error.sandboxId,\n }),\n ...(error.processId !== undefined && {\n processId: error.processId,\n }),\n ...(error.snapshotId !== undefined && {\n snapshotId: error.snapshotId,\n }),\n ambiguous: error.ambiguous,\n retryable: error.retryable,\n ...(error.requestId !== undefined && {\n requestId: error.requestId,\n }),\n details: [...error.details],\n };\n if (error.retryable) {\n const retryableError = new Error(error.message, { cause });\n retryableError.name = error.name;\n throw retryableError;\n }\n throw new NonRetriableError(error.message, { cause });\n }\n if (error instanceof SandboxValidationError) {\n throw new NonRetriableError(error.message, {\n cause: {\n protocolVersion: sandboxProtocolVersion,\n type: \"sandbox_validation_error\" as const,\n message: error.message,\n },\n });\n }\n throw error;\n }\n};\n\n/**\n * Adds the durable `step.sandbox` facade using ordinary `step.run` calls.\n *\n * The executor only sees a normal planned step. Its handler calls the same REST\n * client exposed as `inngest.sandboxes`, then returns JSON-safe wire data for\n * replay.\n */\nexport class SandboxMiddleware extends Middleware.BaseMiddleware {\n readonly id = \"inngest:sandbox\";\n\n override transformFunctionInput(\n arg: Middleware.TransformFunctionInputArgs,\n ): Middleware.TransformFunctionInputArgs & {\n ctx: Middleware.TransformFunctionInputArgs[\"ctx\"] & {\n step: Middleware.TransformFunctionInputArgs[\"ctx\"][\"step\"] &\n SandboxStepExtension;\n };\n } {\n const rawTool: SandboxRawTool = (idOrOptions, operation) =>\n arg.ctx.step.run(\n idOrOptions,\n (input) => executeAsStep(this.client, input),\n operation,\n );\n\n return {\n ...arg,\n ctx: {\n ...arg.ctx,\n step: {\n ...arg.ctx.step,\n sandbox: createSandboxTools(() => rawTool),\n },\n },\n };\n }\n}\n\n/**\n * EXPERIMENTAL: This API is not yet stable and may change in the future without\n * a major version bump.\n *\n * Middleware that enables the experimental durable `step.sandbox` API.\n *\n * The direct `inngest.sandboxes` client does not require this middleware.\n *\n * @example\n * ```ts\n * import { sandboxMiddleware } from \"inngest/experimental\";\n *\n * const inngest = new Inngest({\n * id: \"my-app\",\n * middleware: [sandboxMiddleware()],\n * });\n * ```\n */\nexport const sandboxMiddleware = () => SandboxMiddleware;\n"],"mappings":";;;;;;AAgBA,MAAM,gBAAgB,OACpB,QACA,cACqB;AACrB,KAAI;AACF,SAAO,MAAMA,wCAAwB,OAAO,WAAW,UAAU;UAC1D,OAAO;AACd,MAAI,iBAAiBC,4BAAc;GACjC,MAAM,QAAQ;IACZ,iBAAiB,MAAM;IACvB,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,SAAS,MAAM;IACf,GAAI,MAAM,WAAW,UAAa,EAAE,QAAQ,MAAM,QAAQ;IAC1D,GAAI,MAAM,cAAc,UAAa,EACnC,WAAW,MAAM,WAClB;IACD,GAAI,MAAM,cAAc,UAAa,EACnC,WAAW,MAAM,WAClB;IACD,GAAI,MAAM,eAAe,UAAa,EACpC,YAAY,MAAM,YACnB;IACD,WAAW,MAAM;IACjB,WAAW,MAAM;IACjB,GAAI,MAAM,cAAc,UAAa,EACnC,WAAW,MAAM,WAClB;IACD,SAAS,CAAC,GAAG,MAAM,QAAQ;IAC5B;AACD,OAAI,MAAM,WAAW;IACnB,MAAM,iBAAiB,IAAI,MAAM,MAAM,SAAS,EAAE,OAAO,CAAC;AAC1D,mBAAe,OAAO,MAAM;AAC5B,UAAM;;AAER,SAAM,IAAIC,4CAAkB,MAAM,SAAS,EAAE,OAAO,CAAC;;AAEvD,MAAI,iBAAiBC,qCACnB,OAAM,IAAID,4CAAkB,MAAM,SAAS,EACzC,OAAO;GACL,iBAAiBE;GACjB,MAAM;GACN,SAAS,MAAM;GAChB,EACF,CAAC;AAEJ,QAAM;;;;;;;;;;AAWV,IAAa,oBAAb,cAAuCC,8BAAW,eAAe;CAC/D,AAAS,KAAK;CAEd,AAAS,uBACP,KAMA;EACA,MAAMC,WAA2B,aAAa,cAC5C,IAAI,IAAI,KAAK,IACX,cACC,UAAU,cAAc,KAAK,QAAQ,MAAM,EAC5C,UACD;AAEH,SAAO;GACL,GAAG;GACH,KAAK;IACH,GAAG,IAAI;IACP,MAAM;KACJ,GAAG,IAAI,IAAI;KACX,SAASC,yCAAyB,QAAQ;KAC3C;IACF;GACF;;;;;;;;;;;;;;;;;;;;;AAsBL,MAAa,0BAA0B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.cts","names":[],"sources":["../../../src/components/sandbox/middleware.ts"],"sourcesContent":[],"mappings":";;;;KAYK,oBAAA;WACM;AAHS,CAAA;
|
|
1
|
+
{"version":3,"file":"middleware.d.cts","names":[],"sources":["../../../src/components/sandbox/middleware.ts"],"sourcesContent":[],"mappings":";;;;KAYK,oBAAA;WACM;AAHS,CAAA;AA+DpB;;;;;;;AAAuC,cAA1B,iBAAA,SAA0B,UAAA,CAAW,cAAA,CAAA;EAAc,SAAA,EAAA,GAAA,iBAAA;EAiDnD,sBAA2C,CAAA,GAAA,EA7C/C,UAAA,CAAW,0BA6CoC,CAAA,EA5CnD,UAAA,CAAW,0BA4CwC,GAAA;SA3C/C,UAAA,CAAW;YACR,UAAA,CAAW,4CACf;;;;;;;;;;;;;;;;;;;;;;cAyCK,gCAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","names":[],"sources":["../../../src/components/sandbox/middleware.ts"],"sourcesContent":[],"mappings":";;;;KAYK,oBAAA;WACM;AAHS,CAAA;
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","names":[],"sources":["../../../src/components/sandbox/middleware.ts"],"sourcesContent":[],"mappings":";;;;KAYK,oBAAA;WACM;AAHS,CAAA;AA+DpB;;;;;;;AAAuC,cAA1B,iBAAA,SAA0B,UAAA,CAAW,cAAA,CAAA;EAAc,SAAA,EAAA,GAAA,iBAAA;EAiDnD,sBAA2C,CAAA,GAAA,EA7C/C,UAAA,CAAW,0BA6CoC,CAAA,EA5CnD,UAAA,CAAW,0BA4CwC,GAAA;SA3C/C,UAAA,CAAW;YACR,UAAA,CAAW,4CACf;;;;;;;;;;;;;;;;;;;;;;cAyCK,gCAAiB"}
|