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.
Files changed (141) hide show
  1. package/.claude/commands/agent-vibes/bmad.md +203 -0
  2. package/.claude/github-star-reminder.txt +1 -1
  3. package/.claude/hooks/bmad-tts-injector.sh +333 -0
  4. package/.claude/hooks/bmad-voice-manager.sh +34 -0
  5. package/.claude/hooks/piper-installer.sh +57 -7
  6. package/.claude/hooks/play-tts-local-wrapper.sh +44 -0
  7. package/.claude/hooks/play-tts-piper.sh +10 -2
  8. package/.claude/hooks/play-tts-remote.sh +81 -0
  9. package/.claude/hooks/play-tts.sh +31 -0
  10. package/.claude/output-styles/agent-vibes.md +52 -36
  11. package/RELEASE_NOTES.md +199 -0
  12. package/agentvibes.org/.claude/commands/agent-vibes/add.md +21 -0
  13. package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +68 -0
  14. package/agentvibes.org/.claude/commands/agent-vibes/commands.json +53 -0
  15. package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
  16. package/agentvibes.org/.claude/commands/agent-vibes/list.md +13 -0
  17. package/agentvibes.org/.claude/commands/agent-vibes/personality.md +79 -0
  18. package/agentvibes.org/.claude/commands/agent-vibes/preview.md +16 -0
  19. package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
  20. package/agentvibes.org/.claude/commands/agent-vibes/replay.md +19 -0
  21. package/agentvibes.org/.claude/commands/agent-vibes/sample.md +12 -0
  22. package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +52 -0
  23. package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +47 -0
  24. package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +65 -0
  25. package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
  26. package/agentvibes.org/.claude/commands/agent-vibes/update.md +20 -0
  27. package/agentvibes.org/.claude/commands/agent-vibes/version.md +10 -0
  28. package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +7 -0
  29. package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +278 -0
  30. package/agentvibes.org/.claude/hooks/language-manager.sh +190 -0
  31. package/agentvibes.org/.claude/hooks/personality-manager.sh +279 -0
  32. package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
  33. package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
  34. package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +201 -0
  35. package/agentvibes.org/.claude/hooks/play-tts-piper.sh +175 -0
  36. package/agentvibes.org/.claude/hooks/play-tts.sh +138 -0
  37. package/agentvibes.org/.claude/hooks/provider-commands.sh +374 -0
  38. package/agentvibes.org/.claude/hooks/provider-manager.sh +196 -0
  39. package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
  40. package/agentvibes.org/.claude/hooks/voice-manager.sh +349 -0
  41. package/agentvibes.org/.claude/hooks/voices-config.sh +33 -0
  42. package/agentvibes.org/.claude/journal/2025-10-07.html +373 -0
  43. package/agentvibes.org/.claude/journal/index.html +91 -0
  44. package/agentvibes.org/.claude/output-styles/agent-vibes.md +203 -0
  45. package/agentvibes.org/.claude/personalities/angry.md +16 -0
  46. package/agentvibes.org/.claude/personalities/annoying.md +16 -0
  47. package/agentvibes.org/.claude/personalities/crass.md +16 -0
  48. package/agentvibes.org/.claude/personalities/dramatic.md +16 -0
  49. package/agentvibes.org/.claude/personalities/dry-humor.md +52 -0
  50. package/agentvibes.org/.claude/personalities/flirty.md +22 -0
  51. package/agentvibes.org/.claude/personalities/funny.md +16 -0
  52. package/agentvibes.org/.claude/personalities/grandpa.md +34 -0
  53. package/agentvibes.org/.claude/personalities/millennial.md +16 -0
  54. package/agentvibes.org/.claude/personalities/moody.md +16 -0
  55. package/agentvibes.org/.claude/personalities/normal.md +18 -0
  56. package/agentvibes.org/.claude/personalities/pirate.md +16 -0
  57. package/agentvibes.org/.claude/personalities/poetic.md +16 -0
  58. package/agentvibes.org/.claude/personalities/professional.md +16 -0
  59. package/agentvibes.org/.claude/personalities/robot.md +16 -0
  60. package/agentvibes.org/.claude/personalities/sarcastic.md +40 -0
  61. package/agentvibes.org/.claude/personalities/sassy.md +16 -0
  62. package/agentvibes.org/.claude/personalities/surfer-dude.md +16 -0
  63. package/agentvibes.org/.claude/personalities/zen.md +16 -0
  64. package/agentvibes.org/.mcp-minimal.json +60 -0
  65. package/agentvibes.org/CHANGELOG.md +56 -0
  66. package/agentvibes.org/README.md +93 -0
  67. package/agentvibes.org/app/(auth)/layout.tsx +15 -0
  68. package/agentvibes.org/app/(auth)/reset-password/page.tsx +45 -0
  69. package/agentvibes.org/app/(auth)/signin/page.tsx +82 -0
  70. package/agentvibes.org/app/(auth)/signup/page.tsx +104 -0
  71. package/agentvibes.org/app/(default)/layout.tsx +31 -0
  72. package/agentvibes.org/app/(default)/page.tsx +20 -0
  73. package/agentvibes.org/app/api/hello/route.ts +3 -0
  74. package/agentvibes.org/app/css/additional-styles/theme.css +82 -0
  75. package/agentvibes.org/app/css/additional-styles/utility-patterns.css +55 -0
  76. package/agentvibes.org/app/css/style.css +100 -0
  77. package/agentvibes.org/app/layout.tsx +63 -0
  78. package/agentvibes.org/components/cta.tsx +58 -0
  79. package/agentvibes.org/components/features.tsx +256 -0
  80. package/agentvibes.org/components/hero-home.tsx +133 -0
  81. package/agentvibes.org/components/modal-video.tsx +137 -0
  82. package/agentvibes.org/components/page-illustration.tsx +55 -0
  83. package/agentvibes.org/components/spotlight.tsx +77 -0
  84. package/agentvibes.org/components/testimonials.tsx +282 -0
  85. package/agentvibes.org/components/ui/footer.tsx +82 -0
  86. package/agentvibes.org/components/ui/header.tsx +53 -0
  87. package/agentvibes.org/components/ui/logo.tsx +10 -0
  88. package/agentvibes.org/components/workflows.tsx +176 -0
  89. package/agentvibes.org/next.config.js +4 -0
  90. package/agentvibes.org/package-lock.json +1974 -0
  91. package/agentvibes.org/package.json +30 -0
  92. package/agentvibes.org/pnpm-lock.yaml +1141 -0
  93. package/agentvibes.org/postcss.config.js +5 -0
  94. package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
  95. package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
  96. package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
  97. package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
  98. package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
  99. package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
  100. package/agentvibes.org/public/favicon.ico +0 -0
  101. package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
  102. package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
  103. package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
  104. package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
  105. package/agentvibes.org/public/images/blurred-shape-gray.svg +1 -0
  106. package/agentvibes.org/public/images/blurred-shape.svg +1 -0
  107. package/agentvibes.org/public/images/client-logo-01.svg +1 -0
  108. package/agentvibes.org/public/images/client-logo-02.svg +1 -0
  109. package/agentvibes.org/public/images/client-logo-03.svg +1 -0
  110. package/agentvibes.org/public/images/client-logo-04.svg +1 -0
  111. package/agentvibes.org/public/images/client-logo-05.svg +1 -0
  112. package/agentvibes.org/public/images/client-logo-06.svg +1 -0
  113. package/agentvibes.org/public/images/client-logo-07.svg +1 -0
  114. package/agentvibes.org/public/images/client-logo-08.svg +1 -0
  115. package/agentvibes.org/public/images/client-logo-09.svg +1 -0
  116. package/agentvibes.org/public/images/features.png +0 -0
  117. package/agentvibes.org/public/images/footer-illustration.svg +1 -0
  118. package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
  119. package/agentvibes.org/public/images/logo.svg +1 -0
  120. package/agentvibes.org/public/images/page-illustration.svg +1 -0
  121. package/agentvibes.org/public/images/secondary-illustration.svg +1 -0
  122. package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
  123. package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
  124. package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
  125. package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
  126. package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
  127. package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
  128. package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
  129. package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
  130. package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
  131. package/agentvibes.org/public/images/workflow-01.png +0 -0
  132. package/agentvibes.org/public/images/workflow-02.png +0 -0
  133. package/agentvibes.org/public/images/workflow-03.png +0 -0
  134. package/agentvibes.org/public/videos/video.mp4 +0 -0
  135. package/agentvibes.org/tsconfig.json +28 -0
  136. package/agentvibes.org/utils/useMasonry.tsx +67 -0
  137. package/agentvibes.org/utils/useMousePosition.tsx +27 -0
  138. package/docs/REMOTE_TTS_SETUP.md +190 -0
  139. package/package.json +2 -2
  140. package/src/installer.js +191 -7
  141. 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
