mirror of
https://github.com/danielmiessler/Fabric.git
synced 2026-01-09 14:28:01 -05:00
## CHANGES - Add `--voice` flag for TTS voice selection - Add `--list-gemini-voices` command for voice discovery - Implement voice validation for Gemini TTS models - Update shell completions for voice options - Add comprehensive Gemini TTS documentation - Create voice samples directory structure - Extend spell checker dictionary with voice names
125 lines
7.2 KiB
Plaintext
125 lines
7.2 KiB
Plaintext
#compdef fabric
|
|
|
|
# Zsh completion for fabric CLI
|
|
# Place this file in a directory in your $fpath (e.g. /usr/local/share/zsh/site-functions)
|
|
|
|
_fabric_patterns() {
|
|
local -a patterns
|
|
patterns=(${(f)"$(fabric --listpatterns --shell-complete-list 2>/dev/null)"})
|
|
compadd -X "Patterns:" ${patterns}
|
|
}
|
|
|
|
_fabric_models() {
|
|
local -a models
|
|
models=(${(f)"$(fabric --listmodels --shell-complete-list 2>/dev/null)"})
|
|
compadd -X "Models:" ${models}
|
|
}
|
|
|
|
_fabric_contexts() {
|
|
local -a contexts
|
|
contexts=(${(f)"$(fabric --listcontexts --shell-complete-list 2>/dev/null)"})
|
|
compadd -X "Contexts:" ${contexts}
|
|
}
|
|
|
|
_fabric_sessions() {
|
|
local -a sessions
|
|
sessions=(${(f)"$(fabric --listsessions --shell-complete-list 2>/dev/null)"})
|
|
compadd -X "Sessions:" ${sessions}
|
|
}
|
|
|
|
_fabric_strategies() {
|
|
local -a strategies
|
|
strategies=(${(f)"$(fabric --liststrategies --shell-complete-list 2>/dev/null)"})
|
|
compadd -X "Strategies:" ${strategies}
|
|
}
|
|
|
|
_fabric_extensions() {
|
|
local -a extensions
|
|
extensions=(${(f)"$(fabric --listextensions --shell-complete-list 2>/dev/null)"})
|
|
compadd -X "Extensions:" ${extensions}
|
|
}
|
|
|
|
_fabric_gemini_voices() {
|
|
local -a voices
|
|
voices=(${(f)"$(fabric --list-gemini-voices --shell-complete-list 2>/dev/null)"})
|
|
compadd -X "Gemini TTS Voices:" ${voices}
|
|
}
|
|
|
|
_fabric() {
|
|
local curcontext="$curcontext" state line
|
|
typeset -A opt_args
|
|
|
|
_arguments -C \
|
|
'(-p --pattern)'{-p,--pattern}'[Choose a pattern from the available patterns]:pattern:_fabric_patterns' \
|
|
'(-v --variable)'{-v,--variable}'[Values for pattern variables, e.g. -v=#role:expert -v=#points:30]:variable:' \
|
|
'(-C --context)'{-C,--context}'[Choose a context from the available contexts]:context:_fabric_contexts' \
|
|
'(--session)--session[Choose a session from the available sessions]:session:_fabric_sessions' \
|
|
'(-a --attachment)'{-a,--attachment}'[Attachment path or URL (e.g. for OpenAI image recognition messages)]:file:_files' \
|
|
'(-S --setup)'{-S,--setup}'[Run setup for all reconfigurable parts of fabric]' \
|
|
'(-t --temperature)'{-t,--temperature}'[Set temperature (default: 0.7)]:temperature:' \
|
|
'(-T --topp)'{-T,--topp}'[Set top P (default: 0.9)]:topp:' \
|
|
'(-s --stream)'{-s,--stream}'[Stream]' \
|
|
'(-P --presencepenalty)'{-P,--presencepenalty}'[Set presence penalty (default: 0.0)]:presence penalty:' \
|
|
'(-r --raw)'{-r,--raw}'[Use the defaults of the model without sending chat options]' \
|
|
'(-F --frequencypenalty)'{-F,--frequencypenalty}'[Set frequency penalty (default: 0.0)]:frequency penalty:' \
|
|
'(-l --listpatterns)'{-l,--listpatterns}'[List all patterns]' \
|
|
'(-L --listmodels)'{-L,--listmodels}'[List all available models]' \
|
|
'(-x --listcontexts)'{-x,--listcontexts}'[List all contexts]' \
|
|
'(-X --listsessions)'{-X,--listsessions}'[List all sessions]' \
|
|
'(-U --updatepatterns)'{-U,--updatepatterns}'[Update patterns]' \
|
|
'(-c --copy)'{-c,--copy}'[Copy to clipboard]' \
|
|
'(-m --model)'{-m,--model}'[Choose model]:model:_fabric_models' \
|
|
'(--modelContextLength)--modelContextLength[Model context length (only affects ollama)]:length:' \
|
|
'(-o --output)'{-o,--output}'[Output to file]:file:_files' \
|
|
'(--output-session)--output-session[Output the entire session to the output file]' \
|
|
'(-n --latest)'{-n,--latest}'[Number of latest patterns to list (default: 0)]:number:' \
|
|
'(-d --changeDefaultModel)'{-d,--changeDefaultModel}'[Change default model]' \
|
|
'(-y --youtube)'{-y,--youtube}'[YouTube video or play list URL]:youtube url:' \
|
|
'(--playlist)--playlist[Prefer playlist over video if both ids are present in the URL]' \
|
|
'(--transcript)--transcript[Grab transcript from YouTube video and send to chat]' \
|
|
'(--transcript-with-timestamps)--transcript-with-timestamps[Grab transcript from YouTube video with timestamps]' \
|
|
'(--comments)--comments[Grab comments from YouTube video and send to chat]' \
|
|
'(--metadata)--metadata[Output video metadata]' \
|
|
'(-g --language)'{-g,--language}'[Specify the Language Code for the chat, e.g. -g=en -g=zh]:language:' \
|
|
'(-u --scrape_url)'{-u,--scrape_url}'[Scrape website URL to markdown using Jina AI]:url:' \
|
|
'(-q --scrape_question)'{-q,--scrape_question}'[Search question using Jina AI]:question:' \
|
|
'(-e --seed)'{-e,--seed}'[Seed to be used for LMM generation]:seed:' \
|
|
'(-w --wipecontext)'{-w,--wipecontext}'[Wipe context]:context:_fabric_contexts' \
|
|
'(-W --wipesession)'{-W,--wipesession}'[Wipe session]:session:_fabric_sessions' \
|
|
'(--printcontext)--printcontext[Print context]:context:_fabric_contexts' \
|
|
'(--printsession)--printsession[Print session]:session:_fabric_sessions' \
|
|
'(--readability)--readability[Convert HTML input into a clean, readable view]' \
|
|
'(--input-has-vars)--input-has-vars[Apply variables to user input]' \
|
|
'(--dry-run)--dry-run[Show what would be sent to the model without actually sending it]' \
|
|
'(--serve)--serve[Serve the Fabric Rest API]' \
|
|
'(--serveOllama)--serveOllama[Serve the Fabric Rest API with ollama endpoints]' \
|
|
'(--address)--address[The address to bind the REST API (default: :8080)]:address:' \
|
|
'(--api-key)--api-key[API key used to secure server routes]:api-key:' \
|
|
'(--config)--config[Path to YAML config file]:config file:_files -g "*.yaml *.yml"' \
|
|
'(--version)--version[Print current version]' \
|
|
'(--search)--search[Enable web search tool for supported models (Anthropic, OpenAI)]' \
|
|
'(--search-location)--search-location[Set location for web search results]:location:' \
|
|
'(--image-file)--image-file[Save generated image to specified file path]:image file:_files -g "*.png *.webp *.jpeg *.jpg"' \
|
|
'(--image-size)--image-size[Image dimensions]:size:(1024x1024 1536x1024 1024x1536 auto)' \
|
|
'(--image-quality)--image-quality[Image quality]:quality:(low medium high auto)' \
|
|
'(--image-compression)--image-compression[Compression level 0-100 for JPEG/WebP formats]:compression:' \
|
|
'(--image-background)--image-background[Background type]:background:(opaque transparent)' \
|
|
'(--listextensions)--listextensions[List all registered extensions]' \
|
|
'(--addextension)--addextension[Register a new extension from config file path]:config file:_files -g "*.yaml *.yml"' \
|
|
'(--rmextension)--rmextension[Remove a registered extension by name]:extension:_fabric_extensions' \
|
|
'(--strategy)--strategy[Choose a strategy from the available strategies]:strategy:_fabric_strategies' \
|
|
'(--liststrategies)--liststrategies[List all strategies]' \
|
|
'(--listvendors)--listvendors[List all vendors]' \
|
|
'(--voice)--voice[TTS voice name for supported models]:voice:_fabric_gemini_voices' \
|
|
'(--list-gemini-voices)--list-gemini-voices[List all available Gemini TTS voices]' \
|
|
'(--shell-complete-list)--shell-complete-list[Output raw list without headers/formatting (for shell completion)]' \
|
|
'(--suppress-think)--suppress-think[Suppress text enclosed in thinking tags]' \
|
|
'(--think-start-tag)--think-start-tag[Start tag for thinking sections (default: <think>)]:start tag:' \
|
|
'(--think-end-tag)--think-end-tag[End tag for thinking sections (default: </think>)]:end tag:' \
|
|
'(--disable-responses-api)--disable-responses-api[Disable OpenAI Responses API (default: false)]' \
|
|
'(-h --help)'{-h,--help}'[Show this help message]' \
|
|
'*:arguments:'
|
|
}
|
|
|
|
_fabric "$@"
|