@cloudflare/sandbox 0.5.6 → 0.6.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 +54 -56
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +11 -6
- package/.turbo/turbo-build.log +0 -23
- package/CHANGELOG.md +0 -463
- package/src/clients/base-client.ts +0 -356
- package/src/clients/command-client.ts +0 -133
- package/src/clients/file-client.ts +0 -300
- package/src/clients/git-client.ts +0 -98
- package/src/clients/index.ts +0 -64
- package/src/clients/interpreter-client.ts +0 -339
- package/src/clients/port-client.ts +0 -105
- package/src/clients/process-client.ts +0 -198
- package/src/clients/sandbox-client.ts +0 -39
- package/src/clients/types.ts +0 -88
- package/src/clients/utility-client.ts +0 -156
- package/src/errors/adapter.ts +0 -238
- package/src/errors/classes.ts +0 -594
- package/src/errors/index.ts +0 -109
- package/src/file-stream.ts +0 -175
- package/src/index.ts +0 -121
- package/src/interpreter.ts +0 -168
- package/src/openai/index.ts +0 -465
- package/src/request-handler.ts +0 -184
- package/src/sandbox.ts +0 -1937
- package/src/security.ts +0 -119
- package/src/sse-parser.ts +0 -147
- package/src/storage-mount/credential-detection.ts +0 -41
- package/src/storage-mount/errors.ts +0 -51
- package/src/storage-mount/index.ts +0 -17
- package/src/storage-mount/provider-detection.ts +0 -93
- package/src/storage-mount/types.ts +0 -17
- package/src/version.ts +0 -6
- package/tests/base-client.test.ts +0 -582
- package/tests/command-client.test.ts +0 -444
- package/tests/file-client.test.ts +0 -831
- package/tests/file-stream.test.ts +0 -310
- package/tests/get-sandbox.test.ts +0 -172
- package/tests/git-client.test.ts +0 -455
- package/tests/openai-shell-editor.test.ts +0 -434
- package/tests/port-client.test.ts +0 -283
- package/tests/process-client.test.ts +0 -649
- package/tests/request-handler.test.ts +0 -292
- package/tests/sandbox.test.ts +0 -890
- package/tests/sse-parser.test.ts +0 -291
- package/tests/storage-mount/credential-detection.test.ts +0 -119
- package/tests/storage-mount/provider-detection.test.ts +0 -77
- package/tests/utility-client.test.ts +0 -339
- package/tests/version.test.ts +0 -16
- package/tests/wrangler.jsonc +0 -35
- package/tsconfig.json +0 -11
- package/tsdown.config.ts +0 -13
- package/vitest.config.ts +0 -31
package/Dockerfile
CHANGED
|
@@ -25,6 +25,9 @@ FROM node:20-alpine AS builder
|
|
|
25
25
|
|
|
26
26
|
WORKDIR /app
|
|
27
27
|
|
|
28
|
+
# Install Bun runtime (needed for sandbox-container build script)
|
|
29
|
+
COPY --from=oven/bun:1-alpine /usr/local/bin/bun /usr/local/bin/bun
|
|
30
|
+
|
|
28
31
|
# Copy pruned lockfile and package.json files (for Docker layer caching)
|
|
29
32
|
COPY --from=pruner /app/out/json/ .
|
|
30
33
|
COPY --from=pruner /app/out/package-lock.json ./package-lock.json
|
|
@@ -41,24 +44,7 @@ COPY --from=pruner /app/out/full/ .
|
|
|
41
44
|
RUN npx turbo run build
|
|
42
45
|
|
|
43
46
|
# ============================================================================
|
|
44
|
-
# Stage 3:
|
|
45
|
-
# ============================================================================
|
|
46
|
-
FROM node:20-alpine AS prod-deps
|
|
47
|
-
|
|
48
|
-
WORKDIR /app
|
|
49
|
-
|
|
50
|
-
# Copy package files from builder
|
|
51
|
-
COPY --from=builder /app/package.json ./package.json
|
|
52
|
-
COPY --from=builder /app/package-lock.json ./package-lock.json
|
|
53
|
-
COPY --from=builder /app/packages ./packages
|
|
54
|
-
COPY --from=builder /app/tooling ./tooling
|
|
55
|
-
|
|
56
|
-
# Install ONLY production dependencies (excludes typescript, @types/*, etc.)
|
|
57
|
-
RUN --mount=type=cache,target=/root/.npm \
|
|
58
|
-
CI=true npm ci --production
|
|
59
|
-
|
|
60
|
-
# ============================================================================
|
|
61
|
-
# Stage 4: Download pre-built Python 3.11.14
|
|
47
|
+
# Stage 3: Download pre-built Python 3.11.14
|
|
62
48
|
# ============================================================================
|
|
63
49
|
FROM ubuntu:22.04 AS python-builder
|
|
64
50
|
|
|
@@ -100,9 +86,9 @@ RUN --mount=type=cache,target=/tmp/python-cache \
|
|
|
100
86
|
rm -rf /tmp/cpython-*
|
|
101
87
|
|
|
102
88
|
# ============================================================================
|
|
103
|
-
# Stage
|
|
89
|
+
# Stage 4: Runtime base - Ubuntu 22.04 with Node.js and Bun (no Python)
|
|
104
90
|
# ============================================================================
|
|
105
|
-
FROM ubuntu:22.04 AS runtime
|
|
91
|
+
FROM ubuntu:22.04 AS runtime-base
|
|
106
92
|
|
|
107
93
|
# Accept version as build argument (passed from npm_package_version)
|
|
108
94
|
ARG SANDBOX_VERSION=unknown
|
|
@@ -128,23 +114,6 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
|
128
114
|
# Enable FUSE in container - allow non-root users to use FUSE
|
|
129
115
|
RUN sed -i 's/#user_allow_other/user_allow_other/' /etc/fuse.conf
|
|
130
116
|
|
|
131
|
-
# Copy pre-built Python from python-builder stage
|
|
132
|
-
COPY --from=python-builder /usr/local/python /usr/local/python
|
|
133
|
-
|
|
134
|
-
# Create symlinks and update shared library cache
|
|
135
|
-
RUN ln -s /usr/local/python/bin/python3.11 /usr/local/bin/python3.11 && \
|
|
136
|
-
ln -s /usr/local/python/bin/python3 /usr/local/bin/python3 && \
|
|
137
|
-
ln -s /usr/local/python/bin/pip3 /usr/local/bin/pip3 && \
|
|
138
|
-
echo "/usr/local/python/lib" > /etc/ld.so.conf.d/python.conf && \
|
|
139
|
-
ldconfig
|
|
140
|
-
|
|
141
|
-
# Set Python 3.11 as default python3
|
|
142
|
-
RUN update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.11 1
|
|
143
|
-
|
|
144
|
-
# Install Python packages
|
|
145
|
-
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
146
|
-
pip3 install --no-cache-dir matplotlib numpy pandas ipython
|
|
147
|
-
|
|
148
117
|
# Install Node.js 20 LTS from official Node image
|
|
149
118
|
COPY --from=node:20-slim /usr/local/bin/node /usr/local/bin/node
|
|
150
119
|
COPY --from=node:20-slim /usr/local/lib/node_modules /usr/local/lib/node_modules
|
|
@@ -157,25 +126,13 @@ COPY --from=oven/bun:1 /usr/local/bin/bun /usr/local/bin/bun
|
|
|
157
126
|
# Set up runtime container server directory
|
|
158
127
|
WORKDIR /container-server
|
|
159
128
|
|
|
160
|
-
# Copy
|
|
161
|
-
COPY --from=builder /app/packages/sandbox-container/dist ./dist
|
|
162
|
-
COPY --from=builder /app/packages/sandbox-container/
|
|
129
|
+
# Copy bundled container server (all dependencies inlined, no node_modules needed)
|
|
130
|
+
COPY --from=builder /app/packages/sandbox-container/dist/index.js ./dist/
|
|
131
|
+
COPY --from=builder /app/packages/sandbox-container/dist/index.js.map ./dist/
|
|
163
132
|
|
|
164
|
-
# Copy
|
|
165
|
-
COPY --from=builder /app/packages/sandbox-container/
|
|
166
|
-
|
|
167
|
-
# Copy production-only node_modules (excludes typescript, @types/*, etc.)
|
|
168
|
-
# Includes: @repo/shared, zod, esbuild (runtime dependencies)
|
|
169
|
-
COPY --from=prod-deps /app/node_modules ./node_modules
|
|
170
|
-
|
|
171
|
-
# Copy workspace packages
|
|
172
|
-
COPY --from=prod-deps /app/packages/shared/dist ./packages/shared/dist
|
|
173
|
-
COPY --from=prod-deps /app/packages/shared/package.json ./packages/shared/package.json
|
|
174
|
-
|
|
175
|
-
# Configure process pool sizes (minimum only)
|
|
176
|
-
ENV PYTHON_POOL_MIN_SIZE=3
|
|
177
|
-
ENV JAVASCRIPT_POOL_MIN_SIZE=3
|
|
178
|
-
ENV TYPESCRIPT_POOL_MIN_SIZE=3
|
|
133
|
+
# Copy bundled JavaScript executor
|
|
134
|
+
COPY --from=builder /app/packages/sandbox-container/dist/runtime/executors/javascript/node_executor.js ./dist/runtime/executors/javascript/
|
|
135
|
+
COPY --from=builder /app/packages/sandbox-container/dist/runtime/executors/javascript/node_executor.js.map ./dist/runtime/executors/javascript/
|
|
179
136
|
|
|
180
137
|
# Create clean workspace directory for user code
|
|
181
138
|
RUN mkdir -p /workspace
|
|
@@ -187,5 +144,46 @@ EXPOSE 3000
|
|
|
187
144
|
COPY packages/sandbox/startup.sh ./
|
|
188
145
|
RUN chmod +x startup.sh
|
|
189
146
|
|
|
190
|
-
#
|
|
147
|
+
# ============================================================================
|
|
148
|
+
# Stage 5a: Default image - lean, no Python
|
|
149
|
+
# ============================================================================
|
|
150
|
+
FROM runtime-base AS default
|
|
151
|
+
|
|
152
|
+
# Disable Python pool (Python not available in this image)
|
|
153
|
+
ENV PYTHON_POOL_MIN_SIZE=0
|
|
154
|
+
ENV JAVASCRIPT_POOL_MIN_SIZE=3
|
|
155
|
+
ENV TYPESCRIPT_POOL_MIN_SIZE=3
|
|
156
|
+
|
|
157
|
+
CMD ["/container-server/startup.sh"]
|
|
158
|
+
|
|
159
|
+
# ============================================================================
|
|
160
|
+
# Stage 5b: Python image - full, with Python + data science packages
|
|
161
|
+
# ============================================================================
|
|
162
|
+
FROM runtime-base AS python
|
|
163
|
+
|
|
164
|
+
# Copy pre-built Python from python-builder stage
|
|
165
|
+
COPY --from=python-builder /usr/local/python /usr/local/python
|
|
166
|
+
|
|
167
|
+
# Create symlinks and update shared library cache
|
|
168
|
+
RUN ln -s /usr/local/python/bin/python3.11 /usr/local/bin/python3.11 && \
|
|
169
|
+
ln -s /usr/local/python/bin/python3 /usr/local/bin/python3 && \
|
|
170
|
+
ln -s /usr/local/python/bin/pip3 /usr/local/bin/pip3 && \
|
|
171
|
+
echo "/usr/local/python/lib" > /etc/ld.so.conf.d/python.conf && \
|
|
172
|
+
ldconfig
|
|
173
|
+
|
|
174
|
+
# Set Python 3.11 as default python3
|
|
175
|
+
RUN update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.11 1
|
|
176
|
+
|
|
177
|
+
# Install Python packages for data science and code interpreter
|
|
178
|
+
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
179
|
+
pip3 install --no-cache-dir matplotlib numpy pandas ipython
|
|
180
|
+
|
|
181
|
+
# Copy Python executor
|
|
182
|
+
COPY --from=builder /app/packages/sandbox-container/src/runtime/executors/python/ipython_executor.py ./dist/runtime/executors/python/
|
|
183
|
+
|
|
184
|
+
# Enable all interpreter pools
|
|
185
|
+
ENV PYTHON_POOL_MIN_SIZE=3
|
|
186
|
+
ENV JAVASCRIPT_POOL_MIN_SIZE=3
|
|
187
|
+
ENV TYPESCRIPT_POOL_MIN_SIZE=3
|
|
188
|
+
|
|
191
189
|
CMD ["/container-server/startup.sh"]
|
package/dist/index.d.ts
CHANGED
|
@@ -193,6 +193,7 @@ declare const ErrorCode: {
|
|
|
193
193
|
readonly INTERPRETER_NOT_READY: "INTERPRETER_NOT_READY";
|
|
194
194
|
readonly CONTEXT_NOT_FOUND: "CONTEXT_NOT_FOUND";
|
|
195
195
|
readonly CODE_EXECUTION_ERROR: "CODE_EXECUTION_ERROR";
|
|
196
|
+
readonly PYTHON_NOT_AVAILABLE: "PYTHON_NOT_AVAILABLE";
|
|
196
197
|
readonly VALIDATION_FAILED: "VALIDATION_FAILED";
|
|
197
198
|
readonly INVALID_JSON_RESPONSE: "INVALID_JSON_RESPONSE";
|
|
198
199
|
readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["ExecuteRequest","Record","StartProcessRequest","ReadFileRequest","WriteFileRequest","DeleteFileRequest","RenameFileRequest","MoveFileRequest","MkdirRequest","FileExistsRequest","ExposePortRequest","GitCheckoutRequest","SessionCreateRequest","SessionDeleteRequest","ErrorCode"],"sources":["../../shared/dist/request-types.d.ts","../src/file-stream.ts","../src/interpreter.ts","../src/request-handler.ts","../src/sse-parser.ts","../../shared/dist/errors/codes.d.ts","../src/storage-mount/errors.ts"],"sourcesContent":["/**\n * Request types for API calls to the container\n * These types enforce the contract between the Durable Object client and container handlers\n *\n * IMPORTANT: These types must match the Zod schemas in:\n * @repo/sandbox-container/src/validation/schemas.ts\n */\n/**\n * Request to execute a command\n */\nexport interface ExecuteRequest {\n command: string;\n sessionId?: string;\n background?: boolean;\n timeoutMs?: number;\n env?: Record<string, string>;\n cwd?: string;\n}\n/**\n * Request to start a background process\n * Uses flat structure consistent with other endpoints\n */\nexport interface StartProcessRequest {\n command: string;\n sessionId?: string;\n processId?: string;\n timeoutMs?: number;\n env?: Record<string, string>;\n cwd?: string;\n encoding?: string;\n autoCleanup?: boolean;\n}\n/**\n * Request to read a file\n */\nexport interface ReadFileRequest {\n path: string;\n encoding?: string;\n sessionId?: string;\n}\n/**\n * Request to write a file\n */\nexport interface WriteFileRequest {\n path: string;\n content: string;\n encoding?: string;\n sessionId?: string;\n}\n/**\n * Request to delete a file\n */\nexport interface DeleteFileRequest {\n path: string;\n sessionId?: string;\n}\n/**\n * Request to rename a file\n */\nexport interface RenameFileRequest {\n oldPath: string;\n newPath: string;\n sessionId?: string;\n}\n/**\n * Request to move a file\n */\nexport interface MoveFileRequest {\n sourcePath: string;\n destinationPath: string;\n sessionId?: string;\n}\n/**\n * Request to create a directory\n */\nexport interface MkdirRequest {\n path: string;\n recursive?: boolean;\n sessionId?: string;\n}\n/**\n * Request to check if a file or directory exists\n */\nexport interface FileExistsRequest {\n path: string;\n sessionId?: string;\n}\n/**\n * Request to expose a port\n */\nexport interface ExposePortRequest {\n port: number;\n name?: string;\n}\n/**\n * Request to clone a Git repository\n */\nexport interface GitCheckoutRequest {\n repoUrl: string;\n branch?: string;\n targetDir?: string;\n sessionId?: string;\n}\n/**\n * Request to create a session\n */\nexport interface SessionCreateRequest {\n id?: string;\n name?: string;\n env?: Record<string, string>;\n cwd?: string;\n}\n/**\n * Request to delete a session\n */\nexport interface SessionDeleteRequest {\n sessionId: string;\n}\n//# sourceMappingURL=request-types.d.ts.map","/**\n * Centralized error code registry\n * Each code maps to a specific error type with consistent semantics\n */\nexport declare const ErrorCode: {\n readonly FILE_NOT_FOUND: \"FILE_NOT_FOUND\";\n readonly PERMISSION_DENIED: \"PERMISSION_DENIED\";\n readonly FILE_EXISTS: \"FILE_EXISTS\";\n readonly IS_DIRECTORY: \"IS_DIRECTORY\";\n readonly NOT_DIRECTORY: \"NOT_DIRECTORY\";\n readonly NO_SPACE: \"NO_SPACE\";\n readonly TOO_MANY_FILES: \"TOO_MANY_FILES\";\n readonly RESOURCE_BUSY: \"RESOURCE_BUSY\";\n readonly READ_ONLY: \"READ_ONLY\";\n readonly NAME_TOO_LONG: \"NAME_TOO_LONG\";\n readonly TOO_MANY_LINKS: \"TOO_MANY_LINKS\";\n readonly FILESYSTEM_ERROR: \"FILESYSTEM_ERROR\";\n readonly COMMAND_NOT_FOUND: \"COMMAND_NOT_FOUND\";\n readonly COMMAND_PERMISSION_DENIED: \"COMMAND_PERMISSION_DENIED\";\n readonly INVALID_COMMAND: \"INVALID_COMMAND\";\n readonly COMMAND_EXECUTION_ERROR: \"COMMAND_EXECUTION_ERROR\";\n readonly STREAM_START_ERROR: \"STREAM_START_ERROR\";\n readonly PROCESS_NOT_FOUND: \"PROCESS_NOT_FOUND\";\n readonly PROCESS_PERMISSION_DENIED: \"PROCESS_PERMISSION_DENIED\";\n readonly PROCESS_ERROR: \"PROCESS_ERROR\";\n readonly PORT_ALREADY_EXPOSED: \"PORT_ALREADY_EXPOSED\";\n readonly PORT_IN_USE: \"PORT_IN_USE\";\n readonly PORT_NOT_EXPOSED: \"PORT_NOT_EXPOSED\";\n readonly INVALID_PORT_NUMBER: \"INVALID_PORT_NUMBER\";\n readonly INVALID_PORT: \"INVALID_PORT\";\n readonly SERVICE_NOT_RESPONDING: \"SERVICE_NOT_RESPONDING\";\n readonly PORT_OPERATION_ERROR: \"PORT_OPERATION_ERROR\";\n readonly CUSTOM_DOMAIN_REQUIRED: \"CUSTOM_DOMAIN_REQUIRED\";\n readonly GIT_REPOSITORY_NOT_FOUND: \"GIT_REPOSITORY_NOT_FOUND\";\n readonly GIT_BRANCH_NOT_FOUND: \"GIT_BRANCH_NOT_FOUND\";\n readonly GIT_AUTH_FAILED: \"GIT_AUTH_FAILED\";\n readonly GIT_NETWORK_ERROR: \"GIT_NETWORK_ERROR\";\n readonly INVALID_GIT_URL: \"INVALID_GIT_URL\";\n readonly GIT_CLONE_FAILED: \"GIT_CLONE_FAILED\";\n readonly GIT_CHECKOUT_FAILED: \"GIT_CHECKOUT_FAILED\";\n readonly GIT_OPERATION_FAILED: \"GIT_OPERATION_FAILED\";\n readonly BUCKET_MOUNT_ERROR: \"BUCKET_MOUNT_ERROR\";\n readonly S3FS_MOUNT_ERROR: \"S3FS_MOUNT_ERROR\";\n readonly MISSING_CREDENTIALS: \"MISSING_CREDENTIALS\";\n readonly INVALID_MOUNT_CONFIG: \"INVALID_MOUNT_CONFIG\";\n readonly INTERPRETER_NOT_READY: \"INTERPRETER_NOT_READY\";\n readonly CONTEXT_NOT_FOUND: \"CONTEXT_NOT_FOUND\";\n readonly CODE_EXECUTION_ERROR: \"CODE_EXECUTION_ERROR\";\n readonly VALIDATION_FAILED: \"VALIDATION_FAILED\";\n readonly INVALID_JSON_RESPONSE: \"INVALID_JSON_RESPONSE\";\n readonly UNKNOWN_ERROR: \"UNKNOWN_ERROR\";\n readonly INTERNAL_ERROR: \"INTERNAL_ERROR\";\n};\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n//# sourceMappingURL=codes.d.ts.map"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["ExecuteRequest","Record","StartProcessRequest","ReadFileRequest","WriteFileRequest","DeleteFileRequest","RenameFileRequest","MoveFileRequest","MkdirRequest","FileExistsRequest","ExposePortRequest","GitCheckoutRequest","SessionCreateRequest","SessionDeleteRequest","ErrorCode"],"sources":["../../shared/dist/request-types.d.ts","../src/file-stream.ts","../src/interpreter.ts","../src/request-handler.ts","../src/sse-parser.ts","../../shared/dist/errors/codes.d.ts","../src/storage-mount/errors.ts"],"sourcesContent":["/**\n * Request types for API calls to the container\n * These types enforce the contract between the Durable Object client and container handlers\n *\n * IMPORTANT: These types must match the Zod schemas in:\n * @repo/sandbox-container/src/validation/schemas.ts\n */\n/**\n * Request to execute a command\n */\nexport interface ExecuteRequest {\n command: string;\n sessionId?: string;\n background?: boolean;\n timeoutMs?: number;\n env?: Record<string, string>;\n cwd?: string;\n}\n/**\n * Request to start a background process\n * Uses flat structure consistent with other endpoints\n */\nexport interface StartProcessRequest {\n command: string;\n sessionId?: string;\n processId?: string;\n timeoutMs?: number;\n env?: Record<string, string>;\n cwd?: string;\n encoding?: string;\n autoCleanup?: boolean;\n}\n/**\n * Request to read a file\n */\nexport interface ReadFileRequest {\n path: string;\n encoding?: string;\n sessionId?: string;\n}\n/**\n * Request to write a file\n */\nexport interface WriteFileRequest {\n path: string;\n content: string;\n encoding?: string;\n sessionId?: string;\n}\n/**\n * Request to delete a file\n */\nexport interface DeleteFileRequest {\n path: string;\n sessionId?: string;\n}\n/**\n * Request to rename a file\n */\nexport interface RenameFileRequest {\n oldPath: string;\n newPath: string;\n sessionId?: string;\n}\n/**\n * Request to move a file\n */\nexport interface MoveFileRequest {\n sourcePath: string;\n destinationPath: string;\n sessionId?: string;\n}\n/**\n * Request to create a directory\n */\nexport interface MkdirRequest {\n path: string;\n recursive?: boolean;\n sessionId?: string;\n}\n/**\n * Request to check if a file or directory exists\n */\nexport interface FileExistsRequest {\n path: string;\n sessionId?: string;\n}\n/**\n * Request to expose a port\n */\nexport interface ExposePortRequest {\n port: number;\n name?: string;\n}\n/**\n * Request to clone a Git repository\n */\nexport interface GitCheckoutRequest {\n repoUrl: string;\n branch?: string;\n targetDir?: string;\n sessionId?: string;\n}\n/**\n * Request to create a session\n */\nexport interface SessionCreateRequest {\n id?: string;\n name?: string;\n env?: Record<string, string>;\n cwd?: string;\n}\n/**\n * Request to delete a session\n */\nexport interface SessionDeleteRequest {\n sessionId: string;\n}\n//# sourceMappingURL=request-types.d.ts.map","/**\n * Centralized error code registry\n * Each code maps to a specific error type with consistent semantics\n */\nexport declare const ErrorCode: {\n readonly FILE_NOT_FOUND: \"FILE_NOT_FOUND\";\n readonly PERMISSION_DENIED: \"PERMISSION_DENIED\";\n readonly FILE_EXISTS: \"FILE_EXISTS\";\n readonly IS_DIRECTORY: \"IS_DIRECTORY\";\n readonly NOT_DIRECTORY: \"NOT_DIRECTORY\";\n readonly NO_SPACE: \"NO_SPACE\";\n readonly TOO_MANY_FILES: \"TOO_MANY_FILES\";\n readonly RESOURCE_BUSY: \"RESOURCE_BUSY\";\n readonly READ_ONLY: \"READ_ONLY\";\n readonly NAME_TOO_LONG: \"NAME_TOO_LONG\";\n readonly TOO_MANY_LINKS: \"TOO_MANY_LINKS\";\n readonly FILESYSTEM_ERROR: \"FILESYSTEM_ERROR\";\n readonly COMMAND_NOT_FOUND: \"COMMAND_NOT_FOUND\";\n readonly COMMAND_PERMISSION_DENIED: \"COMMAND_PERMISSION_DENIED\";\n readonly INVALID_COMMAND: \"INVALID_COMMAND\";\n readonly COMMAND_EXECUTION_ERROR: \"COMMAND_EXECUTION_ERROR\";\n readonly STREAM_START_ERROR: \"STREAM_START_ERROR\";\n readonly PROCESS_NOT_FOUND: \"PROCESS_NOT_FOUND\";\n readonly PROCESS_PERMISSION_DENIED: \"PROCESS_PERMISSION_DENIED\";\n readonly PROCESS_ERROR: \"PROCESS_ERROR\";\n readonly PORT_ALREADY_EXPOSED: \"PORT_ALREADY_EXPOSED\";\n readonly PORT_IN_USE: \"PORT_IN_USE\";\n readonly PORT_NOT_EXPOSED: \"PORT_NOT_EXPOSED\";\n readonly INVALID_PORT_NUMBER: \"INVALID_PORT_NUMBER\";\n readonly INVALID_PORT: \"INVALID_PORT\";\n readonly SERVICE_NOT_RESPONDING: \"SERVICE_NOT_RESPONDING\";\n readonly PORT_OPERATION_ERROR: \"PORT_OPERATION_ERROR\";\n readonly CUSTOM_DOMAIN_REQUIRED: \"CUSTOM_DOMAIN_REQUIRED\";\n readonly GIT_REPOSITORY_NOT_FOUND: \"GIT_REPOSITORY_NOT_FOUND\";\n readonly GIT_BRANCH_NOT_FOUND: \"GIT_BRANCH_NOT_FOUND\";\n readonly GIT_AUTH_FAILED: \"GIT_AUTH_FAILED\";\n readonly GIT_NETWORK_ERROR: \"GIT_NETWORK_ERROR\";\n readonly INVALID_GIT_URL: \"INVALID_GIT_URL\";\n readonly GIT_CLONE_FAILED: \"GIT_CLONE_FAILED\";\n readonly GIT_CHECKOUT_FAILED: \"GIT_CHECKOUT_FAILED\";\n readonly GIT_OPERATION_FAILED: \"GIT_OPERATION_FAILED\";\n readonly BUCKET_MOUNT_ERROR: \"BUCKET_MOUNT_ERROR\";\n readonly S3FS_MOUNT_ERROR: \"S3FS_MOUNT_ERROR\";\n readonly MISSING_CREDENTIALS: \"MISSING_CREDENTIALS\";\n readonly INVALID_MOUNT_CONFIG: \"INVALID_MOUNT_CONFIG\";\n readonly INTERPRETER_NOT_READY: \"INTERPRETER_NOT_READY\";\n readonly CONTEXT_NOT_FOUND: \"CONTEXT_NOT_FOUND\";\n readonly CODE_EXECUTION_ERROR: \"CODE_EXECUTION_ERROR\";\n readonly PYTHON_NOT_AVAILABLE: \"PYTHON_NOT_AVAILABLE\";\n readonly VALIDATION_FAILED: \"VALIDATION_FAILED\";\n readonly INVALID_JSON_RESPONSE: \"INVALID_JSON_RESPONSE\";\n readonly UNKNOWN_ERROR: \"UNKNOWN_ERROR\";\n readonly INTERNAL_ERROR: \"INTERNAL_ERROR\";\n};\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n//# sourceMappingURL=codes.d.ts.map"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -50,6 +50,7 @@ const ErrorCode = {
|
|
|
50
50
|
INTERPRETER_NOT_READY: "INTERPRETER_NOT_READY",
|
|
51
51
|
CONTEXT_NOT_FOUND: "CONTEXT_NOT_FOUND",
|
|
52
52
|
CODE_EXECUTION_ERROR: "CODE_EXECUTION_ERROR",
|
|
53
|
+
PYTHON_NOT_AVAILABLE: "PYTHON_NOT_AVAILABLE",
|
|
53
54
|
VALIDATION_FAILED: "VALIDATION_FAILED",
|
|
54
55
|
INVALID_JSON_RESPONSE: "INVALID_JSON_RESPONSE",
|
|
55
56
|
UNKNOWN_ERROR: "UNKNOWN_ERROR",
|
|
@@ -93,6 +94,7 @@ const ERROR_STATUS_MAP = {
|
|
|
93
94
|
[ErrorCode.RESOURCE_BUSY]: 409,
|
|
94
95
|
[ErrorCode.SERVICE_NOT_RESPONDING]: 502,
|
|
95
96
|
[ErrorCode.GIT_NETWORK_ERROR]: 502,
|
|
97
|
+
[ErrorCode.PYTHON_NOT_AVAILABLE]: 501,
|
|
96
98
|
[ErrorCode.INTERPRETER_NOT_READY]: 503,
|
|
97
99
|
[ErrorCode.NO_SPACE]: 500,
|
|
98
100
|
[ErrorCode.TOO_MANY_FILES]: 500,
|
|
@@ -2061,7 +2063,7 @@ function resolveS3fsOptions(provider, userOptions) {
|
|
|
2061
2063
|
* This file is auto-updated by .github/changeset-version.ts during releases
|
|
2062
2064
|
* DO NOT EDIT MANUALLY - Changes will be overwritten on the next version bump
|
|
2063
2065
|
*/
|
|
2064
|
-
const SDK_VERSION = "0.
|
|
2066
|
+
const SDK_VERSION = "0.6.1";
|
|
2065
2067
|
|
|
2066
2068
|
//#endregion
|
|
2067
2069
|
//#region src/sandbox.ts
|