start.sh 1.93 KB
#!/bin/bash
# ─────────────────────────────────────────────
# LemonBoss — 启动脚本
# ─────────────────────────────────────────────

set -e

# Load NVM to ensure node is available in non-interactive shell
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

echo "🧬 LemonBoss 启动中..."
echo "═══════════════════════════════════"

# 检查依赖
if [ ! -d "node_modules" ]; then
    echo "⚠️  未安装依赖,先运行: ./install.sh"
    exit 1
fi

# 检测并清理端口冲突
for PORT in 3010 5173; do
  PID=$(lsof -ti:$PORT 2>/dev/null || true)
  if [ -n "$PID" ]; then
    echo "⚠️  端口 $PORT 被占用 (PID: $PID),正在释放..."
    kill -9 $PID 2>/dev/null || true
    sleep 0.5
    echo "   ✅ 端口 $PORT 已释放"
  fi
done

# 启动后端 Agent Chat Server
echo "🔌 启动 Agent Server (端口 3010)..."
PORT=3010 node server/agent-server.js &
SERVER_PID=$!

# 等待后端启动
sleep 1

# 启动前端 Vite Dev Server
echo "🖥️  启动前端 (端口 5173)..."
cd web && npx vite --host 2>/dev/null &
WEB_PID=$!

# 等待前端启动
sleep 2

echo ""
echo "═══════════════════════════════════"
echo "✅ LemonBoss 已启动!"
echo ""
echo "   🌐 打开: http://localhost:5173"
echo "   🧬 Innovator: http://localhost:5173/agent/innovator-001"
echo "   🔌 API: http://localhost:3010/api/agent/list"
echo ""
echo "   按 Ctrl+C 停止"
echo "═══════════════════════════════════"

# 等待中断
trap "echo ''; echo '🛑 正在关闭...'; kill $SERVER_PID $WEB_PID 2>/dev/null; exit 0" SIGINT SIGTERM
wait