# shellcheck shell=dash
___x_cmd_chat___exec_jina_(){
    x_=""
    local _cmd="$1"
    local _content
    chat:info "x jina reader $_cmd"
    _content="$(___x_cmd jina reader "$_cmd")" || return $?
    ___x_cmd_chat___wrap_ REFERENCE-LINK    "$_cmd";        _cmd="$x_"
    ___x_cmd_chat___wrap_ REFETENCE-CONTENT "$_content";    _content="$x_"
    x_="${_cmd}
${_content}"
    # ___x_cmd_chat___exec_cmd_ "x jina reader $1" "ref: $1"
}

___x_cmd_chat___exec_tldr_(){
    x_=""
    local _cmd="$1"
    local _content
    _content="$(eval ___X_CMD_TLDR_LANG_PREFERED=en ___x_cmd tldr --cat "$_cmd")" || return $?
    ___x_cmd_chat___wrap_ TLDR-COMMAND  "$_cmd";        _cmd="$x_"
    ___x_cmd_chat___wrap_ TLDR-CONTENT  "$_content";    _content="$x_"
    x_="${_cmd}
${_content}"
    # ___x_cmd_chat___exec_cmd_ "x tldr --cat $1" "tldr of: $1"
}

___x_cmd_chat___exec_ddgo_(){
    x_=""
    local _cmd="$1"
    local _content
    chat:info "x ddgo --top 10 $_cmd"
    _content="$(___x_cmd ddgo --top 10 "$_cmd")" || return $?
    ___x_cmd_chat___wrap_ "DuckDuckGo-SEARCH-ENGINE"    "$_cmd";        _cmd="$x_"
    ___x_cmd_chat___wrap_ "DuckDuckGo-SEARCH-CONTENT"   "$_content";    _content="$x_"
    x_="${_cmd}
${_content}"
    # ___x_cmd_chat___exec_cmd_ "x ddgo $1" "Result from DuckDuckGo search engine"

}


___x_cmd_chat___exec_cmd_(){
    local cmd_text="$1"
    local cmd_desc="$2"
    local cmd_res; cmd_res="$(eval "$cmd_text")" || {
        local _exitcode="$?"
        chat:error "command errexit with code=$_exitcode"
        return 1
    }

    ___x_cmd_chat___wrap_ COMMAND-TO-EVAL   "$cmd_text";    cmd_text="$x_"
    ___x_cmd_chat___wrap_ COMMAND-DESC      "$cmd_desc";    cmd_desc="$x_"
    ___x_cmd_chat___wrap_ COMMAND-RESULT    "$cmd_res";     cmd_res="$x_"
    x_="${cmd_text}
${cmd_desc}
${cmd_res}"
}


# abc_content="$(cat abc.txt)"
# @gemini --kv "file content: abc.txt" "$abc_content"
# res="$(x ddgo adf)"
# @gemini --kv "Result from duckduckgo" "$res"
___x_cmd_chat___exec_kv_(){
    local key="$1"
    local val="$2"
    x_=; ___x_cmd_chat___wrap_ KEY "$key";      key="$x_"
    x_=; ___x_cmd_chat___wrap_ VALUE "$val";    val="$x_"
    x_=; ___x_cmd_chat___wrap_ KEY-VALUE-PAIR "${key}
${val}"
}

___x_cmd_chat___exec_env_(){
    local str="$1"
    local varname="${str%%=*}"
    local varval=""
    local msg=""
    if [ "$varname" = "$str" ]; then
        msg="The value of environment variable $varname"
    else
        msg="${str#*=}"
    fi

    eval "varval=\$$varname"
    x_=; ___x_cmd_chat___wrap_ "$msg" "$varval"
}

___x_cmd_chat___exec_file_(){
    local str="$1"
    local numbered="$2"
    local filename="${str%=*}"
    [ -f "$filename" ] || N=chat M="Please provide a valid [filepath=$filename]" log:ret:1
    x_=; ___x_cmd abspath_ "$filename" || return $?
    [ -f "$x_" ] || N=chat M="Please provide a valid [filepath=$x_]" log:ret:1

    local _content;
    if [ -z "$numbered" ]; then _content=$(___x_cmd_cmds_cat "$x_")
    else                        _content=$(___x_cmd_cmds_cat -n "$x_")
    fi

    [ "$filename" = "$str" ] || filename="${str##*=}"
    x_=; ___x_cmd_chat___wrap_ "FILE-NAME" "$filename";     filename="$x_"
    x_=; ___x_cmd_chat___wrap_ "FILE-CONTENT" "$_content";  _content="$x_"
    x_="${filename}
${_content}"
}

___x_cmd_chat___exec_filelist_(){
    local str="$1"
    local filename="${str%:*}"
    local filedesc=""
    [ "$filename" = "$str" ] || filedesc="${str##*:}"
    [ -f "$filename" ] || N=chat M="Please provide a valid [filepath=$filename]" log:ret:1
    x_=; ___x_cmd abspath_ "$filename" || return $?
    [ -f "$x_" ] || N=chat M="Please provide a valid [filepath=$x_]" log:ret:1
    ___x_cmd_compat_syncfs "$x_"
    x_="${x_}${filedesc:+":$filedesc"}"
}

___x_cmd_chat___wrap_(){
    local key="$1"
    local value="$2"

    # x_="[$key]${value}[/$key]"
    x_="<|---BEGIN[$key]---|>${value}<|---END---|>"
    # x_="[$key]${value}[/$key]"

#     x_="<|---$key---|>
# ${value}[
# <|---$key---|>"

#     x_="-----BEGIN<|$key|>-----
# $value
# ------ END -----"

}

___x_cmd_chat___wrap(){
    local x_
    ___x_cmd_chat___wrap_ "$@"
    printf "%s\n" "$x_"
}

___x_cmd_chat___exec_pipe_(){
    local inputdesc="$1"
    local numbered="$2"
    if [ -z "$numbered" ]; then x_=$(___x_cmd_cmds_cat)
    else                        x_=$(___x_cmd_cmds_cat -n)
    fi

    [ -z "$inputdesc" ] || {
        ___x_cmd_chat___wrap_ "$inputdesc" "$x_"
    }
}

___x_cmd_chat___exec_envinfo(){
    local x_=""; ___x_cmd os name_
    printf "%s\n" "## Current environment information
    - OS: $x_
    - SHELL: ${___X_CMD_COCO_EXEC_SHELL:-$___X_CMD_SHELL}
    - PWD: $PWD"
}
