FROM node:22-bookworm

# Install Nginx
RUN apt-get update && apt-get install -y nginx-light && rm -rf /var/lib/apt/lists/*

WORKDIR /app

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

# Copy source code
COPY . .

# Patch out the client-side browser/localhost restriction before building
RUN grep -rl "settings are unavailable" . | xargs -r sed -i 's/settings are unavailable in this browser/settings enabled/g' || true
RUN find . -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" \) -exec sed -i 's/isLocalhost/true/g' {} + || true

# Install dependencies and build the patched source
RUN pnpm install
RUN pnpm run build

# Create workspaces directory
RUN mkdir -p /app/workspaces

# Nginx config spoofing local loopback
RUN echo 'server { \
    listen 3080; \
    location / { \
        proxy_pass http://127.0.0.1:3081; \
        proxy_set_header Host 127.0.0.1:3081; \
        proxy_set_header Origin http://127.0.0.1:3081; \
        proxy_set_header Referer http://127.0.0.1:3081/; \
        proxy_set_header X-Real-IP 127.0.0.1; \
        proxy_set_header X-Forwarded-For 127.0.0.1; \
        proxy_http_version 1.1; \
        proxy_set_header Upgrade $http_upgrade; \
        proxy_set_header Connection "upgrade"; \
    } \
}' > /etc/nginx/sites-available/default

EXPOSE 3080

CMD nginx && node --import tsx/esm apps/cli/src/bin.ts web --port 3081 --no-open