# raxd — Reactive Agents Daemon (monorepo)
# Generated by: rax deploy init
# Agent: meta-agent
# Build context: workspace root (../../)

# ── Stage 1: Install + build workspace packages ─────────────────────────────
FROM oven/bun:1-alpine AS build

WORKDIR /app
COPY package.json bun.lock tsup.config.base.ts tsconfig.json ./
COPY packages/ packages/
COPY apps/meta-agent/ apps/meta-agent/
RUN bun install --frozen-lockfile 2>/dev/null || bun install
RUN bun run build:packages

# ── Stage 2: Runtime ─────────────────────────────────────────────────────────
FROM oven/bun:1-alpine

# Hardening: non-root user
RUN addgroup -g 1001 -S raxd && \
    adduser -S raxd -u 1001 -G raxd && \
    mkdir -p /app/data /app/apps/meta-agent/drafts && chown -R raxd:raxd /app

WORKDIR /app

COPY --from=build --chown=raxd:raxd /app/node_modules ./node_modules
COPY --from=build --chown=raxd:raxd /app/packages/ ./packages/
COPY --from=build --chown=raxd:raxd /app/apps/meta-agent/ ./apps/meta-agent/
COPY --from=build --chown=raxd:raxd /app/package.json ./package.json

USER raxd

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD wget -qO- http://localhost:3000/health || exit 1

STOPSIGNAL SIGTERM
EXPOSE 3000

ENTRYPOINT ["bun", "run", "apps/meta-agent/src/index.ts"]
