
___x_cmd_buse___runmain(){
    local apikey=""
    local model=""
    local headless=disable
    local mcp=disable

    while [ $# -gt 0 ]; do
        case "$1" in
            --help)     ___x_cmd_buse___runcmd "$@" ;    return 0 ;;
            --apikey)   apikey="$2"; arg:2:shift ;;
            --model)    model="$2";  arg:2:shift ;;
            --headless) headless=enable;   shift ;;
            --mcp)      mcp=enable;        shift ;;
            *)          break ;;
        esac
    done


    [ -n "$apikey" ] || apikey="${BROWSER_USE_API_KEY:-"$(___x_cmd buse --cur get apikey 2>/dev/null)"}"
    [ -n "$model" ]  || {
        model="$(___x_cmd buse --cur get model 2>/dev/null)"
        [ -n "$model" ] || model="gemini-2.0-flash"
    }
    [ -n "$headless" ] || headless="$(___x_cmd buse --cur get headless 2>/dev/null)"
    [ -n "$mcp" ]      || mcp="$(___x_cmd buse --cur get mcp 2>/dev/null)"

    [ "$headless" = "disable" ] || set - --headless
    [ "$mcp" = "disable" ]      || set - --mcp

    BROWSER_USE_API_KEY="${apikey}" ___x_cmd_buse___run_ifset "$model" "$@"
}

___x_cmd_buse___run_ifset() {
    # https://docs.browser-use.com/supported-models
    local model="$1";   shift
    case "$model" in
        gpt*)       [ -n "$OPENAI_API_KEY" ]    || OPENAI_API_KEY="$(___x_cmd openai --cur get apikey 2>/dev/null)"     ___x_cmd_buse___runcmd --model "$model" "$@" || return $? ;;
        gemini*)    [ -n "$GOOGLE_API_KEY" ]    || GOOGLE_API_KEY="$(___x_cmd gemini --cur get apikey 2>/dev/null)"     ___x_cmd_buse___runcmd --model "$model" "$@" || return $? ;;
        *)          ___x_cmd_buse___runcmd --model "$model" "$@" || return $? ;;
    esac
}

___x_cmd_buse___runcmd(){
    if ___x_cmd_hascmd browser-use; then
        ___x_cmd_buse___runcmd(){  ___x_cmd_cmds browser-use "$@"; }
    else
        ___x_cmd_buse___runcmd(){ ___x_cmd snap --run browser-use "$@" ; }
    fi || return $?
    ___x_cmd_buse___runcmd "$@"
}

___x_cmd_buse___install_done(){
    local FP="$___X_CMD_ROOT_DATA/buse/installed"
    [ -f "$FP" ]
}

___x_cmd_buse___install(){
    ___x_cmd snap --preparecmd browser-use
    if ! ___x_cmd_buse___install_done; then
        ___x_cmd snap --run    browser-use install
    fi
}

___x_cmd_buse___upgrade(){
    :
}
