ARG PYTHON_VERSION=3.13
FROM python:${PYTHON_VERSION}-slim AS builder

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends \
        build-essential git \
    && rm -rf /var/lib/apt/lists/*

# Cache dependency layer — only rebuild when pyproject.toml changes
COPY pyproject.toml README.md ./
COPY skills/ skills/
RUN pip install --no-cache-dir ".[docker]"

# Copy source code (changes here don't invalidate the dependency cache)
COPY src/ src/

# Install the package itself
RUN pip install --no-cache-dir .

# ── Runtime ──────────────────────────────────────────────────────────
FROM python:${PYTHON_VERSION}-slim

LABEL org.opencontainers.image.source="https://github.com/maythyai/maysii"
LABEL org.opencontainers.image.description="Maysii — multi-channel AI gateway"

WORKDIR /app

# curl for healthcheck only; git not needed at runtime
RUN apt-get update && apt-get install -y --no-install-recommends \
        curl \
    && rm -rf /var/lib/apt/lists/* \
    && groupadd -r maysii && useradd -r -g maysii -m maysii

# Copy Python packages + shared libs for C extensions (e.g. uvloop, pydantic-core)
# Note: python:3.13-slim installs to python3.13.x (with patch version), so copy entire lib
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/local/bin/maysii /usr/local/bin/maysii

# Config directory
RUN mkdir -p /home/maysii/.maysii && chown maysii:maysii /home/maysii/.maysii

EXPOSE 18777 18778

HEALTHCHECK --interval=30s --timeout=10s --start-period=15s --retries=3 \
    CMD maysii health || exit 1

VOLUME ["/home/maysii/.maysii"]

USER maysii
ENV HOME=/home/maysii

ENTRYPOINT ["maysii"]
CMD ["gateway"]