agentvibes 2.0.10 → 2.0.12
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/.claude/commands/agent-vibes/bmad.md +203 -0
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/bmad-tts-injector.sh +333 -0
- package/.claude/hooks/bmad-voice-manager.sh +34 -0
- package/.claude/hooks/piper-installer.sh +57 -7
- package/.claude/hooks/play-tts-local-wrapper.sh +44 -0
- package/.claude/hooks/play-tts-piper.sh +10 -2
- package/.claude/hooks/play-tts-remote.sh +81 -0
- package/.claude/hooks/play-tts.sh +31 -0
- package/.claude/output-styles/agent-vibes.md +52 -36
- package/RELEASE_NOTES.md +199 -0
- package/agentvibes.org/.claude/commands/agent-vibes/add.md +21 -0
- package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +68 -0
- package/agentvibes.org/.claude/commands/agent-vibes/commands.json +53 -0
- package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
- package/agentvibes.org/.claude/commands/agent-vibes/list.md +13 -0
- package/agentvibes.org/.claude/commands/agent-vibes/personality.md +79 -0
- package/agentvibes.org/.claude/commands/agent-vibes/preview.md +16 -0
- package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
- package/agentvibes.org/.claude/commands/agent-vibes/replay.md +19 -0
- package/agentvibes.org/.claude/commands/agent-vibes/sample.md +12 -0
- package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +52 -0
- package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +47 -0
- package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +65 -0
- package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
- package/agentvibes.org/.claude/commands/agent-vibes/update.md +20 -0
- package/agentvibes.org/.claude/commands/agent-vibes/version.md +10 -0
- package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +7 -0
- package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +278 -0
- package/agentvibes.org/.claude/hooks/language-manager.sh +190 -0
- package/agentvibes.org/.claude/hooks/personality-manager.sh +279 -0
- package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
- package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
- package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +201 -0
- package/agentvibes.org/.claude/hooks/play-tts-piper.sh +175 -0
- package/agentvibes.org/.claude/hooks/play-tts.sh +138 -0
- package/agentvibes.org/.claude/hooks/provider-commands.sh +374 -0
- package/agentvibes.org/.claude/hooks/provider-manager.sh +196 -0
- package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
- package/agentvibes.org/.claude/hooks/voice-manager.sh +349 -0
- package/agentvibes.org/.claude/hooks/voices-config.sh +33 -0
- package/agentvibes.org/.claude/journal/2025-10-07.html +373 -0
- package/agentvibes.org/.claude/journal/index.html +91 -0
- package/agentvibes.org/.claude/output-styles/agent-vibes.md +203 -0
- package/agentvibes.org/.claude/personalities/angry.md +16 -0
- package/agentvibes.org/.claude/personalities/annoying.md +16 -0
- package/agentvibes.org/.claude/personalities/crass.md +16 -0
- package/agentvibes.org/.claude/personalities/dramatic.md +16 -0
- package/agentvibes.org/.claude/personalities/dry-humor.md +52 -0
- package/agentvibes.org/.claude/personalities/flirty.md +22 -0
- package/agentvibes.org/.claude/personalities/funny.md +16 -0
- package/agentvibes.org/.claude/personalities/grandpa.md +34 -0
- package/agentvibes.org/.claude/personalities/millennial.md +16 -0
- package/agentvibes.org/.claude/personalities/moody.md +16 -0
- package/agentvibes.org/.claude/personalities/normal.md +18 -0
- package/agentvibes.org/.claude/personalities/pirate.md +16 -0
- package/agentvibes.org/.claude/personalities/poetic.md +16 -0
- package/agentvibes.org/.claude/personalities/professional.md +16 -0
- package/agentvibes.org/.claude/personalities/robot.md +16 -0
- package/agentvibes.org/.claude/personalities/sarcastic.md +40 -0
- package/agentvibes.org/.claude/personalities/sassy.md +16 -0
- package/agentvibes.org/.claude/personalities/surfer-dude.md +16 -0
- package/agentvibes.org/.claude/personalities/zen.md +16 -0
- package/agentvibes.org/.mcp-minimal.json +60 -0
- package/agentvibes.org/CHANGELOG.md +56 -0
- package/agentvibes.org/README.md +93 -0
- package/agentvibes.org/app/(auth)/layout.tsx +15 -0
- package/agentvibes.org/app/(auth)/reset-password/page.tsx +45 -0
- package/agentvibes.org/app/(auth)/signin/page.tsx +82 -0
- package/agentvibes.org/app/(auth)/signup/page.tsx +104 -0
- package/agentvibes.org/app/(default)/layout.tsx +31 -0
- package/agentvibes.org/app/(default)/page.tsx +20 -0
- package/agentvibes.org/app/api/hello/route.ts +3 -0
- package/agentvibes.org/app/css/additional-styles/theme.css +82 -0
- package/agentvibes.org/app/css/additional-styles/utility-patterns.css +55 -0
- package/agentvibes.org/app/css/style.css +100 -0
- package/agentvibes.org/app/layout.tsx +63 -0
- package/agentvibes.org/components/cta.tsx +58 -0
- package/agentvibes.org/components/features.tsx +256 -0
- package/agentvibes.org/components/hero-home.tsx +133 -0
- package/agentvibes.org/components/modal-video.tsx +137 -0
- package/agentvibes.org/components/page-illustration.tsx +55 -0
- package/agentvibes.org/components/spotlight.tsx +77 -0
- package/agentvibes.org/components/testimonials.tsx +282 -0
- package/agentvibes.org/components/ui/footer.tsx +82 -0
- package/agentvibes.org/components/ui/header.tsx +53 -0
- package/agentvibes.org/components/ui/logo.tsx +10 -0
- package/agentvibes.org/components/workflows.tsx +176 -0
- package/agentvibes.org/next.config.js +4 -0
- package/agentvibes.org/package-lock.json +1974 -0
- package/agentvibes.org/package.json +30 -0
- package/agentvibes.org/pnpm-lock.yaml +1141 -0
- package/agentvibes.org/postcss.config.js +5 -0
- package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
- package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
- package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
- package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
- package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
- package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
- package/agentvibes.org/public/favicon.ico +0 -0
- package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
- package/agentvibes.org/public/images/blurred-shape-gray.svg +1 -0
- package/agentvibes.org/public/images/blurred-shape.svg +1 -0
- package/agentvibes.org/public/images/client-logo-01.svg +1 -0
- package/agentvibes.org/public/images/client-logo-02.svg +1 -0
- package/agentvibes.org/public/images/client-logo-03.svg +1 -0
- package/agentvibes.org/public/images/client-logo-04.svg +1 -0
- package/agentvibes.org/public/images/client-logo-05.svg +1 -0
- package/agentvibes.org/public/images/client-logo-06.svg +1 -0
- package/agentvibes.org/public/images/client-logo-07.svg +1 -0
- package/agentvibes.org/public/images/client-logo-08.svg +1 -0
- package/agentvibes.org/public/images/client-logo-09.svg +1 -0
- package/agentvibes.org/public/images/features.png +0 -0
- package/agentvibes.org/public/images/footer-illustration.svg +1 -0
- package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
- package/agentvibes.org/public/images/logo.svg +1 -0
- package/agentvibes.org/public/images/page-illustration.svg +1 -0
- package/agentvibes.org/public/images/secondary-illustration.svg +1 -0
- package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
- package/agentvibes.org/public/images/workflow-01.png +0 -0
- package/agentvibes.org/public/images/workflow-02.png +0 -0
- package/agentvibes.org/public/images/workflow-03.png +0 -0
- package/agentvibes.org/public/videos/video.mp4 +0 -0
- package/agentvibes.org/tsconfig.json +28 -0
- package/agentvibes.org/utils/useMasonry.tsx +67 -0
- package/agentvibes.org/utils/useMousePosition.tsx +27 -0
- package/docs/REMOTE_TTS_SETUP.md +190 -0
- package/package.json +2 -2
- package/src/installer.js +191 -7
- package/.claude/commands/agent-vibes-bmad.md +0 -132
|
@@ -79,7 +79,15 @@ if [[ -z "$TEXT" ]]; then
|
|
|
79
79
|
fi
|
|
80
80
|
|
|
81
81
|
# Check if Piper is installed
|
|
82
|
-
|
|
82
|
+
PIPER_CMD=""
|
|
83
|
+
if command -v piper &> /dev/null; then
|
|
84
|
+
PIPER_CMD="piper"
|
|
85
|
+
elif [[ -x "$HOME/.local/bin/piper" ]]; then
|
|
86
|
+
# Check pipx installation directory
|
|
87
|
+
PIPER_CMD="$HOME/.local/bin/piper"
|
|
88
|
+
echo "⚠️ Using Piper from: $PIPER_CMD"
|
|
89
|
+
echo " Add to PATH: export PATH=\"\$HOME/.local/bin:\$PATH\""
|
|
90
|
+
else
|
|
83
91
|
echo "❌ Error: Piper TTS not installed"
|
|
84
92
|
echo "Install with: pipx install piper-tts"
|
|
85
93
|
echo "Or run: .claude/hooks/piper-installer.sh"
|
|
@@ -152,7 +160,7 @@ TEMP_FILE="$AUDIO_DIR/tts-$(date +%s).wav"
|
|
|
152
160
|
# @exitcode 0=success, 4=synthesis error
|
|
153
161
|
# @sideeffects Creates audio file
|
|
154
162
|
# @edgecases Handles piper errors, invalid models
|
|
155
|
-
echo "$TEXT" |
|
|
163
|
+
echo "$TEXT" | "$PIPER_CMD" --model "$VOICE_PATH" --output_file "$TEMP_FILE" 2>/dev/null
|
|
156
164
|
|
|
157
165
|
if [[ ! -f "$TEMP_FILE" ]] || [[ ! -s "$TEMP_FILE" ]]; then
|
|
158
166
|
echo "❌ Failed to synthesize speech with Piper"
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Remote TTS Generator for AgentVibes
|
|
4
|
+
# This script generates TTS on the remote server and outputs audio data
|
|
5
|
+
# that can be piped through SSH for local playback
|
|
6
|
+
|
|
7
|
+
# Default voice model
|
|
8
|
+
DEFAULT_MODEL="$HOME/.claude/piper-voices/en_US-lessac-medium.onnx"
|
|
9
|
+
DEFAULT_VOICE="Aria"
|
|
10
|
+
|
|
11
|
+
# Get text from arguments or stdin
|
|
12
|
+
if [ $# -gt 0 ]; then
|
|
13
|
+
TEXT="$*"
|
|
14
|
+
else
|
|
15
|
+
TEXT=$(cat)
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
# Check if we're in an SSH session or force remote mode
|
|
19
|
+
if [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_CLIENT" ] || [ "$FORCE_REMOTE_TTS" = "true" ]; then
|
|
20
|
+
# We're on a remote server or forcing remote mode
|
|
21
|
+
|
|
22
|
+
# Check for piper
|
|
23
|
+
if command -v piper &> /dev/null; then
|
|
24
|
+
PIPER_CMD="piper"
|
|
25
|
+
elif [ -f "$HOME/.local/share/pipx/venvs/piper-tts/bin/piper" ]; then
|
|
26
|
+
PIPER_CMD="$HOME/.local/share/pipx/venvs/piper-tts/bin/piper"
|
|
27
|
+
elif [ -f "$HOME/bin/piper" ]; then
|
|
28
|
+
PIPER_CMD="$HOME/bin/piper"
|
|
29
|
+
else
|
|
30
|
+
# Fallback to espeak-ng if available
|
|
31
|
+
if command -v espeak-ng &> /dev/null; then
|
|
32
|
+
echo "$TEXT" | espeak-ng --stdout
|
|
33
|
+
exit 0
|
|
34
|
+
else
|
|
35
|
+
echo "Error: No TTS engine found (piper or espeak-ng)" >&2
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Check for voice model
|
|
41
|
+
if [ -f "$DEFAULT_MODEL" ]; then
|
|
42
|
+
MODEL="$DEFAULT_MODEL"
|
|
43
|
+
elif [ -f "$HOME/.local/share/piper/voices/en_US-lessac-medium.onnx" ]; then
|
|
44
|
+
MODEL="$HOME/.local/share/piper/voices/en_US-lessac-medium.onnx"
|
|
45
|
+
else
|
|
46
|
+
echo "Error: No voice model found" >&2
|
|
47
|
+
exit 1
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# Generate TTS and output raw audio to stdout
|
|
51
|
+
echo "$TEXT" | "$PIPER_CMD" -m "$MODEL" -f - 2>/dev/null
|
|
52
|
+
|
|
53
|
+
else
|
|
54
|
+
# We're running locally in WSL - still generate TTS for testing
|
|
55
|
+
# Check for piper in WSL
|
|
56
|
+
if [ -f "$HOME/.local/share/pipx/venvs/piper-tts/bin/piper" ]; then
|
|
57
|
+
PIPER_CMD="$HOME/.local/share/pipx/venvs/piper-tts/bin/piper"
|
|
58
|
+
elif [ -f "$HOME/bin/piper" ]; then
|
|
59
|
+
PIPER_CMD="$HOME/bin/piper"
|
|
60
|
+
elif command -v pipx &> /dev/null; then
|
|
61
|
+
# Try using pipx run as fallback
|
|
62
|
+
echo "$TEXT" | pipx run piper-tts -m "$DEFAULT_MODEL" -f - 2>/dev/null
|
|
63
|
+
exit 0
|
|
64
|
+
else
|
|
65
|
+
echo "Error: No TTS engine found in local WSL" >&2
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
# Check for voice model
|
|
70
|
+
if [ -f "$DEFAULT_MODEL" ]; then
|
|
71
|
+
MODEL="$DEFAULT_MODEL"
|
|
72
|
+
elif [ -f "$HOME/.local/share/piper/voices/en_US-lessac-medium.onnx" ]; then
|
|
73
|
+
MODEL="$HOME/.local/share/piper/voices/en_US-lessac-medium.onnx"
|
|
74
|
+
else
|
|
75
|
+
echo "Error: No voice model found" >&2
|
|
76
|
+
exit 1
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
# Generate TTS and output raw audio to stdout
|
|
80
|
+
echo "$TEXT" | "$PIPER_CMD" -m "$MODEL" -f - 2>/dev/null
|
|
81
|
+
fi
|
|
@@ -18,6 +18,37 @@ VOICE_OVERRIDE="$2" # Optional: voice name or ID
|
|
|
18
18
|
# Get script directory
|
|
19
19
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
20
|
|
|
21
|
+
# Check if we're in an SSH session and should use remote TTS
|
|
22
|
+
if [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_CLIENT" ]; then
|
|
23
|
+
# Check if remote TTS forwarding is enabled
|
|
24
|
+
if [ -f "$HOME/.claude/tts-remote-forward" ] || [ "$AGENTVIBES_REMOTE_TTS" = "true" ]; then
|
|
25
|
+
# In SSH session with forwarding enabled - generate locally but don't play
|
|
26
|
+
# The audio data should be captured and sent to the client
|
|
27
|
+
|
|
28
|
+
# Source provider manager to get active provider
|
|
29
|
+
source "$SCRIPT_DIR/provider-manager.sh"
|
|
30
|
+
ACTIVE_PROVIDER=$(get_active_provider)
|
|
31
|
+
|
|
32
|
+
case "$ACTIVE_PROVIDER" in
|
|
33
|
+
piper)
|
|
34
|
+
# Generate audio and output to stdout for SSH forwarding
|
|
35
|
+
exec "$SCRIPT_DIR/play-tts-remote.sh" "$TEXT"
|
|
36
|
+
;;
|
|
37
|
+
elevenlabs)
|
|
38
|
+
# For ElevenLabs, we might need a different approach
|
|
39
|
+
# since it requires API calls
|
|
40
|
+
exec "$SCRIPT_DIR/play-tts-elevenlabs.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
41
|
+
;;
|
|
42
|
+
*)
|
|
43
|
+
echo "❌ Unknown provider: $ACTIVE_PROVIDER" >&2
|
|
44
|
+
exit 1
|
|
45
|
+
;;
|
|
46
|
+
esac
|
|
47
|
+
exit 0
|
|
48
|
+
fi
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
# Normal local playback path
|
|
21
52
|
# Source provider manager to get active provider
|
|
22
53
|
source "$SCRIPT_DIR/provider-manager.sh"
|
|
23
54
|
|
|
@@ -128,55 +128,71 @@ You: "✅ That bug be walkin' the plank now, arr!"
|
|
|
128
128
|
|
|
129
129
|
## BMAD Plugin Integration
|
|
130
130
|
|
|
131
|
-
**Automatic voice switching for BMAD agents:**
|
|
131
|
+
**Automatic voice switching and question detection for BMAD agents:**
|
|
132
132
|
|
|
133
|
-
When a BMAD agent is
|
|
133
|
+
When a BMAD agent is active, AgentVibes will automatically detect and speak questions.
|
|
134
134
|
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
### Detection Method:
|
|
136
|
+
1. **Check for `.bmad-agent-context` file** - Contains agent ID if BMAD agent is active
|
|
137
|
+
2. **Check if BMAD plugin is enabled** - `.claude/plugins/bmad-voices-enabled.flag` exists
|
|
137
138
|
3. **Look up voice mapping** from `.claude/plugins/bmad-voices.md`
|
|
138
|
-
4. **Apply agent's assigned voice** for all TTS acknowledgments/completions
|
|
139
|
-
5. **Apply agent's personality** from the mapping (if specified)
|
|
140
139
|
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
# At the start of acknowledgment/completion:
|
|
144
|
-
# Try to detect BMAD agent ID from current context
|
|
145
|
-
BMAD_AGENT_ID=""
|
|
140
|
+
### MANDATORY BMAD QUESTION TTS PROTOCOL
|
|
146
141
|
|
|
147
|
-
|
|
148
|
-
if [[ -f ".bmad-agent-context" ]]; then
|
|
149
|
-
BMAD_AGENT_ID=$(cat .bmad-agent-context 2>/dev/null)
|
|
150
|
-
fi
|
|
142
|
+
**THIS IS A CRITICAL EXECUTION REQUIREMENT - NOT OPTIONAL**
|
|
151
143
|
|
|
152
|
-
|
|
153
|
-
# Note: This detection happens automatically when BMAD agent activates
|
|
144
|
+
When a BMAD agent is active, you MUST follow this EXACT protocol for EVERY response:
|
|
154
145
|
|
|
155
|
-
|
|
156
|
-
|
|
146
|
+
**STEP 1: Check BMAD Context (BEFORE drafting ANY response)**
|
|
147
|
+
```bash
|
|
148
|
+
if [[ -f ".bmad-agent-context" ]] && [[ -f ".claude/plugins/bmad-voices-enabled.flag" ]]; then
|
|
149
|
+
BMAD_AGENT_ID=$(cat .bmad-agent-context 2>/dev/null)
|
|
157
150
|
MAPPED_VOICE=$(.claude/hooks/bmad-voice-manager.sh get-voice "$BMAD_AGENT_ID")
|
|
158
|
-
MAPPED_PERSONALITY=$(.claude/hooks/bmad-voice-manager.sh get-personality "$BMAD_AGENT_ID")
|
|
159
|
-
|
|
160
|
-
if [[ -n "$MAPPED_VOICE" ]]; then
|
|
161
|
-
# Use BMAD agent's mapped voice and personality
|
|
162
|
-
if [[ -n "$MAPPED_PERSONALITY" ]] && [[ "$MAPPED_PERSONALITY" != "normal" ]]; then
|
|
163
|
-
# Read personality instructions from .claude/personalities/${MAPPED_PERSONALITY}.md
|
|
164
|
-
# Generate response in that personality style
|
|
165
|
-
fi
|
|
166
|
-
.claude/hooks/play-tts.sh "message" "$MAPPED_VOICE"
|
|
167
|
-
# Exit early - don't use default personality system
|
|
168
|
-
return
|
|
169
|
-
fi
|
|
170
151
|
fi
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**STEP 2: Draft Your Response**
|
|
155
|
+
- Write your complete response text (don't show to user yet)
|
|
156
|
+
|
|
157
|
+
**STEP 3: Scan for Questions (MANDATORY - DO NOT SKIP)**
|
|
158
|
+
If your response contains ANY of these:
|
|
159
|
+
- Question mark (?)
|
|
160
|
+
- Numbered list (1., 2., 3., etc.)
|
|
161
|
+
- Question phrases: "What would you like", "Should I", "Would you prefer", "Which option", "How should", "Do you want"
|
|
171
162
|
|
|
172
|
-
|
|
173
|
-
|
|
163
|
+
Then IMMEDIATELY execute STEP 4 BEFORE showing response.
|
|
164
|
+
|
|
165
|
+
**STEP 4: Speak Questions via TTS (MANDATORY)**
|
|
166
|
+
```bash
|
|
167
|
+
# Extract the question text and speak it
|
|
168
|
+
.claude/hooks/play-tts.sh "the actual question text" "$MAPPED_VOICE"
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**STEP 5: Show Response to User**
|
|
172
|
+
- Only NOW display the response text
|
|
173
|
+
|
|
174
|
+
**CRITICAL RULES:**
|
|
175
|
+
1. This protocol is MANDATORY for EVERY BMAD agent response
|
|
176
|
+
2. Steps 1-5 must execute in EXACT order
|
|
177
|
+
3. You MUST use Bash tool to execute TTS in STEP 4
|
|
178
|
+
4. NEVER skip STEP 3 scanning - it is required
|
|
179
|
+
5. NEVER show response before speaking questions
|
|
180
|
+
|
|
181
|
+
**Example Execution:**
|
|
182
|
+
```
|
|
183
|
+
User: "What should we do?"
|
|
184
|
+
[STEP 1: Check context - analyst agent active]
|
|
185
|
+
[STEP 2: Draft response: "What would you like to do next?\n\n1. Option A\n2. Option B"]
|
|
186
|
+
[STEP 3: Scan - FOUND question "What would you like to do next?" and numbered list]
|
|
187
|
+
[STEP 4: Execute Bash: .claude/hooks/play-tts.sh "What would you like to do next" "Ralf Eisend"]
|
|
188
|
+
[STEP 5: Show response to user]
|
|
174
189
|
```
|
|
175
190
|
|
|
176
191
|
**BMAD Agent Context Tracking:**
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
192
|
+
- Context file `.bmad-agent-context` contains agent ID when BMAD agent is active
|
|
193
|
+
- Created automatically by STEP 3.5a in activation-instructions
|
|
194
|
+
- Removed automatically when agent exits
|
|
195
|
+
- This allows AgentVibes to detect which BMAD agent is active
|
|
180
196
|
|
|
181
197
|
**Voice Priority (in order):**
|
|
182
198
|
1. BMAD plugin voice (if agent active and plugin enabled)
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,5 +1,204 @@
|
|
|
1
1
|
# 🎤 AgentVibes Release Notes
|
|
2
2
|
|
|
3
|
+
## 📦 v2.0.12 - Remote TTS & BMAD Command Fix (2025-01-10)
|
|
4
|
+
|
|
5
|
+
### 🤖 AI Summary
|
|
6
|
+
|
|
7
|
+
This patch release adds powerful remote TTS audio forwarding for WSL/remote server environments and fixes the missing `/agent-vibes:bmad` slash command. Users working on remote servers or WSL can now hear TTS audio on their local machine through SSH forwarding, while BMAD users can finally access the voice integration command that was previously undetected.
|
|
8
|
+
|
|
9
|
+
### ✨ New Features
|
|
10
|
+
|
|
11
|
+
#### Remote TTS Audio Forwarding
|
|
12
|
+
- **SSH audio forwarding** - TTS audio plays on your local machine when working remotely
|
|
13
|
+
- **Automatic detection** - Detects SSH_CONNECTION and forwards audio automatically
|
|
14
|
+
- **Multiple forwarding methods**:
|
|
15
|
+
- OSC 52 clipboard (terminals supporting OSC sequences)
|
|
16
|
+
- HTTP server (Python-based local audio player)
|
|
17
|
+
- SSH tunnel (port forwarding setup)
|
|
18
|
+
- **WSL compatibility** - Perfect for WSL users who want audio on Windows host
|
|
19
|
+
- **Configuration guide** - New `docs/REMOTE_TTS_SETUP.md` with setup instructions
|
|
20
|
+
- **Fallback support** - Gracefully falls back to local playback if forwarding fails
|
|
21
|
+
|
|
22
|
+
**New Scripts:**
|
|
23
|
+
- `.claude/hooks/play-tts-remote.sh` - Remote audio forwarding logic
|
|
24
|
+
- `.claude/hooks/play-tts-local-wrapper.sh` - Local playback wrapper for HTTP method
|
|
25
|
+
- `docs/REMOTE_TTS_SETUP.md` - Complete setup guide
|
|
26
|
+
|
|
27
|
+
#### Enhanced Piper TTS Installation
|
|
28
|
+
- **PATH detection** - Automatically finds Piper in `~/.local/bin` even if not in PATH
|
|
29
|
+
- **Installation validation** - Verifies Piper installation success before proceeding
|
|
30
|
+
- **Better error handling** - Clear messages when Piper isn't found
|
|
31
|
+
- **Automatic voice download prompts** - Offers to download voice models after installation
|
|
32
|
+
|
|
33
|
+
### 🐛 Bug Fixes
|
|
34
|
+
|
|
35
|
+
#### BMAD Command Detection Fix
|
|
36
|
+
- **Fixed**: `/agent-vibes:bmad` command not appearing in Claude Code slash command list
|
|
37
|
+
- **Root Cause**: Missing YAML frontmatter and bash directive in command file
|
|
38
|
+
- **Impact**: BMAD voice integration features are now accessible
|
|
39
|
+
- **Added**:
|
|
40
|
+
- YAML frontmatter with description and argument-hint
|
|
41
|
+
- `!bash .claude/hooks/bmad-voice-manager.sh $ARGUMENTS` directive
|
|
42
|
+
- **File**: `.claude/commands/agent-vibes/bmad.md`
|
|
43
|
+
|
|
44
|
+
**What Was Broken:**
|
|
45
|
+
```bash
|
|
46
|
+
# Before: Command not found
|
|
47
|
+
/agent-vibes:bmad status
|
|
48
|
+
# Error: Unknown command
|
|
49
|
+
|
|
50
|
+
# After: Works perfectly
|
|
51
|
+
/agent-vibes:bmad status
|
|
52
|
+
# ✅ BMAD voice plugin: ENABLED
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 🔧 Technical Changes
|
|
56
|
+
|
|
57
|
+
#### Remote TTS Architecture
|
|
58
|
+
**Main Router (`play-tts.sh`):**
|
|
59
|
+
- Detects `$SSH_CONNECTION` environment variable
|
|
60
|
+
- Routes to `play-tts-remote.sh` when SSH session detected
|
|
61
|
+
- Falls back to local playback for non-SSH sessions
|
|
62
|
+
|
|
63
|
+
**Forwarding Methods:**
|
|
64
|
+
1. **OSC 52 (Clipboard)**:
|
|
65
|
+
- Encodes audio as base64
|
|
66
|
+
- Sends via OSC 52 escape sequence
|
|
67
|
+
- Requires terminal supporting OSC 52
|
|
68
|
+
- Best for: iTerm2, Windows Terminal, Hyper
|
|
69
|
+
|
|
70
|
+
2. **HTTP Server**:
|
|
71
|
+
- Starts Python HTTP server on port 8765
|
|
72
|
+
- Serves audio files over SSH tunnel
|
|
73
|
+
- Opens browser to play audio
|
|
74
|
+
- Best for: All environments with Python
|
|
75
|
+
|
|
76
|
+
3. **SSH Tunnel**:
|
|
77
|
+
- Uses SSH reverse tunnel (-R)
|
|
78
|
+
- Forwards audio files to local machine
|
|
79
|
+
- Requires SSH agent forwarding
|
|
80
|
+
- Best for: Advanced users
|
|
81
|
+
|
|
82
|
+
**Configuration:**
|
|
83
|
+
```bash
|
|
84
|
+
# Set in .claude/tts-remote-method.txt (project-local)
|
|
85
|
+
# or ~/.claude/tts-remote-method.txt (global)
|
|
86
|
+
echo "http" > .claude/tts-remote-method.txt
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### Piper Installer Improvements
|
|
90
|
+
**Modified: `.claude/hooks/piper-installer.sh`**
|
|
91
|
+
- Added `~/.local/bin/piper` detection
|
|
92
|
+
- Checks for execution permission
|
|
93
|
+
- Validates installation with `piper --version`
|
|
94
|
+
- Shows PATH instructions when Piper found but not in PATH
|
|
95
|
+
- Auto-detects pipx installation directory
|
|
96
|
+
|
|
97
|
+
**Modified: `src/installer.js`**
|
|
98
|
+
- Enhanced Piper installation workflow
|
|
99
|
+
- Added PATH detection before installation
|
|
100
|
+
- Shows helpful PATH export command when needed
|
|
101
|
+
- Validates Piper is accessible after installation
|
|
102
|
+
|
|
103
|
+
### 📊 Files Changed
|
|
104
|
+
|
|
105
|
+
**Added (3 files):**
|
|
106
|
+
- `.claude/hooks/play-tts-remote.sh` (81 lines)
|
|
107
|
+
- `.claude/hooks/play-tts-local-wrapper.sh` (44 lines)
|
|
108
|
+
- `docs/REMOTE_TTS_SETUP.md` (190 lines)
|
|
109
|
+
|
|
110
|
+
**Modified (5 files):**
|
|
111
|
+
- `.claude/commands/agent-vibes/bmad.md` (8 insertions)
|
|
112
|
+
- `.claude/hooks/play-tts.sh` (31 insertions)
|
|
113
|
+
- `.claude/hooks/play-tts-piper.sh` (12 lines changed)
|
|
114
|
+
- `.claude/hooks/piper-installer.sh` (58 insertions, 6 deletions)
|
|
115
|
+
- `src/installer.js` (107 insertions, 6 deletions)
|
|
116
|
+
|
|
117
|
+
**Total Changes:** 545 insertions, 13 deletions across 8 files
|
|
118
|
+
|
|
119
|
+
### 🎯 User Impact
|
|
120
|
+
|
|
121
|
+
**Before v2.0.12:**
|
|
122
|
+
- Remote/WSL users couldn't hear TTS audio
|
|
123
|
+
- `/agent-vibes:bmad` command was invisible
|
|
124
|
+
- Piper installation didn't validate PATH
|
|
125
|
+
- No remote audio forwarding options
|
|
126
|
+
|
|
127
|
+
**After v2.0.12:**
|
|
128
|
+
- Remote TTS works via SSH forwarding
|
|
129
|
+
- BMAD command fully functional
|
|
130
|
+
- Piper installer validates PATH and accessibility
|
|
131
|
+
- Multiple forwarding methods for different environments
|
|
132
|
+
- Complete setup guide for remote audio
|
|
133
|
+
|
|
134
|
+
### 💡 Usage Examples
|
|
135
|
+
|
|
136
|
+
#### Remote TTS Setup
|
|
137
|
+
```bash
|
|
138
|
+
# Quick setup for HTTP method (recommended)
|
|
139
|
+
echo "http" > .claude/tts-remote-method.txt
|
|
140
|
+
|
|
141
|
+
# On your LOCAL machine, create SSH tunnel:
|
|
142
|
+
ssh -R 8765:localhost:8765 user@remote-server
|
|
143
|
+
|
|
144
|
+
# Now TTS audio plays on your local machine!
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
#### BMAD Voice Integration
|
|
148
|
+
```bash
|
|
149
|
+
# Enable BMAD plugin
|
|
150
|
+
/agent-vibes:bmad enable
|
|
151
|
+
|
|
152
|
+
# Check status
|
|
153
|
+
/agent-vibes:bmad status
|
|
154
|
+
|
|
155
|
+
# Set custom voice for agent
|
|
156
|
+
/agent-vibes:bmad set pm "Aria"
|
|
157
|
+
|
|
158
|
+
# List all agent mappings
|
|
159
|
+
/agent-vibes:bmad list
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 🔄 Migration Notes
|
|
163
|
+
|
|
164
|
+
**For Remote/WSL Users:**
|
|
165
|
+
1. Update AgentVibes: `npx agentvibes update`
|
|
166
|
+
2. Read setup guide: `docs/REMOTE_TTS_SETUP.md`
|
|
167
|
+
3. Choose forwarding method (HTTP recommended)
|
|
168
|
+
4. Configure SSH tunnel for chosen method
|
|
169
|
+
5. Enjoy TTS audio on local machine!
|
|
170
|
+
|
|
171
|
+
**For BMAD Users:**
|
|
172
|
+
- Update to v2.0.12 to access `/agent-vibes:bmad` command
|
|
173
|
+
- No configuration changes needed
|
|
174
|
+
- All existing BMAD voice mappings preserved
|
|
175
|
+
|
|
176
|
+
**For All Users:**
|
|
177
|
+
- No breaking changes
|
|
178
|
+
- Remote TTS is optional (auto-detected)
|
|
179
|
+
- Local TTS works exactly as before
|
|
180
|
+
|
|
181
|
+
### 📝 Commits in This Release
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
ef99bda feat: add remote TTS audio forwarding support
|
|
185
|
+
156feb7 feat: enhance Piper TTS installation and audio forwarding support
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### 🙏 Credits
|
|
189
|
+
|
|
190
|
+
- Thanks to WSL and remote server users who requested audio forwarding
|
|
191
|
+
- Special appreciation to BMAD users who reported the missing command
|
|
192
|
+
- Python HTTP server method inspired by similar remote audio solutions
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
197
|
+
|
|
198
|
+
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
3
202
|
## 📦 v2.0.10 - GitHub Star Reminder & Provider Fixes (2025-01-10)
|
|
4
203
|
|
|
5
204
|
### 🤖 AI Summary
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Add a new custom ElevenLabs TTS voice
|
|
3
|
+
argument-hint: <voice_name> <voice_id>
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Add a new custom ElevenLabs TTS voice to your voice library.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
- `/agent-vibes:add "My Custom Voice" abc123xyz456789`
|
|
10
|
+
- `/agent-vibes:add Narrator KTPVrSVAEUSJRClDzBw7`
|
|
11
|
+
|
|
12
|
+
The voice ID should be a 15-30 character alphanumeric string from your ElevenLabs account.
|
|
13
|
+
|
|
14
|
+
To find your voice IDs:
|
|
15
|
+
1. Go to https://elevenlabs.io/app/voice-library
|
|
16
|
+
2. Click on a voice
|
|
17
|
+
3. Copy the voice ID from the URL or settings
|
|
18
|
+
|
|
19
|
+
After adding, you can switch to it with `/agent-vibes:switch "Voice Name"`
|
|
20
|
+
|
|
21
|
+
!bash .claude/hooks/voice-manager.sh add $ARGUMENTS
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: ElevenLabs TTS voice management commands
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 🎤 ElevenLabs Voice Management
|
|
6
|
+
|
|
7
|
+
Manage your ElevenLabs text-to-speech voices with these commands:
|
|
8
|
+
|
|
9
|
+
## Available Commands
|
|
10
|
+
|
|
11
|
+
### `/agent-vibes:list [first|last] [N]`
|
|
12
|
+
List all available voices, with optional filtering
|
|
13
|
+
- `/agent-vibes:list` - Show all voices
|
|
14
|
+
- `/agent-vibes:list first 5` - Show first 5 voices
|
|
15
|
+
- `/agent-vibes:list last 3` - Show last 3 voices
|
|
16
|
+
|
|
17
|
+
### `/agent-vibes:preview [first|last] [N]`
|
|
18
|
+
Preview voices by playing audio samples
|
|
19
|
+
- `/agent-vibes:preview` - Preview first 3 voices
|
|
20
|
+
- `/agent-vibes:preview 5` - Preview first 5 voices
|
|
21
|
+
- `/agent-vibes:preview last 5` - Preview last 5 voices
|
|
22
|
+
|
|
23
|
+
### `/agent-vibes:switch <voice_name>`
|
|
24
|
+
Switch to a different default voice
|
|
25
|
+
- `/agent-vibes:switch Northern Terry`
|
|
26
|
+
- `/agent-vibes:switch "Cowboy Bob"`
|
|
27
|
+
|
|
28
|
+
### `/agent-vibes:get`
|
|
29
|
+
Display the currently selected voice
|
|
30
|
+
|
|
31
|
+
### `/agent-vibes:add <name> <voice_id>`
|
|
32
|
+
Add a new custom voice from your ElevenLabs account
|
|
33
|
+
- `/agent-vibes:add "My Voice" abc123xyz456`
|
|
34
|
+
|
|
35
|
+
### `/agent-vibes:replay [N]`
|
|
36
|
+
Replay recently played TTS audio
|
|
37
|
+
- `/agent-vibes:replay` - Replay last audio
|
|
38
|
+
- `/agent-vibes:replay 1` - Replay most recent
|
|
39
|
+
- `/agent-vibes:replay 2` - Replay second-to-last
|
|
40
|
+
- `/agent-vibes:replay 3` - Replay third-to-last
|
|
41
|
+
|
|
42
|
+
Keeps last 10 audio files in history.
|
|
43
|
+
|
|
44
|
+
### `/agent-vibes:set-pretext <word>`
|
|
45
|
+
Set a prefix word/phrase for all TTS messages
|
|
46
|
+
- `/agent-vibes:set-pretext AgentVibes` - All TTS starts with "AgentVibes:"
|
|
47
|
+
- `/agent-vibes:set-pretext "Project Alpha"` - Custom phrase
|
|
48
|
+
- `/agent-vibes:set-pretext ""` - Clear pretext
|
|
49
|
+
|
|
50
|
+
Saved locally in `.claude/config/agentvibes.json`
|
|
51
|
+
|
|
52
|
+
## Getting Voice IDs
|
|
53
|
+
|
|
54
|
+
To add your own custom voices:
|
|
55
|
+
1. Go to https://elevenlabs.io/app/voice-library
|
|
56
|
+
2. Select or create a voice
|
|
57
|
+
3. Copy the voice ID (15-30 character alphanumeric string)
|
|
58
|
+
4. Use `/agent-vibes:add` to add it
|
|
59
|
+
|
|
60
|
+
## Default Voices
|
|
61
|
+
|
|
62
|
+
The system comes with these Character Voices from ElevenLabs:
|
|
63
|
+
- Northern Terry, Grandpa Spuds Oxley, Ms. Walker
|
|
64
|
+
- Ralf Eisend, Amy, Michael, Jessica Anne Bogart
|
|
65
|
+
- Aria, Lutz Laugh, Dr. Von Fusion, Matthew Schmitz
|
|
66
|
+
- Demon Monster, Cowboy Bob, Drill Sergeant
|
|
67
|
+
|
|
68
|
+
Enjoy your TTS experience! 🎵
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"namespace": "agent-vibes",
|
|
3
|
+
"commands": [
|
|
4
|
+
{
|
|
5
|
+
"name": "list",
|
|
6
|
+
"description": "List all available ElevenLabs voices"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"name": "preview",
|
|
10
|
+
"description": "Preview ElevenLabs voices by playing audio samples"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "switch",
|
|
14
|
+
"description": "Switch to a different ElevenLabs voice"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "whoami",
|
|
18
|
+
"description": "Display currently selected voice"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "sample",
|
|
22
|
+
"description": "Play a sample with the current or specified voice"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "replay",
|
|
26
|
+
"description": "Replay the last TTS message"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "personality",
|
|
30
|
+
"description": "Manage AI personality settings"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "sentiment",
|
|
34
|
+
"description": "Set temporary personality sentiment"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "set-pretext",
|
|
38
|
+
"description": "Configure pre-TTS message text"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "set-language",
|
|
42
|
+
"description": "Set TTS language for multilingual voices"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "add",
|
|
46
|
+
"description": "Add a new personality"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "get",
|
|
50
|
+
"description": "Get personality details"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: List available ElevenLabs TTS voices with optional filtering
|
|
3
|
+
argument-hint: [first|last] [N]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
List available ElevenLabs TTS voices.
|
|
7
|
+
|
|
8
|
+
Usage examples:
|
|
9
|
+
- `/agent-vibes:list` - Show all voices
|
|
10
|
+
- `/agent-vibes:list first 5` - Show first 5 voices
|
|
11
|
+
- `/agent-vibes:list last 3` - Show last 3 voices
|
|
12
|
+
|
|
13
|
+
!bash .claude/hooks/voice-manager.sh list $ARGUMENTS
|