@cloudflare/sandbox 0.7.3 → 0.7.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.
@@ -72,14 +72,15 @@ declare class OpencodeStartupError extends Error {
72
72
  * anthropic: {
73
73
  * options: { apiKey: env.ANTHROPIC_KEY }
74
74
  * },
75
- * // Optional: Route all providers through Cloudflare AI Gateway
76
- * cloudflareAIGateway: {
77
- * options: {
78
- * accountId: env.CF_ACCOUNT_ID,
79
- * gatewayId: env.CF_GATEWAY_ID,
80
- * apiToken: env.CF_API_TOKEN
81
- * }
82
- * }
75
+ * // Or use Cloudflare AI Gateway (with unified billing, no provider keys needed).
76
+ * // 'cloudflare-ai-gateway': {
77
+ * // options: {
78
+ * // accountId: env.CF_ACCOUNT_ID,
79
+ * // gatewayId: env.CF_GATEWAY_ID,
80
+ * // apiToken: env.CF_API_TOKEN
81
+ * // },
82
+ * // models: { 'anthropic/claude-sonnet-4-5-20250929': {} }
83
+ * // }
83
84
  * }
84
85
  * }
85
86
  * })
@@ -119,14 +120,15 @@ declare function createOpencodeServer(sandbox: Sandbox<unknown>, options?: Openc
119
120
  * anthropic: {
120
121
  * options: { apiKey: env.ANTHROPIC_KEY }
121
122
  * },
122
- * // Optional: Route all providers through Cloudflare AI Gateway
123
- * cloudflareAIGateway: {
124
- * options: {
125
- * accountId: env.CF_ACCOUNT_ID,
126
- * gatewayId: env.CF_GATEWAY_ID,
127
- * apiToken: env.CF_API_TOKEN
128
- * }
129
- * }
123
+ * // Or use Cloudflare AI Gateway (with unified billing, no provider keys needed).
124
+ * // 'cloudflare-ai-gateway': {
125
+ * // options: {
126
+ * // accountId: env.CF_ACCOUNT_ID,
127
+ * // gatewayId: env.CF_GATEWAY_ID,
128
+ * // apiToken: env.CF_API_TOKEN
129
+ * // },
130
+ * // models: { 'anthropic/claude-sonnet-4-5-20250929': {} }
131
+ * // }
130
132
  * }
131
133
  * }
132
134
  * })
@@ -171,7 +173,7 @@ declare function createOpencode<TClient = OpencodeClient>(sandbox: Sandbox<unkno
171
173
  * options: { apiKey: env.ANTHROPIC_KEY }
172
174
  * },
173
175
  * // Optional: Route all providers through Cloudflare AI Gateway
174
- * cloudflareAIGateway: {
176
+ * 'cloudflare-ai-gateway': {
175
177
  * options: {
176
178
  * accountId: env.CF_ACCOUNT_ID,
177
179
  * gatewayId: env.CF_GATEWAY_ID,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/opencode/types.ts","../../src/opencode/opencode.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAOiB,UAAA,eAAA,CAMN;EAMM;EAaA,IAAA,CAAA,EAAA,MAAA;EAAyB;EAEhC,SAAA,CAAA,EAAA,MAAA;EAEA;EAAc,MAAA,CAAA,EAvBb,MAuBa;AAMxB;;;;AAA0C,UAvBzB,cAAA,CAuByB;EAAK;;;;EC+PzB;EACX,KAAA,EAAA,EDjRA,OCiRA,CAAA,IAAA,CAAA;;;;;AAgEX;AAA+C,UD1U9B,cC0U8B,CAAA,UD1UL,cC0UK,CAAA,CAAA;EACpC;EACC,MAAA,ED1UF,OC0UE;EACc;EAAf,MAAA,EDzUD,cCyUC;;;AAkEX;;AAEW,cDvYE,oBAAA,SAA6B,KAAA,CCuY/B;EACD,SAAA,IAAA,EAAA,yBAAA;EACP,SAAA,OAAA,EDvYwB,sBCuYxB;EAAmB,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EDnYT,sBCmYS,EAAA,OAAA,CAAA,EDlYR,YCkYQ;;;;;;;AD5atB;AAYA;AAaA;;;;;AAUA;;;;;;;;;AC+PA;;;;;;AAiEA;;;;;;;;AAqEA;;;;;;;;;;;;iBAtIsB,oBAAA,UACX,4BACC,kBACT,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8DW,yBAAyB,yBACpC,4BACC,kBACT,QAAQ,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkEV,eAAA,UACL,kBACA,0BACD,iBACP,WAAW,QAAQ"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/opencode/types.ts","../../src/opencode/opencode.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAOiB,UAAA,eAAA,CAMN;EAMM;EAaA,IAAA,CAAA,EAAA,MAAA;EAAyB;EAEhC,SAAA,CAAA,EAAA,MAAA;EAEA;EAAc,MAAA,CAAA,EAvBb,MAuBa;AAMxB;;;;AAA0C,UAvBzB,cAAA,CAuByB;EAAK;;;;ECgQzB;EACX,KAAA,EAAA,EDlRA,OCkRA,CAAA,IAAA,CAAA;;;;;AAiEX;AAA+C,UD5U9B,cC4U8B,CAAA,UD5UL,cC4UK,CAAA,CAAA;EACpC;EACC,MAAA,ED5UF,OC4UE;EACc;EAAf,MAAA,ED3UD,cC2UC;;;AAkEX;;AAEW,cDzYE,oBAAA,SAA6B,KAAA,CCyY/B;EACD,SAAA,IAAA,EAAA,yBAAA;EACP,SAAA,OAAA,EDzYwB,sBCyYxB;EAAmB,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EDrYT,sBCqYS,EAAA,OAAA,CAAA,EDpYR,YCoYQ;;;;;;;AD9atB;AAYA;AAaA;;;;;AAUA;;;;;;;;;ACgQA;;;;;;AAkEA;;;;;;;;AAqEA;;;;;;;;;;;;;iBAvIsB,oBAAA,UACX,4BACC,kBACT,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+DW,yBAAyB,yBACpC,4BACC,kBACT,QAAQ,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkEV,eAAA,UACL,kBACA,0BACD,iBACP,WAAW,QAAQ"}
@@ -131,7 +131,7 @@ async function startOpencodeServer(sandbox, port, directory, config) {
131
131
  env.OPENCODE_CONFIG_CONTENT = JSON.stringify(config);
132
132
  if (config.provider && typeof config.provider === "object" && !Array.isArray(config.provider)) {
133
133
  for (const [providerId, providerConfig] of Object.entries(config.provider)) {
134
- if (providerId === "cloudflareAIGateway") continue;
134
+ if (providerId === "cloudflare-ai-gateway") continue;
135
135
  let apiKey = providerConfig?.options?.apiKey;
136
136
  if (!apiKey) apiKey = providerConfig?.apiKey;
137
137
  if (typeof apiKey === "string") {
@@ -139,7 +139,7 @@ async function startOpencodeServer(sandbox, port, directory, config) {
139
139
  env[envVar] = apiKey;
140
140
  }
141
141
  }
142
- const aiGatewayConfig = config.provider.cloudflareAIGateway;
142
+ const aiGatewayConfig = config.provider["cloudflare-ai-gateway"];
143
143
  if (aiGatewayConfig?.options) {
144
144
  const options = aiGatewayConfig.options;
145
145
  if (typeof options.accountId === "string") env.CLOUDFLARE_ACCOUNT_ID = options.accountId;
@@ -201,14 +201,15 @@ async function startOpencodeServer(sandbox, port, directory, config) {
201
201
  * anthropic: {
202
202
  * options: { apiKey: env.ANTHROPIC_KEY }
203
203
  * },
204
- * // Optional: Route all providers through Cloudflare AI Gateway
205
- * cloudflareAIGateway: {
206
- * options: {
207
- * accountId: env.CF_ACCOUNT_ID,
208
- * gatewayId: env.CF_GATEWAY_ID,
209
- * apiToken: env.CF_API_TOKEN
210
- * }
211
- * }
204
+ * // Or use Cloudflare AI Gateway (with unified billing, no provider keys needed).
205
+ * // 'cloudflare-ai-gateway': {
206
+ * // options: {
207
+ * // accountId: env.CF_ACCOUNT_ID,
208
+ * // gatewayId: env.CF_GATEWAY_ID,
209
+ * // apiToken: env.CF_API_TOKEN
210
+ * // },
211
+ * // models: { 'anthropic/claude-sonnet-4-5-20250929': {} }
212
+ * // }
212
213
  * }
213
214
  * }
214
215
  * })
@@ -256,14 +257,15 @@ async function createOpencodeServer(sandbox, options) {
256
257
  * anthropic: {
257
258
  * options: { apiKey: env.ANTHROPIC_KEY }
258
259
  * },
259
- * // Optional: Route all providers through Cloudflare AI Gateway
260
- * cloudflareAIGateway: {
261
- * options: {
262
- * accountId: env.CF_ACCOUNT_ID,
263
- * gatewayId: env.CF_GATEWAY_ID,
264
- * apiToken: env.CF_API_TOKEN
265
- * }
266
- * }
260
+ * // Or use Cloudflare AI Gateway (with unified billing, no provider keys needed).
261
+ * // 'cloudflare-ai-gateway': {
262
+ * // options: {
263
+ * // accountId: env.CF_ACCOUNT_ID,
264
+ * // gatewayId: env.CF_GATEWAY_ID,
265
+ * // apiToken: env.CF_API_TOKEN
266
+ * // },
267
+ * // models: { 'anthropic/claude-sonnet-4-5-20250929': {} }
268
+ * // }
267
269
  * }
268
270
  * }
269
271
  * })
