File size: 1,468 Bytes
c49df76
5953562
cd40458
5953562
73d7d5f
a6cdaab
73d7d5f
 
5953562
73d7d5f
a6cdaab
 
 
c5995c3
a6cdaab
5953562
a6cdaab
 
5953562
a6cdaab
 
5953562
 
 
 
 
 
a6cdaab
 
 
5953562
 
 
 
 
1a4d163
73d7d5f
5953562
73d7d5f
5953562
 
a6cdaab
 
5953562
a6cdaab
 
 
 
 
 
 
0d0cfd2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Rebuild v9: Fix model routing - Hy3 Preview (OpenRouter via openai/tencent/), cohere/north-mini-code, deepseek/deepseek-v4-flash OR route, gpt-oss-120b no double-prefix

# Stage 1: Clone upstream + patch frontend ChatInput + build
FROM node:20-alpine AS patcher
RUN apk add --no-cache git python3
RUN git clone --depth 1 https://huggingface.co/spaces/smolagents/ml-intern /source

COPY patch_frontend.py /tmp/patch_frontend.py
RUN echo "=== Running frontend patch ===" && python3 /tmp/patch_frontend.py

WORKDIR /source/frontend
RUN npm install && npm run build

# Stage 2: Production
FROM python:3.12-slim

COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
RUN useradd -m -u 1000 user

WORKDIR /app

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

COPY --from=patcher /source/pyproject.toml /source/uv.lock ./

RUN uv sync --no-dev --frozen

COPY --from=patcher /source/agent ./agent/
COPY --from=patcher /source/backend ./backend/
COPY --from=patcher /source/configs ./configs/

COPY --from=patcher /source/frontend/dist ./static/

COPY patch_models.py /tmp/patch_models.py
RUN echo "=== Running backend patch ===" && python3 /tmp/patch_models.py

RUN mkdir -p /app/session_logs && \
    chown -R user:user /app

USER user

ENV HOME=/home/user \
    PYTHONUNBUFFERED=1 \
    PYTHONPATH=/app \
    PATH="/app/.venv/bin:$PATH"

EXPOSE 7860
WORKDIR /app/backend
CMD ["bash", "start.sh"]