# shellcheck shell=dash

___X_CMD_CLAUDE_DOUBAO_DEFAULT_ENDPOINT="https://ark.cn-beijing.volces.com/api/coding"
___X_CMD_CLAUDE_DOUBAO_DEFAULT_FIRST_MODEL="ark-code-latest"

___x_cmd_claude_doubao(){
    local op="$1"
    case "$op" in
        -h|--help)      ___x_cmd help -m claude doubao; return 0 ;;
        --cfg)          shift;
                        ___x_cmd_claude_doubao_cfg "$@"; return $? ;;
        --)             shift ;;
    esac

    local model=""
    local apikey=""
    local endpoint=""
    local x_=""

    claude:provider:fetch:init
    ___x_cmd_claude_doubao___fetch_   || return $?

    ANTHROPIC_API_KEY="" API_TIMEOUT_MS="$x_timeout"        \
        ___x_cmd_claude_other___use     doubao              \
        "$x_url" "$x_apikey" "$x_model" "$x_fastmodel" "$x_nonessential_traffic" "$x_effortlevel" "$@"
}

___x_cmd_claude_doubao___fetch_(){
    local model=""
    local apikey=""
    local endpoint=

    ___x_cmd_claude_doubao_cur model:=    apikey:=    endpoint:= 2>/dev/null

    [ -n "$apikey" ] || {
        claude:warn \
            --tip1 'x claude doubao --cfg'                           \
            --tip2 'x claude doubao --cfg apikey=<YOUR-API-KEY>'     \
            "Please setup Doubao coding plan API-KEY."

        if ___x_cmd_runmode_allow_manual; then
            ___x_cmd claude doubao --cfg || return $?
            ___x_cmd_claude_doubao_cur model:=    apikey:=    endpoint:= 2>/dev/null
        fi
        [ -n "$apikey" ] || N=claude M="Failed to retrieve API-KEY. Please check your configuration." log:ret:1
    }

    [ -n "$endpoint" ] || endpoint="$___X_CMD_CLAUDE_DOUBAO_DEFAULT_ENDPOINT"

    x_url="$endpoint"
    x_apikey="$apikey"

    x_model="${model}"
    [ -n "$x_model" ] || x_model="$___X_CMD_CLAUDE_DOUBAO_DEFAULT_FIRST_MODEL"

    x_fastmodel="${x_model}"
    x_effortlevel=auto

    x_timeout="${API_TIMEOUT_MS:-"3000000"}"
}


xrc cfgy
___x_cmd_claude_doubao_cfg(){
    [ "$#" -gt 0 ] || {
        ___x_cmd_claude_doubao_init
        return
    }

    local op="$1"; shift
    case "$op" in
        -h|--help)      ___x_cmd help -m claude doubao --cfg ;;
        *)              ___x_cmd_claude_doubao_cfg___invoke "$op" "$@" ;;
    esac
}


___x_cmd_claude_doubao_cur(){
    local X_help_cmd=; X_help_cmd='___x_cmd help -m claude doubao --cur' help:arg:parse
    ___x_cmd_claude_doubao_cfg --current "$@"
}

___x_cmd_claude_doubao_init(){
    local cur_apikey=; local cur_model=; local cur_endpoint

    if [ -f "$(___x_cmd_claude_doubao_cur --get config)" ]; then
        ___x_cmd_claude_doubao_cur cur_apikey:=apikey cur_model:=model cur_endpoint:=endpoint 2>/dev/null
    fi

    claude:info "To get Doubao coding plan API key -> https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey"

    ___x_cmd_claude_doubao_cfg___invoke --init ${cur_apikey:+"--ctrl_exit_strategy"} \
        apikey      "Set up the Doubao Doubao coding plan API key"                               \
                    "$cur_apikey"   '=~*' "^[A-Za-z0-9-]+$" --                  \
        model       "Set up the Doubao API model"                             \
                    "${cur_model:-"$___X_CMD_CLAUDE_DOUBAO_DEFAULT_FIRST_MODEL"}" '=' ark-code-latest doubao-seed-code glm-4.7 deepseek-v3.2 kimi-k2-thinking kimi-k2.5  --  \
        endpoint    "Set up the endpoint (optional)"                            \
                    "${cur_endpoint:-"$___X_CMD_CLAUDE_DOUBAO_DEFAULT_ENDPOINT"}" || return $?
}


___X_CMD_CLAUDE_DOUBAO_CFG_VARLIST="apikey,model,endpoint"
___x_cmd_claude_doubao_cfg___invoke(){
    ___x_cmd_cfgy_obj   \
        --prefix            ___X_CMD_CLAUDE_DOUBAO_CFG_DATA                \
        --default-config    "${___X_CMD_ROOT_CFG}/claude/doubao/X.cfg.yml" \
        --current-config    "${___X_CMD_CLAUDE_DOUBAO_LOCAL_CONFIG}"       \
        --current-profile   "${___X_CMD_CLAUDE_DOUBAO_LOCAL_PROFILE}"      \
        --varlist           "$___X_CMD_CLAUDE_DOUBAO_CFG_VARLIST"          \
        "$@"
}