- if ! command -v piper &> /dev/null; then
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" | piper --model "$VOICE_PATH" --output_file "$TEMP_FILE" 2>/dev/null
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 activated (e.g., `/BMad:agents:pm`), AgentVibes will automatically:
133
+ When a BMAD agent is active, AgentVibes will automatically detect and speak questions.
134
134
 
135
- 1. **Detect BMAD agent from command/context**
136
- 2. **Check if BMAD plugin is enabled** (`.claude/plugins/bmad-voices-enabled.flag`)
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
- **Implementation:**
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
- # Method 1: Check if we're in a BMAD agent command context
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
- # Method 2: Parse from command history/context (fallback)
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
- # If BMAD agent detected and plugin enabled, use mapped voice
156
- if [[ -n "$BMAD_AGENT_ID" ]] && [[ -f ".claude/plugins/bmad-voices-enabled.flag" ]]; then
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
- # If no BMAD agent or plugin disabled, use standard personality/sentiment system
173
- # ... continue with normal sentiment/personality logic ...
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
- - When a BMAD agent activates, write agent ID to `.bmad-agent-context`
178
- - When agent exits, remove the file
179
- - This allows AgentVibes to know which BMAD agent is active
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,9 @@
1
+ ---
2
+ description: Get the currently selected ElevenLabs TTS voice
3
+ ---
4
+
5
+ Display the currently selected ElevenLabs TTS voice.
6
+
7
+ This shows which voice is currently set as the default for TTS audio generation.
8
+
9
+ !bash .claude/hooks/voice-manager.sh get
@@ -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