FROM somersault.harbor:20010/mellon/hermes:latest

# hermes 基础镜像自带：opencode（npm global，/root/.npm-global/bin）、node、uv、
# python3.8(/opt/venv)。awp 要求 >=3.11，用 uv 装独立 3.11 venv，不动镜像自带 venv。
ENV PATH=/app/.venv/bin:/root/.npm-global/bin:/root/.local/bin:$PATH \
    AWP_ROOT=/app \
    AWP_HOST=0.0.0.0 \
    AWP_PORT=8000 \
    AWP_CATALOG_DIR=/catalog \
    AWP_DATA_DIR=/data \
    AWP_WORKSPACE_ROOT=/workspaces \
    AWP_FRONTEND_DIR=/app/frontend/dist

WORKDIR /app

# --- Python 包（标准 pyproject 安装，提供 `awp` 命令） ---
COPY pyproject.toml README.md ./
COPY src ./src
RUN uv python install 3.11 \
    && uv venv --python 3.11 /app/.venv \
    && uv pip install --python /app/.venv/bin/python '.[server]'

# --- 前端构建（node 来自基础镜像） ---
COPY frontend/package.json frontend/package-lock.json ./frontend/
RUN cd frontend && npm install --no-audit --no-fund
COPY frontend ./frontend
RUN cd frontend && npm run build

# --- 默认 catalog：首次启动拷入挂载的 /catalog（用户改 awp-helper 就在这里） ---
COPY catalog ./catalog-default
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh && mkdir -p /data /catalog /workspaces

EXPOSE 8000
VOLUME ["/data", "/catalog", "/workspaces"]
ENTRYPOINT ["/entrypoint.sh"]
