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

MODEL_PATH="/lsinfo/ai/hellotax_ai/llm_service/base_models/Qwen3.5-27B"
PORT=8400
LOG_FILE="/lsinfo/ai/hellotax_ai/llm_service/logs/mlx-server-${PORT}.log"
PID_FILE="/lsinfo/ai/hellotax_ai/llm_service/logs/mlx-server-${PORT}.pid"

mkdir -p "$(dirname "$LOG_FILE")"

# Check if already running
if [[ -f "$PID_FILE" ]] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
  echo "MLX server already running (PID $(cat "$PID_FILE"))"
  exit 0
fi

echo "Starting MLX server on port ${PORT}..."

nohup python -m mlx_lm.server \
  --model "$MODEL_PATH" \
  --port "$PORT" \
  --host 0.0.0.0 \
  > "$LOG_FILE" 2>&1 &

echo $! > "$PID_FILE"
echo "PID $(cat "$PID_FILE") — log: ${LOG_FILE}"

# Wait for service ready
echo -n "Waiting for MLX server"
for i in $(seq 1 30); do
  if curl -sf "http://localhost:${PORT}/health" > /dev/null 2>&1 || \
     curl -sf "http://localhost:${PORT}/v1/models" > /dev/null 2>&1; then
    echo " ready."
    exit 0
  fi
  echo -n "."
  sleep 2
done
echo " timeout. Check log: ${LOG_FILE}"
exit 1
