# syntax=docker/dockerfile:1
#
# agent-helm control-plane + web-UI i en enda image.
# Byggs av Gitea Actions PÅ Pi5 (arm64) och pushas till localhost:5000.
# Servern serverar den byggda Vue-frontenden statiskt + WebSocket på samma port.

# ---------- builder ----------
FROM node:22-slim AS builder
WORKDIR /app
RUN npm install -g pnpm@11.3.0

# Installera bara det server + web behöver. "..."-suffixet tar med workspace-
# beroenden (shared) men UTESLUTER daemon -> ingen node-pty-kompilering här.
COPY pnpm-workspace.yaml package.json pnpm-lock.yaml .npmrc tsconfig.base.json ./
COPY packages/shared/package.json ./packages/shared/
COPY packages/server/package.json ./packages/server/
COPY packages/web/package.json ./packages/web/
COPY packages/daemon/package.json ./packages/daemon/
RUN pnpm install --frozen-lockfile \
      --filter "@agent-helm/server..." \
      --filter "@agent-helm/web..."

# Källkod + bygg (web -> dist, server -> en bundlad cjs-fil)
COPY packages/shared ./packages/shared
COPY packages/server ./packages/server
COPY packages/web ./packages/web
RUN pnpm --filter @agent-helm/web build \
 && pnpm --filter @agent-helm/server bundle

# ---------- runtime ----------
FROM node:22-slim AS runtime
WORKDIR /app
ENV NODE_ENV=production \
    PORT=8787 \
    WEB_DIST=/app/web
COPY --from=builder /app/packages/server/dist/server.cjs ./server.cjs
COPY --from=builder /app/packages/web/dist ./web
EXPOSE 8787
USER node
CMD ["node", "server.cjs"]
