FROM python:3.12-slim AS runtime

ARG TASKPILOT_UID=1000
ARG TASKPILOT_GID=1000

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    DEBIAN_FRONTEND=noninteractive \
    PATH=/opt/taskpilot/.venv/bin:$PATH

RUN apt-get update && \
    apt-get install --yes --no-install-recommends git && \
    rm -rf /var/lib/apt/lists/* && \
    groupadd --gid "${TASKPILOT_GID}" taskpilot && \
    useradd --uid "${TASKPILOT_UID}" --gid taskpilot --create-home taskpilot
WORKDIR /opt/taskpilot

COPY pyproject.toml uv.lock README.md LICENSE ./
COPY src ./src
COPY examples ./examples
COPY config.example.yaml ./config.example.yaml
RUN python -m venv .venv && \
    pip install --no-cache-dir uv==0.12.7 && \
    uv sync --frozen --no-dev --extra postgres --extra demo --extra openai \
        --extra anthropic --no-editable && \
    mkdir -p .taskpilot && chown -R taskpilot:taskpilot /opt/taskpilot

USER taskpilot
EXPOSE 8000
HEALTHCHECK --interval=10s --timeout=3s --retries=5 \
    CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health')"

CMD ["taskpilot-api"]
