#!/bin/bash

# Trae Server 启动脚本
# 解决版本匹配和连接问题

set -e

TRAE_VERSION="8fe6088bdb0697eec2662377a7abd7f9791493c6"
TRAE_DIR="/home/ben/.trae-server"
TRAE_BIN_DIR="$TRAE_DIR/bin/stable-$TRAE_VERSION"
WORKSPACE_DIR="/home/ben/github/liurenchaxin"
TOKEN_FILE="$TRAE_DIR/.stable-$TRAE_VERSION.token"
LOG_FILE="/tmp/trae-server.log"

echo "🚀 启动 Trae 服务器..."

# 清理旧进程
echo "🧹 清理旧进程..."
pkill -f "trae" || true
pkill -f "stable-$TRAE_VERSION" || true
sleep 2

# 确保目录存在
if [ ! -d "$TRAE_BIN_DIR" ]; then
    echo "❌ 错误: Trae 二进制目录不存在: $TRAE_BIN_DIR"
    exit 1
fi

# 生成新的 token
NEW_TOKEN=$(uuidgen)
echo "$NEW_TOKEN" > "$TOKEN_FILE"
chmod 600 "$TOKEN_FILE"
echo "🔑 生成新的连接 token: $NEW_TOKEN"

# 启动服务器
echo "🌟 启动 Trae 服务器..."
cd "$TRAE_BIN_DIR"

nohup ./node ./index_trae.js \
    --start-server \
    --host=127.0.0.1 \
    --port=0 \
    --connection-token-file "$TOKEN_FILE" \
    --default-folder "$WORKSPACE_DIR" \
    --server-data-dir "$TRAE_DIR" \
    --telemetry-level off \
    --enable-remote-auto-shutdown \
    --accept-server-license-terms \
    > "$LOG_FILE" 2>&1 &

SERVER_PID=$!
echo "📋 服务器进程 PID: $SERVER_PID"

# 等待服务器启动
echo "⏳ 等待服务器启动..."
sleep 5

# 查找实际端口
PORT=$(ss -tlnp | grep "node.*pid=$SERVER_PID" | grep -o ':33[0-9]*' | head -1 | cut -d':' -f2)
if [ -z "$PORT" ]; then
    # 从日志中查找端口
    PORT=$(grep -o "port [0-9]*" "$LOG_FILE" | tail -1 | cut -d' ' -f2)
fi

if [ -z "$PORT" ]; then
    echo "❌ 无法确定服务器端口"
    tail -20 "$LOG_FILE"
    exit 1
fi

echo "✅ Trae 服务器启动成功!"
echo ""
echo "📝 连接信息:"
echo "   服务器地址: 127.0.0.1:$PORT"
echo "   连接 Token: $NEW_TOKEN"
echo "   工作目录: $WORKSPACE_DIR"
echo "   日志文件: $LOG_FILE"
echo ""
echo "🌐 浏览器访问: http://127.0.0.1:$PORT/?folder=$WORKSPACE_DIR"
echo ""

# 测试连接
echo "🔍 测试服务器连接..."
if curl -s -I "http://127.0.0.1:$PORT" | grep -q "405\|200"; then
    echo "✅ 服务器响应正常"
else
    echo "⚠️  服务器连接测试失败"
    tail -10 "$LOG_FILE"
fi

echo ""
echo "💡 如果 Trae 客户端仍然连接失败，请尝试:"
echo "   1. 重启 Trae 客户端应用"
echo "   2. 清除客户端缓存"
echo "   3. 使用浏览器直接访问上面的URL"