FROM node:22-bookworm-slim AS node
FROM eclipse-temurin:21-jre-jammy AS java
FROM python:3.12-slim-bookworm

COPY --from=node /usr/local /usr/local

ENV JAVA_HOME=/opt/java/openjdk \
    PATH=/opt/java/openjdk/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin \
    NODE_PATH=/opt/agent-runtime/node_modules \
    PLAYWRIGHT_BROWSERS_PATH=/opt/agent-runtime/ms-playwright \
    PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

WORKDIR /opt/agent-runtime
COPY package.json package-lock.json ./
RUN npm ci --omit=dev \
    && pip install --no-cache-dir \
        defusedxml lxml "markitdown[pptx]" openpyxl pandas xlrd python-pptx pillow six \
        pypdf pdfplumber reportlab pdf2image pytesseract pypdfium2

COPY --from=java /opt/java/openjdk /opt/java/openjdk
RUN ln -s /opt/java/openjdk/bin/java /usr/local/bin/java \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
        adduser ca-certificates file findutils fonts-noto-cjk gawk git grep \
        libreoffice-calc libreoffice-impress libreoffice-writer \
        pandoc poppler-utils qpdf ripgrep sed tesseract-ocr tesseract-ocr-chi-sim unzip zip \
    && npx playwright install --with-deps chromium \
    && /usr/sbin/adduser --disabled-password --gecos "" --uid 10001 agent \
    && mkdir -p /workspace \
    && chown agent:agent /workspace \
    && rm -rf /var/lib/apt/lists/*

COPY fonts-local.conf /etc/fonts/local.conf
RUN fc-cache -f

COPY --chown=agent:agent document_view.py ./
USER agent
WORKDIR /workspace

CMD ["sleep", "infinity"]
