FROM node:24-bookworm-slim AS build
WORKDIR /app
RUN npm install --global pnpm@11.19.0
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
COPY apps/server/package.json apps/server/package.json
COPY apps/web/package.json apps/web/package.json
COPY packages/harness/package.json packages/harness/package.json
COPY packages/shared/package.json packages/shared/package.json
RUN pnpm install --frozen-lockfile
COPY apps ./apps
COPY packages ./packages
COPY scripts ./scripts
COPY fixtures/ads-account.json ./fixtures/ads-account.json
COPY sandbox ./sandbox
COPY .agents/skills/demo-report ./.agents/skills/demo-report
COPY .agents/skills/ads-analysis ./.agents/skills/ads-analysis
COPY .agents/skills/artifact-template-sw-ads-tiktok ./.agents/skills/artifact-template-sw-ads-tiktok
COPY tsconfig.base.json eslint.config.mjs ./
RUN pnpm build && mkdir -p /app/workspace /app/.agents/skills /app/.pi/skills && chown node:node /app/workspace

FROM node:24-bookworm-slim AS agent
WORKDIR /app
COPY --from=build /app /app
RUN chown node:node /app/workspace
USER 1000:1000
ENV NODE_ENV=production PORT=3001 HOST=127.0.0.1
EXPOSE 5173
CMD ["node", "sandbox/entry.mjs"]

FROM node:24-bookworm-slim AS egress
WORKDIR /proxy
COPY sandbox/egress.mjs ./egress.mjs
USER 1000:1000
CMD ["node", "egress.mjs"]
