FROM node:22-bookworm-slim AS builder

ENV PNPM_HOME=/pnpm
ENV PATH="${PNPM_HOME}:${PATH}"

WORKDIR /workspace

RUN corepack enable

COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json tsconfig.base.json ./
COPY apps/api/package.json apps/api/package.json
COPY packages/adapters/package.json packages/adapters/package.json
COPY packages/api/package.json packages/api/package.json
COPY packages/compute/package.json packages/compute/package.json
COPY packages/core/package.json packages/core/package.json
COPY packages/database/package.json packages/database/package.json
COPY packages/embeddings/package.json packages/embeddings/package.json
COPY packages/generation/package.json packages/generation/package.json
COPY packages/parsers/package.json packages/parsers/package.json
COPY packages/plugin-daemon-client/package.json packages/plugin-daemon-client/package.json

RUN pnpm install --frozen-lockfile --filter @knowledge/api-app...

COPY apps/api apps/api
COPY packages/adapters packages/adapters
COPY packages/api packages/api
COPY packages/compute packages/compute
COPY packages/core packages/core
COPY packages/database packages/database
COPY packages/embeddings packages/embeddings
COPY packages/generation packages/generation
COPY packages/parsers packages/parsers
COPY packages/plugin-daemon-client packages/plugin-daemon-client

RUN pnpm --filter @knowledge/api-app build:prod

FROM node:22-bookworm-slim

ENV NODE_ENV=production

WORKDIR /workspace

COPY --from=builder /workspace/apps/api/dist/server.mjs ./server.mjs

EXPOSE 8787

USER node

CMD ["node", "server.mjs"]
