From 2c981db8985363fc701cd9592a41701a07654c3d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Nov 2025 11:15:40 +0000 Subject: [PATCH] Version Packages --- .changeset/image-optimization.md | 22 ----------- examples/claude-code/Dockerfile | 2 +- examples/code-interpreter/Dockerfile | 2 +- examples/minimal/Dockerfile | 2 +- examples/openai-agents/Dockerfile | 2 +- examples/typescript-validator/Dockerfile | 2 +- package-lock.json | 48 ++++++++++++++++-------- packages/sandbox/CHANGELOG.md | 22 +++++++++++ packages/sandbox/package.json | 2 +- packages/sandbox/src/version.ts | 2 +- tests/e2e/test-worker/Dockerfile | 2 +- tests/e2e/test-worker/Dockerfile.python | 2 +- tests/integration/Dockerfile | 4 +- 13 files changed, 65 insertions(+), 49 deletions(-) delete mode 100644 .changeset/image-optimization.md diff --git a/.changeset/image-optimization.md b/.changeset/image-optimization.md deleted file mode 100644 index cfb19f90..00000000 --- a/.changeset/image-optimization.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -'@cloudflare/sandbox': minor ---- - -Add lean and Python image variants to reduce Docker image size - -**BREAKING CHANGE for Python users:** The default image no longer includes Python. - -- `cloudflare/sandbox:` - lean image without Python (~600-800MB) -- `cloudflare/sandbox:-python` - full image with Python + data science packages (~1.3GB) - -**Migration:** If using `CodeInterpreter.runCode()` with Python, update your Dockerfile: - -```dockerfile -# Before -FROM cloudflare/sandbox:0.5.6 - -# After -FROM cloudflare/sandbox:0.5.6-python -``` - -Without this change, Python execution will fail with `PYTHON_NOT_AVAILABLE` error. diff --git a/examples/claude-code/Dockerfile b/examples/claude-code/Dockerfile index ba760a71..e93893c7 100644 --- a/examples/claude-code/Dockerfile +++ b/examples/claude-code/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.io/cloudflare/sandbox:0.5.6 +FROM docker.io/cloudflare/sandbox:0.6.0 RUN npm install -g @anthropic-ai/claude-code ENV COMMAND_TIMEOUT_MS=300000 EXPOSE 3000 diff --git a/examples/code-interpreter/Dockerfile b/examples/code-interpreter/Dockerfile index 3545cf61..96168559 100644 --- a/examples/code-interpreter/Dockerfile +++ b/examples/code-interpreter/Dockerfile @@ -1 +1 @@ -FROM docker.io/cloudflare/sandbox:0.5.6 +FROM docker.io/cloudflare/sandbox:0.6.0 diff --git a/examples/minimal/Dockerfile b/examples/minimal/Dockerfile index 0ecf0fd0..91a977b4 100644 --- a/examples/minimal/Dockerfile +++ b/examples/minimal/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.io/cloudflare/sandbox:0.5.6 +FROM docker.io/cloudflare/sandbox:0.6.0 # Required during local development to access exposed ports EXPOSE 8080 diff --git a/examples/openai-agents/Dockerfile b/examples/openai-agents/Dockerfile index b38bcf05..ab98c6f5 100644 --- a/examples/openai-agents/Dockerfile +++ b/examples/openai-agents/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.io/cloudflare/sandbox:0.5.6 +FROM docker.io/cloudflare/sandbox:0.6.0 # Required during local development to access exposed ports EXPOSE 8080 diff --git a/examples/typescript-validator/Dockerfile b/examples/typescript-validator/Dockerfile index 569f7128..c3b4dc6d 100644 --- a/examples/typescript-validator/Dockerfile +++ b/examples/typescript-validator/Dockerfile @@ -1,5 +1,5 @@ # Use Cloudflare sandbox as base -FROM docker.io/cloudflare/sandbox:0.5.6 +FROM docker.io/cloudflare/sandbox:0.6.0 # Install esbuild for TypeScript bundling RUN npm install -g esbuild diff --git a/package-lock.json b/package-lock.json index bd909cba..59181920 100644 --- a/package-lock.json +++ b/package-lock.json @@ -401,6 +401,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -422,6 +423,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -561,6 +563,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1506,7 +1509,8 @@ "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20251126.0.tgz", "integrity": "sha512-DSeI1Q7JYmh5/D/tw5eZCjrKY34v69rwj63hHt60nSQW5QLwWCbj/lLtNz9f2EPa+JCACwpLXHgCXfzJ29x66w==", "devOptional": true, - "license": "MIT OR Apache-2.0" + "license": "MIT OR Apache-2.0", + "peer": true }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", @@ -2820,6 +2824,7 @@ "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -4289,6 +4294,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -4304,6 +4310,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -4313,6 +4320,7 @@ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -4439,6 +4447,7 @@ "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/utils": "3.2.4", "pathe": "^2.0.3", @@ -4454,6 +4463,7 @@ "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", @@ -4482,6 +4492,7 @@ "integrity": "sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/utils": "3.2.4", "fflate": "^0.8.2", @@ -4629,6 +4640,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -5374,6 +5386,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -5667,6 +5680,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -7601,6 +7615,7 @@ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "devOptional": true, "license": "MIT", + "peer": true, "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -7865,6 +7880,7 @@ "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", "devOptional": true, "license": "MPL-2.0", + "peer": true, "dependencies": { "detect-libc": "^2.0.3" }, @@ -7901,7 +7917,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -7922,7 +7937,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -7943,7 +7957,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -7964,7 +7977,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -7985,7 +7997,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8006,7 +8017,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8027,7 +8037,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8048,7 +8057,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8069,7 +8077,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8090,7 +8097,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8111,7 +8117,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8161,7 +8166,6 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", - "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -9730,6 +9734,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -9946,6 +9951,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9955,6 +9961,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -9966,8 +9973,7 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/react-katex": { "version": "3.1.0", @@ -10341,6 +10347,7 @@ "integrity": "sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@oxc-project/types": "=0.98.0", "@rolldown/pluginutils": "1.0.0-beta.51" @@ -11156,6 +11163,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -11355,6 +11363,7 @@ "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -11514,6 +11523,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11583,6 +11593,7 @@ "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", "license": "MIT", + "peer": true, "dependencies": { "pathe": "^2.0.3" } @@ -12024,6 +12035,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.4.tgz", "integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -12138,6 +12150,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -12170,6 +12183,7 @@ "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", @@ -12595,6 +12609,7 @@ "integrity": "sha512-Om5ns0Lyx/LKtYI04IV0bjIrkBgoFNg0p6urzr2asekJlfP18RqFzyqMFZKf0i9Gnjtz/JfAS/Ol6tjCe5JJsQ==", "hasInstallScript": true, "license": "Apache-2.0", + "peer": true, "bin": { "workerd": "bin/workerd" }, @@ -13358,6 +13373,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -13405,7 +13421,7 @@ }, "packages/sandbox": { "name": "@cloudflare/sandbox", - "version": "0.5.6", + "version": "0.6.0", "license": "Apache-2.0", "dependencies": { "@cloudflare/containers": "^0.0.30" diff --git a/packages/sandbox/CHANGELOG.md b/packages/sandbox/CHANGELOG.md index 550e9f20..466dc95f 100644 --- a/packages/sandbox/CHANGELOG.md +++ b/packages/sandbox/CHANGELOG.md @@ -1,5 +1,27 @@ # @cloudflare/sandbox +## 0.6.0 + +### Minor Changes + +- [#259](https://github.com/cloudflare/sandbox-sdk/pull/259) [`0a2cb93`](https://github.com/cloudflare/sandbox-sdk/commit/0a2cb931c7f02f119816478d972fe437092a2010) Thanks [@ghostwriternr](https://github.com/ghostwriternr)! - Add lean and Python image variants to reduce Docker image size + + **BREAKING CHANGE for Python users:** The default image no longer includes Python. + - `cloudflare/sandbox:` - lean image without Python (~600-800MB) + - `cloudflare/sandbox:-python` - full image with Python + data science packages (~1.3GB) + + **Migration:** If using `CodeInterpreter.runCode()` with Python, update your Dockerfile: + + ```dockerfile + # Before + FROM cloudflare/sandbox:0.6.0 + + # After + FROM cloudflare/sandbox:0.6.0-python + ``` + + Without this change, Python execution will fail with `PYTHON_NOT_AVAILABLE` error. + ## 0.5.6 ### Patch Changes diff --git a/packages/sandbox/package.json b/packages/sandbox/package.json index 1a75dd9c..2c567f8a 100644 --- a/packages/sandbox/package.json +++ b/packages/sandbox/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/sandbox", - "version": "0.5.6", + "version": "0.6.0", "repository": { "type": "git", "url": "https://github.com/cloudflare/sandbox-sdk" diff --git a/packages/sandbox/src/version.ts b/packages/sandbox/src/version.ts index 7cd5278b..4677ad6a 100644 --- a/packages/sandbox/src/version.ts +++ b/packages/sandbox/src/version.ts @@ -3,4 +3,4 @@ * This file is auto-updated by .github/changeset-version.ts during releases * DO NOT EDIT MANUALLY - Changes will be overwritten on the next version bump */ -export const SDK_VERSION = '0.5.6'; +export const SDK_VERSION = '0.6.0'; diff --git a/tests/e2e/test-worker/Dockerfile b/tests/e2e/test-worker/Dockerfile index d5fdb297..b141ea86 100644 --- a/tests/e2e/test-worker/Dockerfile +++ b/tests/e2e/test-worker/Dockerfile @@ -1,6 +1,6 @@ # Base image Dockerfile (no Python) # Used for testing Python-not-available error handling -FROM docker.io/cloudflare/sandbox-test:0.5.6 +FROM docker.io/cloudflare/sandbox-test:0.6.0 # Expose ports used for testing EXPOSE 8080 diff --git a/tests/e2e/test-worker/Dockerfile.python b/tests/e2e/test-worker/Dockerfile.python index 9353b3fa..06f31667 100644 --- a/tests/e2e/test-worker/Dockerfile.python +++ b/tests/e2e/test-worker/Dockerfile.python @@ -1,6 +1,6 @@ # Integration test Dockerfile # Uses the -python variant because E2E tests include Python code execution tests -FROM docker.io/cloudflare/sandbox-test:0.5.6-python +FROM docker.io/cloudflare/sandbox-test:0.6.0-python # Expose ports used for testing EXPOSE 8080 diff --git a/tests/integration/Dockerfile b/tests/integration/Dockerfile index a8a16579..1c314858 100644 --- a/tests/integration/Dockerfile +++ b/tests/integration/Dockerfile @@ -1,8 +1,8 @@ # This image is unique to this repo, and you'll never need it. # Whenever you're integrating with sandbox SDK in your own project, # you should use the official image instead: -# FROM docker.io/cloudflare/sandbox:0.5.6-python -FROM cloudflare/sandbox-test:0.5.6-python +# FROM docker.io/cloudflare/sandbox:0.6.0-python +FROM cloudflare/sandbox-test:0.6.0-python # Expose the ports you want to expose EXPOSE 8080