feat(functions): add qc quick-chat wrapper around aichat

Defaults to the bundled 'cli' role (concise, terminal-friendly output),
installed on first use by symlinking scripts/cli-agent.md into the aichat
config dir. Inherits all aichat flags and completions via --wraps; passing
--role/-r forwards unchanged. Only defined when aichat is installed.
--help prepends a banner and rewrites aichat's own help to qc.

Docs: fish-config.md 5.12 + index keywords.
This commit is contained in:
2026-07-16 01:51:00 -04:00
parent 68eb3b0092
commit f3533835be
4 changed files with 95 additions and 0 deletions
+67
View File
@@ -0,0 +1,67 @@
# Copyright (C) 2026 Rootiest
# SPDX-License-Identifier: AGPL-3.0-or-later
# SYNOPSIS
# qc [prompt...]
#
# DESCRIPTION
# Quick-chat wrapper around aichat using the "cli" role. Resolves the
# aichat config directory (honoring $XDG_CONFIG_HOME), creates it if
# missing, and installs the bundled cli-agent role as a symlink at
# roles/cli.md on first use. Inherits aichat's own flags and tab
# completions (--wraps). The function is only defined when aichat is
# installed.
#
# ARGUMENTS
# prompt... Prompt forwarded to aichat
# -h, --help Show usage help
#
# RETURNS
# aichat's exit status.
#
# EXAMPLE
# qc "how do I list open ports on linux?"
if type -q aichat
function qc --wraps aichat --description 'Quick-chat wrapper around aichat (cli role)'
if contains -- -h $argv; or contains -- --help $argv
set -l c_ttl (set_color --bold cyan)
set -l c_cmd (set_color --bold white)
set -l c_flag (set_color yellow)
set -l c_txt (set_color normal)
set -l c_dim (set_color brblack)
set -l c_rst (set_color normal)
set -l w 59
set -l bar (string repeat -n $w)
# Title line, padded to the box width (plain form drives the math).
set -l title " qc — quick-chat: a thin aichat wrapper"
set -l pad (string repeat -n (math $w - (string length -- $title)) ' ')
echo "$c_dim$bar$c_rst"
echo "$c_dim$c_rst $c_ttl""qc$c_rst $c_dim$c_rst quick-chat: a thin $c_cmd""aichat$c_rst wrapper$pad$c_dim$c_rst"
echo "$c_dim$bar$c_rst"
echo " Defaults to the $c_flag'cli'$c_rst role — an AI system prompt tuned"
echo " for concise, $c_txt""terminal-friendly$c_rst output."
echo
echo " Accepts every $c_cmd""aichat$c_rst flag; passing $c_flag--role$c_rst/$c_flag-r$c_rst overrides"
echo " the default role. $c_cmd""aichat$c_rst's own help follows:"
echo "$c_dim$bar$c_rst"
aichat --help | string replace -a aichat qc
return 0
end
set -q XDG_CONFIG_HOME; or set -l XDG_CONFIG_HOME $HOME/.config
set -l role $XDG_CONFIG_HOME/aichat/roles/cli.md
if not test -e $role
set -l src (path resolve (status dirname)/../scripts/cli-agent.md)
mkdir -p (path dirname $role)
ln -s $src $role
end
# Forward as-is if the user already picked a role; otherwise default to cli.
if contains -- -r $argv; or contains -- --role $argv; or string match -qr -- '^--role=' $argv
aichat $argv
else
aichat --role cli $argv
end
end
end