@@ -320,7 +322,7 @@ async function createOpencode(sandbox, options) {
320
322
  * options: { apiKey: env.ANTHROPIC_KEY }
321
323
  * },
322
324
  * // Optional: Route all providers through Cloudflare AI Gateway
323
- * cloudflareAIGateway: {
325
+ * 'cloudflare-ai-gateway': {
324
326
  * options: {
325
327
  * accountId: env.CF_ACCOUNT_ID,
326
328
  * gatewayId: env.CF_GATEWAY_ID,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createOpencodeClient: OpencodeClientFactory | undefined","env: Record<string, string>"],"sources":["../../src/opencode/types.ts","../../src/opencode/opencode.ts"],"sourcesContent":["import type { Config } from '@opencode-ai/sdk/v2';\nimport type { OpencodeClient } from '@opencode-ai/sdk/v2/client';\nimport { ErrorCode, type OpencodeStartupContext } from '@repo/shared/errors';\n\n/**\n * Configuration options for starting OpenCode server\n */\nexport interface OpencodeOptions {\n /** Port for OpenCode server (default: 4096) */\n port?: number;\n /** Working directory for OpenCode (default: container's cwd) */\n directory?: string;\n /** OpenCode configuration */\n config?: Config;\n}\n\n/**\n * Server lifecycle management\n */\nexport interface OpencodeServer {\n /** Port the server is running on */\n port: number;\n /** Base URL for SDK client (http://localhost:{port}) */\n url: string;\n /** Close the server gracefully */\n close(): Promise<void>;\n}\n\n/**\n * Result from createOpencode()\n * Client type comes from @opencode-ai/sdk (user's version)\n */\nexport interface OpencodeResult<TClient = OpencodeClient> {\n /** OpenCode SDK client with Sandbox transport */\n client: TClient;\n /** Server lifecycle management */\n server: OpencodeServer;\n}\n\n/**\n * Error thrown when OpenCode server fails to start\n */\nexport class OpencodeStartupError extends Error {\n public readonly code = ErrorCode.OPENCODE_STARTUP_FAILED;\n public readonly context: OpencodeStartupContext;\n\n constructor(\n message: string,\n context: OpencodeStartupContext,\n options?: ErrorOptions\n ) {\n super(message, options);\n this.name = 'OpencodeStartupError';\n this.context = context;\n }\n}\n","import type { Config } from '@opencode-ai/sdk/v2';\nimport type { OpencodeClient } from '@opencode-ai/sdk/v2/client';\nimport { createLogger, type Logger, type Process } from '@repo/shared';\nimport type { Sandbox } from '../sandbox';\nimport type { OpencodeOptions, OpencodeResult, OpencodeServer } from './types';\nimport { OpencodeStartupError } from './types';\n\n// Lazy logger creation to avoid global scope restrictions in Workers\nfunction getLogger(): Logger {\n return createLogger({ component: 'sandbox-do', operation: 'opencode' });\n}\n\nconst DEFAULT_PORT = 4096;\nconst OPENCODE_SERVE = (port: number) =>\n `opencode serve --port ${port} --hostname 0.0.0.0`;\n\n/**\n * Build the full command, optionally with a directory prefix.\n * If directory is provided, we cd to it first so OpenCode uses it as cwd.\n */\nfunction buildOpencodeCommand(port: number, directory?: string): string {\n const serve = OPENCODE_SERVE(port);\n return directory ? `cd ${directory} && ${serve}` : serve;\n}\n\ntype OpencodeClientFactory = (options: {\n baseUrl: string;\n fetch: typeof fetch;\n directory?: string;\n}) => OpencodeClient;\n\n// Dynamic import to handle peer dependency\nlet createOpencodeClient: OpencodeClientFactory | undefined;\n\nasync function ensureSdkLoaded(): Promise<void> {\n if (createOpencodeClient) return;\n\n try {\n const sdk = await import('@opencode-ai/sdk/v2/client');\n createOpencodeClient = sdk.createOpencodeClient as OpencodeClientFactory;\n } catch {\n throw new Error(\n '@opencode-ai/sdk is required for OpenCode integration. ' +\n 'Install it with: npm install @opencode-ai/sdk'\n );\n }\n}\n\n/**\n * Find an existing OpenCode server process running on the specified port.\n * Returns the process if found and still active, null otherwise.\n * Matches by the serve command pattern since directory prefix may vary.\n */\nasync function findExistingOpencodeProcess(\n sandbox: Sandbox<unknown>,\n port: number\n): Promise<Process | null> {\n const processes = await sandbox.listProcesses();\n const serveCommand = OPENCODE_SERVE(port);\n\n for (const proc of processes) {\n // Match commands that contain the serve command (with or without cd prefix)\n if (proc.command.includes(serveCommand)) {\n if (proc.status === 'starting' || proc.status === 'running') {\n return proc;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Ensures OpenCode server is running in the container.\n * Reuses existing process if one is already running on the specified port.\n * Handles concurrent startup attempts gracefully by retrying on failure.\n * Returns the process handle.\n */\nasync function ensureOpencodeServer(\n sandbox: Sandbox<unknown>,\n port: number,\n directory?: string,\n config?: Config\n): Promise<Process> {\n // Check if OpenCode is already running on this port\n const existingProcess = await findExistingOpencodeProcess(sandbox, port);\n if (existingProcess) {\n // Reuse existing process - wait for it to be ready if still starting\n if (existingProcess.status === 'starting') {\n getLogger().debug('Found starting OpenCode process, waiting for ready', {\n port,\n processId: existingProcess.id\n });\n try {\n await existingProcess.waitForPort(port, {\n mode: 'http',\n path: '/',\n timeout: 60_000\n });\n } catch (e) {\n const logs = await existingProcess.getLogs();\n throw new OpencodeStartupError(\n `OpenCode server failed to start. Stderr: ${logs.stderr || '(empty)'}`,\n { port, stderr: logs.stderr, command: existingProcess.command },\n { cause: e }\n );\n }\n }\n getLogger().debug('Reusing existing OpenCode process', {\n port,\n processId: existingProcess.id\n });\n return existingProcess;\n }\n\n // Try to start a new OpenCode server\n try {\n return await startOpencodeServer(sandbox, port, directory, config);\n } catch (startupError) {\n // Startup failed - check if another concurrent request started the server\n // This handles the race condition where multiple requests try to start simultaneously\n const retryProcess = await findExistingOpencodeProcess(sandbox, port);\n if (retryProcess) {\n getLogger().debug(\n 'Startup failed but found concurrent process, reusing',\n {\n port,\n processId: retryProcess.id\n }\n );\n // Wait for the concurrent server to be ready\n if (retryProcess.status === 'starting') {\n try {\n await retryProcess.waitForPort(port, {\n mode: 'http',\n path: '/',\n timeout: 60_000\n });\n } catch (e) {\n const logs = await retryProcess.getLogs();\n throw new OpencodeStartupError(\n `OpenCode server failed to start. Stderr: ${logs.stderr || '(empty)'}`,\n { port, stderr: logs.stderr, command: retryProcess.command },\n { cause: e }\n );\n }\n }\n return retryProcess;\n }\n\n // No concurrent server found - the failure was genuine\n throw startupError;\n }\n}\n\n/**\n * Internal function to start a new OpenCode server process.\n */\nasync function startOpencodeServer(\n sandbox: Sandbox<unknown>,\n port: number,\n directory?: string,\n config?: Config\n): Promise<Process> {\n getLogger().info('Starting OpenCode server', { port, directory });\n\n // Pass config via OPENCODE_CONFIG_CONTENT and also extract API keys to env vars\n // because OpenCode's provider auth looks for env vars like ANTHROPIC_API_KEY\n const env: Record<string, string> = {};\n\n if (config) {\n env.OPENCODE_CONFIG_CONTENT = JSON.stringify(config);\n\n // Extract API keys from provider config\n // Support both options.apiKey (official type) and legacy top-level apiKey\n if (\n config.provider &&\n typeof config.provider === 'object' &&\n !Array.isArray(config.provider)\n ) {\n for (const [providerId, providerConfig] of Object.entries(\n config.provider\n )) {\n if (providerId === 'cloudflareAIGateway') {\n continue;\n }\n\n // Try options.apiKey first (official Config type)\n let apiKey = providerConfig?.options?.apiKey;\n // Fall back to top-level apiKey for convenience\n if (!apiKey) {\n apiKey = (providerConfig as Record<string, unknown> | undefined)\n ?.apiKey as string | undefined;\n }\n if (typeof apiKey === 'string') {\n const envVar = `${providerId.toUpperCase()}_API_KEY`;\n env[envVar] = apiKey;\n }\n }\n\n const aiGatewayConfig = config.provider.cloudflareAIGateway;\n if (aiGatewayConfig?.options) {\n const options = aiGatewayConfig.options as Record<string, unknown>;\n\n if (typeof options.accountId === 'string') {\n env.CLOUDFLARE_ACCOUNT_ID = options.accountId;\n }\n\n if (typeof options.gatewayId === 'string') {\n env.CLOUDFLARE_GATEWAY_ID = options.gatewayId;\n }\n\n if (typeof options.apiToken === 'string') {\n env.CLOUDFLARE_API_TOKEN = options.apiToken;\n }\n }\n }\n }\n\n const command = buildOpencodeCommand(port, directory);\n const process = await sandbox.startProcess(command, {\n env: Object.keys(env).length > 0 ? env : undefined\n });\n\n // Wait for server to be ready\n try {\n await process.waitForPort(port, {\n mode: 'http',\n path: '/',\n timeout: 60_000\n });\n getLogger().info('OpenCode server started successfully', {\n port,\n processId: process.id\n });\n } catch (e) {\n const logs = await process.getLogs();\n const error = e instanceof Error ? e : undefined;\n getLogger().error('OpenCode server failed to start', error, {\n port,\n stderr: logs.stderr\n });\n throw new OpencodeStartupError(\n `OpenCode server failed to start. Stderr: ${logs.stderr || '(empty)'}`,\n { port, stderr: logs.stderr, command },\n { cause: e }\n );\n }\n\n return process;\n}\n\n/**\n * Starts an OpenCode server inside a Sandbox container.\n *\n * This function manages the server lifecycle only - use `createOpencode()` if you\n * also need a typed SDK client for programmatic access.\n *\n * If an OpenCode server is already running on the specified port, this function\n * will reuse it instead of starting a new one.\n *\n * @param sandbox - The Sandbox instance to run OpenCode in\n * @param options - Configuration options\n * @returns Promise resolving to server handle { port, url, close() }\n *\n * @example\n * ```typescript\n * import { getSandbox } from '@cloudflare/sandbox'\n * import { createOpencodeServer } from '@cloudflare/sandbox/opencode'\n *\n * const sandbox = getSandbox(env.Sandbox, 'my-agent')\n * const server = await createOpencodeServer(sandbox, {\n * directory: '/home/user/my-project',\n * config: {\n * provider: {\n * anthropic: {\n * options: { apiKey: env.ANTHROPIC_KEY }\n * },\n * // Optional: Route all providers through Cloudflare AI Gateway\n * cloudflareAIGateway: {\n * options: {\n * accountId: env.CF_ACCOUNT_ID,\n * gatewayId: env.CF_GATEWAY_ID,\n * apiToken: env.CF_API_TOKEN\n * }\n * }\n * }\n * }\n * })\n *\n * // Proxy requests to the web UI\n * return sandbox.containerFetch(request, server.port)\n *\n * // When done\n * await server.close()\n * ```\n */\nexport async function createOpencodeServer(\n sandbox: Sandbox<unknown>,\n options?: OpencodeOptions\n): Promise<OpencodeServer> {\n const port = options?.port ?? DEFAULT_PORT;\n const process = await ensureOpencodeServer(\n sandbox,\n port,\n options?.directory,\n options?.config\n );\n\n return {\n port,\n url: `http://localhost:${port}`,\n close: () => process.kill('SIGTERM')\n };\n}\n\n/**\n * Creates an OpenCode server inside a Sandbox container and returns a typed SDK client.\n *\n * This function is API-compatible with OpenCode's own createOpencode(), but uses\n * Sandbox process management instead of Node.js spawn. The returned client uses\n * a custom fetch adapter to route requests through the Sandbox container.\n *\n * If an OpenCode server is already running on the specified port, this function\n * will reuse it instead of starting a new one.\n *\n * @param sandbox - The Sandbox instance to run OpenCode in\n * @param options - Configuration options\n * @returns Promise resolving to { client, server }\n *\n * @example\n * ```typescript\n * import { getSandbox } from '@cloudflare/sandbox'\n * import { createOpencode } from '@cloudflare/sandbox/opencode'\n *\n * const sandbox = getSandbox(env.Sandbox, 'my-agent')\n * const { client, server } = await createOpencode(sandbox, {\n * directory: '/home/user/my-project',\n * config: {\n * provider: {\n * anthropic: {\n * options: { apiKey: env.ANTHROPIC_KEY }\n * },\n * // Optional: Route all providers through Cloudflare AI Gateway\n * cloudflareAIGateway: {\n * options: {\n * accountId: env.CF_ACCOUNT_ID,\n * gatewayId: env.CF_GATEWAY_ID,\n * apiToken: env.CF_API_TOKEN\n * }\n * }\n * }\n * }\n * })\n *\n * // Use the SDK client for programmatic access\n * const session = await client.session.create()\n *\n * // When done\n * await server.close()\n * ```\n */\nexport async function createOpencode<TClient = OpencodeClient>(\n sandbox: Sandbox<unknown>,\n options?: OpencodeOptions\n): Promise<OpencodeResult<TClient>> {\n await ensureSdkLoaded();\n\n const server = await createOpencodeServer(sandbox, options);\n\n const clientFactory = createOpencodeClient;\n if (!clientFactory) {\n throw new Error('OpenCode SDK client unavailable.');\n }\n\n const client = clientFactory({\n baseUrl: server.url,\n fetch: (input, init?) =>\n sandbox.containerFetch(new Request(input, init), server.port)\n });\n\n return { client: client as TClient, server };\n}\n\n/**\n * Proxy a request to the OpenCode web UI.\n *\n * This function handles the redirect and proxying only - you must start the\n * server separately using `createOpencodeServer()`.\n *\n * Specifically handles:\n * 1. Ensuring the `?url=` parameter is set (required for OpenCode's frontend to\n * make API calls through the proxy instead of directly to localhost:4096)\n * 2. Proxying the request to the container\n *\n * @param request - The incoming HTTP request\n * @param sandbox - The Sandbox instance running OpenCode\n * @param server - The OpenCode server handle from createOpencodeServer()\n * @returns Response from OpenCode or a redirect response\n *\n * @example\n * ```typescript\n * import { getSandbox } from '@cloudflare/sandbox'\n * import { createOpencodeServer, proxyToOpencode } from '@cloudflare/sandbox/opencode'\n *\n * export default {\n * async fetch(request: Request, env: Env) {\n * const sandbox = getSandbox(env.Sandbox, 'opencode')\n * const server = await createOpencodeServer(sandbox, {\n * directory: '/home/user/project',\n * config: {\n * provider: {\n * anthropic: {\n * options: { apiKey: env.ANTHROPIC_KEY }\n * },\n * // Optional: Route all providers through Cloudflare AI Gateway\n * cloudflareAIGateway: {\n * options: {\n * accountId: env.CF_ACCOUNT_ID,\n * gatewayId: env.CF_GATEWAY_ID,\n * apiToken: env.CF_API_TOKEN\n * }\n * }\n * }\n * }\n * })\n * return proxyToOpencode(request, sandbox, server)\n * }\n * }\n * ```\n */\nexport function proxyToOpencode(\n request: Request,\n sandbox: Sandbox<unknown>,\n server: OpencodeServer\n): Response | Promise<Response> {\n const url = new URL(request.url);\n\n // OpenCode's frontend defaults to http://127.0.0.1:4096 when hostname includes\n // \"localhost\" or \"opencode.ai\". The ?url= parameter overrides this behavior.\n // We only redirect GET requests for HTML pages (initial page load).\n // API calls (POST, PATCH, etc.) and asset requests are proxied directly\n // since redirecting POST loses the request body.\n if (!url.searchParams.has('url') && request.method === 'GET') {\n const accept = request.headers.get('accept') || '';\n const isHtmlRequest = accept.includes('text/html') || url.pathname === '/';\n if (isHtmlRequest) {\n url.searchParams.set('url', url.origin);\n return Response.redirect(url.toString(), 302);\n }\n }\n\n return sandbox.containerFetch(request, server.port);\n}\n"],"mappings":";;;;;;;AA0CA,IAAa,uBAAb,cAA0C,MAAM;CAC9C,AAAgB,OAAO,UAAU;CACjC,AAAgB;CAEhB,YACE,SACA,SACA,SACA;AACA,QAAM,SAAS,QAAQ;AACvB,OAAK,OAAO;AACZ,OAAK,UAAU;;;;;;AC7CnB,SAAS,YAAoB;AAC3B,QAAO,aAAa;EAAE,WAAW;EAAc,WAAW;EAAY,CAAC;;AAGzE,MAAM,eAAe;AACrB,MAAM,kBAAkB,SACtB,yBAAyB,KAAK;;;;;AAMhC,SAAS,qBAAqB,MAAc,WAA4B;CACtE,MAAM,QAAQ,eAAe,KAAK;AAClC,QAAO,YAAY,MAAM,UAAU,MAAM,UAAU;;AAUrD,IAAIA;AAEJ,eAAe,kBAAiC;AAC9C,KAAI,qBAAsB;AAE1B,KAAI;AAEF,0BADY,MAAM,OAAO,+BACE;SACrB;AACN,QAAM,IAAI,MACR,uGAED;;;;;;;;AASL,eAAe,4BACb,SACA,MACyB;CACzB,MAAM,YAAY,MAAM,QAAQ,eAAe;CAC/C,MAAM,eAAe,eAAe,KAAK;AAEzC,MAAK,MAAM,QAAQ,UAEjB,KAAI,KAAK,QAAQ,SAAS,aAAa,EACrC;MAAI,KAAK,WAAW,cAAc,KAAK,WAAW,UAChD,QAAO;;AAKb,QAAO;;;;;;;;AAST,eAAe,qBACb,SACA,MACA,WACA,QACkB;CAElB,MAAM,kBAAkB,MAAM,4BAA4B,SAAS,KAAK;AACxE,KAAI,iBAAiB;AAEnB,MAAI,gBAAgB,WAAW,YAAY;AACzC,cAAW,CAAC,MAAM,sDAAsD;IACtE;IACA,WAAW,gBAAgB;IAC5B,CAAC;AACF,OAAI;AACF,UAAM,gBAAgB,YAAY,MAAM;KACtC,MAAM;KACN,MAAM;KACN,SAAS;KACV,CAAC;YACK,GAAG;IACV,MAAM,OAAO,MAAM,gBAAgB,SAAS;AAC5C,UAAM,IAAI,qBACR,4CAA4C,KAAK,UAAU,aAC3D;KAAE;KAAM,QAAQ,KAAK;KAAQ,SAAS,gBAAgB;KAAS,EAC/D,EAAE,OAAO,GAAG,CACb;;;AAGL,aAAW,CAAC,MAAM,qCAAqC;GACrD;GACA,WAAW,gBAAgB;GAC5B,CAAC;AACF,SAAO;;AAIT,KAAI;AACF,SAAO,MAAM,oBAAoB,SAAS,MAAM,WAAW,OAAO;UAC3D,cAAc;EAGrB,MAAM,eAAe,MAAM,4BAA4B,SAAS,KAAK;AACrE,MAAI,cAAc;AAChB,cAAW,CAAC,MACV,wDACA;IACE;IACA,WAAW,aAAa;IACzB,CACF;AAED,OAAI,aAAa,WAAW,WAC1B,KAAI;AACF,UAAM,aAAa,YAAY,MAAM;KACnC,MAAM;KACN,MAAM;KACN,SAAS;KACV,CAAC;YACK,GAAG;IACV,MAAM,OAAO,MAAM,aAAa,SAAS;AACzC,UAAM,IAAI,qBACR,4CAA4C,KAAK,UAAU,aAC3D;KAAE;KAAM,QAAQ,KAAK;KAAQ,SAAS,aAAa;KAAS,EAC5D,EAAE,OAAO,GAAG,CACb;;AAGL,UAAO;;AAIT,QAAM;;;;;;AAOV,eAAe,oBACb,SACA,MACA,WACA,QACkB;AAClB,YAAW,CAAC,KAAK,4BAA4B;EAAE;EAAM;EAAW,CAAC;CAIjE,MAAMC,MAA8B,EAAE;AAEtC,KAAI,QAAQ;AACV,MAAI,0BAA0B,KAAK,UAAU,OAAO;AAIpD,MACE,OAAO,YACP,OAAO,OAAO,aAAa,YAC3B,CAAC,MAAM,QAAQ,OAAO,SAAS,EAC/B;AACA,QAAK,MAAM,CAAC,YAAY,mBAAmB,OAAO,QAChD,OAAO,SACR,EAAE;AACD,QAAI,eAAe,sBACjB;IAIF,IAAI,SAAS,gBAAgB,SAAS;AAEtC,QAAI,CAAC,OACH,UAAU,gBACN;AAEN,QAAI,OAAO,WAAW,UAAU;KAC9B,MAAM,SAAS,GAAG,WAAW,aAAa,CAAC;AAC3C,SAAI,UAAU;;;GAIlB,MAAM,kBAAkB,OAAO,SAAS;AACxC,OAAI,iBAAiB,SAAS;IAC5B,MAAM,UAAU,gBAAgB;AAEhC,QAAI,OAAO,QAAQ,cAAc,SAC/B,KAAI,wBAAwB,QAAQ;AAGtC,QAAI,OAAO,QAAQ,cAAc,SAC/B,KAAI,wBAAwB,QAAQ;AAGtC,QAAI,OAAO,QAAQ,aAAa,SAC9B,KAAI,uBAAuB,QAAQ;;;;CAM3C,MAAM,UAAU,qBAAqB,MAAM,UAAU;CACrD,MAAM,UAAU,MAAM,QAAQ,aAAa,SAAS,EAClD,KAAK,OAAO,KAAK,IAAI,CAAC,SAAS,IAAI,MAAM,QAC1C,CAAC;AAGF,KAAI;AACF,QAAM,QAAQ,YAAY,MAAM;GAC9B,MAAM;GACN,MAAM;GACN,SAAS;GACV,CAAC;AACF,aAAW,CAAC,KAAK,wCAAwC;GACvD;GACA,WAAW,QAAQ;GACpB,CAAC;UACK,GAAG;EACV,MAAM,OAAO,MAAM,QAAQ,SAAS;EACpC,MAAM,QAAQ,aAAa,QAAQ,IAAI;AACvC,aAAW,CAAC,MAAM,mCAAmC,OAAO;GAC1D;GACA,QAAQ,KAAK;GACd,CAAC;AACF,QAAM,IAAI,qBACR,4CAA4C,KAAK,UAAU,aAC3D;GAAE;GAAM,QAAQ,KAAK;GAAQ;GAAS,EACtC,EAAE,OAAO,GAAG,CACb;;AAGH,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDT,eAAsB,qBACpB,SACA,SACyB;CACzB,MAAM,OAAO,SAAS,QAAQ;CAC9B,MAAM,UAAU,MAAM,qBACpB,SACA,MACA,SAAS,WACT,SAAS,OACV;AAED,QAAO;EACL;EACA,KAAK,oBAAoB;EACzB,aAAa,QAAQ,KAAK,UAAU;EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDH,eAAsB,eACpB,SACA,SACkC;AAClC,OAAM,iBAAiB;CAEvB,MAAM,SAAS,MAAM,qBAAqB,SAAS,QAAQ;CAE3D,MAAM,gBAAgB;AACtB,KAAI,CAAC,cACH,OAAM,IAAI,MAAM,mCAAmC;AASrD,QAAO;EAAE,QANM,cAAc;GAC3B,SAAS,OAAO;GAChB,QAAQ,OAAO,SACb,QAAQ,eAAe,IAAI,QAAQ,OAAO,KAAK,EAAE,OAAO,KAAK;GAChE,CAAC;EAEkC;EAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkD9C,SAAgB,gBACd,SACA,SACA,QAC8B;CAC9B,MAAM,MAAM,IAAI,IAAI,QAAQ,IAAI;AAOhC,KAAI,CAAC,IAAI,aAAa,IAAI,MAAM,IAAI,QAAQ,WAAW,OAGrD;OAFe,QAAQ,QAAQ,IAAI,SAAS,IAAI,IACnB,SAAS,YAAY,IAAI,IAAI,aAAa,KACpD;AACjB,OAAI,aAAa,IAAI,OAAO,IAAI,OAAO;AACvC,UAAO,SAAS,SAAS,IAAI,UAAU,EAAE,IAAI;;;AAIjD,QAAO,QAAQ,eAAe,SAAS,OAAO,KAAK"}
1
+ {"version":3,"file":"index.js","names":["createOpencodeClient: OpencodeClientFactory | undefined","env: Record<string, string>"],"sources":["../../src/opencode/types.ts","../../src/opencode/opencode.ts"],"sourcesContent":["import type { Config } from '@opencode-ai/sdk/v2';\nimport type { OpencodeClient } from '@opencode-ai/sdk/v2/client';\nimport { ErrorCode, type OpencodeStartupContext } from '@repo/shared/errors';\n\n/**\n * Configuration options for starting OpenCode server\n */\nexport interface OpencodeOptions {\n /** Port for OpenCode server (default: 4096) */\n port?: number;\n /** Working directory for OpenCode (default: container's cwd) */\n directory?: string;\n /** OpenCode configuration */\n config?: Config;\n}\n\n/**\n * Server lifecycle management\n */\nexport interface OpencodeServer {\n /** Port the server is running on */\n port: number;\n /** Base URL for SDK client (http://localhost:{port}) */\n url: string;\n /** Close the server gracefully */\n close(): Promise<void>;\n}\n\n/**\n * Result from createOpencode()\n * Client type comes from @opencode-ai/sdk (user's version)\n */\nexport interface OpencodeResult<TClient = OpencodeClient> {\n /** OpenCode SDK client with Sandbox transport */\n client: TClient;\n /** Server lifecycle management */\n server: OpencodeServer;\n}\n\n/**\n * Error thrown when OpenCode server fails to start\n */\nexport class OpencodeStartupError extends Error {\n public readonly code = ErrorCode.OPENCODE_STARTUP_FAILED;\n public readonly context: OpencodeStartupContext;\n\n constructor(\n message: string,\n context: OpencodeStartupContext,\n options?: ErrorOptions\n ) {\n super(message, options);\n this.name = 'OpencodeStartupError';\n this.context = context;\n }\n}\n","import type { Config } from '@opencode-ai/sdk/v2';\nimport type { OpencodeClient } from '@opencode-ai/sdk/v2/client';\nimport { createLogger, type Logger, type Process } from '@repo/shared';\nimport type { Sandbox } from '../sandbox';\nimport type { OpencodeOptions, OpencodeResult, OpencodeServer } from './types';\nimport { OpencodeStartupError } from './types';\n\n// Lazy logger creation to avoid global scope restrictions in Workers\nfunction getLogger(): Logger {\n return createLogger({ component: 'sandbox-do', operation: 'opencode' });\n}\n\nconst DEFAULT_PORT = 4096;\nconst OPENCODE_SERVE = (port: number) =>\n `opencode serve --port ${port} --hostname 0.0.0.0`;\n\n/**\n * Build the full command, optionally with a directory prefix.\n * If directory is provided, we cd to it first so OpenCode uses it as cwd.\n */\nfunction buildOpencodeCommand(port: number, directory?: string): string {\n const serve = OPENCODE_SERVE(port);\n return directory ? `cd ${directory} && ${serve}` : serve;\n}\n\ntype OpencodeClientFactory = (options: {\n baseUrl: string;\n fetch: typeof fetch;\n directory?: string;\n}) => OpencodeClient;\n\n// Dynamic import to handle peer dependency\nlet createOpencodeClient: OpencodeClientFactory | undefined;\n\nasync function ensureSdkLoaded(): Promise<void> {\n if (createOpencodeClient) return;\n\n try {\n const sdk = await import('@opencode-ai/sdk/v2/client');\n createOpencodeClient = sdk.createOpencodeClient as OpencodeClientFactory;\n } catch {\n throw new Error(\n '@opencode-ai/sdk is required for OpenCode integration. ' +\n 'Install it with: npm install @opencode-ai/sdk'\n );\n }\n}\n\n/**\n * Find an existing OpenCode server process running on the specified port.\n * Returns the process if found and still active, null otherwise.\n * Matches by the serve command pattern since directory prefix may vary.\n */\nasync function findExistingOpencodeProcess(\n sandbox: Sandbox<unknown>,\n port: number\n): Promise<Process | null> {\n const processes = await sandbox.listProcesses();\n const serveCommand = OPENCODE_SERVE(port);\n\n for (const proc of processes) {\n // Match commands that contain the serve command (with or without cd prefix)\n if (proc.command.includes(serveCommand)) {\n if (proc.status === 'starting' || proc.status === 'running') {\n return proc;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Ensures OpenCode server is running in the container.\n * Reuses existing process if one is already running on the specified port.\n * Handles concurrent startup attempts gracefully by retrying on failure.\n * Returns the process handle.\n */\nasync function ensureOpencodeServer(\n sandbox: Sandbox<unknown>,\n port: number,\n directory?: string,\n config?: Config\n): Promise<Process> {\n // Check if OpenCode is already running on this port\n const existingProcess = await findExistingOpencodeProcess(sandbox, port);\n if (existingProcess) {\n // Reuse existing process - wait for it to be ready if still starting\n if (existingProcess.status === 'starting') {\n getLogger().debug('Found starting OpenCode process, waiting for ready', {\n port,\n processId: existingProcess.id\n });\n try {\n await existingProcess.waitForPort(port, {\n mode: 'http',\n path: '/',\n timeout: 60_000\n });\n } catch (e) {\n const logs = await existingProcess.getLogs();\n throw new OpencodeStartupError(\n `OpenCode server failed to start. Stderr: ${logs.stderr || '(empty)'}`,\n { port, stderr: logs.stderr, command: existingProcess.command },\n { cause: e }\n );\n }\n }\n getLogger().debug('Reusing existing OpenCode process', {\n port,\n processId: existingProcess.id\n });\n return existingProcess;\n }\n\n // Try to start a new OpenCode server\n try {\n return await startOpencodeServer(sandbox, port, directory, config);\n } catch (startupError) {\n // Startup failed - check if another concurrent request started the server\n // This handles the race condition where multiple requests try to start simultaneously\n const retryProcess = await findExistingOpencodeProcess(sandbox, port);\n if (retryProcess) {\n getLogger().debug(\n 'Startup failed but found concurrent process, reusing',\n {\n port,\n processId: retryProcess.id\n }\n );\n // Wait for the concurrent server to be ready\n if (retryProcess.status === 'starting') {\n try {\n await retryProcess.waitForPort(port, {\n mode: 'http',\n path: '/',\n timeout: 60_000\n });\n } catch (e) {\n const logs = await retryProcess.getLogs();\n throw new OpencodeStartupError(\n `OpenCode server failed to start. Stderr: ${logs.stderr || '(empty)'}`,\n { port, stderr: logs.stderr, command: retryProcess.command },\n { cause: e }\n );\n }\n }\n return retryProcess;\n }\n\n // No concurrent server found - the failure was genuine\n throw startupError;\n }\n}\n\n/**\n * Internal function to start a new OpenCode server process.\n */\nasync function startOpencodeServer(\n sandbox: Sandbox<unknown>,\n port: number,\n directory?: string,\n config?: Config\n): Promise<Process> {\n getLogger().info('Starting OpenCode server', { port, directory });\n\n // Pass config via OPENCODE_CONFIG_CONTENT and also extract API keys to env vars\n // because OpenCode's provider auth looks for env vars like ANTHROPIC_API_KEY\n const env: Record<string, string> = {};\n\n if (config) {\n env.OPENCODE_CONFIG_CONTENT = JSON.stringify(config);\n\n // Extract API keys from provider config\n // Support both options.apiKey (official type) and legacy top-level apiKey\n if (\n config.provider &&\n typeof config.provider === 'object' &&\n !Array.isArray(config.provider)\n ) {\n for (const [providerId, providerConfig] of Object.entries(\n config.provider\n )) {\n if (providerId === 'cloudflare-ai-gateway') {\n continue;\n }\n\n // Try options.apiKey first (official Config type)\n let apiKey = providerConfig?.options?.apiKey;\n // Fall back to top-level apiKey for convenience\n if (!apiKey) {\n apiKey = (providerConfig as Record<string, unknown> | undefined)\n ?.apiKey as string | undefined;\n }\n if (typeof apiKey === 'string') {\n const envVar = `${providerId.toUpperCase()}_API_KEY`;\n env[envVar] = apiKey;\n }\n }\n\n const aiGatewayConfig = config.provider['cloudflare-ai-gateway'];\n if (aiGatewayConfig?.options) {\n const options = aiGatewayConfig.options as Record<string, unknown>;\n\n if (typeof options.accountId === 'string') {\n env.CLOUDFLARE_ACCOUNT_ID = options.accountId;\n }\n\n if (typeof options.gatewayId === 'string') {\n env.CLOUDFLARE_GATEWAY_ID = options.gatewayId;\n }\n\n if (typeof options.apiToken === 'string') {\n env.CLOUDFLARE_API_TOKEN = options.apiToken;\n }\n }\n }\n }\n\n const command = buildOpencodeCommand(port, directory);\n const process = await sandbox.startProcess(command, {\n env: Object.keys(env).length > 0 ? env : undefined\n });\n\n // Wait for server to be ready\n try {\n await process.waitForPort(port, {\n mode: 'http',\n path: '/',\n timeout: 60_000\n });\n getLogger().info('OpenCode server started successfully', {\n port,\n processId: process.id\n });\n } catch (e) {\n const logs = await process.getLogs();\n const error = e instanceof Error ? e : undefined;\n getLogger().error('OpenCode server failed to start', error, {\n port,\n stderr: logs.stderr\n });\n throw new OpencodeStartupError(\n `OpenCode server failed to start. Stderr: ${logs.stderr || '(empty)'}`,\n { port, stderr: logs.stderr, command },\n { cause: e }\n );\n }\n\n return process;\n}\n\n/**\n * Starts an OpenCode server inside a Sandbox container.\n *\n * This function manages the server lifecycle only - use `createOpencode()` if you\n * also need a typed SDK client for programmatic access.\n *\n * If an OpenCode server is already running on the specified port, this function\n * will reuse it instead of starting a new one.\n *\n * @param sandbox - The Sandbox instance to run OpenCode in\n * @param options - Configuration options\n * @returns Promise resolving to server handle { port, url, close() }\n *\n * @example\n * ```typescript\n * import { getSandbox } from '@cloudflare/sandbox'\n * import { createOpencodeServer } from '@cloudflare/sandbox/opencode'\n *\n * const sandbox = getSandbox(env.Sandbox, 'my-agent')\n * const server = await createOpencodeServer(sandbox, {\n * directory: '/home/user/my-project',\n * config: {\n * provider: {\n * anthropic: {\n * options: { apiKey: env.ANTHROPIC_KEY }\n * },\n * // Or use Cloudflare AI Gateway (with unified billing, no provider keys needed).\n * // 'cloudflare-ai-gateway': {\n * // options: {\n * // accountId: env.CF_ACCOUNT_ID,\n * // gatewayId: env.CF_GATEWAY_ID,\n * // apiToken: env.CF_API_TOKEN\n * // },\n * // models: { 'anthropic/claude-sonnet-4-5-20250929': {} }\n * // }\n * }\n * }\n * })\n *\n * // Proxy requests to the web UI\n * return sandbox.containerFetch(request, server.port)\n *\n * // When done\n * await server.close()\n * ```\n */\nexport async function createOpencodeServer(\n sandbox: Sandbox<unknown>,\n options?: OpencodeOptions\n): Promise<OpencodeServer> {\n const port = options?.port ?? DEFAULT_PORT;\n const process = await ensureOpencodeServer(\n sandbox,\n port,\n options?.directory,\n options?.config\n );\n\n return {\n port,\n url: `http://localhost:${port}`,\n close: () => process.kill('SIGTERM')\n };\n}\n\n/**\n * Creates an OpenCode server inside a Sandbox container and returns a typed SDK client.\n *\n * This function is API-compatible with OpenCode's own createOpencode(), but uses\n * Sandbox process management instead of Node.js spawn. The returned client uses\n * a custom fetch adapter to route requests through the Sandbox container.\n *\n * If an OpenCode server is already running on the specified port, this function\n * will reuse it instead of starting a new one.\n *\n * @param sandbox - The Sandbox instance to run OpenCode in\n * @param options - Configuration options\n * @returns Promise resolving to { client, server }\n *\n * @example\n * ```typescript\n * import { getSandbox } from '@cloudflare/sandbox'\n * import { createOpencode } from '@cloudflare/sandbox/opencode'\n *\n * const sandbox = getSandbox(env.Sandbox, 'my-agent')\n * const { client, server } = await createOpencode(sandbox, {\n * directory: '/home/user/my-project',\n * config: {\n * provider: {\n * anthropic: {\n * options: { apiKey: env.ANTHROPIC_KEY }\n * },\n * // Or use Cloudflare AI Gateway (with unified billing, no provider keys needed).\n * // 'cloudflare-ai-gateway': {\n * // options: {\n * // accountId: env.CF_ACCOUNT_ID,\n * // gatewayId: env.CF_GATEWAY_ID,\n * // apiToken: env.CF_API_TOKEN\n * // },\n * // models: { 'anthropic/claude-sonnet-4-5-20250929': {} }\n * // }\n * }\n * }\n * })\n *\n * // Use the SDK client for programmatic access\n * const session = await client.session.create()\n *\n * // When done\n * await server.close()\n * ```\n */\nexport async function createOpencode<TClient = OpencodeClient>(\n sandbox: Sandbox<unknown>,\n options?: OpencodeOptions\n): Promise<OpencodeResult<TClient>> {\n await ensureSdkLoaded();\n\n const server = await createOpencodeServer(sandbox, options);\n\n const clientFactory = createOpencodeClient;\n if (!clientFactory) {\n throw new Error('OpenCode SDK client unavailable.');\n }\n\n const client = clientFactory({\n baseUrl: server.url,\n fetch: (input, init?) =>\n sandbox.containerFetch(new Request(input, init), server.port)\n });\n\n return { client: client as TClient, server };\n}\n\n/**\n * Proxy a request to the OpenCode web UI.\n *\n * This function handles the redirect and proxying only - you must start the\n * server separately using `createOpencodeServer()`.\n *\n * Specifically handles:\n * 1. Ensuring the `?url=` parameter is set (required for OpenCode's frontend to\n * make API calls through the proxy instead of directly to localhost:4096)\n * 2. Proxying the request to the container\n *\n * @param request - The incoming HTTP request\n * @param sandbox - The Sandbox instance running OpenCode\n * @param server - The OpenCode server handle from createOpencodeServer()\n * @returns Response from OpenCode or a redirect response\n *\n * @example\n * ```typescript\n * import { getSandbox } from '@cloudflare/sandbox'\n * import { createOpencodeServer, proxyToOpencode } from '@cloudflare/sandbox/opencode'\n *\n * export default {\n * async fetch(request: Request, env: Env) {\n * const sandbox = getSandbox(env.Sandbox, 'opencode')\n * const server = await createOpencodeServer(sandbox, {\n * directory: '/home/user/project',\n * config: {\n * provider: {\n * anthropic: {\n * options: { apiKey: env.ANTHROPIC_KEY }\n * },\n * // Optional: Route all providers through Cloudflare AI Gateway\n * 'cloudflare-ai-gateway': {\n * options: {\n * accountId: env.CF_ACCOUNT_ID,\n * gatewayId: env.CF_GATEWAY_ID,\n * apiToken: env.CF_API_TOKEN\n * }\n * }\n * }\n * }\n * })\n * return proxyToOpencode(request, sandbox, server)\n * }\n * }\n * ```\n */\nexport function proxyToOpencode(\n request: Request,\n sandbox: Sandbox<unknown>,\n server: OpencodeServer\n): Response | Promise<Response> {\n const url = new URL(request.url);\n\n // OpenCode's frontend defaults to http://127.0.0.1:4096 when hostname includes\n // \"localhost\" or \"opencode.ai\". The ?url= parameter overrides this behavior.\n // We only redirect GET requests for HTML pages (initial page load).\n // API calls (POST, PATCH, etc.) and asset requests are proxied directly\n // since redirecting POST loses the request body.\n if (!url.searchParams.has('url') && request.method === 'GET') {\n const accept = request.headers.get('accept') || '';\n const isHtmlRequest = accept.includes('text/html') || url.pathname === '/';\n if (isHtmlRequest) {\n url.searchParams.set('url', url.origin);\n return Response.redirect(url.toString(), 302);\n }\n }\n\n return sandbox.containerFetch(request, server.port);\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-CgjQQZGw.d.ts","names":["LogLevel","LogComponent","LogContext","Logger","Partial","Error","CreateContextOptions","Record","CodeContext","Date","RunCodeOptions","AbortSignal","OutputMessage","Promise","Result","ExecutionError","ChartData","ExecutionResult","Array","Execution","ResultImpl","PtyOptions","PtyControlMessage","PtyStatusMessage","CodeContext","CreateContextOptions","ExecutionResult","RunCodeOptions","PtyOptions","Disposable","BaseExecOptions","Record","ExecOptions","ExecResult","Error","AbortSignal","WaitForLogResult","RegExpMatchArray","WaitForExitResult","WaitForPortOptions","PortCheckRequest","PortCheckResponse","PortWatchRequest","PortWatchEvent","ProcessOptions","Process","ProcessStatus","isTerminalStatus","Date","Promise","RegExp","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","Request","Response","BucketProvider","BucketCredentials","ISandbox","isExecResult","isProcess","isProcessStatus","ChartData","ExecutionError","OutputMessage","Result","Execution","ResultImpl"],"sources":["../../shared/dist/logger/types.d.ts","../../shared/dist/interpreter-types.d.ts","../../shared/dist/pty-types.d.ts","../../shared/dist/types.d.ts","../src/clients/types.ts","../src/clients/transport/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 * Undefined values are skipped (treated as \"not configured\").\n */\n envVars?: Record<string, string | undefined>;\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 * Undefined values are skipped (treated as \"not configured\").\n */\n envVars?: Record<string, string | undefined>;\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","export interface PtyOptions {\n cols?: number;\n rows?: number;\n}\nexport type PtyControlMessage = {\n type: 'resize';\n cols: number;\n rows: number;\n};\nexport type PtyStatusMessage = {\n type: 'ready';\n} | {\n type: 'exit';\n code: number;\n signal?: string;\n} | {\n type: 'error';\n message: string;\n};\n//# sourceMappingURL=pty-types.d.ts.map","import type { CodeContext, CreateContextOptions, ExecutionResult, RunCodeOptions } from './interpreter-types';\nimport type { PtyOptions } from './pty-types';\n/**\n * Represents a disposable resource with a cleanup function.\n * Common pattern used by VS Code, xterm.js, RxJS, and others.\n */\nexport interface Disposable {\n dispose(): void;\n}\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 * Undefined values are skipped (treated as \"not configured\").\n */\n env?: Record<string, string | undefined>;\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}\n/**\n * Result from waiting for a log pattern\n */\nexport interface WaitForLogResult {\n /** The log line that matched */\n line: string;\n /** Regex capture groups (if condition was a RegExp) */\n match?: RegExpMatchArray;\n}\n/**\n * Result from waiting for process exit\n */\nexport interface WaitForExitResult {\n /** Process exit code */\n exitCode: number;\n}\n/**\n * Options for waiting for a port to become ready\n */\nexport interface WaitForPortOptions {\n /**\n * Check mode\n * - 'http': Make an HTTP request and check for success status (default)\n * - 'tcp': Just check if TCP connection succeeds\n * @default 'http'\n */\n mode?: 'http' | 'tcp';\n /**\n * HTTP path to check (only used when mode is 'http')\n * @default '/'\n */\n path?: string;\n /**\n * Expected HTTP status code or range (only used when mode is 'http')\n * - Single number: exact match (e.g., 200)\n * - Object with min/max: range match (e.g., { min: 200, max: 399 })\n * @default { min: 200, max: 399 }\n */\n status?: number | {\n min: number;\n max: number;\n };\n /**\n * Maximum time to wait in milliseconds\n * @default no timeout\n */\n timeout?: number;\n /**\n * Interval between checks in milliseconds\n * @default 500\n */\n interval?: number;\n}\n/**\n * Request body for port readiness check endpoint\n */\nexport interface PortCheckRequest {\n port: number;\n mode: 'http' | 'tcp';\n path?: string;\n statusMin?: number;\n statusMax?: number;\n}\n/**\n * Response from port readiness check endpoint\n */\nexport interface PortCheckResponse {\n ready: boolean;\n /** HTTP status code received (only for http mode) */\n statusCode?: number;\n /** Error message if check failed */\n error?: string;\n}\n/**\n * Request body for streaming port watch endpoint\n */\nexport interface PortWatchRequest extends PortCheckRequest {\n /** Process ID to monitor - stream closes if process exits */\n processId?: string;\n /** Internal polling interval in ms (default: 500) */\n interval?: number;\n}\n/**\n * SSE event emitted by port watch stream\n */\nexport interface PortWatchEvent {\n type: 'watching' | 'ready' | 'process_exited' | 'error';\n port: number;\n /** HTTP status code (for 'ready' events with HTTP mode) */\n statusCode?: number;\n /** Process exit code (for 'process_exited' events) */\n exitCode?: number;\n /** Error message (for 'error' events) */\n error?: 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';\n/**\n * Check if a process status indicates the process has terminated\n */\nexport declare function isTerminalStatus(status: ProcessStatus): boolean;\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 /**\n * Wait for a log pattern to appear in process output\n *\n * @example\n * const proc = await sandbox.startProcess(\"python train.py\");\n * await proc.waitForLog(\"Epoch 1 complete\");\n * await proc.waitForLog(/Epoch (\\d+) complete/);\n */\n waitForLog(pattern: string | RegExp, timeout?: number): Promise<WaitForLogResult>;\n /**\n * Wait for a port to become ready\n *\n * @example\n * // Wait for HTTP endpoint to return 200-399\n * const proc = await sandbox.startProcess(\"npm run dev\");\n * await proc.waitForPort(3000);\n *\n * @example\n * // Wait for specific health endpoint\n * await proc.waitForPort(3000, { path: '/health', status: 200 });\n *\n * @example\n * // TCP-only check (just verify port is accepting connections)\n * await proc.waitForPort(5432, { mode: 'tcp' });\n */\n waitForPort(port: number, options?: WaitForPortOptions): Promise<void>;\n /**\n * Wait for the process to exit\n *\n * Returns the exit code. Use getProcessLogs() or streamProcessLogs()\n * to retrieve output after the process exits.\n */\n waitForExit(timeout?: number): Promise<WaitForExitResult>;\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 pid?: number;\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 * Undefined values are skipped (treated as \"not configured\").\n */\n env?: Record<string, string | undefined>;\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 /** Clone depth for shallow clones (e.g., 1 for latest commit only) */\n depth?: number;\n }): Promise<GitCheckoutResult>;\n setEnvVars(envVars: Record<string, string | undefined>): 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 terminal(request: Request, options?: PtyOptions): Promise<Response>;\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 /**\n * Optional prefix/subdirectory within the bucket to mount.\n *\n * When specified, only the contents under this prefix will be visible\n * at the mount point, enabling multi-tenant isolation within a single bucket.\n *\n * Must start with '/' (e.g., '/sessions/user123' or '/data/uploads/')\n */\n prefix?: 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 /** Clone depth for shallow clones (e.g., 1 for latest commit only) */\n depth?: number;\n }): Promise<GitCheckoutResult>;\n setEnvVars(envVars: Record<string, string | undefined>): 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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"}
1
+ {"version":3,"file":"sandbox-CgjQQZGw.d.ts","names":["LogLevel","LogComponent","LogContext","Logger","Partial","Error","CreateContextOptions","Record","CodeContext","Date","RunCodeOptions","AbortSignal","OutputMessage","Promise","Result","ExecutionError","ChartData","ExecutionResult","Array","Execution","ResultImpl","PtyOptions","PtyControlMessage","PtyStatusMessage","CodeContext","CreateContextOptions","ExecutionResult","RunCodeOptions","PtyOptions","Disposable","BaseExecOptions","Record","ExecOptions","ExecResult","Error","AbortSignal","WaitForLogResult","RegExpMatchArray","WaitForExitResult","WaitForPortOptions","PortCheckRequest","PortCheckResponse","PortWatchRequest","PortWatchEvent","ProcessOptions","Process","ProcessStatus","isTerminalStatus","Date","Promise","RegExp","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","Request","Response","BucketProvider","BucketCredentials","ISandbox","isExecResult","isProcess","isProcessStatus","ChartData","ExecutionError","OutputMessage","Result","Execution","ResultImpl"],"sources":["../../shared/dist/logger/types.d.ts","../../shared/dist/interpreter-types.d.ts","../../shared/dist/pty-types.d.ts","../../shared/dist/types.d.ts","../src/clients/types.ts","../src/clients/transport/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 * Undefined values are skipped (treated as \"not configured\").\n */\n envVars?: Record<string, string | undefined>;\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 * Undefined values are skipped (treated as \"not configured\").\n */\n envVars?: Record<string, string | undefined>;\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","export interface PtyOptions {\n cols?: number;\n rows?: number;\n}\nexport type PtyControlMessage = {\n type: 'resize';\n cols: number;\n rows: number;\n};\nexport type PtyStatusMessage = {\n type: 'ready';\n} | {\n type: 'exit';\n code: number;\n signal?: string;\n} | {\n type: 'error';\n message: string;\n};\n//# sourceMappingURL=pty-types.d.ts.map","import type { CodeContext, CreateContextOptions, ExecutionResult, RunCodeOptions } from './interpreter-types';\nimport type { PtyOptions } from './pty-types';\n/**\n * Represents a disposable resource with a cleanup function.\n * Common pattern used by VS Code, xterm.js, RxJS, and others.\n */\nexport interface Disposable {\n dispose(): void;\n}\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 * Undefined values are skipped (treated as \"not configured\").\n */\n env?: Record<string, string | undefined>;\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}\n/**\n * Result from waiting for a log pattern\n */\nexport interface WaitForLogResult {\n /** The log line that matched */\n line: string;\n /** Regex capture groups (if condition was a RegExp) */\n match?: RegExpMatchArray;\n}\n/**\n * Result from waiting for process exit\n */\nexport interface WaitForExitResult {\n /** Process exit code */\n exitCode: number;\n}\n/**\n * Options for waiting for a port to become ready\n */\nexport interface WaitForPortOptions {\n /**\n * Check mode\n * - 'http': Make an HTTP request and check for success status (default)\n * - 'tcp': Just check if TCP connection succeeds\n * @default 'http'\n */\n mode?: 'http' | 'tcp';\n /**\n * HTTP path to check (only used when mode is 'http')\n * @default '/'\n */\n path?: string;\n /**\n * Expected HTTP status code or range (only used when mode is 'http')\n * - Single number: exact match (e.g., 200)\n * - Object with min/max: range match (e.g., { min: 200, max: 399 })\n * @default { min: 200, max: 399 }\n */\n status?: number | {\n min: number;\n max: number;\n };\n /**\n * Maximum time to wait in milliseconds\n * @default no timeout\n */\n timeout?: number;\n /**\n * Interval between checks in milliseconds\n * @default 500\n */\n interval?: number;\n}\n/**\n * Request body for port readiness check endpoint\n */\nexport interface PortCheckRequest {\n port: number;\n mode: 'http' | 'tcp';\n path?: string;\n statusMin?: number;\n statusMax?: number;\n}\n/**\n * Response from port readiness check endpoint\n */\nexport interface PortCheckResponse {\n ready: boolean;\n /** HTTP status code received (only for http mode) */\n statusCode?: number;\n /** Error message if check failed */\n error?: string;\n}\n/**\n * Request body for streaming port watch endpoint\n */\nexport interface PortWatchRequest extends PortCheckRequest {\n /** Process ID to monitor - stream closes if process exits */\n processId?: string;\n /** Internal polling interval in ms (default: 500) */\n interval?: number;\n}\n/**\n * SSE event emitted by port watch stream\n */\nexport interface PortWatchEvent {\n type: 'watching' | 'ready' | 'process_exited' | 'error';\n port: number;\n /** HTTP status code (for 'ready' events with HTTP mode) */\n statusCode?: number;\n /** Process exit code (for 'process_exited' events) */\n exitCode?: number;\n /** Error message (for 'error' events) */\n error?: 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';\n/**\n * Check if a process status indicates the process has terminated\n */\nexport declare function isTerminalStatus(status: ProcessStatus): boolean;\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 /**\n * Wait for a log pattern to appear in process output\n *\n * @example\n * const proc = await sandbox.startProcess(\"python train.py\");\n * await proc.waitForLog(\"Epoch 1 complete\");\n * await proc.waitForLog(/Epoch (\\d+) complete/);\n */\n waitForLog(pattern: string | RegExp, timeout?: number): Promise<WaitForLogResult>;\n /**\n * Wait for a port to become ready\n *\n * @example\n * // Wait for HTTP endpoint to return 200-399\n * const proc = await sandbox.startProcess(\"npm run dev\");\n * await proc.waitForPort(3000);\n *\n * @example\n * // Wait for specific health endpoint\n * await proc.waitForPort(3000, { path: '/health', status: 200 });\n *\n * @example\n * // TCP-only check (just verify port is accepting connections)\n * await proc.waitForPort(5432, { mode: 'tcp' });\n */\n waitForPort(port: number, options?: WaitForPortOptions): Promise<void>;\n /**\n * Wait for the process to exit\n *\n * Returns the exit code. Use getProcessLogs() or streamProcessLogs()\n * to retrieve output after the process exits.\n */\n waitForExit(timeout?: number): Promise<WaitForExitResult>;\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 pid?: number;\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 * Undefined values are skipped (treated as \"not configured\").\n */\n env?: Record<string, string | undefined>;\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 /** Clone depth for shallow clones (e.g., 1 for latest commit only) */\n depth?: number;\n }): Promise<GitCheckoutResult>;\n setEnvVars(envVars: Record<string, string | undefined>): 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 terminal(request: Request, options?: PtyOptions): Promise<Response>;\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 /**\n * Optional prefix/subdirectory within the bucket to mount.\n *\n * When specified, only the contents under this prefix will be visible\n * at the mount point, enabling multi-tenant isolation within a single bucket.\n *\n * Must start with '/' (e.g., '/sessions/user123' or '/data/uploads/')\n */\n prefix?: 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 /** Clone depth for shallow clones (e.g., 1 for latest commit only) */\n depth?: number;\n }): Promise<GitCheckoutResult>;\n setEnvVars(envVars: Record<string, string | undefined>): 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.7.3",
3
+ "version": "0.7.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/cloudflare/sandbox-sdk"