FROM mcr.microsoft.com/playwright:v1.52.0-noble

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        jq \
        unzip \
        wget \
        python3-pip \
        libzbar0 \
        libzbar-dev \
    && rm -rf /var/lib/apt/lists/*

# Install Bitwarden CLI — native Rust binary (no Node.js/npm)
# Same CLI interface as the npm package but zero runtime dependencies.
ARG BW_CLI_VERSION=2026.7.0
RUN wget -q -O /tmp/bw.zip \
        "https://github.com/bitwarden/clients/releases/download/cli-v${BW_CLI_VERSION}/bw-linux-${BW_CLI_VERSION}.zip" && \
    unzip -o /tmp/bw.zip -d /usr/local/bin/ && \
    chmod +x /usr/local/bin/bw && \
    rm /tmp/bw.zip

# Install Python dependencies
COPY requirements.txt /tmp/
RUN python3 -m pip install --no-cache-dir --break-system-packages -r /tmp/requirements.txt

# Create non-root user for Playwright
RUN groupadd -r provision && useradd -r -g provision -G audio,video -m -d /home/provision provision \
    && mkdir -p /home/provision/.config \
    && chown -R provision:provision /home/provision

WORKDIR /app
COPY . .
RUN chown -R provision:provision /app

USER provision

ENTRYPOINT ["python3", "/app/provision-agent.py"]
