agentvibes 2.0.12 → 2.0.13

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 (138) hide show
  1. package/.claude/commands/agent-vibes/bmad.md +0 -7
  2. package/.claude/github-star-reminder.txt +1 -1
  3. package/.claude/hooks/piper-installer.sh +7 -57
  4. package/.claude/hooks/play-tts-piper.sh +2 -10
  5. package/.claude/hooks/play-tts.sh +0 -31
  6. package/README.md +2 -2
  7. package/RELEASE_NOTES.md +0 -199
  8. package/package.json +1 -1
  9. package/src/installer.js +1 -112
  10. package/.claude/hooks/play-tts-local-wrapper.sh +0 -44
  11. package/.claude/hooks/play-tts-remote.sh +0 -81
  12. package/agentvibes.org/.claude/commands/agent-vibes/add.md +0 -21
  13. package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +0 -68
  14. package/agentvibes.org/.claude/commands/agent-vibes/commands.json +0 -53
  15. package/agentvibes.org/.claude/commands/agent-vibes/get.md +0 -9
  16. package/agentvibes.org/.claude/commands/agent-vibes/list.md +0 -13
  17. package/agentvibes.org/.claude/commands/agent-vibes/personality.md +0 -79
  18. package/agentvibes.org/.claude/commands/agent-vibes/preview.md +0 -16
  19. package/agentvibes.org/.claude/commands/agent-vibes/provider.md +0 -54
  20. package/agentvibes.org/.claude/commands/agent-vibes/replay.md +0 -19
  21. package/agentvibes.org/.claude/commands/agent-vibes/sample.md +0 -12
  22. package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +0 -52
  23. package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +0 -47
  24. package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +0 -65
  25. package/agentvibes.org/.claude/commands/agent-vibes/switch.md +0 -53
  26. package/agentvibes.org/.claude/commands/agent-vibes/update.md +0 -20
  27. package/agentvibes.org/.claude/commands/agent-vibes/version.md +0 -10
  28. package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +0 -7
  29. package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +0 -278
  30. package/agentvibes.org/.claude/hooks/language-manager.sh +0 -190
  31. package/agentvibes.org/.claude/hooks/personality-manager.sh +0 -279
  32. package/agentvibes.org/.claude/hooks/piper-download-voices.sh +0 -133
  33. package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +0 -227
  34. package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +0 -201
  35. package/agentvibes.org/.claude/hooks/play-tts-piper.sh +0 -175
  36. package/agentvibes.org/.claude/hooks/play-tts.sh +0 -138
  37. package/agentvibes.org/.claude/hooks/provider-commands.sh +0 -374
  38. package/agentvibes.org/.claude/hooks/provider-manager.sh +0 -196
  39. package/agentvibes.org/.claude/hooks/sentiment-manager.sh +0 -163
  40. package/agentvibes.org/.claude/hooks/voice-manager.sh +0 -349
  41. package/agentvibes.org/.claude/hooks/voices-config.sh +0 -33
  42. package/agentvibes.org/.claude/journal/2025-10-07.html +0 -373
  43. package/agentvibes.org/.claude/journal/index.html +0 -91
  44. package/agentvibes.org/.claude/output-styles/agent-vibes.md +0 -203
  45. package/agentvibes.org/.claude/personalities/angry.md +0 -16
  46. package/agentvibes.org/.claude/personalities/annoying.md +0 -16
  47. package/agentvibes.org/.claude/personalities/crass.md +0 -16
  48. package/agentvibes.org/.claude/personalities/dramatic.md +0 -16
  49. package/agentvibes.org/.claude/personalities/dry-humor.md +0 -52
  50. package/agentvibes.org/.claude/personalities/flirty.md +0 -22
  51. package/agentvibes.org/.claude/personalities/funny.md +0 -16
  52. package/agentvibes.org/.claude/personalities/grandpa.md +0 -34
  53. package/agentvibes.org/.claude/personalities/millennial.md +0 -16
  54. package/agentvibes.org/.claude/personalities/moody.md +0 -16
  55. package/agentvibes.org/.claude/personalities/normal.md +0 -18
  56. package/agentvibes.org/.claude/personalities/pirate.md +0 -16
  57. package/agentvibes.org/.claude/personalities/poetic.md +0 -16
  58. package/agentvibes.org/.claude/personalities/professional.md +0 -16
  59. package/agentvibes.org/.claude/personalities/robot.md +0 -16
  60. package/agentvibes.org/.claude/personalities/sarcastic.md +0 -40
  61. package/agentvibes.org/.claude/personalities/sassy.md +0 -16
  62. package/agentvibes.org/.claude/personalities/surfer-dude.md +0 -16
  63. package/agentvibes.org/.claude/personalities/zen.md +0 -16
  64. package/agentvibes.org/.mcp-minimal.json +0 -60
  65. package/agentvibes.org/CHANGELOG.md +0 -56
  66. package/agentvibes.org/README.md +0 -93
  67. package/agentvibes.org/app/(auth)/layout.tsx +0 -15
  68. package/agentvibes.org/app/(auth)/reset-password/page.tsx +0 -45
  69. package/agentvibes.org/app/(auth)/signin/page.tsx +0 -82
  70. package/agentvibes.org/app/(auth)/signup/page.tsx +0 -104
  71. package/agentvibes.org/app/(default)/layout.tsx +0 -31
  72. package/agentvibes.org/app/(default)/page.tsx +0 -20
  73. package/agentvibes.org/app/api/hello/route.ts +0 -3
  74. package/agentvibes.org/app/css/additional-styles/theme.css +0 -82
  75. package/agentvibes.org/app/css/additional-styles/utility-patterns.css +0 -55
  76. package/agentvibes.org/app/css/style.css +0 -100
  77. package/agentvibes.org/app/layout.tsx +0 -63
  78. package/agentvibes.org/components/cta.tsx +0 -58
  79. package/agentvibes.org/components/features.tsx +0 -256
  80. package/agentvibes.org/components/hero-home.tsx +0 -133
  81. package/agentvibes.org/components/modal-video.tsx +0 -137
  82. package/agentvibes.org/components/page-illustration.tsx +0 -55
  83. package/agentvibes.org/components/spotlight.tsx +0 -77
  84. package/agentvibes.org/components/testimonials.tsx +0 -282
  85. package/agentvibes.org/components/ui/footer.tsx +0 -82
  86. package/agentvibes.org/components/ui/header.tsx +0 -53
  87. package/agentvibes.org/components/ui/logo.tsx +0 -10
  88. package/agentvibes.org/components/workflows.tsx +0 -176
  89. package/agentvibes.org/next.config.js +0 -4
  90. package/agentvibes.org/package-lock.json +0 -1974
  91. package/agentvibes.org/package.json +0 -30
  92. package/agentvibes.org/pnpm-lock.yaml +0 -1141
  93. package/agentvibes.org/postcss.config.js +0 -5
  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 +0 -1
  106. package/agentvibes.org/public/images/blurred-shape.svg +0 -1
  107. package/agentvibes.org/public/images/client-logo-01.svg +0 -1
  108. package/agentvibes.org/public/images/client-logo-02.svg +0 -1
  109. package/agentvibes.org/public/images/client-logo-03.svg +0 -1
  110. package/agentvibes.org/public/images/client-logo-04.svg +0 -1
  111. package/agentvibes.org/public/images/client-logo-05.svg +0 -1
  112. package/agentvibes.org/public/images/client-logo-06.svg +0 -1
  113. package/agentvibes.org/public/images/client-logo-07.svg +0 -1
  114. package/agentvibes.org/public/images/client-logo-08.svg +0 -1
  115. package/agentvibes.org/public/images/client-logo-09.svg +0 -1
  116. package/agentvibes.org/public/images/features.png +0 -0
  117. package/agentvibes.org/public/images/footer-illustration.svg +0 -1
  118. package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
  119. package/agentvibes.org/public/images/logo.svg +0 -1
  120. package/agentvibes.org/public/images/page-illustration.svg +0 -1
  121. package/agentvibes.org/public/images/secondary-illustration.svg +0 -1
  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 +0 -28
  136. package/agentvibes.org/utils/useMasonry.tsx +0 -67
  137. package/agentvibes.org/utils/useMousePosition.tsx +0 -27
  138. package/docs/REMOTE_TTS_SETUP.md +0 -190
