# Agentic Composer SDK - Development and Testing Container
FROM python:3.11-slim AS base

WORKDIR /app

# Install system dependencies required for various Python packages and development
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    curl \
    git \
    && rm -rf /var/lib/apt/lists/*

# Install UV for dependency management
RUN curl -LsSf https://astral.sh/uv/install.sh | sh

# Add UV to PATH
ENV PATH="/root/.local/bin:$PATH" \
    PYTHONUNBUFFERED=1 \
    PYTHONPATH=/app

# Development stage
FROM base AS development

# Create virtual environment
RUN uv venv .venv
ENV PATH="/app/.venv/bin:$PATH" \
    VIRTUAL_ENV="/app/.venv"

# Copy project configuration files
COPY pyproject.toml .
COPY uv.lock .

# Install dependencies from lockfile
RUN uv sync --group dev --locked

# Copy source code and other files
COPY src/ src/
COPY tests/ tests/
COPY examples/ examples/
COPY README.md .
COPY Makefile .
COPY env.template .

# Default command for development
CMD ["bash"]

# Testing stage
FROM development AS testing

# Run tests by default
CMD ["make", "test"]

# Examples stage - for running examples
FROM development AS examples

# Set working directory to examples
WORKDIR /app/examples

# Run examples by default
CMD ["python", "example_usage.py"]

# Production stage - minimal SDK installation
FROM base AS production

# Create virtual environment
RUN uv venv .venv
ENV PATH="/app/.venv/bin:$PATH" \
    VIRTUAL_ENV="/app/.venv"

# Copy only what's needed for production use
COPY pyproject.toml .
COPY uv.lock .
COPY src/ src/
COPY README.md .

# Install only production dependencies from lockfile
RUN uv sync --locked

# Default to Python shell for SDK usage
CMD ["python"]