summaryrefslogtreecommitdiffstats
path: root/scripts/completions/aichat.zsh
blob: 83ad7514f21103d31e253a4caf799ad5f873aada (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#compdef aichat

autoload -U is-at-least

_aichat() {
    typeset -A opt_args
    typeset -a _arguments_options
    local ret=1

    if is-at-least 5.2; then
        _arguments_options=(-s -S -C)
    else
        _arguments_options=(-s -C)
    fi

    local context curcontext="$curcontext" state line
     local common=(
'-m+[Choose a LLM model]:MODEL:->models' \
'--model=[Choose a LLM model]:MODEL:->models' \
'-r+[Choose a role]:ROLE:->roles' \
'--role=[Choose a role]:ROLE:->roles' \
'-s+[Create or reuse a session]:SESSION:->sessions' \
'--session=[Create or reuse a session]:SESSION:->sessions' \
'*-f+[Attach files to the message]:FILE:_files' \
'*--file=[Attach files to the message]:FILE:_files' \
'-w+[Specify the text-wrapping mode (no, auto, <max-width>)]:WRAP: ' \
'--wrap=[Specify the text-wrapping mode (no, auto, <max-width>)]:WRAP: ' \
'--save-session[Whether to save the session]' \
'-e[Execute commands using natural language]' \
'--execute[Execute commands using natural language]' \
'-c[Generate only code]' \
'--code[Generate only code]' \
'-H[Disable syntax highlighting]' \
'--no-highlight[Disable syntax highlighting]' \
'-S[No stream output]' \
'--no-stream[No stream output]' \
'--light-theme[Use light theme]' \
'--dry-run[Run in dry run mode]' \
'--info[Print related information]' \
'--list-models[List all available models]' \
'--list-roles[List all available roles]' \
'--list-sessions[List all available sessions]' \
'-h[Print help]' \
'--help[Print help]' \
'-V[Print version]' \
'--version[Print version]' \
'*::text -- Input text:' \
    )


    _arguments "${_arguments_options[@]}" $common \
        && ret=0 
    case $state in
        models|roles|sessions)
            local -a values expl
            values=( ${(f)"$(_call_program values aichat --list-$state)"} )
            _wanted values expl $state compadd -a values && ret=0
            ;;
    esac
    return ret
}

(( $+functions[_aichat_commands] )) ||
_aichat_commands() {
    local commands; commands=()
    _describe -t commands 'aichat commands' commands "$@"
}

if [ "$funcstack[1]" = "_aichat" ]; then
    _aichat "$@"
else
    compdef _aichat aichat
fi