#!/usr/bin/env bash
set -euo pipefail

if [ "$#" -ne 5 ]; then
  echo "usage: $0 WORKER INPUT OUTPUT REPORT CACHE_DIR" >&2
  exit 2
fi

WORKER="$1"
INPUT="$2"
OUTPUT="$3"
REPORT="$4"
CACHE_DIR="$5"

API_KEY_ENV="${LLM_API_KEY_ENV:-OLLAMA_CLOUD_API_KEY}"
API_KEY_VALUE="${!API_KEY_ENV:-}"
if [ -z "$API_KEY_VALUE" ]; then
  echo "${API_KEY_ENV} is not set" >&2
  exit 2
fi

RUN_DIR="$(dirname "$OUTPUT")"
mkdir -p "$RUN_DIR" "$CACHE_DIR"

LOG="$RUN_DIR/${WORKER}.log"
PID_FILE="$RUN_DIR/${WORKER}.pid"

nohup env \
  "$API_KEY_ENV=$API_KEY_VALUE" \
  LLM_API_KEY_ENV="$API_KEY_ENV" \
  LLM_BASE_URL="${LLM_BASE_URL:-https://ollama.com/v1}" \
  LLM_MODEL="${LLM_MODEL:-deepseek-v4-flash}" \
  python3 scripts/run_simulation_batch_v1.py \
    --simulation-run-id "${SIMULATION_RUN_ID:-simulation_batch_v1}" \
    --input "$INPUT" \
    --output "$OUTPUT" \
    --report "$REPORT" \
    --cache-dir "$CACHE_DIR" \
  > "$LOG" 2>&1 < /dev/null &

echo "$!" > "$PID_FILE"
sleep 1
if ps -p "$(cat "$PID_FILE")" >/dev/null 2>&1; then
  echo "STARTED ${WORKER} $(cat "$PID_FILE")"
else
  echo "FAILED ${WORKER}" >&2
  exit 1
fi
