# shellcheck shell=dash disable=2016

___x_cmd_codex_skill(){
    [ "$#" -gt 0 ] ||   set -- ll

    local op="$1";      shift
    case "$op" in
        info|ll|ls|add|rm|use|unuse|suggest)
                        ___x_cmd_codex_skill_"$op"   "$@" ;;
        -h|--help)      ___x_cmd help -m codex skill "$@" ;       return 0 ;;
        *)              N=codex M="skill not such [subcmd=$op]" log:ret:64 ;;
    esac
}

___x_cmd_codex_skill_info(){
    case "$1" in
        -h|--help)              ___x_cmd help -m codex skill info ; return 0 ;;
    esac
    local skillid="${1}"; [ -n "$skillid" ] || N=codex M="Please provide the skill id" log:ret:64
    ___x_cmd skill info "$skillid"
}

___x_cmd_codex_skill_ll(){
    [ "$#" -gt 0 ] || {
        if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual; then
            set - --fzapp
        else
            set - --tsv
        fi
    }

    local op="$1"; shift
    case "$op" in
        -h|--help)      ___x_cmd help -m codex skill ll;    return 0 ;;
        --fzapp)        ___x_cmd_codex_skill_ll___fzapp         "$@" ;;
        *)              ___x_cmd skill ll "$op" "$@" ;;
    esac
}

___x_cmd_codex_skill_ll___fzapp(){
    local x_=""; ___x_cmd skill ll --fzapp_ "$@" || return $?

    local id=
    ___x_cmd ui select id "Next:"                   \
        "x codex skill add $x_"                    \
        "x codex skill use $x_"                    \
        "Show detailed information --> $x_"         \
        "EXIT"     || return $?

    case "$id" in
        1)  ___x_cmd codex skill add "$x_"         ;;
        2)  ___x_cmd codex skill use "$x_"         ;;
        3)  ___x_cmd skill ll --fzpreview "$x_"     ;;
        *)  return 0;;
    esac
}

___x_cmd_codex_skill_ls(){
    local X_help_cmd; X_help_cmd='___x_cmd help -m codex skill ls' help:arg:parse
    ___x_cmd skill ls --agent codex "$@"
}

___x_cmd_codex_skill_add(){
    case "$1" in
        -h|--help)              ___x_cmd help -m codex skill add ; return 0 ;;
    esac
    ___x_cmd skill add --agent codex "$@"
}

___x_cmd_codex_skill_rm(){
    case "$1" in
        -h|--help)              ___x_cmd help -m codex skill rm ; return 0 ;;
    esac
    ___x_cmd skill rm --agent codex "$@"
}

___x_cmd_codex_skill_unuse(){
    case "$1" in
        -h|--help)              ___x_cmd help -m codex skill unuse ; return 0 ;;
    esac
    ___x_cmd_codex_skill_rm --global "$@"
}

___x_cmd_codex_skill_use(){
    case "$1" in
        -h|--help)              ___x_cmd help -m codex skill use ; return 0 ;;
    esac
    ___x_cmd_codex_skill_add --global "$@"
}

___x_cmd_codex_skill_suggest(){
    case "$1" in
        -h|--help)              ___x_cmd help -m codex skill suggest ; return 0 ;;
    esac

    ___x_cmd skill suggest --agent codex "$@"
}
