#!/usr/bin/env bash
set -euo pipefail
REPO_DIR="/home/agent/.hermes/repos/FinanceManager"
RUNTIME_DIR="${JARVIS_FINANCE_RUNTIME_DIR:-$HOME/jarvis_runtime/finance-system}"
LOG_DIR="$RUNTIME_DIR/logs"
PID_FILE="$LOG_DIR/finance_backend.pid"
LOG_FILE="$LOG_DIR/finance_backend.log"
BACKEND_HOST="${BACKEND_HOST:-0.0.0.0}"
BACKEND_PORT="${BACKEND_PORT:-8000}"
mkdir -p "$LOG_DIR"
if [[ -f "$PID_FILE" ]]; then
  PID="$(tr -cd '0-9' < "$PID_FILE" || true)"
  if [[ -n "$PID" ]] && kill -0 "$PID" 2>/dev/null; then
    kill "$PID" 2>/dev/null || true
    for _ in $(seq 1 30); do kill -0 "$PID" 2>/dev/null || break; sleep 0.2; done
    kill -9 "$PID" 2>/dev/null || true
  fi
  rm -f "$PID_FILE"
fi
if command -v fuser >/dev/null 2>&1; then fuser -k "${BACKEND_PORT}/tcp" >/dev/null 2>&1 || true; fi
cd "$REPO_DIR"
source "$RUNTIME_DIR/venv/bin/activate"
export JARVIS_FINANCE_RUNTIME_DIR="$RUNTIME_DIR"
unset JARVIS_FINANCE_DB_PATH
: > "$LOG_FILE"
PYTHONPATH=src uvicorn jarvis_finance.api.main:app --host "$BACKEND_HOST" --port "$BACKEND_PORT" > "$LOG_FILE" 2>&1 &
echo $! > "$PID_FILE"
for _ in $(seq 1 50); do
  if curl -fsS -m 2 "http://127.0.0.1:$BACKEND_PORT/api/health" >/dev/null 2>&1; then
    echo "backend restart complete"
    exit 0
  fi
  sleep 0.2
done
echo "backend restart failed healthcheck" >&2
exit 1
