diff --git a/Dockerfile b/Dockerfile index bef9241..f26016f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -61,13 +61,25 @@ RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \ apt-get install -y nodejs && \ rm -rf /var/lib/apt/lists/* -# Install Happy Coder and Claude Code globally via npm -RUN npm install -g happy-coder @anthropic-ai/claude-code +# Install Happy Coder globally via npm +RUN npm install -g happy-coder # Cache-bust: tools below fetch "latest" at build time — a changing ARG # forces Docker to re-run these layers instead of serving stale cache. ARG TOOLS_CACHEBUST=0 +# Install Claude Code native binary (direct download with checksum verification) +RUN CLAUDE_GCS="https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases" && \ + CLAUDE_VERSION=$(curl -fsSL "$CLAUDE_GCS/latest") && \ + echo "Installing Claude Code ${CLAUDE_VERSION}..." && \ + curl -fsSL "$CLAUDE_GCS/$CLAUDE_VERSION/manifest.json" -o /tmp/manifest.json && \ + CHECKSUM=$(jq -r '.platforms["linux-x64"].checksum' /tmp/manifest.json) && \ + curl -fsSL -o /usr/local/bin/claude "$CLAUDE_GCS/$CLAUDE_VERSION/linux-x64/claude" && \ + echo "$CHECKSUM /usr/local/bin/claude" | sha256sum -c && \ + chmod +x /usr/local/bin/claude && \ + rm /tmp/manifest.json && \ + claude --version + # Install OpenCode AI coding agent RUN OPENCODE_VERSION=$(curl -sL https://api.github.com/repos/opencode-ai/opencode/releases/latest | jq -r '.tag_name') && \ curl -fsSL "https://github.com/opencode-ai/opencode/releases/download/${OPENCODE_VERSION}/opencode-linux-x86_64.tar.gz" | \