diff --git a/deps/db-sync/package.json b/deps/db-sync/package.json index df9443819c..b740f4d892 100644 --- a/deps/db-sync/package.json +++ b/deps/db-sync/package.json @@ -20,7 +20,7 @@ "deploy-staging": "export SENTRY_RELEASE=$(git rev-parse HEAD) && yarn clean && yarn release && yarn sentry:sourcemaps && cd ./worker && wrangler deploy --env staging" }, "dependencies": { - "@cloudflare/sandbox": "0.7.0", + "@cloudflare/sandbox": "0.7.5", "@fly/sprites": "^0.0.1", "@sentry/cloudflare": "^10.38.0", "@sentry/node": "^10.38.0", diff --git a/deps/db-sync/worker/Dockerfile.sandbox-agent b/deps/db-sync/worker/Dockerfile.sandbox-agent index c1ea5f13a3..4df88e783c 100644 --- a/deps/db-sync/worker/Dockerfile.sandbox-agent +++ b/deps/db-sync/worker/Dockerfile.sandbox-agent @@ -1,9 +1,48 @@ FROM docker.io/cloudflare/sandbox:0.7.0 -WORKDIR /workspace -# RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/latest/install.sh | sh -# Pre-install agents -# RUN sandbox-agent install-agent codex +ENV DEBIAN_FRONTEND=noninteractive + +# System deps + Java 21 +RUN apt-get update && apt-get install -y --no-install-recommends \ + openjdk-21-jdk \ + && rm -rf /var/lib/apt/lists/* + +# Install Node.js 22 +# The base image has Node 20, we need to replace it with Node 22 +# Using direct binary download for reliability +ENV NODE_VERSION=22.20.0 +RUN ARCH="$(dpkg --print-architecture)" \ + && case "${ARCH}" in \ + amd64) NODE_ARCH="x64" ;; \ + arm64) NODE_ARCH="arm64" ;; \ + *) echo "Unsupported architecture: ${ARCH}" >&2; exit 1 ;; \ + esac \ + && apt-get update && apt-get install -y xz-utils ca-certificates rclone tmux vim \ + && curl -fsSLk https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz -o /tmp/node.tar.xz \ + && tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 \ + && rm /tmp/node.tar.xz \ + && node --version \ + && npm --version + +# Prefer corepack over "npm i -g yarn" +RUN corepack enable +# Optionally pin yarn (pick a version you want) +# RUN corepack prepare yarn@4.6.0 --activate + +# Clojure +RUN curl -fsSL -o /tmp/linux-install.sh \ + https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh \ + && chmod +x /tmp/linux-install.sh \ + && /tmp/linux-install.sh \ + && rm -f /tmp/linux-install.sh + +# Babashka (actually run installer) +RUN curl -fsSL https://raw.githubusercontent.com/babashka/babashka/master/install | bash + +WORKDIR /workspace + +# sandbox-agent + codex agent +RUN curl -fsSL https://releases.rivet.dev/sandbox-agent/0.1.5/install.sh | sh \ + && sandbox-agent install-agent codex -# Expose port for local dev (wrangler dev requires EXPOSE directives) EXPOSE 2468 diff --git a/deps/db-sync/worker/wrangler.toml b/deps/db-sync/worker/wrangler.toml index defe07cfb3..a5effd4043 100644 --- a/deps/db-sync/worker/wrangler.toml +++ b/deps/db-sync/worker/wrangler.toml @@ -10,7 +10,7 @@ instance_type = "lite" max_instances = 1 [containers.settings] -idle_timeout = "10m" +idle_timeout = "1h" [version_metadata] binding = "CF_VERSION_METADATA"