# ─── Stage 1: Extract workspace manifests ────────────────────
FROM node:22-slim AS manifests
WORKDIR /tmp/repo
COPY packages packages
RUN find packages -mindepth 2 -not -name "package.json" -not -type d -delete 2>/dev/null; \
    find packages -empty -type d -delete 2>/dev/null; \
    true

# ─── Stage 2: Build ──────────────────────────────────────────
FROM node:22-slim AS build

RUN corepack enable && corepack prepare pnpm@latest --activate

WORKDIR /app

COPY pnpm-lock.yaml pnpm-workspace.yaml package.json .npmrc ./
COPY --from=manifests /tmp/repo/packages packages

# Install deps for kernel and its workspace dependencies
RUN pnpm install --frozen-lockfile --filter @codmir/kernel...

# Copy source and build
COPY packages/types packages/types
COPY packages/kernel packages/kernel
RUN pnpm --filter @codmir/types build 2>/dev/null || true
RUN pnpm --filter @codmir/kernel build

# ─── Stage 3: Production ─────────────────────────────────────
FROM node:22-slim

WORKDIR /app

COPY --from=build /app/packages/kernel/dist ./dist
COPY --from=build /app/packages/kernel/package.json ./
COPY --from=build /app/packages/kernel/node_modules ./node_modules
COPY --from=build /app/node_modules/.pnpm node_modules/.pnpm

ENV NODE_ENV=production
ENV KERNEL_PORT=7700

EXPOSE 7700

CMD ["node", "dist/daemon-entry.js"]
