FROM node:24.14.0-bookworm-slim AS base
WORKDIR /app
ENV NODE_ENV=production
RUN apt-get update -y \
  && apt-get install -y --no-install-recommends openssl ca-certificates git \
  && rm -rf /var/lib/apt/lists/*
RUN corepack enable

FROM base AS deps
COPY web/package.json web/pnpm-lock.yaml web/pnpm-workspace.yaml ./
COPY web/prisma ./prisma
COPY web/prisma.config.ts ./prisma.config.ts
COPY web/prisma.config.desktop.ts ./prisma.config.desktop.ts
RUN NODE_ENV=development pnpm install --frozen-lockfile

FROM base AS build
ARG GIT_SHA=dev
COPY --from=deps /app/node_modules ./node_modules
COPY web ./
RUN pnpm prisma generate
RUN DATABASE_URL="postgresql://build:build@localhost:5432/build" ARCHE_GIT_SHA="$GIT_SHA" pnpm run build

FROM base AS runtime
ARG GIT_SHA=dev
ENV NODE_ENV=production
ENV PORT=3000
ENV ARCHE_GIT_SHA=$GIT_SHA

COPY --from=build /app/.next ./.next
COPY --from=build /app/public ./public
COPY --from=build /app/package.json ./package.json
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/prisma ./prisma
COPY --from=build /app/prisma.config.ts ./prisma.config.ts
COPY --from=build /app/src ./src
COPY --from=build /app/tsconfig.json ./tsconfig.json
COPY --from=build /app/kickstart/agents/definitions ./kickstart/agents/definitions
COPY --from=build /app/kickstart/templates/definitions ./kickstart/templates/definitions
COPY web/start.sh ./start.sh
RUN chmod +x start.sh

HEALTHCHECK --interval=10s --timeout=5s --start-period=120s --retries=3 \
  CMD node -e "fetch('http://localhost:3000/api/health').then(r=>{if(!r.ok)throw 1}).catch(()=>process.exit(1))"

EXPOSE 3000
CMD ["./start.sh"]
