#!/bin/bash
# 解析符号链接，兼容 macOS（不支持 readlink -f）
SOURCE="$0"
while [ -L "$SOURCE" ]; do
    DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
    SOURCE="$(readlink "$SOURCE")"
    [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE"
done
INSTALL_DIR="$(cd -P "$(dirname "$SOURCE")" && cd .. && pwd)"

# uv 路径兜底
if ! command -v uv &>/dev/null; then
    [ -f "$HOME/.local/bin/uv" ] && export PATH="$HOME/.local/bin:$PATH"
fi

# log 子命令：查看最后启动的 session 日志
if [ "$1" = "log" ]; then
    LOG_DIR="/tmp/remote-claude"
    if [ -n "$2" ]; then
        # 指定 session 名，/ 和 . 替换为 _（与 _safe_filename 一致）
        SESSION_SAFE=$(echo "$2" | tr '/.' '__')
        LOG_FILE="$LOG_DIR/${SESSION_SAFE}_messages.log"
    else
        # 找最后启动的 session（按创建时间排序，排除 lark.pid）
        if [[ "$OSTYPE" == "darwin"* ]]; then
            # macOS: stat -f "%B" 返回创建时间（秒）
            LATEST_PID=$(ls "$LOG_DIR"/_*.pid 2>/dev/null | while read f; do
                stat -f "%B:%N" "$f" 2>/dev/null
            done | sort -rn | head -1 | cut -d: -f2)
        else
            # Linux: stat -c "%W" 返回创建时间（秒）
            LATEST_PID=$(ls "$LOG_DIR"/_*.pid 2>/dev/null | while read f; do
                stat -c "%W:%N" "$f" 2>/dev/null
            done | sort -rn | head -1 | cut -d: -f2)
        fi
        if [ -n "$LATEST_PID" ]; then
            SESSION_SAFE=$(basename "$LATEST_PID" .pid)
            LOG_FILE="$LOG_DIR/${SESSION_SAFE}_messages.log"
        fi
    fi

    if [ -z "$LOG_FILE" ] || [ ! -f "$LOG_FILE" ]; then
        echo "没有找到日志文件（请先启动一个会话）" >&2
        exit 1
    fi

    echo "📄 $LOG_FILE"
    exec tail -50f "$LOG_FILE"
fi

# lark 子命令：检查 .env 配置
if [ "$1" = "lark" ]; then
    source "$INSTALL_DIR/scripts/check-env.sh" "$INSTALL_DIR"
fi

exec uv run --project "$INSTALL_DIR" python3 "$INSTALL_DIR/remote_claude.py" "$@"
