# Claude CLI Sandbox Environment with MCP Permission Support
FROM node:20-slim

# Install system dependencies for Playwright/Chromium (as root)
RUN apt-get update && apt-get install -y --no-install-recommends \
    # Playwright dependencies
    libglib2.0-0 \
    libnss3 \
    libnspr4 \
    libdbus-1-3 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    libcups2 \
    libexpat1 \
    libxcb1 \
    libxkbcommon0 \
    libatspi2.0-0 \
    libx11-6 \
    libxcomposite1 \
    libxdamage1 \
    libxext6 \
    libxfixes3 \
    libxrandr2 \
    libgbm1 \
    libcairo2 \
    libpango-1.0-0 \
    libasound2 \
    # Additional useful tools
    git \
    curl \
    && rm -rf /var/lib/apt/lists/*

# Install Claude CLI globally
RUN npm install -g @anthropic-ai/claude-code

# Install MCP SDK for permission server
RUN npm install -g @modelcontextprotocol/sdk zod

# Create directories
WORKDIR /workspace
RUN mkdir -p /mcp-server /pending-permissions

# Create a flexible home directory that any user can use
RUN mkdir -p /home/claude/.cache/ms-playwright && chmod -R 777 /home/claude

# Install Playwright globally and download Chromium to shared location
ENV PLAYWRIGHT_BROWSERS_PATH=/home/claude/.cache/ms-playwright
RUN npm install -g playwright && npx playwright install chromium && chmod -R 777 /home/claude/.cache/ms-playwright

# Set environment variables
ENV TERM=dumb
ENV CI=true
ENV NO_COLOR=1
ENV FORCE_COLOR=0
ENV NODE_PATH=/usr/local/lib/node_modules
ENV HOME=/home/claude
ENV PLAYWRIGHT_BROWSERS_PATH=/home/claude/.cache/ms-playwright

# Default command
ENTRYPOINT ["claude"]
CMD ["--help"]