@@ -1,8 +1,3 @@
1
- ---
2
- description: Complete BMAD voice integration for agents
3
- argument-hint: [command] [args...]
4
- ---
5
-
6
1
  # /agent-vibes:bmad Command
7
2
 
8
3
  Complete BMAD voice integration - assigns unique voices to each BMAD agent AND makes them speak when activated.
@@ -199,5 +194,3 @@ if [[ -n "$BMAD_AGENT_ID" ]]; then
199
194
  fi
200
195
  fi
201
196
  ```
202
-
203
- !bash .claude/hooks/bmad-voice-manager.sh $ARGUMENTS
@@ -1 +1 @@
1
- 20251010
1
+ 20251009
@@ -69,65 +69,15 @@ fi
69
69
 
70
70
  # Install Piper TTS
71
71
  echo "📥 Installing Piper TTS via pipx..."
72
- pipx install piper-tts || pipx install --force piper-tts
72
+ pipx install piper-tts
73
73
 
74
- # Ensure pipx's bin directory is in PATH
75
- echo ""
76
- echo "🔧 Configuring PATH..."
77
- pipx ensurepath
78
-
79
- # Add pipx bin to current session PATH
80
- PIPX_BIN_DIR="$HOME/.local/bin"
81
- if [[ -d "$PIPX_BIN_DIR" ]]; then
82
- export PATH="$PIPX_BIN_DIR:$PATH"
83
- fi
84
-
85
- # Check if piper is available now
86
74
  if ! command -v piper &> /dev/null; then
87
- # Try to find piper in the pipx installation directory
88
- if [[ -f "$PIPX_BIN_DIR/piper" ]]; then
89
- echo "✅ Piper installed at: $PIPX_BIN_DIR/piper"
90
-
91
- # Update shell configuration files
92
- SHELL_CONFIG=""
93
- if [[ -f "$HOME/.bashrc" ]]; then
94
- SHELL_CONFIG="$HOME/.bashrc"
95
- elif [[ -f "$HOME/.zshrc" ]]; then
96
- SHELL_CONFIG="$HOME/.zshrc"
97
- fi
98
-
99
- if [[ -n "$SHELL_CONFIG" ]]; then
100
- # Check if PATH update already exists
101
- if ! grep -q "export PATH=\"\$HOME/.local/bin:\$PATH\"" "$SHELL_CONFIG"; then
102
- echo "" >> "$SHELL_CONFIG"
103
- echo "# Added by AgentVibes Piper installer" >> "$SHELL_CONFIG"
104
- echo "export PATH=\"\$HOME/.local/bin:\$PATH\"" >> "$SHELL_CONFIG"
105
- echo "✅ Updated $SHELL_CONFIG with PATH configuration"
106
- fi
107
- fi
108
-
109
- # Make piper available in current session
110
- export PATH="$PIPX_BIN_DIR:$PATH"
111
-
112
- # Verify it's working
113
- if "$PIPX_BIN_DIR/piper" --version &> /dev/null; then
114
- echo "✅ Piper is working! You may need to restart your terminal or run:"
115
- echo " export PATH=\"\$HOME/.local/bin:\$PATH\""
116
- else
117
- echo "❌ Piper installed but not executing properly"
118
- echo " Please restart your terminal and try again"
119
- exit 1
120
- fi
121
- else
122
- echo ""
123
- echo "❌ Installation completed but piper command not found"
124
- echo ""
125
- echo " Try these steps:"
126
- echo " 1. Run: pipx ensurepath"
127
- echo " 2. Restart your terminal"
128
- echo " 3. Run: export PATH=\"\$HOME/.local/bin:\$PATH\""
129
- exit 1
130
- fi
75
+ echo ""
76
+ echo "❌ Installation completed but piper command not found in PATH"
77
+ echo ""
78
+ echo " Try running: pipx ensurepath"
79
+ echo " Then restart your terminal"
80
+ exit 1
131
81
  fi
132
82
 
133
83
  echo ""
@@ -79,15 +79,7 @@ if [[ -z "$TEXT" ]]; then
79
79
  fi
80
80
 
81
81
  # Check if Piper is installed
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
82
+ if ! command -v piper &> /dev/null; then
91
83
  echo "❌ Error: Piper TTS not installed"
92
84
  echo "Install with: pipx install piper-tts"
93
85
  echo "Or run: .claude/hooks/piper-installer.sh"
@@ -160,7 +152,7 @@ TEMP_FILE="$AUDIO_DIR/tts-$(date +%s).wav"
160
152
  # @exitcode 0=success, 4=synthesis error
161
153
  # @sideeffects Creates audio file
162
154
  # @edgecases Handles piper errors, invalid models
163
- echo "$TEXT" | "$PIPER_CMD" --model "$VOICE_PATH" --output_file "$TEMP_FILE" 2>/dev/null
155
+ echo "$TEXT" | piper --model "$VOICE_PATH" --output_file "$TEMP_FILE" 2>/dev/null
164
156
 
165
157
  if [[ ! -f "$TEMP_FILE" ]] || [[ ! -s "$TEMP_FILE" ]]; then
166
158
  echo "❌ Failed to synthesize speech with Piper"
@@ -18,37 +18,6 @@ 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
52
21
  # Source provider manager to get active provider
53
22
  source "$SCRIPT_DIR/provider-manager.sh"
54
23
 
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![Publish](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml/badge.svg)](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
12
12
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
13
13
 
14
- **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v2.0.10
14
+ **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v2.0.13
15
15
 
16
16
  ---
17
17
 
@@ -45,7 +45,7 @@
45
45
 
46
46
  ## 📰 Latest Release
47
47
 
48
- **[v2.0.0 - The Multi-Provider Revolution](https://github.com/paulpreibisch/AgentVibes/releases/tag/v2.0.10)** 🎉
48
+ **[v2.0.0 - The Multi-Provider Revolution](https://github.com/paulpreibisch/AgentVibes/releases/tag/v2.0.13)** 🎉
49
49
 
50
50
  The biggest update ever! **Multi-provider TTS support** (ElevenLabs + Piper TTS), **30+ languages**, expanded voice library (27+ voices), advanced sentiment system, enhanced BMAD integration, and comprehensive multilingual support. Choose between premium ElevenLabs voices or free offline Piper TTS!
51
51
 
package/RELEASE_NOTES.md CHANGED
@@ -1,204 +1,5 @@
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
-
202
3
  ## 📦 v2.0.10 - GitHub Star Reminder & Provider Fixes (2025-01-10)
203
4
 
204
5
  ### 🤖 AI Summary
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "agentvibes",
4
- "version": "2.0.12",
4
+ "version": "2.0.13",
5
5
  "description": "Now your AI Agents can finally talk back! Professional TTS voice for Claude Code with multi-provider support.",
6
6
  "homepage": "https://agentvibes.org",
7
7
  "keywords": [
package/src/installer.js CHANGED
@@ -136,93 +136,8 @@ async function install(options = {}) {
136
136
 
137
137
  selectedProvider = provider;
138
138
 
139
- // If Piper selected, check if Piper is installed
139
+ // If Piper selected, ask for voice storage location
140
140
  if (selectedProvider === 'piper') {
141
- // Check if Piper is installed
142
- let piperInstalled = false;
143
- try {
144
- const { execSync } = await import('node:child_process');
145
- // First check if piper is in PATH
146
- execSync('which piper', { stdio: 'ignore' });
147
- piperInstalled = true;
148
- } catch {
149
- // If not in PATH, check if it exists in pipx installation directory
150
- const homeDir = process.env.HOME || process.env.USERPROFILE;
151
- const pipxPiperPath = path.join(homeDir, '.local', 'bin', 'piper');
152
- try {
153
- await fs.access(pipxPiperPath, fs.constants.X_OK);
154
- piperInstalled = true;
155
- console.log(chalk.yellow('\n⚠️ Piper is installed but not in PATH'));
156
- console.log(chalk.gray(` Location: ${pipxPiperPath}`));
157
- console.log(chalk.gray(' Run this to add to PATH:'));
158
- console.log(chalk.cyan(' export PATH="$HOME/.local/bin:$PATH"\n'));
159
- } catch {
160
- // Piper not found anywhere
161
- }
162
- }
163
-
164
- if (!piperInstalled) {
165
- console.log(chalk.yellow('\n⚠️ Piper TTS is not installed'));
166
- console.log(chalk.gray(' Piper is a free, offline neural TTS system'));
167
- console.log(chalk.gray(' It needs to be installed separately via pipx\n'));
168
-
169
- const { installPiper } = await inquirer.prompt([
170
- {
171
- type: 'confirm',
172
- name: 'installPiper',
173
- message: 'Would you like to install Piper TTS now?',
174
- default: true,
175
- },
176
- ]);
177
-
178
- if (installPiper) {
179
- console.log(chalk.cyan('\n🚀 Installing Piper TTS...\n'));
180
-
181
- // Check if piper-installer.sh exists in the source directory
182
- const piperInstallerPath = path.join(__dirname, '..', '.claude', 'hooks', 'piper-installer.sh');
183
-
184
- try {
185
- await fs.access(piperInstallerPath);
186
-
187
- // Run the Piper installer
188
- const { execSync } = await import('node:child_process');
189
- try {
190
- execSync(`bash "${piperInstallerPath}"`, {
191
- stdio: 'inherit',
192
- cwd: path.dirname(piperInstallerPath)
193
- });
194
-
195
- // Verify installation succeeded
196
- try {
197
- execSync('which piper', { stdio: 'ignore' });
198
- console.log(chalk.green('\n✓ Piper TTS installed successfully!\n'));
199
- piperInstalled = true;
200
- } catch {
201
- console.log(chalk.yellow('\n⚠️ Piper installed but not found in PATH'));
202
- console.log(chalk.gray(' You may need to restart your terminal\n'));
203
- }
204
- } catch (error) {
205
- console.log(chalk.red('\n✗ Piper installation failed'));
206
- console.log(chalk.gray(' You can try installing manually later with:'));
207
- console.log(chalk.cyan(' .claude/hooks/piper-installer.sh\n'));
208
- }
209
- } catch {
210
- console.log(chalk.yellow('\n⚠️ Piper installer script not found'));
211
- console.log(chalk.gray(' The installer will be copied during installation'));
212
- console.log(chalk.gray(' You can install Piper later with:'));
213
- console.log(chalk.cyan(' .claude/hooks/piper-installer.sh\n'));
214
- }
215
- } else {
216
- console.log(chalk.yellow('\n⚠️ Skipping Piper installation'));
217
- console.log(chalk.gray(' You can install it later with:'));
218
- console.log(chalk.cyan(' .claude/hooks/piper-installer.sh'));
219
- console.log(chalk.gray(' Or switch to ElevenLabs with:'));
220
- console.log(chalk.cyan(' /agent-vibes:provider switch elevenlabs\n'));
221
- }
222
- } else {
223
- console.log(chalk.green('\n✓ Piper TTS is already installed\n'));
224
- }
225
-
226
141
  const homeDir = process.env.HOME || process.env.USERPROFILE;
227
142
  const defaultPiperPath = path.join(homeDir, '.claude', 'piper-voices');
228
143
 
@@ -379,32 +294,6 @@ async function install(options = {}) {
379
294
  } else {
380
295
  selectedProvider = 'piper';
381
296
  console.log(chalk.green('✓ Using Piper TTS (free option)\n'));
382
-
383
- // Check if Piper is installed in auto mode
384
- let piperInstalled = false;
385
- const homeDir = process.env.HOME || process.env.USERPROFILE;
386
- const pipxPiperPath = path.join(homeDir, '.local', 'bin', 'piper');
387
-
388
- try {
389
- const { execSync } = await import('node:child_process');
390
- execSync('which piper', { stdio: 'ignore' });
391
- piperInstalled = true;
392
- console.log(chalk.green('✓ Piper TTS is already installed\n'));
393
- } catch {
394
- // Check if it exists in pipx installation directory
395
- try {
396
- await fs.access(pipxPiperPath, fs.constants.X_OK);
397
- piperInstalled = true;
398
- console.log(chalk.yellow('⚠️ Piper is installed but not in PATH'));
399
- console.log(chalk.gray(` Location: ${pipxPiperPath}`));
400
- console.log(chalk.gray(' Add to PATH with:'));
401
- console.log(chalk.cyan(' export PATH="$HOME/.local/bin:$PATH"\n'));
402
- } catch {
403
- console.log(chalk.yellow('⚠️ Piper TTS is not installed'));
404
- console.log(chalk.gray(' Install it after setup with:'));
405
- console.log(chalk.cyan(' .claude/hooks/piper-installer.sh\n'));
406
- }
407
- }
408
297
  }
409
298
  }
410
299
 
@@ -1,44 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Local TTS Wrapper for AgentVibes
4
- # This script runs on your local Windows WSL and receives audio from remote server
5
- # Usage: ./play-tts-local-wrapper.sh "Text to speak"
6
-
7
- # Configuration
8
- REMOTE_HOST="${AGENTVIBES_REMOTE_HOST:-ubuntu-rdp}"
9
- REMOTE_SCRIPT=".claude/hooks/play-tts-remote.sh"
10
-
11
- # Get text from arguments or stdin
12
- if [ $# -gt 0 ]; then
13
- TEXT="$*"
14
- else
15
- TEXT=$(cat)
16
- fi
17
-
18
- # Function to play audio based on what's available
19
- play_audio() {
20
- # Try paplay first (WSLg PulseAudio)
21
- if command -v paplay &> /dev/null; then
22
- paplay --format=s16le --channels=1 --rate=22050
23
- # Try aplay next
24
- elif command -v aplay &> /dev/null; then
25
- aplay -f S16_LE -c 1 -r 22050
26
- # Try PowerShell audio playback as last resort
27
- elif command -v powershell.exe &> /dev/null; then
28
- # Save to temp file and play with Windows Media Player
29
- TEMP_FILE="/tmp/tts_audio_$$.wav"
30
- cat > "$TEMP_FILE"
31
- powershell.exe -Command "& {(New-Object Media.SoundPlayer '$TEMP_FILE').PlaySync()}" 2>/dev/null
32
- rm -f "$TEMP_FILE"
33
- else
34
- echo "Error: No audio playback method available" >&2
35
- exit 1
36
- fi
37
- }
38
-
39
- # SSH to remote, generate TTS, and pipe back for local playback
40
- echo "$TEXT" | ssh "$REMOTE_HOST" "bash $REMOTE_SCRIPT" | play_audio
41
-
42
- # Alternative method if you want to save the audio file
43
- # echo "$TEXT" | ssh "$REMOTE_HOST" "bash $REMOTE_SCRIPT" > /tmp/tts_output.wav
44
- # paplay /tmp/tts_output.wav
@@ -1,81 +0,0 @@
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
@@ -1,21 +0,0 @@
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