diff --git a/apps/sim/package.json b/apps/sim/package.json index ac1c815075..de5a19ecec 100644 --- a/apps/sim/package.json +++ b/apps/sim/package.json @@ -16,9 +16,8 @@ "load:workflow:baseline": "BASE_URL=${BASE_URL:-http://localhost:3000} WARMUP_DURATION=${WARMUP_DURATION:-10} WARMUP_RATE=${WARMUP_RATE:-2} PEAK_RATE=${PEAK_RATE:-8} HOLD_DURATION=${HOLD_DURATION:-20} bunx artillery run scripts/load/workflow-concurrency.yml", "load:workflow:waves": "BASE_URL=${BASE_URL:-http://localhost:3000} WAVE_ONE_DURATION=${WAVE_ONE_DURATION:-10} WAVE_ONE_RATE=${WAVE_ONE_RATE:-6} QUIET_DURATION=${QUIET_DURATION:-5} WAVE_TWO_DURATION=${WAVE_TWO_DURATION:-15} WAVE_TWO_RATE=${WAVE_TWO_RATE:-8} WAVE_THREE_DURATION=${WAVE_THREE_DURATION:-20} WAVE_THREE_RATE=${WAVE_THREE_RATE:-10} bunx artillery run scripts/load/workflow-waves.yml", "load:workflow:isolation": "BASE_URL=${BASE_URL:-http://localhost:3000} ISOLATION_DURATION=${ISOLATION_DURATION:-30} TOTAL_RATE=${TOTAL_RATE:-9} WORKSPACE_A_WEIGHT=${WORKSPACE_A_WEIGHT:-8} WORKSPACE_B_WEIGHT=${WORKSPACE_B_WEIGHT:-1} bunx artillery run scripts/load/workflow-isolation.yml", - "build": "bun run build:pptx-worker && bun run build:worker && next build", + "build": "bun run build:pptx-worker && next build", "build:pptx-worker": "bun build ./lib/execution/pptx-worker.cjs --target=node --format=cjs --outfile ./dist/pptx-worker.cjs", - "build:worker": "bun build ./worker/index.ts --target=node --format=esm --splitting --outdir ./dist/worker --external isolated-vm", "start": "next start", "worker": "NODE_ENV=production bun run worker/index.ts", "prepare": "cd ../.. && bun husky", diff --git a/docker-compose.local.yml b/docker-compose.local.yml index 354a77d139..8b874acee8 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -71,7 +71,7 @@ services: build: context: . dockerfile: docker/app.Dockerfile - command: ['bun', 'apps/sim/dist/worker/index.js'] + command: ['bun', 'apps/sim/worker/index.ts'] restart: unless-stopped deploy: resources: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 5f8f8bc9db..e7000f0688 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -42,7 +42,7 @@ services: sim-worker: image: ghcr.io/simstudioai/simstudio:latest - command: ['bun', 'apps/sim/dist/worker/index.js'] + command: ['bun', 'apps/sim/worker/index.ts'] restart: unless-stopped deploy: resources: diff --git a/docker/app.Dockerfile b/docker/app.Dockerfile index b5e2f14457..54791300d5 100644 --- a/docker/app.Dockerfile +++ b/docker/app.Dockerfile @@ -105,6 +105,12 @@ COPY --from=builder --chown=nextjs:nodejs /app/apps/sim/public ./apps/sim/public COPY --from=builder --chown=nextjs:nodejs /app/apps/sim/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/apps/sim/.next/static ./apps/sim/.next/static +# Copy the full dependency tree and app source so the BullMQ worker can run from source. +# The standalone server continues to use server.js; the worker uses bun on worker/index.ts. +COPY --from=deps --chown=nextjs:nodejs /app/node_modules ./node_modules +COPY --from=builder --chown=nextjs:nodejs /app/apps/sim ./apps/sim +COPY --from=builder --chown=nextjs:nodejs /app/packages ./packages + # Copy isolated-vm native module (compiled for Node.js in deps stage) COPY --from=deps --chown=nextjs:nodejs /app/node_modules/isolated-vm ./node_modules/isolated-vm @@ -114,9 +120,6 @@ COPY --from=builder --chown=nextjs:nodejs /app/apps/sim/lib/execution/isolated-v # Copy the bundled PPTX worker artifact COPY --from=builder --chown=nextjs:nodejs /app/apps/sim/dist/pptx-worker.cjs ./apps/sim/dist/pptx-worker.cjs -# Copy the bundled BullMQ worker (self-contained ESM bundle, only isolated-vm is external) -COPY --from=builder --chown=nextjs:nodejs /app/apps/sim/dist/worker ./apps/sim/dist/worker - # Guardrails setup with pip caching COPY --from=builder --chown=nextjs:nodejs /app/apps/sim/lib/guardrails/requirements.txt ./apps/sim/lib/guardrails/requirements.txt COPY --from=builder --chown=nextjs:nodejs /app/apps/sim/lib/guardrails/validate_pii.py ./apps/sim/lib/guardrails/validate_pii.py diff --git a/helm/sim/templates/deployment-worker.yaml b/helm/sim/templates/deployment-worker.yaml index adf7b9c284..75fa6e88c1 100644 --- a/helm/sim/templates/deployment-worker.yaml +++ b/helm/sim/templates/deployment-worker.yaml @@ -37,7 +37,7 @@ spec: - name: worker image: {{ include "sim.image" (dict "context" . "image" .Values.worker.image) }} imagePullPolicy: {{ .Values.worker.image.pullPolicy }} - command: ["bun", "apps/sim/dist/worker/index.js"] + command: ["bun", "apps/sim/worker/index.ts"] ports: - name: health containerPort: {{ .Values.worker.healthPort }}