ARG CODE_QUEUE_BASE_IMAGE=oven/bun:1-debian
FROM ${CODE_QUEUE_BASE_IMAGE}

ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright

RUN (command -v codex >/dev/null 2>&1 && command -v opencode >/dev/null 2>&1 && command -v docker >/dev/null 2>&1 && command -v rg >/dev/null 2>&1) \
  || (apt-get update \
  && apt-get install -y --no-install-recommends \
    bash \
    bubblewrap \
    ca-certificates \
    curl \
    docker-cli \
    docker-compose \
    file \
    g++ \
    gcc \
    git \
    gzip \
    iproute2 \
    iptables \
    iputils-ping \
    jq \
    make \
    npm \
    openssh-client \
    patch \
    pkg-config \
    procps \
    python3 \
    python3-pip \
    ripgrep \
    rsync \
    tar \
    tini \
    unzip \
    xz-utils \
  && mkdir -p /usr/local/lib/docker/cli-plugins /root/.docker/cli-plugins \
  && ln -sf /usr/bin/docker-compose /usr/local/lib/docker/cli-plugins/docker-compose \
  && ln -sf /usr/bin/docker-compose /root/.docker/cli-plugins/docker-compose \
  && npm install -g @openai/codex@0.128.0 opencode-ai@1.14.48 playwright@1.59.1 \
  && playwright install --with-deps chromium \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*)

WORKDIR /app/src/components/microservices/code-queue
COPY src/components/microservices/code-queue/package.json ./package.json
RUN test -d node_modules/postgres || bun install --production
COPY src/components/shared /app/src/components/shared
COPY src/components/microservices/code-queue/tsconfig.json ./tsconfig.json
COPY src/components/microservices/code-queue/src ./src

EXPOSE 4222
ENTRYPOINT ["tini", "--"]
CMD ["bun", "--smol", "run", "src/index.ts"]
