#!/bin/zsh

set -euo pipefail

prototype_root="$(cd -- "$(dirname -- "$0")" && pwd)"
source_root="$prototype_root/running-ai-assistant-source-2b45c6e"
url="http://127.0.0.1:4173/"

if [[ ! -f "$source_root/package.json" ]]; then
  osascript -e 'display alert "未找到原型源码" message "请保留 running-ai-assistant-source-2b45c6e 文件夹。"'
  exit 1
fi

if ! command -v pnpm >/dev/null 2>&1; then
  osascript -e 'display alert "缺少 pnpm" message "请先安装 Node.js 与 pnpm，然后再次双击此文件。"'
  exit 1
fi

if [[ ! -d "$source_root/node_modules" ]]; then
  (cd "$source_root" && pnpm install --frozen-lockfile)
fi

if [[ ! -f "$source_root/dist/index.html" ]]; then
  (cd "$source_root" && pnpm run build)
fi

if ! curl --fail --silent --max-time 1 "$url" >/dev/null 2>&1; then
  (
    cd "$source_root"
    nohup pnpm run preview -- --host 127.0.0.1 --port 4173 \
      >"$prototype_root/.local-preview.log" 2>&1 &
  )

  for attempt in {1..20}; do
    if curl --fail --silent --max-time 1 "$url" >/dev/null 2>&1; then
      break
    fi
    sleep 0.5
  done
fi

if ! curl --fail --silent --max-time 1 "$url" >/dev/null 2>&1; then
  osascript -e 'display alert "原型未能启动" message "请查看同目录的 .local-preview.log 文件。"'
  exit 1
fi

open "$url"
