@cloudflare/sandbox 0.5.2 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { t as Sandbox } from "../sandbox-B3vJ541e.js";
1
+ import { t as Sandbox } from "../sandbox-HQazw9bn.js";
2
2
  import { ApplyPatchOperation, ApplyPatchResult, Editor as Editor$1, Shell as Shell$1, ShellAction, ShellResult } from "@openai/agents";
3
3
 
4
4
  //#region src/openai/index.d.ts
@@ -347,7 +347,9 @@ interface BaseExecOptions {
347
347
  */
348
348
  timeout?: number;
349
349
  /**
350
- * Environment variables for the command
350
+ * Environment variables for this command invocation.
351
+ * Values temporarily override session-level/container-level env for the
352
+ * duration of the command but do not persist after it completes.
351
353
  */
352
354
  env?: Record<string, string>;
353
355
  /**
@@ -986,6 +988,7 @@ interface ISandbox {
986
988
  branch?: string;
987
989
  targetDir?: string;
988
990
  }): Promise<GitCheckoutResult>;
991
+ setEnvVars(envVars: Record<string, string>): Promise<void>;
989
992
  mountBucket(bucket: string, mountPath: string, options: MountBucketOptions): Promise<void>;
990
993
  unmountBucket(mountPath: string): Promise<void>;
991
994
  createSession(options?: SessionOptions): Promise<ExecutionSession>;
@@ -1118,13 +1121,6 @@ declare abstract class BaseHttpClient {
1118
1121
  }
1119
1122
  //#endregion
1120
1123
  //#region src/clients/command-client.d.ts
1121
- /**
1122
- * Request interface for command execution
1123
- */
1124
- interface ExecuteRequest extends SessionRequest {
1125
- command: string;
1126
- timeoutMs?: number;
1127
- }
1128
1124
  /**
1129
1125
  * Response interface for command execution
1130
1126
  */
@@ -1143,14 +1139,25 @@ declare class CommandClient extends BaseHttpClient {
1143
1139
  * @param command - The command to execute
1144
1140
  * @param sessionId - The session ID for this command execution
1145
1141
  * @param timeoutMs - Optional timeout in milliseconds (unlimited by default)
1142
+ * @param env - Optional environment variables for this command
1143
+ * @param cwd - Optional working directory for this command
1146
1144
  */
1147
- execute(command: string, sessionId: string, timeoutMs?: number): Promise<ExecuteResponse>;
1145
+ execute(command: string, sessionId: string, options?: {
1146
+ timeoutMs?: number;
1147
+ env?: Record<string, string>;
1148
+ cwd?: string;
1149
+ }): Promise<ExecuteResponse>;
1148
1150
  /**
1149
1151
  * Execute a command and return a stream of events
1150
1152
  * @param command - The command to execute
1151
1153
  * @param sessionId - The session ID for this command execution
1154
+ * @param options - Optional per-command execution settings
1152
1155
  */
1153
- executeStream(command: string, sessionId: string): Promise<ReadableStream<Uint8Array>>;
1156
+ executeStream(command: string, sessionId: string, options?: {
1157
+ timeoutMs?: number;
1158
+ env?: Record<string, string>;
1159
+ cwd?: string;
1160
+ }): Promise<ReadableStream<Uint8Array>>;
1154
1161
  }
1155
1162
  //#endregion
1156
1163
  //#region src/clients/file-client.d.ts
@@ -1362,6 +1369,11 @@ declare class ProcessClient extends BaseHttpClient {
1362
1369
  */
1363
1370
  startProcess(command: string, sessionId: string, options?: {
1364
1371
  processId?: string;
1372
+ timeoutMs?: number;
1373
+ env?: Record<string, string>;
1374
+ cwd?: string;
1375
+ encoding?: string;
1376
+ autoCleanup?: boolean;
1365
1377
  }): Promise<ProcessStartResult>;
1366
1378
  /**
1367
1379
  * List all processes (sandbox-scoped, not session-scoped)
@@ -1725,5 +1737,5 @@ declare class Sandbox<Env = unknown> extends Container<Env> implements ISandbox
1725
1737
  deleteCodeContext(contextId: string): Promise<void>;
1726
1738
  }
1727
1739
  //#endregion
1728
- export { ProcessCleanupResult as $, HttpClientOptions as A, ExecutionSession as B, WriteFileRequest as C, BaseApiResponse as D, ExecuteResponse as E, BucketCredentials as F, ISandbox as G, FileMetadata as H, BucketProvider as I, MountBucketOptions as J, ListFilesOptions as K, ExecEvent as L, ResponseHandler as M, SessionRequest as N, ContainerStub as O, BaseExecOptions as P, Process as Q, ExecOptions as R, ReadFileRequest as S, ExecuteRequest as T, FileStreamEvent as U, FileChunk as V, GitCheckoutResult as W, PortExposeResult as X, PortCloseResult as Y, PortListResult as Z, GitCheckoutRequest as _, RunCodeOptions as _t, CreateSessionRequest as a, ProcessStartResult as at, FileOperationRequest as b, DeleteSessionResponse as c, SessionOptions as ct, ProcessClient as d, isProcess as dt, ProcessInfoResult as et, ExposePortRequest as f, isProcessStatus as ft, InterpreterClient as g, ExecutionResult as gt, ExecutionCallbacks as h, Execution as ht, CommandsResponse as i, ProcessOptions as it, RequestConfig as j, ErrorResponse as k, PingResponse as l, StreamOptions as lt, UnexposePortRequest as m, CreateContextOptions as mt, getSandbox as n, ProcessListResult as nt, CreateSessionResponse as o, ProcessStatus as ot, PortClient as p, CodeContext as pt, LogEvent as q, SandboxClient as r, ProcessLogsResult as rt, DeleteSessionRequest as s, SandboxOptions as st, Sandbox as t, ProcessKillResult as tt, UtilityClient as u, isExecResult as ut, GitClient as v, CommandClient as w, MkdirRequest as x, FileClient as y, ExecResult as z };
1729
- //# sourceMappingURL=sandbox-B3vJ541e.d.ts.map
1740
+ export { ProcessInfoResult as $, RequestConfig as A, FileChunk as B, WriteFileRequest as C, ContainerStub as D, BaseApiResponse as E, BucketProvider as F, ListFilesOptions as G, FileStreamEvent as H, ExecEvent as I, PortCloseResult as J, LogEvent as K, ExecOptions as L, SessionRequest as M, BaseExecOptions as N, ErrorResponse as O, BucketCredentials as P, ProcessCleanupResult as Q, ExecResult as R, ReadFileRequest as S, ExecuteResponse as T, GitCheckoutResult as U, FileMetadata as V, ISandbox as W, PortListResult as X, PortExposeResult as Y, Process as Z, GitCheckoutRequest as _, CreateSessionRequest as a, ProcessStatus as at, FileOperationRequest as b, DeleteSessionResponse as c, StreamOptions as ct, ProcessClient as d, isProcessStatus as dt, ProcessKillResult as et, ExposePortRequest as f, CodeContext as ft, InterpreterClient as g, RunCodeOptions as gt, ExecutionCallbacks as h, ExecutionResult as ht, CommandsResponse as i, ProcessStartResult as it, ResponseHandler as j, HttpClientOptions as k, PingResponse as l, isExecResult as lt, UnexposePortRequest as m, Execution as mt, getSandbox as n, ProcessLogsResult as nt, CreateSessionResponse as o, SandboxOptions as ot, PortClient as p, CreateContextOptions as pt, MountBucketOptions as q, SandboxClient as r, ProcessOptions as rt, DeleteSessionRequest as s, SessionOptions as st, Sandbox as t, ProcessListResult as tt, UtilityClient as u, isProcess as ut, GitClient as v, CommandClient as w, MkdirRequest as x, FileClient as y, ExecutionSession as z };
1741
+ //# sourceMappingURL=sandbox-HQazw9bn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-HQazw9bn.d.ts","names":["LogLevel","LogComponent","LogContext","Logger","Partial","Error","CreateContextOptions","Record","CodeContext","Date","RunCodeOptions","AbortSignal","OutputMessage","Promise","Result","ExecutionError","ChartData","ExecutionResult","Array","Execution","ResultImpl","CodeContext","CreateContextOptions","ExecutionResult","RunCodeOptions","BaseExecOptions","Record","ExecOptions","ExecResult","Error","AbortSignal","ProcessOptions","Process","ProcessStatus","Date","Promise","ExecEvent","LogEvent","StreamOptions","SessionOptions","SandboxOptions","MkdirResult","WriteFileResult","ReadFileResult","DeleteFileResult","RenameFileResult","MoveFileResult","FileExistsResult","FileInfo","ListFilesOptions","ListFilesResult","GitCheckoutResult","FileStreamEvent","FileMetadata","FileChunk","Uint8Array","ProcessStartResult","ProcessListResult","Array","ProcessInfoResult","ProcessKillResult","ProcessLogsResult","ProcessCleanupResult","SessionCreateResult","SessionDeleteResult","EnvSetResult","PortExposeResult","PortStatusResult","PortListResult","PortCloseResult","InterpreterHealthResult","ContextCreateResult","ContextListResult","ContextDeleteResult","HealthCheckResult","ShutdownResult","ExecutionSession","ReadableStream","MountBucketOptions","BucketProvider","BucketCredentials","ISandbox","Request","Response","isExecResult","isProcess","isProcessStatus","ChartData","ExecutionError","OutputMessage","Result","Execution","ResultImpl"],"sources":["../../shared/dist/logger/types.d.ts","../../shared/dist/interpreter-types.d.ts","../../shared/dist/types.d.ts","../src/clients/types.ts","../src/clients/base-client.ts","../src/clients/command-client.ts","../src/clients/file-client.ts","../src/clients/git-client.ts","../src/clients/interpreter-client.ts","../src/clients/port-client.ts","../src/clients/process-client.ts","../src/clients/utility-client.ts","../src/clients/sandbox-client.ts","../src/sandbox.ts"],"sourcesContent":["/**\n * Logger types for Cloudflare Sandbox SDK\n *\n * Provides structured, trace-aware logging across Worker, Durable Object, and Container.\n */\n/**\n * Log levels (from most to least verbose)\n */\nexport declare enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3\n}\nexport type LogComponent = 'container' | 'sandbox-do' | 'executor';\n/**\n * Context metadata included in every log entry\n */\nexport interface LogContext {\n /**\n * Unique trace ID for request correlation across distributed components\n * Format: \"tr_\" + 16 hex chars (e.g., \"tr_7f3a9b2c4e5d6f1a\")\n */\n traceId: string;\n /**\n * Component that generated the log\n */\n component: LogComponent;\n /**\n * Sandbox identifier (which sandbox instance)\n */\n sandboxId?: string;\n /**\n * Session identifier (which session within sandbox)\n */\n sessionId?: string;\n /**\n * Process identifier (which background process)\n */\n processId?: string;\n /**\n * Command identifier (which command execution)\n */\n commandId?: string;\n /**\n * Operation name (e.g., 'exec', 'startProcess', 'writeFile')\n */\n operation?: string;\n /**\n * Duration in milliseconds\n */\n duration?: number;\n /**\n * Extensible for additional metadata\n */\n [key: string]: unknown;\n}\n/**\n * Logger interface for structured logging\n *\n * All methods accept optional context that gets merged with the logger's base context.\n */\nexport interface Logger {\n /**\n * Log debug-level message (most verbose, typically disabled in production)\n *\n * @param message Human-readable message\n * @param context Optional additional context\n */\n debug(message: string, context?: Partial<LogContext>): void;\n /**\n * Log info-level message (normal operational events)\n *\n * @param message Human-readable message\n * @param context Optional additional context\n */\n info(message: string, context?: Partial<LogContext>): void;\n /**\n * Log warning-level message (recoverable issues, degraded state)\n *\n * @param message Human-readable message\n * @param context Optional additional context\n */\n warn(message: string, context?: Partial<LogContext>): void;\n /**\n * Log error-level message (failures, exceptions)\n *\n * @param message Human-readable message\n * @param error Optional Error object to include\n * @param context Optional additional context\n */\n error(message: string, error?: Error, context?: Partial<LogContext>): void;\n /**\n * Create a child logger with additional context\n *\n * The child logger inherits all context from the parent and adds new context.\n * This is useful for adding operation-specific context without passing through parameters.\n *\n * @param context Additional context to merge\n * @returns New logger instance with merged context\n *\n * @example\n * const logger = createLogger({ component: 'sandbox-do', traceId: 'tr_abc123' });\n * const execLogger = logger.child({ operation: 'exec', commandId: 'cmd-456' });\n * execLogger.info('Command started'); // Includes all context: component, traceId, operation, commandId\n */\n child(context: Partial<LogContext>): Logger;\n}\n//# sourceMappingURL=types.d.ts.map","export interface CreateContextOptions {\n /**\n * Programming language for the context\n * @default 'python'\n */\n language?: 'python' | 'javascript' | 'typescript';\n /**\n * Working directory for the context\n * @default '/workspace'\n */\n cwd?: string;\n /**\n * Environment variables for the context\n */\n envVars?: Record<string, string>;\n /**\n * Request timeout in milliseconds\n * @default 30000\n */\n timeout?: number;\n}\nexport interface CodeContext {\n /**\n * Unique identifier for the context\n */\n readonly id: string;\n /**\n * Programming language of the context\n */\n readonly language: string;\n /**\n * Current working directory\n */\n readonly cwd: string;\n /**\n * When the context was created\n */\n readonly createdAt: Date;\n /**\n * When the context was last used\n */\n readonly lastUsed: Date;\n}\nexport interface RunCodeOptions {\n /**\n * Context to run the code in. If not provided, uses default context for the language\n */\n context?: CodeContext;\n /**\n * Language to use if context is not provided\n * @default 'python'\n */\n language?: 'python' | 'javascript' | 'typescript';\n /**\n * Environment variables for this execution\n */\n envVars?: Record<string, string>;\n /**\n * Execution timeout in milliseconds\n * @default 60000\n */\n timeout?: number;\n /**\n * AbortSignal for cancelling execution\n */\n signal?: AbortSignal;\n /**\n * Callback for stdout output\n */\n onStdout?: (output: OutputMessage) => void | Promise<void>;\n /**\n * Callback for stderr output\n */\n onStderr?: (output: OutputMessage) => void | Promise<void>;\n /**\n * Callback for execution results (charts, tables, etc)\n */\n onResult?: (result: Result) => void | Promise<void>;\n /**\n * Callback for execution errors\n */\n onError?: (error: ExecutionError) => void | Promise<void>;\n}\nexport interface OutputMessage {\n /**\n * The output text\n */\n text: string;\n /**\n * Timestamp of the output\n */\n timestamp: number;\n}\nexport interface Result {\n /**\n * Plain text representation\n */\n text?: string;\n /**\n * HTML representation (tables, formatted output)\n */\n html?: string;\n /**\n * PNG image data (base64 encoded)\n */\n png?: string;\n /**\n * JPEG image data (base64 encoded)\n */\n jpeg?: string;\n /**\n * SVG image data\n */\n svg?: string;\n /**\n * LaTeX representation\n */\n latex?: string;\n /**\n * Markdown representation\n */\n markdown?: string;\n /**\n * JavaScript code to execute\n */\n javascript?: string;\n /**\n * JSON data\n */\n json?: any;\n /**\n * Chart data if the result is a visualization\n */\n chart?: ChartData;\n /**\n * Raw data object\n */\n data?: any;\n /**\n * Available output formats\n */\n formats(): string[];\n}\nexport interface ChartData {\n /**\n * Type of chart\n */\n type: 'line' | 'bar' | 'scatter' | 'pie' | 'histogram' | 'heatmap' | 'unknown';\n /**\n * Chart title\n */\n title?: string;\n /**\n * Chart data (format depends on library)\n */\n data: any;\n /**\n * Chart layout/configuration\n */\n layout?: any;\n /**\n * Additional configuration\n */\n config?: any;\n /**\n * Library that generated the chart\n */\n library?: 'matplotlib' | 'plotly' | 'altair' | 'seaborn' | 'unknown';\n /**\n * Base64 encoded image if available\n */\n image?: string;\n}\nexport interface ExecutionError {\n /**\n * Error name/type (e.g., 'NameError', 'SyntaxError')\n */\n name: string;\n /**\n * Error message\n */\n message: string;\n /**\n * Stack trace\n */\n traceback: string[];\n /**\n * Line number where error occurred\n */\n lineNumber?: number;\n}\nexport interface ExecutionResult {\n code: string;\n logs: {\n stdout: string[];\n stderr: string[];\n };\n error?: ExecutionError;\n executionCount?: number;\n results: Array<{\n text?: string;\n html?: string;\n png?: string;\n jpeg?: string;\n svg?: string;\n latex?: string;\n markdown?: string;\n javascript?: string;\n json?: any;\n chart?: ChartData;\n data?: any;\n }>;\n}\nexport declare class Execution {\n readonly code: string;\n readonly context: CodeContext;\n /**\n * All results from the execution\n */\n results: Result[];\n /**\n * Accumulated stdout and stderr\n */\n logs: {\n stdout: string[];\n stderr: string[];\n };\n /**\n * Execution error if any\n */\n error?: ExecutionError;\n /**\n * Execution count (for interpreter)\n */\n executionCount?: number;\n constructor(code: string, context: CodeContext);\n /**\n * Convert to a plain object for serialization\n */\n toJSON(): ExecutionResult;\n}\nexport declare class ResultImpl implements Result {\n private raw;\n constructor(raw: any);\n get text(): string | undefined;\n get html(): string | undefined;\n get png(): string | undefined;\n get jpeg(): string | undefined;\n get svg(): string | undefined;\n get latex(): string | undefined;\n get markdown(): string | undefined;\n get javascript(): string | undefined;\n get json(): any;\n get chart(): ChartData | undefined;\n get data(): any;\n formats(): string[];\n}\n//# sourceMappingURL=interpreter-types.d.ts.map","import type { CodeContext, CreateContextOptions, ExecutionResult, RunCodeOptions } from './interpreter-types';\nexport interface BaseExecOptions {\n /**\n * Maximum execution time in milliseconds\n */\n timeout?: number;\n /**\n * Environment variables for this command invocation.\n * Values temporarily override session-level/container-level env for the\n * duration of the command but do not persist after it completes.\n */\n env?: Record<string, string>;\n /**\n * Working directory for command execution\n */\n cwd?: string;\n /**\n * Text encoding for output (default: 'utf8')\n */\n encoding?: string;\n}\nexport interface ExecOptions extends BaseExecOptions {\n /**\n * Enable real-time output streaming via callbacks\n */\n stream?: boolean;\n /**\n * Callback for real-time output data\n */\n onOutput?: (stream: 'stdout' | 'stderr', data: string) => void;\n /**\n * Callback when command completes (only when stream: true)\n */\n onComplete?: (result: ExecResult) => void;\n /**\n * Callback for execution errors\n */\n onError?: (error: Error) => void;\n /**\n * AbortSignal for cancelling execution\n */\n signal?: AbortSignal;\n}\nexport interface ExecResult {\n /**\n * Whether the command succeeded (exitCode === 0)\n */\n success: boolean;\n /**\n * Process exit code\n */\n exitCode: number;\n /**\n * Standard output content\n */\n stdout: string;\n /**\n * Standard error content\n */\n stderr: string;\n /**\n * Command that was executed\n */\n command: string;\n /**\n * Execution duration in milliseconds\n */\n duration: number;\n /**\n * ISO timestamp when command started\n */\n timestamp: string;\n /**\n * Session ID if provided\n */\n sessionId?: string;\n}\nexport interface ProcessOptions extends BaseExecOptions {\n /**\n * Custom process ID for later reference\n * If not provided, a UUID will be generated\n */\n processId?: string;\n /**\n * Automatically cleanup process record after exit (default: true)\n */\n autoCleanup?: boolean;\n /**\n * Callback when process exits\n */\n onExit?: (code: number | null) => void;\n /**\n * Callback for real-time output (background processes)\n */\n onOutput?: (stream: 'stdout' | 'stderr', data: string) => void;\n /**\n * Callback when process starts successfully\n */\n onStart?: (process: Process) => void;\n /**\n * Callback for process errors\n */\n onError?: (error: Error) => void;\n}\nexport type ProcessStatus = 'starting' | 'running' | 'completed' | 'failed' | 'killed' | 'error';\nexport interface Process {\n /**\n * Unique process identifier\n */\n readonly id: string;\n /**\n * System process ID (if available and running)\n */\n readonly pid?: number;\n /**\n * Command that was executed\n */\n readonly command: string;\n /**\n * Current process status\n */\n readonly status: ProcessStatus;\n /**\n * When the process was started\n */\n readonly startTime: Date;\n /**\n * When the process ended (if completed)\n */\n readonly endTime?: Date;\n /**\n * Process exit code (if completed)\n */\n readonly exitCode?: number;\n /**\n * Session ID if provided\n */\n readonly sessionId?: string;\n /**\n * Kill the process\n */\n kill(signal?: string): Promise<void>;\n /**\n * Get current process status (refreshed)\n */\n getStatus(): Promise<ProcessStatus>;\n /**\n * Get accumulated logs\n */\n getLogs(): Promise<{\n stdout: string;\n stderr: string;\n }>;\n}\nexport interface ExecEvent {\n type: 'start' | 'stdout' | 'stderr' | 'complete' | 'error';\n timestamp: string;\n data?: string;\n command?: string;\n exitCode?: number;\n result?: ExecResult;\n error?: string;\n sessionId?: string;\n}\nexport interface LogEvent {\n type: 'stdout' | 'stderr' | 'exit' | 'error';\n timestamp: string;\n data: string;\n processId: string;\n sessionId?: string;\n exitCode?: number;\n}\nexport interface StreamOptions extends BaseExecOptions {\n /**\n * Buffer size for streaming output\n */\n bufferSize?: number;\n /**\n * AbortSignal for cancelling stream\n */\n signal?: AbortSignal;\n}\nexport interface SessionOptions {\n /**\n * Optional session ID (auto-generated if not provided)\n */\n id?: string;\n /**\n * Session name for identification\n */\n name?: string;\n /**\n * Environment variables for this session\n */\n env?: Record<string, string>;\n /**\n * Working directory\n */\n cwd?: string;\n /**\n * Enable PID namespace isolation (requires CAP_SYS_ADMIN)\n */\n isolation?: boolean;\n}\nexport interface SandboxOptions {\n /**\n * Duration after which the sandbox instance will sleep if no requests are received\n * Can be:\n * - A string like \"30s\", \"3m\", \"5m\", \"1h\" (seconds, minutes, or hours)\n * - A number representing seconds (e.g., 180 for 3 minutes)\n * Default: \"10m\" (10 minutes)\n *\n * Note: Ignored when keepAlive is true\n */\n sleepAfter?: string | number;\n /**\n * Base URL for the sandbox API\n */\n baseUrl?: string;\n /**\n * Keep the container alive indefinitely by preventing automatic shutdown\n * When true, the container will never auto-timeout and must be explicitly destroyed\n * - Any scenario where activity can't be automatically detected\n *\n * Important: You MUST call sandbox.destroy() when done to avoid resource leaks\n *\n * Default: false\n */\n keepAlive?: boolean;\n /**\n * Normalize sandbox ID to lowercase for preview URL compatibility\n *\n * Required for preview URLs because hostnames are case-insensitive (RFC 3986), which\n * would route requests to a different Durable Object instance with IDs containing uppercase letters.\n *\n * **Important:** Different normalizeId values create different Durable Object instances:\n * - `getSandbox(ns, \"MyProject\")` → DO key: \"MyProject\"\n * - `getSandbox(ns, \"MyProject\", {normalizeId: true})` → DO key: \"myproject\"\n *\n * **Future change:** In a future version, this will default to `true` (automatically lowercase all IDs).\n * IDs with uppercase letters will trigger a warning. To prepare, use lowercase IDs or explicitly\n * pass `normalizeId: true`.\n *\n * @example\n * getSandbox(ns, \"my-project\") // Works with preview URLs (lowercase)\n * getSandbox(ns, \"MyProject\", {normalizeId: true}) // Normalized to \"myproject\"\n *\n * @default false\n */\n normalizeId?: boolean;\n /**\n * Container startup timeout configuration\n *\n * Tune timeouts based on your container's characteristics. SDK defaults (30s instance, 90s ports)\n * work for most use cases. Adjust for heavy containers or fail-fast applications.\n *\n * Can also be configured via environment variables:\n * - SANDBOX_INSTANCE_TIMEOUT_MS\n * - SANDBOX_PORT_TIMEOUT_MS\n * - SANDBOX_POLL_INTERVAL_MS\n *\n * Precedence: options > env vars > SDK defaults\n *\n * @example\n * // Heavy containers (ML models, large apps)\n * getSandbox(ns, id, {\n * containerTimeouts: { portReadyTimeoutMS: 180_000 }\n * })\n *\n * @example\n * // Fail-fast for latency-sensitive apps\n * getSandbox(ns, id, {\n * containerTimeouts: {\n * instanceGetTimeoutMS: 15_000,\n * portReadyTimeoutMS: 30_000\n * }\n * })\n */\n containerTimeouts?: {\n /**\n * Time to wait for container instance provisioning\n * @default 30000 (30s) - or SANDBOX_INSTANCE_TIMEOUT_MS env var\n */\n instanceGetTimeoutMS?: number;\n /**\n * Time to wait for application startup and ports to be ready\n * @default 90000 (90s) - or SANDBOX_PORT_TIMEOUT_MS env var\n */\n portReadyTimeoutMS?: number;\n /**\n * How often to poll for container readiness\n * @default 1000 (1s) - or SANDBOX_POLL_INTERVAL_MS env var\n */\n waitIntervalMS?: number;\n };\n}\n/**\n * Execution session - isolated execution context within a sandbox\n * Returned by sandbox.createSession()\n * Provides the same API as ISandbox but bound to a specific session\n */\nexport interface MkdirResult {\n success: boolean;\n path: string;\n recursive: boolean;\n timestamp: string;\n exitCode?: number;\n}\nexport interface WriteFileResult {\n success: boolean;\n path: string;\n timestamp: string;\n exitCode?: number;\n}\nexport interface ReadFileResult {\n success: boolean;\n path: string;\n content: string;\n timestamp: string;\n exitCode?: number;\n /**\n * Encoding used for content (utf-8 for text, base64 for binary)\n */\n encoding?: 'utf-8' | 'base64';\n /**\n * Whether the file is detected as binary\n */\n isBinary?: boolean;\n /**\n * MIME type of the file (e.g., 'image/png', 'text/plain')\n */\n mimeType?: string;\n /**\n * File size in bytes\n */\n size?: number;\n}\nexport interface DeleteFileResult {\n success: boolean;\n path: string;\n timestamp: string;\n exitCode?: number;\n}\nexport interface RenameFileResult {\n success: boolean;\n path: string;\n newPath: string;\n timestamp: string;\n exitCode?: number;\n}\nexport interface MoveFileResult {\n success: boolean;\n path: string;\n newPath: string;\n timestamp: string;\n exitCode?: number;\n}\nexport interface FileExistsResult {\n success: boolean;\n path: string;\n exists: boolean;\n timestamp: string;\n}\nexport interface FileInfo {\n name: string;\n absolutePath: string;\n relativePath: string;\n type: 'file' | 'directory' | 'symlink' | 'other';\n size: number;\n modifiedAt: string;\n mode: string;\n permissions: {\n readable: boolean;\n writable: boolean;\n executable: boolean;\n };\n}\nexport interface ListFilesOptions {\n recursive?: boolean;\n includeHidden?: boolean;\n}\nexport interface ListFilesResult {\n success: boolean;\n path: string;\n files: FileInfo[];\n count: number;\n timestamp: string;\n exitCode?: number;\n}\nexport interface GitCheckoutResult {\n success: boolean;\n repoUrl: string;\n branch: string;\n targetDir: string;\n timestamp: string;\n exitCode?: number;\n}\n/**\n * SSE events for file streaming\n */\nexport type FileStreamEvent = {\n type: 'metadata';\n mimeType: string;\n size: number;\n isBinary: boolean;\n encoding: 'utf-8' | 'base64';\n} | {\n type: 'chunk';\n data: string;\n} | {\n type: 'complete';\n bytesRead: number;\n} | {\n type: 'error';\n error: string;\n};\n/**\n * File metadata from streaming\n */\nexport interface FileMetadata {\n mimeType: string;\n size: number;\n isBinary: boolean;\n encoding: 'utf-8' | 'base64';\n}\n/**\n * File stream chunk - either string (text) or Uint8Array (binary, auto-decoded)\n */\nexport type FileChunk = string | Uint8Array;\nexport interface ProcessStartResult {\n success: boolean;\n processId: string;\n pid?: number;\n command: string;\n timestamp: string;\n}\nexport interface ProcessListResult {\n success: boolean;\n processes: Array<{\n id: string;\n pid?: number;\n command: string;\n status: ProcessStatus;\n startTime: string;\n endTime?: string;\n exitCode?: number;\n }>;\n timestamp: string;\n}\nexport interface ProcessInfoResult {\n success: boolean;\n process: {\n id: string;\n pid?: number;\n command: string;\n status: ProcessStatus;\n startTime: string;\n endTime?: string;\n exitCode?: number;\n };\n timestamp: string;\n}\nexport interface ProcessKillResult {\n success: boolean;\n processId: string;\n signal?: string;\n timestamp: string;\n}\nexport interface ProcessLogsResult {\n success: boolean;\n processId: string;\n stdout: string;\n stderr: string;\n timestamp: string;\n}\nexport interface ProcessCleanupResult {\n success: boolean;\n cleanedCount: number;\n timestamp: string;\n}\nexport interface SessionCreateResult {\n success: boolean;\n sessionId: string;\n name?: string;\n cwd?: string;\n timestamp: string;\n}\nexport interface SessionDeleteResult {\n success: boolean;\n sessionId: string;\n timestamp: string;\n}\nexport interface EnvSetResult {\n success: boolean;\n timestamp: string;\n}\nexport interface PortExposeResult {\n success: boolean;\n port: number;\n url: string;\n timestamp: string;\n}\nexport interface PortStatusResult {\n success: boolean;\n port: number;\n status: 'active' | 'inactive';\n url?: string;\n timestamp: string;\n}\nexport interface PortListResult {\n success: boolean;\n ports: Array<{\n port: number;\n url: string;\n status: 'active' | 'inactive';\n }>;\n timestamp: string;\n}\nexport interface PortCloseResult {\n success: boolean;\n port: number;\n timestamp: string;\n}\nexport interface InterpreterHealthResult {\n success: boolean;\n status: 'healthy' | 'unhealthy';\n timestamp: string;\n}\nexport interface ContextCreateResult {\n success: boolean;\n contextId: string;\n language: string;\n cwd?: string;\n timestamp: string;\n}\nexport interface ContextListResult {\n success: boolean;\n contexts: Array<{\n id: string;\n language: string;\n cwd?: string;\n }>;\n timestamp: string;\n}\nexport interface ContextDeleteResult {\n success: boolean;\n contextId: string;\n timestamp: string;\n}\nexport interface HealthCheckResult {\n success: boolean;\n status: 'healthy' | 'unhealthy';\n timestamp: string;\n}\nexport interface ShutdownResult {\n success: boolean;\n message: string;\n timestamp: string;\n}\nexport interface ExecutionSession {\n /** Unique session identifier */\n readonly id: string;\n exec(command: string, options?: ExecOptions): Promise<ExecResult>;\n execStream(command: string, options?: StreamOptions): Promise<ReadableStream<Uint8Array>>;\n startProcess(command: string, options?: ProcessOptions): Promise<Process>;\n listProcesses(): Promise<Process[]>;\n getProcess(id: string): Promise<Process | null>;\n killProcess(id: string, signal?: string): Promise<void>;\n killAllProcesses(): Promise<number>;\n cleanupCompletedProcesses(): Promise<number>;\n getProcessLogs(id: string): Promise<{\n stdout: string;\n stderr: string;\n processId: string;\n }>;\n streamProcessLogs(processId: string, options?: {\n signal?: AbortSignal;\n }): Promise<ReadableStream<Uint8Array>>;\n writeFile(path: string, content: string, options?: {\n encoding?: string;\n }): Promise<WriteFileResult>;\n readFile(path: string, options?: {\n encoding?: string;\n }): Promise<ReadFileResult>;\n readFileStream(path: string): Promise<ReadableStream<Uint8Array>>;\n mkdir(path: string, options?: {\n recursive?: boolean;\n }): Promise<MkdirResult>;\n deleteFile(path: string): Promise<DeleteFileResult>;\n renameFile(oldPath: string, newPath: string): Promise<RenameFileResult>;\n moveFile(sourcePath: string, destinationPath: string): Promise<MoveFileResult>;\n listFiles(path: string, options?: ListFilesOptions): Promise<ListFilesResult>;\n exists(path: string): Promise<FileExistsResult>;\n gitCheckout(repoUrl: string, options?: {\n branch?: string;\n targetDir?: string;\n }): Promise<GitCheckoutResult>;\n setEnvVars(envVars: Record<string, string>): Promise<void>;\n createCodeContext(options?: CreateContextOptions): Promise<CodeContext>;\n runCode(code: string, options?: RunCodeOptions): Promise<ExecutionResult>;\n runCodeStream(code: string, options?: RunCodeOptions): Promise<ReadableStream<Uint8Array>>;\n listCodeContexts(): Promise<CodeContext[]>;\n deleteCodeContext(contextId: string): Promise<void>;\n mountBucket(bucket: string, mountPath: string, options: MountBucketOptions): Promise<void>;\n unmountBucket(mountPath: string): Promise<void>;\n}\n/**\n * Supported S3-compatible storage providers\n */\nexport type BucketProvider = 'r2' | 's3' | 'gcs';\n/**\n * Credentials for S3-compatible storage\n */\nexport interface BucketCredentials {\n accessKeyId: string;\n secretAccessKey: string;\n}\n/**\n * Options for mounting an S3-compatible bucket\n */\nexport interface MountBucketOptions {\n /**\n * S3-compatible endpoint URL\n *\n * Examples:\n * - R2: 'https://abc123.r2.cloudflarestorage.com'\n * - AWS S3: 'https://s3.us-west-2.amazonaws.com'\n * - GCS: 'https://storage.googleapis.com'\n *\n * Required field\n */\n endpoint: string;\n /**\n * Optional provider hint for automatic s3fs flag configuration\n * If not specified, will attempt to detect from endpoint URL.\n *\n * Examples:\n * - 'r2' - Cloudflare R2 (adds nomixupload)\n * - 's3' - Amazon S3 (standard configuration)\n * - 'gcs' - Google Cloud Storage (no special flags needed)\n */\n provider?: BucketProvider;\n /**\n * Explicit credentials (overrides env var auto-detection)\n */\n credentials?: BucketCredentials;\n /**\n * Mount filesystem as read-only\n * Default: false\n */\n readOnly?: boolean;\n /**\n * Advanced: Override or extend s3fs options\n *\n * These will be merged with provider-specific defaults.\n * To override defaults completely, specify all options here.\n *\n * Common options:\n * - 'use_path_request_style' - Use path-style URLs (bucket/path vs bucket.host/path)\n * - 'nomixupload' - Disable mixed multipart uploads (needed for some providers)\n * - 'nomultipart' - Disable all multipart operations\n * - 'sigv2' - Use signature version 2 instead of v4\n * - 'no_check_certificate' - Skip SSL certificate validation (dev/testing only)\n */\n s3fsOptions?: string[];\n}\nexport interface ISandbox {\n exec(command: string, options?: ExecOptions): Promise<ExecResult>;\n startProcess(command: string, options?: ProcessOptions): Promise<Process>;\n listProcesses(): Promise<Process[]>;\n getProcess(id: string): Promise<Process | null>;\n killProcess(id: string, signal?: string): Promise<void>;\n killAllProcesses(): Promise<number>;\n execStream(command: string, options?: StreamOptions): Promise<ReadableStream<Uint8Array>>;\n streamProcessLogs(processId: string, options?: {\n signal?: AbortSignal;\n }): Promise<ReadableStream<Uint8Array>>;\n cleanupCompletedProcesses(): Promise<number>;\n getProcessLogs(id: string): Promise<{\n stdout: string;\n stderr: string;\n processId: string;\n }>;\n writeFile(path: string, content: string, options?: {\n encoding?: string;\n }): Promise<WriteFileResult>;\n readFile(path: string, options?: {\n encoding?: string;\n }): Promise<ReadFileResult>;\n readFileStream(path: string): Promise<ReadableStream<Uint8Array>>;\n mkdir(path: string, options?: {\n recursive?: boolean;\n }): Promise<MkdirResult>;\n deleteFile(path: string): Promise<DeleteFileResult>;\n renameFile(oldPath: string, newPath: string): Promise<RenameFileResult>;\n moveFile(sourcePath: string, destinationPath: string): Promise<MoveFileResult>;\n listFiles(path: string, options?: ListFilesOptions): Promise<ListFilesResult>;\n exists(path: string, sessionId?: string): Promise<FileExistsResult>;\n gitCheckout(repoUrl: string, options?: {\n branch?: string;\n targetDir?: string;\n }): Promise<GitCheckoutResult>;\n setEnvVars(envVars: Record<string, string>): Promise<void>;\n mountBucket(bucket: string, mountPath: string, options: MountBucketOptions): Promise<void>;\n unmountBucket(mountPath: string): Promise<void>;\n createSession(options?: SessionOptions): Promise<ExecutionSession>;\n deleteSession(sessionId: string): Promise<SessionDeleteResult>;\n createCodeContext(options?: CreateContextOptions): Promise<CodeContext>;\n runCode(code: string, options?: RunCodeOptions): Promise<ExecutionResult>;\n runCodeStream(code: string, options?: RunCodeOptions): Promise<ReadableStream>;\n listCodeContexts(): Promise<CodeContext[]>;\n deleteCodeContext(contextId: string): Promise<void>;\n wsConnect(request: Request, port: number): Promise<Response>;\n}\nexport declare function isExecResult(value: any): value is ExecResult;\nexport declare function isProcess(value: any): value is Process;\nexport declare function isProcessStatus(value: string): value is ProcessStatus;\nexport type { ChartData, CodeContext, CreateContextOptions, ExecutionError, ExecutionResult, OutputMessage, Result, RunCodeOptions } from './interpreter-types';\nexport { Execution, ResultImpl } from './interpreter-types';\n//# sourceMappingURL=types.d.ts.map"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/sandbox",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/cloudflare/sandbox-sdk"
@@ -1,17 +1,11 @@
1
+ import type { ExecuteRequest } from '@repo/shared';
1
2
  import { BaseHttpClient } from './base-client';
2
- import type {
3
- BaseApiResponse,
4
- HttpClientOptions,
5
- SessionRequest
6
- } from './types';
3
+ import type { BaseApiResponse } from './types';
7
4
 
8
5
  /**
9
6
  * Request interface for command execution
10
7
  */
11
- export interface ExecuteRequest extends SessionRequest {
12
- command: string;
13
- timeoutMs?: number;
14
- }
8
+ export type { ExecuteRequest };
15
9
 
16
10
  /**
17
11
  * Response interface for command execution
@@ -32,17 +26,27 @@ export class CommandClient extends BaseHttpClient {
32
26
  * @param command - The command to execute
33
27
  * @param sessionId - The session ID for this command execution
34
28
  * @param timeoutMs - Optional timeout in milliseconds (unlimited by default)
29
+ * @param env - Optional environment variables for this command
30
+ * @param cwd - Optional working directory for this command
35
31
  */
36
32
  async execute(
37
33
  command: string,
38
34
  sessionId: string,
39
- timeoutMs?: number
35
+ options?: {
36
+ timeoutMs?: number;
37
+ env?: Record<string, string>;
38
+ cwd?: string;
39
+ }
40
40
  ): Promise<ExecuteResponse> {
41
41
  try {
42
42
  const data: ExecuteRequest = {
43
43
  command,
44
44
  sessionId,
45
- ...(timeoutMs !== undefined && { timeoutMs })
45
+ ...(options?.timeoutMs !== undefined && {
46
+ timeoutMs: options.timeoutMs
47
+ }),
48
+ ...(options?.env !== undefined && { env: options.env }),
49
+ ...(options?.cwd !== undefined && { cwd: options.cwd })
46
50
  };
47
51
 
48
52
  const response = await this.post<ExecuteResponse>('/api/execute', data);
@@ -79,13 +83,27 @@ export class CommandClient extends BaseHttpClient {
79
83
  * Execute a command and return a stream of events
80
84
  * @param command - The command to execute
81
85
  * @param sessionId - The session ID for this command execution
86
+ * @param options - Optional per-command execution settings
82
87
  */
83
88
  async executeStream(
84
89
  command: string,
85
- sessionId: string
90
+ sessionId: string,
91
+ options?: {
92
+ timeoutMs?: number;
93
+ env?: Record<string, string>;
94
+ cwd?: string;
95
+ }
86
96
  ): Promise<ReadableStream<Uint8Array>> {
87
97
  try {
88
- const data = { command, sessionId };
98
+ const data = {
99
+ command,
100
+ sessionId,
101
+ ...(options?.timeoutMs !== undefined && {
102
+ timeoutMs: options.timeoutMs
103
+ }),
104
+ ...(options?.env !== undefined && { env: options.env }),
105
+ ...(options?.cwd !== undefined && { cwd: options.cwd })
106
+ };
89
107
 
90
108
  const response = await this.doFetch('/api/execute/stream', {
91
109
  method: 'POST',
@@ -34,13 +34,31 @@ export class ProcessClient extends BaseHttpClient {
34
34
  async startProcess(
35
35
  command: string,
36
36
  sessionId: string,
37
- options?: { processId?: string }
37
+ options?: {
38
+ processId?: string;
39
+ timeoutMs?: number;
40
+ env?: Record<string, string>;
41
+ cwd?: string;
42
+ encoding?: string;
43
+ autoCleanup?: boolean;
44
+ }
38
45
  ): Promise<ProcessStartResult> {
39
46
  try {
40
47
  const data: StartProcessRequest = {
41
48
  command,
42
49
  sessionId,
43
- processId: options?.processId
50
+ ...(options?.processId !== undefined && {
51
+ processId: options.processId
52
+ }),
53
+ ...(options?.timeoutMs !== undefined && {
54
+ timeoutMs: options.timeoutMs
55
+ }),
56
+ ...(options?.env !== undefined && { env: options.env }),
57
+ ...(options?.cwd !== undefined && { cwd: options.cwd }),
58
+ ...(options?.encoding !== undefined && { encoding: options.encoding }),
59
+ ...(options?.autoCleanup !== undefined && {
60
+ autoCleanup: options.autoCleanup
61
+ })
44
62
  };
45
63
 
46
64
  const response = await this.post<ProcessStartResult>(
package/src/sandbox.ts CHANGED
@@ -1060,7 +1060,23 @@ export class Sandbox<Env = unknown> extends Container<Env> implements ISandbox {
1060
1060
  );
1061
1061
  } else {
1062
1062
  // Regular execution with session
1063
- const response = await this.client.commands.execute(command, sessionId);
1063
+ const commandOptions =
1064
+ options &&
1065
+ (options.timeout !== undefined ||
1066
+ options.env !== undefined ||
1067
+ options.cwd !== undefined)
1068
+ ? {
1069
+ timeoutMs: options.timeout,
1070
+ env: options.env,
1071
+ cwd: options.cwd
1072
+ }
1073
+ : undefined;
1074
+
1075
+ const response = await this.client.commands.execute(
1076
+ command,
1077
+ sessionId,
1078
+ commandOptions
1079
+ );
1064
1080
 
1065
1081
  const duration = Date.now() - startTime;
1066
1082
  result = this.mapExecuteResponseToExecResult(
@@ -1101,7 +1117,12 @@ export class Sandbox<Env = unknown> extends Container<Env> implements ISandbox {
1101
1117
  try {
1102
1118
  const stream = await this.client.commands.executeStream(
1103
1119
  command,
1104
- sessionId
1120
+ sessionId,
1121
+ {
1122
+ timeoutMs: options.timeout,
1123
+ env: options.env,
1124
+ cwd: options.cwd
1125
+ }
1105
1126
  );
1106
1127
 
1107
1128
  for await (const event of parseSSEStream<ExecEvent>(stream)) {
@@ -1231,12 +1252,23 @@ export class Sandbox<Env = unknown> extends Container<Env> implements ISandbox {
1231
1252
  // Use the new HttpClient method to start the process
1232
1253
  try {
1233
1254
  const session = sessionId ?? (await this.ensureDefaultSession());
1255
+ const requestOptions = {
1256
+ ...(options?.processId !== undefined && {
1257
+ processId: options.processId
1258
+ }),
1259
+ ...(options?.timeout !== undefined && { timeoutMs: options.timeout }),
1260
+ ...(options?.env !== undefined && { env: options.env }),
1261
+ ...(options?.cwd !== undefined && { cwd: options.cwd }),
1262
+ ...(options?.encoding !== undefined && { encoding: options.encoding }),
1263
+ ...(options?.autoCleanup !== undefined && {
1264
+ autoCleanup: options.autoCleanup
1265
+ })
1266
+ };
1267
+
1234
1268
  const response = await this.client.processes.startProcess(
1235
1269
  command,
1236
1270
  session,
1237
- {
1238
- processId: options?.processId
1239
- }
1271
+ requestOptions
1240
1272
  );
1241
1273
 
1242
1274
  const processObj = this.createProcessFromDTO(
@@ -1356,7 +1388,11 @@ export class Sandbox<Env = unknown> extends Container<Env> implements ISandbox {
1356
1388
 
1357
1389
  const session = await this.ensureDefaultSession();
1358
1390
  // Get the stream from CommandClient
1359
- return this.client.commands.executeStream(command, session);
1391
+ return this.client.commands.executeStream(command, session, {
1392
+ timeoutMs: options?.timeout,
1393
+ env: options?.env,
1394
+ cwd: options?.cwd
1395
+ });
1360
1396
  }
1361
1397
 
1362
1398
  /**
@@ -1372,7 +1408,11 @@ export class Sandbox<Env = unknown> extends Container<Env> implements ISandbox {
1372
1408
  throw new Error('Operation was aborted');
1373
1409
  }
1374
1410
 
1375
- return this.client.commands.executeStream(command, sessionId);
1411
+ return this.client.commands.executeStream(command, sessionId, {
1412
+ timeoutMs: options?.timeout,
1413
+ env: options?.env,
1414
+ cwd: options?.cwd
1415
+ });
1376
1416
  }
1377
1417
 
1378
1418
  /**
@@ -1706,11 +1746,18 @@ export class Sandbox<Env = unknown> extends Container<Env> implements ISandbox {
1706
1746
  async createSession(options?: SessionOptions): Promise<ExecutionSession> {
1707
1747
  const sessionId = options?.id || `session-${Date.now()}`;
1708
1748
 
1749
+ const mergedEnv = {
1750
+ ...this.envVars,
1751
+ ...(options?.env ?? {})
1752
+ };
1753
+ const envPayload =
1754
+ Object.keys(mergedEnv).length > 0 ? mergedEnv : undefined;
1755
+
1709
1756
  // Create session in container
1710
1757
  await this.client.utils.createSession({
1711
1758
  id: sessionId,
1712
- env: options?.env,
1713
- cwd: options?.cwd
1759
+ ...(envPayload && { env: envPayload }),
1760
+ ...(options?.cwd && { cwd: options.cwd })
1714
1761
  });
1715
1762
 
1716
1763
  // Return wrapper that binds sessionId to all operations
package/src/version.ts CHANGED
@@ -3,4 +3,4 @@
3
3
  * This file is auto-updated by .github/changeset-version.ts during releases
4
4
  * DO NOT EDIT MANUALLY - Changes will be overwritten on the next version bump
5
5
  */
6
- export const SDK_VERSION = '0.5.2';
6
+ export const SDK_VERSION = '0.5.4';
@@ -139,15 +139,35 @@ describe('Sandbox - Automatic Session Management', () => {
139
139
  await sandbox.exec('echo test');
140
140
 
141
141
  expect(sandbox.client.utils.createSession).toHaveBeenCalledTimes(1);
142
- expect(sandbox.client.utils.createSession).toHaveBeenCalledWith({
143
- id: expect.stringMatching(/^sandbox-/),
144
- env: {},
145
- cwd: '/workspace'
146
- });
142
+ expect(sandbox.client.utils.createSession).toHaveBeenCalledWith(
143
+ expect.objectContaining({
144
+ id: expect.stringMatching(/^sandbox-/),
145
+ cwd: '/workspace'
146
+ })
147
+ );
147
148
 
148
149
  expect(sandbox.client.commands.execute).toHaveBeenCalledWith(
149
150
  'echo test',
150
- expect.stringMatching(/^sandbox-/)
151
+ expect.stringMatching(/^sandbox-/),
152
+ undefined
153
+ );
154
+ });
155
+
156
+ it('should forward exec options to the command client', async () => {
157
+ await sandbox.exec('echo $OPTION', {
158
+ env: { OPTION: 'value' },
159
+ cwd: '/workspace/project',
160
+ timeout: 5000
161
+ });
162
+
163
+ expect(sandbox.client.commands.execute).toHaveBeenCalledWith(
164
+ 'echo $OPTION',
165
+ expect.stringMatching(/^sandbox-/),
166
+ {
167
+ timeoutMs: 5000,
168
+ env: { OPTION: 'value' },
169
+ cwd: '/workspace/project'
170
+ }
151
171
  );
152
172
  });
153
173
 
@@ -241,11 +261,12 @@ describe('Sandbox - Automatic Session Management', () => {
241
261
 
242
262
  await sandbox.exec('pwd');
243
263
 
244
- expect(sandbox.client.utils.createSession).toHaveBeenCalledWith({
245
- id: 'sandbox-my-sandbox',
246
- env: {},
247
- cwd: '/workspace'
248
- });
264
+ expect(sandbox.client.utils.createSession).toHaveBeenCalledWith(
265
+ expect.objectContaining({
266
+ id: 'sandbox-my-sandbox',
267
+ cwd: '/workspace'
268
+ })
269
+ );
249
270
  });
250
271
  });
251
272
 
@@ -289,7 +310,8 @@ describe('Sandbox - Automatic Session Management', () => {
289
310
 
290
311
  expect(sandbox.client.commands.execute).toHaveBeenCalledWith(
291
312
  'echo test',
292
- 'isolated-session'
313
+ 'isolated-session',
314
+ undefined
293
315
  );
294
316
  });
295
317
 
@@ -367,11 +389,11 @@ describe('Sandbox - Automatic Session Management', () => {
367
389
 
368
390
  await sandbox.createSession();
369
391
 
370
- expect(sandbox.client.utils.createSession).toHaveBeenCalledWith({
371
- id: expect.stringMatching(/^session-/),
372
- env: undefined,
373
- cwd: undefined
374
- });
392
+ expect(sandbox.client.utils.createSession).toHaveBeenCalledWith(
393
+ expect.objectContaining({
394
+ id: expect.stringMatching(/^session-/)
395
+ })
396
+ );
375
397
  });
376
398
  });
377
399
 
@@ -392,7 +414,8 @@ describe('Sandbox - Automatic Session Management', () => {
392
414
  await session.exec('pwd');
393
415
  expect(sandbox.client.commands.execute).toHaveBeenCalledWith(
394
416
  'pwd',
395
- 'test-session'
417
+ 'test-session',
418
+ undefined
396
419
  );
397
420
  });
398
421
 
@@ -413,7 +436,7 @@ describe('Sandbox - Automatic Session Management', () => {
413
436
  expect(sandbox.client.processes.startProcess).toHaveBeenCalledWith(
414
437
  'sleep 10',
415
438
  'test-session',
416
- { processId: undefined }
439
+ {}
417
440
  );
418
441
  });
419
442
 
@@ -468,11 +491,12 @@ describe('Sandbox - Automatic Session Management', () => {
468
491
  it('should initialize with empty environment when not set', async () => {
469
492
  await sandbox.exec('pwd');
470
493
 
471
- expect(sandbox.client.utils.createSession).toHaveBeenCalledWith({
472
- id: expect.any(String),
473
- env: {},
474
- cwd: '/workspace'
475
- });
494
+ expect(sandbox.client.utils.createSession).toHaveBeenCalledWith(
495
+ expect.objectContaining({
496
+ id: expect.any(String),
497
+ cwd: '/workspace'
498
+ })
499
+ );
476
500
  });
477
501
 
478
502
  it('should use updated environment after setEnvVars', async () => {