agentvibes 5.1.3 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agentvibes/config.json +23 -13
- package/.claude/commands/agent-vibes/verbosity.md +98 -89
- package/.claude/config/audio-effects.cfg +6 -1
- package/.claude/hooks/bmad-speak.sh +2 -2
- package/.claude/hooks/piper-download-voices.sh +233 -225
- package/.claude/hooks/piper-installer.sh +1 -1
- package/.claude/hooks/piper-voice-manager.sh +125 -0
- package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +97 -90
- package/.claude/hooks/play-tts-enhanced.sh +1 -1
- package/.claude/hooks/play-tts-piper.sh +16 -5
- package/.claude/hooks/play-tts-ssh-remote.sh +168 -167
- package/.claude/hooks/play-tts.sh +31 -9
- package/.claude/hooks/session-start-tts.sh +4 -1
- package/.claude/hooks/stop-tts.sh +1 -1
- package/.claude/hooks/verbosity-manager.sh +185 -178
- package/.claude/hooks-windows/download-extra-voices.ps1 +243 -185
- package/.claude/hooks-windows/play-tts-piper.ps1 +7 -2
- package/.claude/hooks-windows/play-tts.ps1 +219 -65
- package/.claude/hooks-windows/session-start-tts.ps1 +2 -1
- package/.claude/hooks-windows/verbosity-manager.ps1 +126 -119
- package/README.md +24 -1
- package/RELEASE_NOTES.md +113 -0
- package/bin/agentvibes-voice-browser.js +1939 -1840
- package/mcp-server/server.py +75 -25
- package/package.json +1 -1
- package/src/console/tabs/receiver-tab.js +1527 -1483
- package/src/console/tabs/settings-tab.js +2 -2
- package/src/console/tabs/setup-tab.js +122 -20
- package/src/console/tabs/voices-tab.js +130 -13
- package/src/i18n/en.js +202 -202
- package/src/installer.js +29 -25
- package/src/services/llm-provider-service.js +114 -11
- package/src/services/verbosity-service.js +159 -157
- package/templates/agentvibes-receiver.sh +3 -2
|
@@ -126,6 +126,16 @@ TEXT="${TEXT//\\?/?}" # Remove \?
|
|
|
126
126
|
TEXT="${TEXT//\\,/,}" # Remove \,
|
|
127
127
|
TEXT="${TEXT//\\./.}" # Remove \. (keep the period)
|
|
128
128
|
|
|
129
|
+
# When no --llm is supplied, route through the "default" pseudo-LLM so the
|
|
130
|
+
# user-managed `llm:default` row in audio-effects.cfg becomes the global
|
|
131
|
+
# fallback for voice / pretext / music / effects. This is configured via
|
|
132
|
+
# Setup → Default → Configure in the TUI. If `llm:default` doesn't exist,
|
|
133
|
+
# the lookup returns empty and the script falls through to the legacy
|
|
134
|
+
# global config chain (project / user .agentvibes/config.json).
|
|
135
|
+
if [[ -z "$LLM_PROVIDER" ]]; then
|
|
136
|
+
LLM_PROVIDER="default"
|
|
137
|
+
fi
|
|
138
|
+
|
|
129
139
|
# Per-LLM config lookup: if --llm is passed, look up llm:<name> in audio-effects.cfg
|
|
130
140
|
# Format: llm:<name>|REVERB_PRESET|BACKGROUND_FILE|BACKGROUND_VOLUME|VOICE|PRETEXT
|
|
131
141
|
_LLM_VOICE=""
|
|
@@ -198,7 +208,7 @@ else
|
|
|
198
208
|
fi
|
|
199
209
|
|
|
200
210
|
# Show GitHub star reminder (once per day)
|
|
201
|
-
"$SCRIPT_DIR/github-star-reminder.sh" 2>/dev/null || true
|
|
211
|
+
bash "$SCRIPT_DIR/github-star-reminder.sh" 2>/dev/null || true
|
|
202
212
|
|
|
203
213
|
# @function detect_voice_provider
|
|
204
214
|
# @intent Auto-detect provider from voice name (for mixed-provider support)
|
|
@@ -237,16 +247,22 @@ speak_text() {
|
|
|
237
247
|
|
|
238
248
|
case "$provider" in
|
|
239
249
|
piper)
|
|
240
|
-
"$SCRIPT_DIR/play-tts-piper.sh" "$text" "$voice" "$profile_file"
|
|
250
|
+
bash "$SCRIPT_DIR/play-tts-piper.sh" "$text" "$voice" "$profile_file"
|
|
241
251
|
;;
|
|
242
252
|
soprano)
|
|
243
|
-
"$SCRIPT_DIR/play-tts-soprano.sh" "$text" "$voice"
|
|
253
|
+
bash "$SCRIPT_DIR/play-tts-soprano.sh" "$text" "$voice"
|
|
244
254
|
;;
|
|
245
255
|
macos)
|
|
246
|
-
"$SCRIPT_DIR/play-tts-macos.sh" "$text" "$voice"
|
|
256
|
+
bash "$SCRIPT_DIR/play-tts-macos.sh" "$text" "$voice"
|
|
247
257
|
;;
|
|
248
258
|
termux-ssh)
|
|
249
|
-
"$SCRIPT_DIR/play-tts-termux-ssh.sh" "$text" "$voice"
|
|
259
|
+
bash "$SCRIPT_DIR/play-tts-termux-ssh.sh" "$text" "$voice"
|
|
260
|
+
;;
|
|
261
|
+
ssh-remote)
|
|
262
|
+
bash "$SCRIPT_DIR/play-tts-ssh-remote.sh" "$text" "$voice"
|
|
263
|
+
;;
|
|
264
|
+
agentvibes-receiver)
|
|
265
|
+
bash "$SCRIPT_DIR/play-tts-agentvibes-receiver-for-voiceless-connections.sh" "$text" "$voice"
|
|
250
266
|
;;
|
|
251
267
|
*)
|
|
252
268
|
echo "❌ Unknown provider: $provider" >&2
|
|
@@ -361,16 +377,22 @@ fi
|
|
|
361
377
|
# Normal single-language mode - route to appropriate provider implementation
|
|
362
378
|
case "$ACTIVE_PROVIDER" in
|
|
363
379
|
piper)
|
|
364
|
-
exec "$SCRIPT_DIR/play-tts-piper.sh" "$TEXT" "$VOICE_OVERRIDE" "$AGENT_PROFILE_FILE"
|
|
380
|
+
exec bash "$SCRIPT_DIR/play-tts-piper.sh" "$TEXT" "$VOICE_OVERRIDE" "$AGENT_PROFILE_FILE"
|
|
365
381
|
;;
|
|
366
382
|
soprano)
|
|
367
|
-
exec "$SCRIPT_DIR/play-tts-soprano.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
383
|
+
exec bash "$SCRIPT_DIR/play-tts-soprano.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
368
384
|
;;
|
|
369
385
|
macos)
|
|
370
|
-
exec "$SCRIPT_DIR/play-tts-macos.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
386
|
+
exec bash "$SCRIPT_DIR/play-tts-macos.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
371
387
|
;;
|
|
372
388
|
termux-ssh)
|
|
373
|
-
exec "$SCRIPT_DIR/play-tts-termux-ssh.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
389
|
+
exec bash "$SCRIPT_DIR/play-tts-termux-ssh.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
390
|
+
;;
|
|
391
|
+
ssh-remote)
|
|
392
|
+
exec bash "$SCRIPT_DIR/play-tts-ssh-remote.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
393
|
+
;;
|
|
394
|
+
agentvibes-receiver)
|
|
395
|
+
exec bash "$SCRIPT_DIR/play-tts-agentvibes-receiver-for-voiceless-connections.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
374
396
|
;;
|
|
375
397
|
*)
|
|
376
398
|
echo "❌ Unknown provider: $ACTIVE_PROVIDER" >&2
|
|
@@ -52,6 +52,9 @@ case "$VERBOSITY" in
|
|
|
52
52
|
high)
|
|
53
53
|
CONTEXT+="## Verbosity: HIGH\n- Acknowledgment: Action + approach + why\n- Completion: Result + decisions + trade-offs\n- Include: Full reasoning, alternatives\n\n"
|
|
54
54
|
;;
|
|
55
|
+
caveman)
|
|
56
|
+
CONTEXT+="## Verbosity: CAVEMAN\n- Respond terse. All technical substance stays. Only fluff dies.\n- Drop: articles (a/an/the), filler (just/really/basically), pleasantries, hedging\n- Abbreviate: DB/auth/config/req/res/fn/impl. Use arrows (X -> Y). Strip conjunctions.\n- Fragments OK. Short synonyms. Technical terms exact. Code unchanged.\n- Pattern: [thing] [action] [reason]. [next step].\n- TTS: Ultra-short. Max 60 chars.\n\n"
|
|
57
|
+
;;
|
|
55
58
|
esac
|
|
56
59
|
|
|
57
60
|
# Add style info and rules
|
|
@@ -62,7 +65,7 @@ CONTEXT+="2. Never skip completion TTS\n"
|
|
|
62
65
|
CONTEXT+="3. Match verbosity level\n"
|
|
63
66
|
CONTEXT+="4. Keep under 150 chars\n"
|
|
64
67
|
CONTEXT+="5. Always include errors\n\n"
|
|
65
|
-
CONTEXT+="Quick Ref: low=action+result | medium=+key decisions | high=+full reasoning"
|
|
68
|
+
CONTEXT+="Quick Ref: low=action+result | medium=+key decisions | high=+full reasoning | caveman=ultra-terse fragments"
|
|
66
69
|
|
|
67
70
|
# Add BMAD agent voice routing instructions
|
|
68
71
|
CONTEXT+="\n\n## BMAD Agent Voice Routing\n"
|
|
@@ -1,178 +1,185 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/verbosity-manager.sh
|
|
4
|
-
#
|
|
5
|
-
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
-
# Website: https://agentvibes.org
|
|
7
|
-
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
-
#
|
|
9
|
-
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
-
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
-
#
|
|
12
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
-
# you may not use this file except in compliance with the License.
|
|
14
|
-
# You may obtain a copy of the License at
|
|
15
|
-
#
|
|
16
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
-
#
|
|
18
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
-
# See the License for the specific language governing permissions and
|
|
22
|
-
# limitations under the License.
|
|
23
|
-
#
|
|
24
|
-
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
-
# express or implied, including but not limited to the warranties of
|
|
26
|
-
# merchantability, fitness for a particular purpose and noninfringement.
|
|
27
|
-
# In no event shall the authors or copyright holders be liable for any claim,
|
|
28
|
-
# damages or other liability, whether in an action of contract, tort or
|
|
29
|
-
# otherwise, arising from, out of or in connection with the software or the
|
|
30
|
-
# use or other dealings in the software.
|
|
31
|
-
#
|
|
32
|
-
# ---
|
|
33
|
-
#
|
|
34
|
-
# @fileoverview Manages AgentVibes verbosity level (low/medium/high)
|
|
35
|
-
# @context Controls how much Claude speaks while working - acknowledgments only vs full reasoning
|
|
36
|
-
# @architecture Simple config file reader/writer with project-local and global fallback
|
|
37
|
-
# @dependencies tts-verbosity.txt config file
|
|
38
|
-
# @entrypoints Called by slash commands, MCP tools, and session-start hook
|
|
39
|
-
# @patterns Config file management, validation, graceful defaults
|
|
40
|
-
# @related .claude/hooks/session-start-tts.sh, mcp-server/server.py, Issue #32
|
|
41
|
-
|
|
42
|
-
# Fix locale warnings
|
|
43
|
-
export LC_ALL=C
|
|
44
|
-
|
|
45
|
-
# Get script directory for accessing other scripts
|
|
46
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
47
|
-
|
|
48
|
-
# Respect CLAUDE_PROJECT_DIR when set by MCP (project context vs global installation)
|
|
49
|
-
if [[ -n "$CLAUDE_PROJECT_DIR" ]]; then
|
|
50
|
-
CLAUDE_DIR="$CLAUDE_PROJECT_DIR/.claude"
|
|
51
|
-
else
|
|
52
|
-
CLAUDE_DIR="$(dirname "$SCRIPT_DIR")"
|
|
53
|
-
fi
|
|
54
|
-
|
|
55
|
-
# Config file locations
|
|
56
|
-
VERBOSITY_FILE="$CLAUDE_DIR/tts-verbosity.txt"
|
|
57
|
-
GLOBAL_VERBOSITY_FILE="$HOME/.claude/tts-verbosity.txt"
|
|
58
|
-
|
|
59
|
-
#
|
|
60
|
-
# @function get_verbosity
|
|
61
|
-
# @context Returns the current verbosity level (low/medium/high)
|
|
62
|
-
# @architecture Checks project-local first, then global, then defaults to "high"
|
|
63
|
-
# @dependencies tts-verbosity.txt config file
|
|
64
|
-
# @entrypoints Called by session-start hook, MCP tools, slash commands
|
|
65
|
-
# @aiNotes Default to "high" to match installer default for new installations
|
|
66
|
-
#
|
|
67
|
-
get_verbosity() {
|
|
68
|
-
if [[ -f "$VERBOSITY_FILE" ]]; then
|
|
69
|
-
cat "$VERBOSITY_FILE"
|
|
70
|
-
elif [[ -f "$GLOBAL_VERBOSITY_FILE" ]]; then
|
|
71
|
-
cat "$GLOBAL_VERBOSITY_FILE"
|
|
72
|
-
else
|
|
73
|
-
echo "high"
|
|
74
|
-
fi
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
#
|
|
78
|
-
# @function set_verbosity
|
|
79
|
-
# @context Sets the verbosity level to low/medium/high
|
|
80
|
-
# @architecture Validates input, saves to project-local if .claude exists, otherwise global
|
|
81
|
-
# @dependencies None
|
|
82
|
-
# @entrypoints Called by MCP tools and slash commands
|
|
83
|
-
# @aiNotes Saves to project-local (.claude/) when available for per-project settings
|
|
84
|
-
#
|
|
85
|
-
set_verbosity() {
|
|
86
|
-
local level="$1"
|
|
87
|
-
|
|
88
|
-
# Validate input
|
|
89
|
-
if [[ ! "$level" =~ ^(low|medium|high)$ ]]; then
|
|
90
|
-
echo "❌ Invalid verbosity level: $level"
|
|
91
|
-
echo "Valid options: low, medium, high"
|
|
92
|
-
return 1
|
|
93
|
-
fi
|
|
94
|
-
|
|
95
|
-
# Save to project-local or global
|
|
96
|
-
if [[ -d "$CLAUDE_DIR" ]]; then
|
|
97
|
-
echo "$level" > "$VERBOSITY_FILE"
|
|
98
|
-
echo "✅ Verbosity set to: $level (project-local)"
|
|
99
|
-
else
|
|
100
|
-
mkdir -p "$(dirname "$GLOBAL_VERBOSITY_FILE")"
|
|
101
|
-
echo "$level" > "$GLOBAL_VERBOSITY_FILE"
|
|
102
|
-
echo "✅ Verbosity set to: $level (global)"
|
|
103
|
-
fi
|
|
104
|
-
|
|
105
|
-
echo ""
|
|
106
|
-
echo "💡 Verbosity levels:"
|
|
107
|
-
echo " • LOW: Acknowledgments + Completions only"
|
|
108
|
-
echo " • MEDIUM: + Major decisions and findings"
|
|
109
|
-
echo " • HIGH: All reasoning (maximum transparency)"
|
|
110
|
-
echo ""
|
|
111
|
-
echo "
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
#
|
|
118
|
-
# @
|
|
119
|
-
# @
|
|
120
|
-
# @
|
|
121
|
-
# @
|
|
122
|
-
# @
|
|
123
|
-
#
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
current_level
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
echo "
|
|
130
|
-
echo "
|
|
131
|
-
echo ""
|
|
132
|
-
echo "
|
|
133
|
-
echo ""
|
|
134
|
-
echo "
|
|
135
|
-
echo "
|
|
136
|
-
echo " ✅
|
|
137
|
-
echo "
|
|
138
|
-
echo ""
|
|
139
|
-
echo "
|
|
140
|
-
echo "
|
|
141
|
-
echo "
|
|
142
|
-
echo "
|
|
143
|
-
echo "
|
|
144
|
-
echo ""
|
|
145
|
-
echo "
|
|
146
|
-
echo "
|
|
147
|
-
echo "
|
|
148
|
-
echo "
|
|
149
|
-
echo "
|
|
150
|
-
echo "
|
|
151
|
-
echo ""
|
|
152
|
-
echo "
|
|
153
|
-
echo "
|
|
154
|
-
echo "
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# File: .claude/hooks/verbosity-manager.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
+
# Website: https://agentvibes.org
|
|
7
|
+
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
+
#
|
|
9
|
+
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
+
#
|
|
12
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
# you may not use this file except in compliance with the License.
|
|
14
|
+
# You may obtain a copy of the License at
|
|
15
|
+
#
|
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
#
|
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
# See the License for the specific language governing permissions and
|
|
22
|
+
# limitations under the License.
|
|
23
|
+
#
|
|
24
|
+
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
+
# express or implied, including but not limited to the warranties of
|
|
26
|
+
# merchantability, fitness for a particular purpose and noninfringement.
|
|
27
|
+
# In no event shall the authors or copyright holders be liable for any claim,
|
|
28
|
+
# damages or other liability, whether in an action of contract, tort or
|
|
29
|
+
# otherwise, arising from, out of or in connection with the software or the
|
|
30
|
+
# use or other dealings in the software.
|
|
31
|
+
#
|
|
32
|
+
# ---
|
|
33
|
+
#
|
|
34
|
+
# @fileoverview Manages AgentVibes verbosity level (low/medium/high)
|
|
35
|
+
# @context Controls how much Claude speaks while working - acknowledgments only vs full reasoning
|
|
36
|
+
# @architecture Simple config file reader/writer with project-local and global fallback
|
|
37
|
+
# @dependencies tts-verbosity.txt config file
|
|
38
|
+
# @entrypoints Called by slash commands, MCP tools, and session-start hook
|
|
39
|
+
# @patterns Config file management, validation, graceful defaults
|
|
40
|
+
# @related .claude/hooks/session-start-tts.sh, mcp-server/server.py, Issue #32
|
|
41
|
+
|
|
42
|
+
# Fix locale warnings
|
|
43
|
+
export LC_ALL=C
|
|
44
|
+
|
|
45
|
+
# Get script directory for accessing other scripts
|
|
46
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
47
|
+
|
|
48
|
+
# Respect CLAUDE_PROJECT_DIR when set by MCP (project context vs global installation)
|
|
49
|
+
if [[ -n "$CLAUDE_PROJECT_DIR" ]]; then
|
|
50
|
+
CLAUDE_DIR="$CLAUDE_PROJECT_DIR/.claude"
|
|
51
|
+
else
|
|
52
|
+
CLAUDE_DIR="$(dirname "$SCRIPT_DIR")"
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# Config file locations
|
|
56
|
+
VERBOSITY_FILE="$CLAUDE_DIR/tts-verbosity.txt"
|
|
57
|
+
GLOBAL_VERBOSITY_FILE="$HOME/.claude/tts-verbosity.txt"
|
|
58
|
+
|
|
59
|
+
#
|
|
60
|
+
# @function get_verbosity
|
|
61
|
+
# @context Returns the current verbosity level (low/medium/high)
|
|
62
|
+
# @architecture Checks project-local first, then global, then defaults to "high"
|
|
63
|
+
# @dependencies tts-verbosity.txt config file
|
|
64
|
+
# @entrypoints Called by session-start hook, MCP tools, slash commands
|
|
65
|
+
# @aiNotes Default to "high" to match installer default for new installations
|
|
66
|
+
#
|
|
67
|
+
get_verbosity() {
|
|
68
|
+
if [[ -f "$VERBOSITY_FILE" ]]; then
|
|
69
|
+
cat "$VERBOSITY_FILE"
|
|
70
|
+
elif [[ -f "$GLOBAL_VERBOSITY_FILE" ]]; then
|
|
71
|
+
cat "$GLOBAL_VERBOSITY_FILE"
|
|
72
|
+
else
|
|
73
|
+
echo "high"
|
|
74
|
+
fi
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
#
|
|
78
|
+
# @function set_verbosity
|
|
79
|
+
# @context Sets the verbosity level to low/medium/high
|
|
80
|
+
# @architecture Validates input, saves to project-local if .claude exists, otherwise global
|
|
81
|
+
# @dependencies None
|
|
82
|
+
# @entrypoints Called by MCP tools and slash commands
|
|
83
|
+
# @aiNotes Saves to project-local (.claude/) when available for per-project settings
|
|
84
|
+
#
|
|
85
|
+
set_verbosity() {
|
|
86
|
+
local level="$1"
|
|
87
|
+
|
|
88
|
+
# Validate input
|
|
89
|
+
if [[ ! "$level" =~ ^(low|medium|high|caveman)$ ]]; then
|
|
90
|
+
echo "❌ Invalid verbosity level: $level"
|
|
91
|
+
echo "Valid options: low, medium, high, caveman"
|
|
92
|
+
return 1
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
# Save to project-local or global
|
|
96
|
+
if [[ -d "$CLAUDE_DIR" ]]; then
|
|
97
|
+
echo "$level" > "$VERBOSITY_FILE"
|
|
98
|
+
echo "✅ Verbosity set to: $level (project-local)"
|
|
99
|
+
else
|
|
100
|
+
mkdir -p "$(dirname "$GLOBAL_VERBOSITY_FILE")"
|
|
101
|
+
echo "$level" > "$GLOBAL_VERBOSITY_FILE"
|
|
102
|
+
echo "✅ Verbosity set to: $level (global)"
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
echo ""
|
|
106
|
+
echo "💡 Verbosity levels:"
|
|
107
|
+
echo " • LOW: Acknowledgments + Completions only"
|
|
108
|
+
echo " • MEDIUM: + Major decisions and findings"
|
|
109
|
+
echo " • HIGH: All reasoning (maximum transparency)"
|
|
110
|
+
echo " • CAVEMAN: Ultra-terse fragments, max token savings"
|
|
111
|
+
echo ""
|
|
112
|
+
echo "⚠️ Restart Claude Code for changes to take effect"
|
|
113
|
+
|
|
114
|
+
return 0
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
#
|
|
118
|
+
# @function show_info
|
|
119
|
+
# @context Displays current verbosity level with detailed explanation
|
|
120
|
+
# @architecture Reads current level and provides contextual help
|
|
121
|
+
# @dependencies get_verbosity()
|
|
122
|
+
# @entrypoints Called when no arguments provided
|
|
123
|
+
# @aiNotes Helps users understand what each verbosity level does
|
|
124
|
+
#
|
|
125
|
+
show_info() {
|
|
126
|
+
local current_level
|
|
127
|
+
current_level=$(get_verbosity)
|
|
128
|
+
|
|
129
|
+
echo "🎙️ AgentVibes Verbosity Control"
|
|
130
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
131
|
+
echo "Current level: $current_level"
|
|
132
|
+
echo ""
|
|
133
|
+
echo "Available levels:"
|
|
134
|
+
echo ""
|
|
135
|
+
echo "LOW (Minimal)"
|
|
136
|
+
echo " ✅ Acknowledgments only"
|
|
137
|
+
echo " ✅ Completions only"
|
|
138
|
+
echo " 🔇 No reasoning spoken"
|
|
139
|
+
echo ""
|
|
140
|
+
echo "MEDIUM (Balanced)"
|
|
141
|
+
echo " ✅ Acknowledgments"
|
|
142
|
+
echo " 🤔 Major decisions"
|
|
143
|
+
echo " ✓ Key findings"
|
|
144
|
+
echo " ✅ Completions"
|
|
145
|
+
echo ""
|
|
146
|
+
echo "HIGH (Maximum Transparency)"
|
|
147
|
+
echo " ✅ Acknowledgments"
|
|
148
|
+
echo " 💭 All reasoning"
|
|
149
|
+
echo " 🤔 All decisions"
|
|
150
|
+
echo " ✓ All findings"
|
|
151
|
+
echo " ✅ Completions"
|
|
152
|
+
echo ""
|
|
153
|
+
echo "CAVEMAN (Ultra-Terse)"
|
|
154
|
+
echo " ⚡ Fragments only, no filler"
|
|
155
|
+
echo " 📉 65-75% fewer output tokens"
|
|
156
|
+
echo " 🔤 Abbreviations (DB/auth/config/fn/impl)"
|
|
157
|
+
echo " ➡️ Arrows instead of prose (X -> Y)"
|
|
158
|
+
echo ""
|
|
159
|
+
echo "Usage:"
|
|
160
|
+
echo " $0 get # Show current level"
|
|
161
|
+
echo " $0 set low|medium|high|caveman # Change level"
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
# Main execution
|
|
165
|
+
case "$1" in
|
|
166
|
+
get)
|
|
167
|
+
get_verbosity
|
|
168
|
+
;;
|
|
169
|
+
set)
|
|
170
|
+
if [[ -z "$2" ]]; then
|
|
171
|
+
echo "❌ Error: Missing verbosity level"
|
|
172
|
+
echo "Usage: $0 set low|medium|high|caveman"
|
|
173
|
+
exit 1
|
|
174
|
+
fi
|
|
175
|
+
set_verbosity "$2"
|
|
176
|
+
;;
|
|
177
|
+
info|"")
|
|
178
|
+
show_info
|
|
179
|
+
;;
|
|
180
|
+
*)
|
|
181
|
+
echo "❌ Unknown command: $1"
|
|
182
|
+
echo "Usage: $0 {get|set|info} [level]"
|
|
183
|
+
exit 1
|
|
184
|
+
;;
|
|
185
|
+
esac
|