FROM python:3.11-slim

RUN apt-get update && apt-get install -y libsndfile1 ffmpeg && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Patch pipecat LiveKit transport bugs:
# 1. Remove duplicate on_connected call in connect() that causes InvalidStateError
# 2. Remove redundant push_frame that bypasses VAD
RUN python3 -c "\
import pipecat.transports.services.livekit as m; \
path = m.__file__; \
content = open(path).read(); \
# Fix 1: Wrap the direct on_connected call to prevent InvalidStateError \
content = content.replace( \
    'await self._callbacks.on_connected()', \
    'try:\n                    await self._callbacks.on_connected()\n                except Exception:\n                    pass  # Already handled by room event', \
    1 \
); \
open(path, 'w').write(content); \
print(f'Patched {path}')"

COPY . .

HEALTHCHECK --interval=30s --timeout=10s --start-period=30s \
    CMD python -c "import httpx; httpx.get('http://localhost:8080/health').raise_for_status()"

CMD ["python", "main.py"]
