@cloudflare/sandbox 0.13.0-next.681.1 → 0.13.0-next.709.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile +6 -6
- package/README.md +49 -3
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/index.js +1364 -1072
- package/dist/bridge/index.js.map +1 -1
- package/dist/{contexts-DY1LHU1v.d.ts → contexts-1EsLHByO.d.ts} +156 -20
- package/dist/contexts-1EsLHByO.d.ts.map +1 -0
- package/dist/{dist-BStBkGIC.js → dist-Duor5GbS.js} +7 -56
- package/dist/dist-Duor5GbS.js.map +1 -0
- package/dist/errors/index.d.ts +4 -4
- package/dist/errors/index.js +3 -3
- package/dist/{errors-k3B8orjH.js → errors-CXR0xBpw.js} +42 -10
- package/dist/errors-CXR0xBpw.js.map +1 -0
- package/dist/{errors-ewgSNicb.js → errors-QYlSkVGz.js} +402 -250
- package/dist/errors-QYlSkVGz.js.map +1 -0
- package/dist/extensions/index.d.ts +4 -2
- package/dist/extensions/index.js +5 -3
- package/dist/extensions-CFB2xHqY.js +1023 -0
- package/dist/extensions-CFB2xHqY.js.map +1 -0
- package/dist/filesystem-BWAZCZER.d.ts +732 -0
- package/dist/filesystem-BWAZCZER.d.ts.map +1 -0
- package/dist/git/index.d.ts +8 -19
- package/dist/git/index.d.ts.map +1 -1
- package/dist/git/index.js +16 -23
- package/dist/git/index.js.map +1 -1
- package/dist/index-Bs4bqXDR.d.ts +438 -0
- package/dist/index-Bs4bqXDR.d.ts.map +1 -0
- package/dist/{index-Dy6u9r60.d.ts → index-HNYBk-az.d.ts} +233 -179
- package/dist/index-HNYBk-az.d.ts.map +1 -0
- package/dist/index.d.ts +480 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/interpreter/index.d.ts +3 -1
- package/dist/interpreter/index.d.ts.map +1 -1
- package/dist/interpreter/index.js +46 -18
- package/dist/interpreter/index.js.map +1 -1
- package/dist/openai/index.d.ts +5 -5
- package/dist/openai/index.d.ts.map +1 -1
- package/dist/openai/index.js +11 -6
- package/dist/openai/index.js.map +1 -1
- package/dist/opencode/index.d.ts +7 -11
- package/dist/opencode/index.d.ts.map +1 -1
- package/dist/opencode/index.js +56 -85
- package/dist/opencode/index.js.map +1 -1
- package/dist/process-types-GStiZ8f8.d.ts +73 -0
- package/dist/process-types-GStiZ8f8.d.ts.map +1 -0
- package/dist/{sandbox-boKWPIcd.js → sandbox-Auuwfnur.js} +4152 -3359
- package/dist/sandbox-Auuwfnur.js.map +1 -0
- package/dist/sandbox-BbAabq93.d.ts +42 -0
- package/dist/sandbox-BbAabq93.d.ts.map +1 -0
- package/dist/xterm/index.d.ts +5 -1
- package/dist/xterm/index.d.ts.map +1 -1
- package/dist/xterm/index.js +55 -12
- package/dist/xterm/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/codes-y-U76vnQ.d.ts +0 -79
- package/dist/codes-y-U76vnQ.d.ts.map +0 -1
- package/dist/contexts-DY1LHU1v.d.ts.map +0 -1
- package/dist/dist-BStBkGIC.js.map +0 -1
- package/dist/errors-ewgSNicb.js.map +0 -1
- package/dist/errors-k3B8orjH.js.map +0 -1
- package/dist/extensions-CepYdzro.js +0 -191
- package/dist/extensions-CepYdzro.js.map +0 -1
- package/dist/index-B7QgIs0N.d.ts +0 -1841
- package/dist/index-B7QgIs0N.d.ts.map +0 -1
- package/dist/index-Dy6u9r60.d.ts.map +0 -1
- package/dist/sandbox-DHNO89IF.d.ts +0 -828
- package/dist/sandbox-DHNO89IF.d.ts.map +0 -1
- package/dist/sandbox-boKWPIcd.js.map +0 -1
|
@@ -23,11 +23,20 @@ const ErrorCode = {
|
|
|
23
23
|
COMMAND_EXECUTION_ERROR: "COMMAND_EXECUTION_ERROR",
|
|
24
24
|
STREAM_START_ERROR: "STREAM_START_ERROR",
|
|
25
25
|
PROCESS_NOT_FOUND: "PROCESS_NOT_FOUND",
|
|
26
|
+
TERMINAL_NOT_FOUND: "TERMINAL_NOT_FOUND",
|
|
27
|
+
INVALID_PROCESS_CWD: "INVALID_PROCESS_CWD",
|
|
28
|
+
INVALID_PROCESS_ENVIRONMENT: "INVALID_PROCESS_ENVIRONMENT",
|
|
29
|
+
INVALID_PROCESS_CURSOR: "INVALID_PROCESS_CURSOR",
|
|
30
|
+
INVALID_TERMINAL_CWD: "INVALID_TERMINAL_CWD",
|
|
31
|
+
INVALID_TERMINAL_CURSOR: "INVALID_TERMINAL_CURSOR",
|
|
32
|
+
STALE_PROCESS_HANDLE: "STALE_PROCESS_HANDLE",
|
|
33
|
+
STALE_TERMINAL_HANDLE: "STALE_TERMINAL_HANDLE",
|
|
34
|
+
PROCESS_WAIT_TIMEOUT: "PROCESS_WAIT_TIMEOUT",
|
|
35
|
+
PROCESS_ABORTED: "PROCESS_ABORTED",
|
|
26
36
|
PROCESS_PERMISSION_DENIED: "PROCESS_PERMISSION_DENIED",
|
|
27
37
|
PROCESS_ERROR: "PROCESS_ERROR",
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
SESSION_TERMINATED: "SESSION_TERMINATED",
|
|
38
|
+
PROCESS_SPAWN_FAILED: "PROCESS_SPAWN_FAILED",
|
|
39
|
+
TERMINAL_CONTROL_ERROR: "TERMINAL_CONTROL_ERROR",
|
|
31
40
|
PORT_ALREADY_EXPOSED: "PORT_ALREADY_EXPOSED",
|
|
32
41
|
PORT_IN_USE: "PORT_IN_USE",
|
|
33
42
|
PORT_NOT_EXPOSED: "PORT_NOT_EXPOSED",
|
|
@@ -62,6 +71,7 @@ const ErrorCode = {
|
|
|
62
71
|
OPENCODE_STARTUP_FAILED: "OPENCODE_STARTUP_FAILED",
|
|
63
72
|
PROCESS_READY_TIMEOUT: "PROCESS_READY_TIMEOUT",
|
|
64
73
|
PROCESS_EXITED_BEFORE_READY: "PROCESS_EXITED_BEFORE_READY",
|
|
74
|
+
PROCESS_EXITED_BEFORE_LOG: "PROCESS_EXITED_BEFORE_LOG",
|
|
65
75
|
WATCH_NOT_FOUND: "WATCH_NOT_FOUND",
|
|
66
76
|
WATCH_START_ERROR: "WATCH_START_ERROR",
|
|
67
77
|
WATCH_STOP_ERROR: "WATCH_STOP_ERROR",
|
|
@@ -70,6 +80,7 @@ const ErrorCode = {
|
|
|
70
80
|
UNKNOWN_ERROR: "UNKNOWN_ERROR",
|
|
71
81
|
INTERNAL_ERROR: "INTERNAL_ERROR",
|
|
72
82
|
CONTAINER_UNAVAILABLE: "CONTAINER_UNAVAILABLE",
|
|
83
|
+
CONTROL_PROTOCOL_INCOMPATIBLE: "CONTROL_PROTOCOL_INCOMPATIBLE",
|
|
73
84
|
OPERATION_INTERRUPTED: "OPERATION_INTERRUPTED",
|
|
74
85
|
RPC_TRANSPORT_ERROR: "RPC_TRANSPORT_ERROR"
|
|
75
86
|
};
|
|
@@ -84,6 +95,7 @@ const ERROR_STATUS_MAP = {
|
|
|
84
95
|
[ErrorCode.FILE_NOT_FOUND]: 404,
|
|
85
96
|
[ErrorCode.COMMAND_NOT_FOUND]: 404,
|
|
86
97
|
[ErrorCode.PROCESS_NOT_FOUND]: 404,
|
|
98
|
+
[ErrorCode.TERMINAL_NOT_FOUND]: 404,
|
|
87
99
|
[ErrorCode.PORT_NOT_EXPOSED]: 404,
|
|
88
100
|
[ErrorCode.GIT_REPOSITORY_NOT_FOUND]: 404,
|
|
89
101
|
[ErrorCode.GIT_BRANCH_NOT_FOUND]: 404,
|
|
@@ -92,6 +104,11 @@ const ERROR_STATUS_MAP = {
|
|
|
92
104
|
[ErrorCode.IS_DIRECTORY]: 400,
|
|
93
105
|
[ErrorCode.NOT_DIRECTORY]: 400,
|
|
94
106
|
[ErrorCode.INVALID_COMMAND]: 400,
|
|
107
|
+
[ErrorCode.INVALID_PROCESS_CWD]: 400,
|
|
108
|
+
[ErrorCode.INVALID_PROCESS_ENVIRONMENT]: 400,
|
|
109
|
+
[ErrorCode.INVALID_PROCESS_CURSOR]: 400,
|
|
110
|
+
[ErrorCode.INVALID_TERMINAL_CWD]: 400,
|
|
111
|
+
[ErrorCode.INVALID_TERMINAL_CURSOR]: 400,
|
|
95
112
|
[ErrorCode.INVALID_PORT_NUMBER]: 400,
|
|
96
113
|
[ErrorCode.INVALID_PORT]: 400,
|
|
97
114
|
[ErrorCode.INVALID_GIT_URL]: 400,
|
|
@@ -110,10 +127,10 @@ const ERROR_STATUS_MAP = {
|
|
|
110
127
|
[ErrorCode.PORT_ALREADY_EXPOSED]: 409,
|
|
111
128
|
[ErrorCode.PORT_IN_USE]: 409,
|
|
112
129
|
[ErrorCode.RESOURCE_BUSY]: 409,
|
|
113
|
-
[ErrorCode.SESSION_ALREADY_EXISTS]: 409,
|
|
114
130
|
[ErrorCode.OPERATION_INTERRUPTED]: 409,
|
|
115
|
-
[ErrorCode.
|
|
116
|
-
[ErrorCode.
|
|
131
|
+
[ErrorCode.STALE_PROCESS_HANDLE]: 409,
|
|
132
|
+
[ErrorCode.STALE_TERMINAL_HANDLE]: 409,
|
|
133
|
+
[ErrorCode.PROCESS_EXITED_BEFORE_LOG]: 409,
|
|
117
134
|
[ErrorCode.FILE_TOO_LARGE]: 413,
|
|
118
135
|
[ErrorCode.SERVICE_NOT_RESPONDING]: 502,
|
|
119
136
|
[ErrorCode.GIT_NETWORK_ERROR]: 502,
|
|
@@ -127,8 +144,11 @@ const ERROR_STATUS_MAP = {
|
|
|
127
144
|
[ErrorCode.INTERPRETER_NOT_READY]: 503,
|
|
128
145
|
[ErrorCode.OPENCODE_STARTUP_FAILED]: 503,
|
|
129
146
|
[ErrorCode.CONTAINER_UNAVAILABLE]: 503,
|
|
147
|
+
[ErrorCode.CONTROL_PROTOCOL_INCOMPATIBLE]: 503,
|
|
130
148
|
[ErrorCode.RPC_TRANSPORT_ERROR]: 503,
|
|
131
149
|
[ErrorCode.PROCESS_READY_TIMEOUT]: 408,
|
|
150
|
+
[ErrorCode.PROCESS_WAIT_TIMEOUT]: 408,
|
|
151
|
+
[ErrorCode.PROCESS_ABORTED]: 499,
|
|
132
152
|
[ErrorCode.PROCESS_EXITED_BEFORE_READY]: 500,
|
|
133
153
|
[ErrorCode.NO_SPACE]: 500,
|
|
134
154
|
[ErrorCode.TOO_MANY_FILES]: 500,
|
|
@@ -137,6 +157,8 @@ const ERROR_STATUS_MAP = {
|
|
|
137
157
|
[ErrorCode.COMMAND_EXECUTION_ERROR]: 500,
|
|
138
158
|
[ErrorCode.STREAM_START_ERROR]: 500,
|
|
139
159
|
[ErrorCode.PROCESS_ERROR]: 500,
|
|
160
|
+
[ErrorCode.PROCESS_SPAWN_FAILED]: 500,
|
|
161
|
+
[ErrorCode.TERMINAL_CONTROL_ERROR]: 500,
|
|
140
162
|
[ErrorCode.PORT_OPERATION_ERROR]: 500,
|
|
141
163
|
[ErrorCode.GIT_CLONE_FAILED]: 500,
|
|
142
164
|
[ErrorCode.GIT_CHECKOUT_FAILED]: 500,
|
|
@@ -170,16 +192,26 @@ function getSuggestion(code, context) {
|
|
|
170
192
|
case ErrorCode.FILE_EXISTS: return `File already exists at ${context.path}. Use a different path or delete the existing file first`;
|
|
171
193
|
case ErrorCode.COMMAND_NOT_FOUND: return `Check that "${context.command}" is installed and available in the system PATH`;
|
|
172
194
|
case ErrorCode.PROCESS_NOT_FOUND: return "Verify the process ID is correct and the process has not already exited";
|
|
195
|
+
case ErrorCode.INVALID_PROCESS_CWD: return `Verify the process working directory exists and is accessible: ${context.cwd}`;
|
|
196
|
+
case ErrorCode.INVALID_PROCESS_ENVIRONMENT: return "Verify process environment variable names and values are valid strings without NUL bytes";
|
|
197
|
+
case ErrorCode.PROCESS_SPAWN_FAILED: return `Check that "${context.command}" exists, is executable, and can be started in the requested working directory`;
|
|
198
|
+
case ErrorCode.INVALID_PROCESS_CURSOR: return "Use a log cursor previously returned by this process log stream";
|
|
199
|
+
case ErrorCode.STALE_PROCESS_HANDLE: return "The process handle refers to an older runtime process. Reacquire the process by ID before retrying the operation";
|
|
200
|
+
case ErrorCode.STALE_TERMINAL_HANDLE: return "The terminal handle refers to an older runtime terminal. Reacquire the terminal by ID before retrying the operation";
|
|
201
|
+
case ErrorCode.PROCESS_WAIT_TIMEOUT: return "The process did not complete before the timeout. Continue streaming logs or kill the process if it is no longer needed";
|
|
202
|
+
case ErrorCode.PROCESS_ABORTED: return "The process operation was aborted by the caller. Retry with a new AbortSignal if needed";
|
|
203
|
+
case ErrorCode.TERMINAL_NOT_FOUND: return `Verify terminal "${context.terminalId}" exists and has not been evicted`;
|
|
204
|
+
case ErrorCode.INVALID_TERMINAL_CWD: return `Verify the terminal working directory exists and is accessible: ${context.cwd}`;
|
|
205
|
+
case ErrorCode.INVALID_TERMINAL_CURSOR: return "Use a cursor previously returned by this terminal stream";
|
|
206
|
+
case ErrorCode.TERMINAL_CONTROL_ERROR: return `Terminal control operation failed for terminal "${context.terminalId}"`;
|
|
173
207
|
case ErrorCode.PORT_NOT_EXPOSED: return `Port ${context.port} is not currently available for this operation`;
|
|
174
208
|
case ErrorCode.PORT_ALREADY_EXPOSED: return `Port ${context.port} already has preview URL authorization or activation state`;
|
|
175
209
|
case ErrorCode.PORT_IN_USE: return `Port ${context.port} is already in use by another service. Choose a different port`;
|
|
176
|
-
case ErrorCode.SESSION_ALREADY_EXISTS: return `Session "${context.sessionId}" already exists. Use a different session ID or reuse the existing session`;
|
|
177
|
-
case ErrorCode.SESSION_DESTROYED: return `Session "${context.sessionId}" was destroyed. Create a new session to continue executing commands`;
|
|
178
|
-
case ErrorCode.SESSION_TERMINATED: return `Session "${context.sessionId}" ended because its shell exited (exit code: ${context.exitCode ?? "unknown"}). Session-local state (env vars, cwd, shell functions) has been lost. Retry the call to start a fresh session, or call createSession() with the same id to recreate it explicitly`;
|
|
179
210
|
case ErrorCode.INVALID_PORT: return `Port must be between 1 and 65535. Port ${context.port} is ${context.reason}`;
|
|
180
211
|
case ErrorCode.GIT_REPOSITORY_NOT_FOUND: return "Verify the repository URL is correct and accessible";
|
|
181
212
|
case ErrorCode.GIT_AUTH_FAILED: return "Check authentication credentials or use a public repository";
|
|
182
213
|
case ErrorCode.GIT_BRANCH_NOT_FOUND: return `Branch "${context.branch}" does not exist in the repository. Check the branch name or use the default branch`;
|
|
214
|
+
case ErrorCode.CONTROL_PROTOCOL_INCOMPATIBLE: return "Refresh the sandbox control session metadata and reconnect with a compatible control protocol";
|
|
183
215
|
case ErrorCode.INTERPRETER_NOT_READY: return context.retryAfter ? `Code interpreter is starting up. Retry after ${context.retryAfter} seconds` : "Code interpreter is not ready. Please wait a moment and try again";
|
|
184
216
|
case ErrorCode.CONTEXT_NOT_FOUND: return `Context "${context.contextId}" does not exist. Create a context first using createContext()`;
|
|
185
217
|
case ErrorCode.VALIDATION_FAILED: return "Check the request parameters and ensure they match the required format";
|
|
@@ -250,4 +282,4 @@ const Operation = {
|
|
|
250
282
|
|
|
251
283
|
//#endregion
|
|
252
284
|
export { ErrorCode as i, getSuggestion as n, getHttpStatus as r, Operation as t };
|
|
253
|
-
//# sourceMappingURL=errors-
|
|
285
|
+
//# sourceMappingURL=errors-CXR0xBpw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-CXR0xBpw.js","names":[],"sources":["../../shared/dist/errors/codes.js","../../shared/dist/errors/status-map.js","../../shared/dist/errors/suggestions.js","../../shared/dist/errors/types.js"],"sourcesContent":["/**\n * Centralized error code registry\n * Each code maps to a specific error type with consistent semantics\n */\nexport const ErrorCode = {\n // File System Errors (404)\n FILE_NOT_FOUND: 'FILE_NOT_FOUND',\n // Permission Errors (403)\n PERMISSION_DENIED: 'PERMISSION_DENIED',\n // File System Errors (409)\n FILE_EXISTS: 'FILE_EXISTS',\n // File System Errors (400)\n IS_DIRECTORY: 'IS_DIRECTORY',\n NOT_DIRECTORY: 'NOT_DIRECTORY',\n // File Too Large Errors (413)\n FILE_TOO_LARGE: 'FILE_TOO_LARGE',\n // File System Errors (500)\n NO_SPACE: 'NO_SPACE',\n TOO_MANY_FILES: 'TOO_MANY_FILES',\n RESOURCE_BUSY: 'RESOURCE_BUSY',\n READ_ONLY: 'READ_ONLY',\n NAME_TOO_LONG: 'NAME_TOO_LONG',\n TOO_MANY_LINKS: 'TOO_MANY_LINKS',\n FILESYSTEM_ERROR: 'FILESYSTEM_ERROR',\n // Command Errors (404)\n COMMAND_NOT_FOUND: 'COMMAND_NOT_FOUND',\n // Command Errors (403/400)\n COMMAND_PERMISSION_DENIED: 'COMMAND_PERMISSION_DENIED',\n INVALID_COMMAND: 'INVALID_COMMAND',\n // Command Errors (500)\n COMMAND_EXECUTION_ERROR: 'COMMAND_EXECUTION_ERROR',\n STREAM_START_ERROR: 'STREAM_START_ERROR',\n // Process Errors (404)\n PROCESS_NOT_FOUND: 'PROCESS_NOT_FOUND',\n TERMINAL_NOT_FOUND: 'TERMINAL_NOT_FOUND',\n // Process Errors (400)\n INVALID_PROCESS_CWD: 'INVALID_PROCESS_CWD',\n INVALID_PROCESS_ENVIRONMENT: 'INVALID_PROCESS_ENVIRONMENT',\n INVALID_PROCESS_CURSOR: 'INVALID_PROCESS_CURSOR',\n INVALID_TERMINAL_CWD: 'INVALID_TERMINAL_CWD',\n INVALID_TERMINAL_CURSOR: 'INVALID_TERMINAL_CURSOR',\n // Process Errors (408/409/499)\n STALE_PROCESS_HANDLE: 'STALE_PROCESS_HANDLE',\n STALE_TERMINAL_HANDLE: 'STALE_TERMINAL_HANDLE',\n PROCESS_WAIT_TIMEOUT: 'PROCESS_WAIT_TIMEOUT',\n PROCESS_ABORTED: 'PROCESS_ABORTED',\n // Process Errors (403/500)\n PROCESS_PERMISSION_DENIED: 'PROCESS_PERMISSION_DENIED',\n PROCESS_ERROR: 'PROCESS_ERROR',\n PROCESS_SPAWN_FAILED: 'PROCESS_SPAWN_FAILED',\n TERMINAL_CONTROL_ERROR: 'TERMINAL_CONTROL_ERROR',\n // Port Errors (409)\n PORT_ALREADY_EXPOSED: 'PORT_ALREADY_EXPOSED',\n PORT_IN_USE: 'PORT_IN_USE',\n // Port Errors (404)\n PORT_NOT_EXPOSED: 'PORT_NOT_EXPOSED',\n // Port Errors (400)\n INVALID_PORT_NUMBER: 'INVALID_PORT_NUMBER',\n INVALID_PORT: 'INVALID_PORT',\n // Port Errors (502/500)\n SERVICE_NOT_RESPONDING: 'SERVICE_NOT_RESPONDING',\n PORT_OPERATION_ERROR: 'PORT_OPERATION_ERROR',\n // Port Errors (400)\n CUSTOM_DOMAIN_REQUIRED: 'CUSTOM_DOMAIN_REQUIRED',\n // Git Errors (404)\n GIT_REPOSITORY_NOT_FOUND: 'GIT_REPOSITORY_NOT_FOUND',\n GIT_BRANCH_NOT_FOUND: 'GIT_BRANCH_NOT_FOUND',\n // Git Errors (401)\n GIT_AUTH_FAILED: 'GIT_AUTH_FAILED',\n // Git Errors (502)\n GIT_NETWORK_ERROR: 'GIT_NETWORK_ERROR',\n // Git Errors (400)\n INVALID_GIT_URL: 'INVALID_GIT_URL',\n // Git Errors (500)\n GIT_CLONE_FAILED: 'GIT_CLONE_FAILED',\n GIT_CHECKOUT_FAILED: 'GIT_CHECKOUT_FAILED',\n GIT_OPERATION_FAILED: 'GIT_OPERATION_FAILED',\n // Bucket mounting errors\n BUCKET_MOUNT_ERROR: 'BUCKET_MOUNT_ERROR',\n BUCKET_UNMOUNT_ERROR: 'BUCKET_UNMOUNT_ERROR',\n S3FS_MOUNT_ERROR: 'S3FS_MOUNT_ERROR',\n MISSING_CREDENTIALS: 'MISSING_CREDENTIALS',\n INVALID_MOUNT_CONFIG: 'INVALID_MOUNT_CONFIG',\n // Backup Errors (500)\n BACKUP_CREATE_FAILED: 'BACKUP_CREATE_FAILED',\n BACKUP_RESTORE_FAILED: 'BACKUP_RESTORE_FAILED',\n // Backup Errors (404)\n BACKUP_NOT_FOUND: 'BACKUP_NOT_FOUND',\n // Backup Errors (400)\n BACKUP_EXPIRED: 'BACKUP_EXPIRED',\n INVALID_BACKUP_CONFIG: 'INVALID_BACKUP_CONFIG',\n // Code Interpreter Errors (503)\n INTERPRETER_NOT_READY: 'INTERPRETER_NOT_READY',\n // Code Interpreter Errors (404)\n CONTEXT_NOT_FOUND: 'CONTEXT_NOT_FOUND',\n // Code Interpreter Errors (500)\n CODE_EXECUTION_ERROR: 'CODE_EXECUTION_ERROR',\n // Code Interpreter Errors (501) - Feature not available in image variant\n PYTHON_NOT_AVAILABLE: 'PYTHON_NOT_AVAILABLE',\n JAVASCRIPT_NOT_AVAILABLE: 'JAVASCRIPT_NOT_AVAILABLE',\n // OpenCode Errors (503)\n OPENCODE_STARTUP_FAILED: 'OPENCODE_STARTUP_FAILED',\n // Process Readiness Errors (408/500)\n PROCESS_READY_TIMEOUT: 'PROCESS_READY_TIMEOUT',\n PROCESS_EXITED_BEFORE_READY: 'PROCESS_EXITED_BEFORE_READY',\n PROCESS_EXITED_BEFORE_LOG: 'PROCESS_EXITED_BEFORE_LOG',\n // File Watch Errors (404)\n WATCH_NOT_FOUND: 'WATCH_NOT_FOUND',\n // File Watch Errors (500)\n WATCH_START_ERROR: 'WATCH_START_ERROR',\n WATCH_STOP_ERROR: 'WATCH_STOP_ERROR',\n // Validation Errors (400)\n VALIDATION_FAILED: 'VALIDATION_FAILED',\n // Generic Errors (400/500)\n INVALID_JSON_RESPONSE: 'INVALID_JSON_RESPONSE',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n INTERNAL_ERROR: 'INTERNAL_ERROR',\n // Container Availability Errors (503)\n CONTAINER_UNAVAILABLE: 'CONTAINER_UNAVAILABLE',\n CONTROL_PROTOCOL_INCOMPATIBLE: 'CONTROL_PROTOCOL_INCOMPATIBLE',\n // Operation Lifecycle Errors (409)\n OPERATION_INTERRUPTED: 'OPERATION_INTERRUPTED',\n // RPC Transport Errors (503) — capnweb WebSocket session-level failures\n // raised on the SDK side, not by the container. The container went away\n // mid-call (peer close), the WebSocket failed before/after upgrade, the\n // peer sent a frame the transport cannot handle, or the session was\n // disposed while a call was in flight.\n RPC_TRANSPORT_ERROR: 'RPC_TRANSPORT_ERROR'\n};\n","import { ErrorCode } from './codes';\n/**\n * Maps error codes to HTTP status codes\n * Centralized mapping ensures consistency across SDK\n */\nexport const ERROR_STATUS_MAP = {\n // 404 Not Found\n [ErrorCode.FILE_NOT_FOUND]: 404,\n [ErrorCode.COMMAND_NOT_FOUND]: 404,\n [ErrorCode.PROCESS_NOT_FOUND]: 404,\n [ErrorCode.TERMINAL_NOT_FOUND]: 404,\n [ErrorCode.PORT_NOT_EXPOSED]: 404,\n [ErrorCode.GIT_REPOSITORY_NOT_FOUND]: 404,\n [ErrorCode.GIT_BRANCH_NOT_FOUND]: 404,\n [ErrorCode.CONTEXT_NOT_FOUND]: 404,\n [ErrorCode.WATCH_NOT_FOUND]: 404,\n // 400 Bad Request\n [ErrorCode.IS_DIRECTORY]: 400,\n [ErrorCode.NOT_DIRECTORY]: 400,\n [ErrorCode.INVALID_COMMAND]: 400,\n [ErrorCode.INVALID_PROCESS_CWD]: 400,\n [ErrorCode.INVALID_PROCESS_ENVIRONMENT]: 400,\n [ErrorCode.INVALID_PROCESS_CURSOR]: 400,\n [ErrorCode.INVALID_TERMINAL_CWD]: 400,\n [ErrorCode.INVALID_TERMINAL_CURSOR]: 400,\n [ErrorCode.INVALID_PORT_NUMBER]: 400,\n [ErrorCode.INVALID_PORT]: 400,\n [ErrorCode.INVALID_GIT_URL]: 400,\n [ErrorCode.CUSTOM_DOMAIN_REQUIRED]: 400,\n [ErrorCode.INVALID_JSON_RESPONSE]: 400,\n [ErrorCode.NAME_TOO_LONG]: 400,\n [ErrorCode.VALIDATION_FAILED]: 400,\n [ErrorCode.MISSING_CREDENTIALS]: 400,\n [ErrorCode.INVALID_MOUNT_CONFIG]: 400,\n // 401 Unauthorized\n [ErrorCode.GIT_AUTH_FAILED]: 401,\n // 403 Forbidden\n [ErrorCode.PERMISSION_DENIED]: 403,\n [ErrorCode.COMMAND_PERMISSION_DENIED]: 403,\n [ErrorCode.PROCESS_PERMISSION_DENIED]: 403,\n [ErrorCode.READ_ONLY]: 403,\n // 409 Conflict\n [ErrorCode.FILE_EXISTS]: 409,\n [ErrorCode.PORT_ALREADY_EXPOSED]: 409,\n [ErrorCode.PORT_IN_USE]: 409,\n [ErrorCode.RESOURCE_BUSY]: 409,\n [ErrorCode.OPERATION_INTERRUPTED]: 409,\n [ErrorCode.STALE_PROCESS_HANDLE]: 409,\n [ErrorCode.STALE_TERMINAL_HANDLE]: 409,\n [ErrorCode.PROCESS_EXITED_BEFORE_LOG]: 409,\n // 410 Gone\n // 413 Content Too Large\n [ErrorCode.FILE_TOO_LARGE]: 413,\n // 502 Bad Gateway\n [ErrorCode.SERVICE_NOT_RESPONDING]: 502,\n [ErrorCode.GIT_NETWORK_ERROR]: 502,\n // Backup errors\n [ErrorCode.BACKUP_NOT_FOUND]: 404,\n [ErrorCode.BACKUP_EXPIRED]: 400,\n [ErrorCode.INVALID_BACKUP_CONFIG]: 400,\n [ErrorCode.BACKUP_CREATE_FAILED]: 500,\n [ErrorCode.BACKUP_RESTORE_FAILED]: 500,\n // 501 Not Implemented (feature not available in image variant)\n [ErrorCode.PYTHON_NOT_AVAILABLE]: 501,\n [ErrorCode.JAVASCRIPT_NOT_AVAILABLE]: 501,\n // 503 Service Unavailable\n [ErrorCode.INTERPRETER_NOT_READY]: 503,\n [ErrorCode.OPENCODE_STARTUP_FAILED]: 503,\n [ErrorCode.CONTAINER_UNAVAILABLE]: 503,\n [ErrorCode.CONTROL_PROTOCOL_INCOMPATIBLE]: 503,\n [ErrorCode.RPC_TRANSPORT_ERROR]: 503,\n // 408 Request Timeout\n [ErrorCode.PROCESS_READY_TIMEOUT]: 408,\n [ErrorCode.PROCESS_WAIT_TIMEOUT]: 408,\n // 499 Client Closed Request\n [ErrorCode.PROCESS_ABORTED]: 499,\n // 500 Internal Server Error\n [ErrorCode.PROCESS_EXITED_BEFORE_READY]: 500,\n [ErrorCode.NO_SPACE]: 500,\n [ErrorCode.TOO_MANY_FILES]: 500,\n [ErrorCode.TOO_MANY_LINKS]: 500,\n [ErrorCode.FILESYSTEM_ERROR]: 500,\n [ErrorCode.COMMAND_EXECUTION_ERROR]: 500,\n [ErrorCode.STREAM_START_ERROR]: 500,\n [ErrorCode.PROCESS_ERROR]: 500,\n [ErrorCode.PROCESS_SPAWN_FAILED]: 500,\n [ErrorCode.TERMINAL_CONTROL_ERROR]: 500,\n [ErrorCode.PORT_OPERATION_ERROR]: 500,\n [ErrorCode.GIT_CLONE_FAILED]: 500,\n [ErrorCode.GIT_CHECKOUT_FAILED]: 500,\n [ErrorCode.GIT_OPERATION_FAILED]: 500,\n [ErrorCode.CODE_EXECUTION_ERROR]: 500,\n [ErrorCode.BUCKET_MOUNT_ERROR]: 500,\n [ErrorCode.BUCKET_UNMOUNT_ERROR]: 500,\n [ErrorCode.S3FS_MOUNT_ERROR]: 500,\n [ErrorCode.WATCH_START_ERROR]: 500,\n [ErrorCode.WATCH_STOP_ERROR]: 500,\n [ErrorCode.UNKNOWN_ERROR]: 500,\n [ErrorCode.INTERNAL_ERROR]: 500\n};\n/**\n * Get HTTP status code for an error code\n * Falls back to 500 for unknown errors\n */\nexport function getHttpStatus(code) {\n return ERROR_STATUS_MAP[code] || 500;\n}\n","import { ErrorCode } from './codes';\n/**\n * Get actionable suggestion for an error code\n * Used by handlers when enriching ServiceError → ErrorResponse\n */\nexport function getSuggestion(code, context) {\n switch (code) {\n case ErrorCode.FILE_NOT_FOUND:\n return `Ensure the file exists at ${context.path} before attempting to access it`;\n case ErrorCode.FILE_EXISTS:\n return `File already exists at ${context.path}. Use a different path or delete the existing file first`;\n case ErrorCode.COMMAND_NOT_FOUND:\n return `Check that \"${context.command}\" is installed and available in the system PATH`;\n case ErrorCode.PROCESS_NOT_FOUND:\n return 'Verify the process ID is correct and the process has not already exited';\n case ErrorCode.INVALID_PROCESS_CWD:\n return `Verify the process working directory exists and is accessible: ${context.cwd}`;\n case ErrorCode.INVALID_PROCESS_ENVIRONMENT:\n return 'Verify process environment variable names and values are valid strings without NUL bytes';\n case ErrorCode.PROCESS_SPAWN_FAILED:\n return `Check that \"${context.command}\" exists, is executable, and can be started in the requested working directory`;\n case ErrorCode.INVALID_PROCESS_CURSOR:\n return 'Use a log cursor previously returned by this process log stream';\n case ErrorCode.STALE_PROCESS_HANDLE:\n return 'The process handle refers to an older runtime process. Reacquire the process by ID before retrying the operation';\n case ErrorCode.STALE_TERMINAL_HANDLE:\n return 'The terminal handle refers to an older runtime terminal. Reacquire the terminal by ID before retrying the operation';\n case ErrorCode.PROCESS_WAIT_TIMEOUT:\n return 'The process did not complete before the timeout. Continue streaming logs or kill the process if it is no longer needed';\n case ErrorCode.PROCESS_ABORTED:\n return 'The process operation was aborted by the caller. Retry with a new AbortSignal if needed';\n case ErrorCode.TERMINAL_NOT_FOUND:\n return `Verify terminal \"${context.terminalId}\" exists and has not been evicted`;\n case ErrorCode.INVALID_TERMINAL_CWD:\n return `Verify the terminal working directory exists and is accessible: ${context.cwd}`;\n case ErrorCode.INVALID_TERMINAL_CURSOR:\n return 'Use a cursor previously returned by this terminal stream';\n case ErrorCode.TERMINAL_CONTROL_ERROR:\n return `Terminal control operation failed for terminal \"${context.terminalId}\"`;\n case ErrorCode.PORT_NOT_EXPOSED:\n return `Port ${context.port} is not currently available for this operation`;\n case ErrorCode.PORT_ALREADY_EXPOSED:\n return `Port ${context.port} already has preview URL authorization or activation state`;\n case ErrorCode.PORT_IN_USE:\n return `Port ${context.port} is already in use by another service. Choose a different port`;\n case ErrorCode.INVALID_PORT:\n return `Port must be between 1 and 65535. Port ${context.port} is ${context.reason}`;\n case ErrorCode.GIT_REPOSITORY_NOT_FOUND:\n return 'Verify the repository URL is correct and accessible';\n case ErrorCode.GIT_AUTH_FAILED:\n return 'Check authentication credentials or use a public repository';\n case ErrorCode.GIT_BRANCH_NOT_FOUND:\n return `Branch \"${context.branch}\" does not exist in the repository. Check the branch name or use the default branch`;\n case ErrorCode.CONTROL_PROTOCOL_INCOMPATIBLE:\n return 'Refresh the sandbox control session metadata and reconnect with a compatible control protocol';\n case ErrorCode.INTERPRETER_NOT_READY:\n return context.retryAfter\n ? `Code interpreter is starting up. Retry after ${context.retryAfter} seconds`\n : 'Code interpreter is not ready. Please wait a moment and try again';\n case ErrorCode.CONTEXT_NOT_FOUND:\n return `Context \"${context.contextId}\" does not exist. Create a context first using createContext()`;\n case ErrorCode.VALIDATION_FAILED:\n return 'Check the request parameters and ensure they match the required format';\n case ErrorCode.NO_SPACE:\n return 'Not enough disk space available. Consider cleaning up temporary files or increasing storage';\n case ErrorCode.PERMISSION_DENIED:\n return 'Operation not permitted. Check file/directory permissions';\n case ErrorCode.IS_DIRECTORY:\n return `Cannot perform this operation on a directory. Path ${context.path} is a directory`;\n case ErrorCode.NOT_DIRECTORY:\n return `Expected a directory but found a file at ${context.path}`;\n case ErrorCode.RESOURCE_BUSY:\n return 'Resource is currently in use. Wait for the current operation to complete';\n case ErrorCode.READ_ONLY:\n return 'Cannot modify a read-only resource';\n case ErrorCode.SERVICE_NOT_RESPONDING:\n return 'Service is not responding. Check if the service is running and accessible';\n case ErrorCode.BACKUP_NOT_FOUND:\n return `Backup \"${context.backupId}\" does not exist. Verify the backup ID is correct`;\n case ErrorCode.BACKUP_EXPIRED:\n return `Backup \"${context.backupId}\" has expired. Create a new backup`;\n case ErrorCode.INVALID_BACKUP_CONFIG:\n return `Invalid backup configuration: ${context.reason}`;\n case ErrorCode.BACKUP_CREATE_FAILED:\n return 'Backup creation failed. Check that the directory exists and you have sufficient disk space';\n case ErrorCode.BACKUP_RESTORE_FAILED:\n return 'Backup restoration failed. The archive may be corrupted or the target directory may be in use';\n case ErrorCode.CONTAINER_UNAVAILABLE: {\n const reason = context.reason;\n switch (reason) {\n case 'container_starting':\n return 'The container is still starting. Retry the operation in a moment.';\n case 'container_unhealthy':\n return 'The container is temporarily unhealthy. Retry the operation in a moment.';\n case 'container_replaced':\n return 'The container runtime was replaced. Retry the operation to use the new container.';\n case 'rpc_upgrade_failed':\n return 'The container did not accept the RPC connection before the retry budget expired. Retry the operation in a moment.';\n default:\n return 'The container is not ready yet. Retry the operation in a moment.';\n }\n }\n case ErrorCode.OPERATION_INTERRUPTED:\n return context.retryable\n ? 'Retry the operation with the same idempotency key or operation inputs so the SDK can reconcile the previous attempt.'\n : 'The operation may have started before it was interrupted. Inspect application state before retrying.';\n case ErrorCode.RPC_TRANSPORT_ERROR: {\n const kind = context.kind;\n switch (kind) {\n case 'peer_closed':\n return 'The container closed the WebSocket mid-call (likely a container restart, eviction, or crash). Retry the call — the SDK will open a fresh connection.';\n case 'connection_failed':\n return 'The WebSocket connection failed. Retry the call; if the failure persists, check container health and network connectivity.';\n case 'upgrade_failed':\n return 'The WebSocket upgrade was rejected by the container. Verify the container is running and reachable on the configured port.';\n case 'invalid_frame':\n return 'The container sent a frame the RPC transport cannot handle. This usually indicates a version mismatch between the SDK and the container image.';\n case 'protocol_error':\n return 'The peer sent a malformed RPC message (could not parse the wire format). This usually indicates a version mismatch between the SDK and the container image.';\n case 'session_disposed':\n return 'The RPC session was disposed while a call was in flight. Avoid reusing stubs after disconnect(); the next method call will reconnect automatically.';\n default:\n return 'The RPC transport raised an error. Retry the call — the SDK will open a fresh connection.';\n }\n }\n // Generic fallback for other errors\n default:\n return undefined;\n }\n}\n","/**\n * Standard operation types\n */\nexport const Operation = {\n // File Operations\n FILE_READ: 'file.read',\n FILE_WRITE: 'file.write',\n FILE_DELETE: 'file.delete',\n FILE_MOVE: 'file.move',\n FILE_RENAME: 'file.rename',\n FILE_STAT: 'file.stat',\n DIRECTORY_CREATE: 'directory.create',\n DIRECTORY_LIST: 'directory.list',\n // Command Operations\n COMMAND_EXECUTE: 'command.execute',\n COMMAND_STREAM: 'command.stream',\n // Process Operations\n PROCESS_START: 'process.start',\n PROCESS_KILL: 'process.kill',\n PROCESS_LIST: 'process.list',\n PROCESS_GET: 'process.get',\n PROCESS_LOGS: 'process.logs',\n // Git Operations\n GIT_CLONE: 'git.clone',\n GIT_CHECKOUT: 'git.checkout',\n GIT_OPERATION: 'git.operation',\n // Backup Operations\n BACKUP_CREATE: 'backup.create',\n BACKUP_RESTORE: 'backup.restore',\n BACKUP_UNMOUNT: 'backup.unmount',\n // Code Interpreter\n CODE_EXECUTE: 'code.execute',\n CODE_CONTEXT_CREATE: 'code.context.create',\n CODE_CONTEXT_DELETE: 'code.context.delete'\n};\n"],"mappings":"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"}
|