agentvibes 2.0.12 → 2.0.14
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 +0 -7
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/piper-installer.sh +7 -57
- package/.claude/hooks/play-tts-piper.sh +2 -10
- package/.claude/hooks/play-tts.sh +0 -31
- package/README.md +3 -3
- package/RELEASE_NOTES.md +44 -170
- package/package.json +1 -1
- package/src/installer.js +1 -112
- package/.claude/hooks/play-tts-local-wrapper.sh +0 -44
- package/.claude/hooks/play-tts-remote.sh +0 -81
- package/agentvibes.org/.claude/commands/agent-vibes/add.md +0 -21
- package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +0 -68
- package/agentvibes.org/.claude/commands/agent-vibes/commands.json +0 -53
- package/agentvibes.org/.claude/commands/agent-vibes/get.md +0 -9
- package/agentvibes.org/.claude/commands/agent-vibes/list.md +0 -13
- package/agentvibes.org/.claude/commands/agent-vibes/personality.md +0 -79
- package/agentvibes.org/.claude/commands/agent-vibes/preview.md +0 -16
- package/agentvibes.org/.claude/commands/agent-vibes/provider.md +0 -54
- package/agentvibes.org/.claude/commands/agent-vibes/replay.md +0 -19
- package/agentvibes.org/.claude/commands/agent-vibes/sample.md +0 -12
- package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +0 -52
- package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +0 -47
- package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +0 -65
- package/agentvibes.org/.claude/commands/agent-vibes/switch.md +0 -53
- package/agentvibes.org/.claude/commands/agent-vibes/update.md +0 -20
- package/agentvibes.org/.claude/commands/agent-vibes/version.md +0 -10
- package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +0 -7
- package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +0 -278
- package/agentvibes.org/.claude/hooks/language-manager.sh +0 -190
- package/agentvibes.org/.claude/hooks/personality-manager.sh +0 -279
- package/agentvibes.org/.claude/hooks/piper-download-voices.sh +0 -133
- package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +0 -227
- package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +0 -201
- package/agentvibes.org/.claude/hooks/play-tts-piper.sh +0 -175
- package/agentvibes.org/.claude/hooks/play-tts.sh +0 -138
- package/agentvibes.org/.claude/hooks/provider-commands.sh +0 -374
- package/agentvibes.org/.claude/hooks/provider-manager.sh +0 -196
- package/agentvibes.org/.claude/hooks/sentiment-manager.sh +0 -163
- package/agentvibes.org/.claude/hooks/voice-manager.sh +0 -349
- package/agentvibes.org/.claude/hooks/voices-config.sh +0 -33
- package/agentvibes.org/.claude/journal/2025-10-07.html +0 -373
- package/agentvibes.org/.claude/journal/index.html +0 -91
- package/agentvibes.org/.claude/output-styles/agent-vibes.md +0 -203
- package/agentvibes.org/.claude/personalities/angry.md +0 -16
- package/agentvibes.org/.claude/personalities/annoying.md +0 -16
- package/agentvibes.org/.claude/personalities/crass.md +0 -16
- package/agentvibes.org/.claude/personalities/dramatic.md +0 -16
- package/agentvibes.org/.claude/personalities/dry-humor.md +0 -52
- package/agentvibes.org/.claude/personalities/flirty.md +0 -22
- package/agentvibes.org/.claude/personalities/funny.md +0 -16
- package/agentvibes.org/.claude/personalities/grandpa.md +0 -34
- package/agentvibes.org/.claude/personalities/millennial.md +0 -16
- package/agentvibes.org/.claude/personalities/moody.md +0 -16
- package/agentvibes.org/.claude/personalities/normal.md +0 -18
- package/agentvibes.org/.claude/personalities/pirate.md +0 -16
- package/agentvibes.org/.claude/personalities/poetic.md +0 -16
- package/agentvibes.org/.claude/personalities/professional.md +0 -16
- package/agentvibes.org/.claude/personalities/robot.md +0 -16
- package/agentvibes.org/.claude/personalities/sarcastic.md +0 -40
- package/agentvibes.org/.claude/personalities/sassy.md +0 -16
- package/agentvibes.org/.claude/personalities/surfer-dude.md +0 -16
- package/agentvibes.org/.claude/personalities/zen.md +0 -16
- package/agentvibes.org/.mcp-minimal.json +0 -60
- package/agentvibes.org/CHANGELOG.md +0 -56
- package/agentvibes.org/README.md +0 -93
- package/agentvibes.org/app/(auth)/layout.tsx +0 -15
- package/agentvibes.org/app/(auth)/reset-password/page.tsx +0 -45
- package/agentvibes.org/app/(auth)/signin/page.tsx +0 -82
- package/agentvibes.org/app/(auth)/signup/page.tsx +0 -104
- package/agentvibes.org/app/(default)/layout.tsx +0 -31
- package/agentvibes.org/app/(default)/page.tsx +0 -20
- package/agentvibes.org/app/api/hello/route.ts +0 -3
- package/agentvibes.org/app/css/additional-styles/theme.css +0 -82
- package/agentvibes.org/app/css/additional-styles/utility-patterns.css +0 -55
- package/agentvibes.org/app/css/style.css +0 -100
- package/agentvibes.org/app/layout.tsx +0 -63
- package/agentvibes.org/components/cta.tsx +0 -58
- package/agentvibes.org/components/features.tsx +0 -256
- package/agentvibes.org/components/hero-home.tsx +0 -133
- package/agentvibes.org/components/modal-video.tsx +0 -137
- package/agentvibes.org/components/page-illustration.tsx +0 -55
- package/agentvibes.org/components/spotlight.tsx +0 -77
- package/agentvibes.org/components/testimonials.tsx +0 -282
- package/agentvibes.org/components/ui/footer.tsx +0 -82
- package/agentvibes.org/components/ui/header.tsx +0 -53
- package/agentvibes.org/components/ui/logo.tsx +0 -10
- package/agentvibes.org/components/workflows.tsx +0 -176
- package/agentvibes.org/next.config.js +0 -4
- package/agentvibes.org/package-lock.json +0 -1974
- package/agentvibes.org/package.json +0 -30
- package/agentvibes.org/pnpm-lock.yaml +0 -1141
- package/agentvibes.org/postcss.config.js +0 -5
- 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 +0 -1
- package/agentvibes.org/public/images/blurred-shape.svg +0 -1
- package/agentvibes.org/public/images/client-logo-01.svg +0 -1
- package/agentvibes.org/public/images/client-logo-02.svg +0 -1
- package/agentvibes.org/public/images/client-logo-03.svg +0 -1
- package/agentvibes.org/public/images/client-logo-04.svg +0 -1
- package/agentvibes.org/public/images/client-logo-05.svg +0 -1
- package/agentvibes.org/public/images/client-logo-06.svg +0 -1
- package/agentvibes.org/public/images/client-logo-07.svg +0 -1
- package/agentvibes.org/public/images/client-logo-08.svg +0 -1
- package/agentvibes.org/public/images/client-logo-09.svg +0 -1
- package/agentvibes.org/public/images/features.png +0 -0
- package/agentvibes.org/public/images/footer-illustration.svg +0 -1
- package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
- package/agentvibes.org/public/images/logo.svg +0 -1
- package/agentvibes.org/public/images/page-illustration.svg +0 -1
- package/agentvibes.org/public/images/secondary-illustration.svg +0 -1
- 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 +0 -28
- package/agentvibes.org/utils/useMasonry.tsx +0 -67
- package/agentvibes.org/utils/useMousePosition.tsx +0 -27
- 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
|
-
|
|
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
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
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" |
|
|
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
|
[](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
|
|
12
12
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
13
13
|
|
|
14
|
-
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v2.0.
|
|
14
|
+
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v2.0.14
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
|
|
46
46
|
## 📰 Latest Release
|
|
47
47
|
|
|
48
|
-
**[v2.0.
|
|
49
|
-
|
|
48
|
+
**[v2.0.14 - Release Notes](https://github.com/paulpreibisch/AgentVibes/releases/tag/v2.0.14)** 🎉
|
|
49
|
+
This patch release updates the npm package's README to display the correct version numbers. Since v2.0.13 was published before the README was corrected, the npm website displayed outdated version information. This release ensures users see v2.0.14 everywhere.
|
|
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
|
|
|
52
52
|
**Key highlights:**
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,201 +1,75 @@
|
|
|
1
1
|
# 🎤 AgentVibes Release Notes
|
|
2
2
|
|
|
3
|
-
## 📦 v2.0.
|
|
3
|
+
## 📦 v2.0.14 - README Version Fix for npm (2025-10-11)
|
|
4
4
|
|
|
5
5
|
### 🤖 AI Summary
|
|
6
6
|
|
|
7
|
-
This patch release
|
|
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
|
|
7
|
+
This patch release updates the npm package's README to display the correct version numbers. Since v2.0.13 was published before the README was corrected, the npm website displayed outdated version information. This release ensures users see v2.0.14 everywhere.
|
|
32
8
|
|
|
33
9
|
### 🐛 Bug Fixes
|
|
34
10
|
|
|
35
|
-
####
|
|
36
|
-
- **Fixed**:
|
|
37
|
-
- **Root Cause**:
|
|
38
|
-
- **Impact**:
|
|
39
|
-
- **
|
|
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
|
|
11
|
+
#### npm README Version Display
|
|
12
|
+
- **Fixed**: npm package page now shows correct version (v2.0.14)
|
|
13
|
+
- **Root Cause**: v2.0.13 was published with uncorrected README
|
|
14
|
+
- **Impact**: Users visiting npmjs.com/package/agentvibes now see accurate version info
|
|
15
|
+
- **Solution**: Republish with corrected README
|
|
96
16
|
|
|
97
|
-
|
|
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
|
|
17
|
+
### 📝 What Changed
|
|
102
18
|
|
|
103
|
-
|
|
19
|
+
**Modified: `README.md`**
|
|
20
|
+
- Author line now shows v2.0.14
|
|
21
|
+
- Latest Release section shows v2.0.14
|
|
104
22
|
|
|
105
|
-
**
|
|
106
|
-
-
|
|
107
|
-
- `.claude/hooks/play-tts-local-wrapper.sh` (44 lines)
|
|
108
|
-
- `docs/REMOTE_TTS_SETUP.md` (190 lines)
|
|
23
|
+
**Modified: `package.json`, `package-lock.json`**
|
|
24
|
+
- Bumped version from 2.0.13 to 2.0.14
|
|
109
25
|
|
|
110
|
-
|
|
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
|
|
26
|
+
### 🔄 Migration Notes
|
|
118
27
|
|
|
119
|
-
|
|
28
|
+
**For All Users:**
|
|
29
|
+
- No functional changes - this is purely a documentation update
|
|
30
|
+
- Update via `/agent-vibes:update` to get latest version
|
|
31
|
+
- All features from v2.0.13 are identical
|
|
120
32
|
|
|
121
|
-
|
|
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
|
|
33
|
+
---
|
|
126
34
|
|
|
127
|
-
|
|
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
|
|
35
|
+
## 📦 v2.0.13 - Workflow Fix & Clean Release (2025-10-11)
|
|
133
36
|
|
|
134
|
-
###
|
|
37
|
+
### 🤖 AI Summary
|
|
135
38
|
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
# Quick setup for HTTP method (recommended)
|
|
139
|
-
echo "http" > .claude/tts-remote-method.txt
|
|
39
|
+
This patch release fixes the npm publish workflow's README update patterns and provides a clean version without the experimental remote-SSH features that were accidentally included in v2.0.11 and v2.0.12. The workflow now correctly updates the README version information during releases, and users get a stable version based on v2.0.10.
|
|
140
40
|
|
|
141
|
-
|
|
142
|
-
ssh -R 8765:localhost:8765 user@remote-server
|
|
41
|
+
### 🐛 Bug Fixes
|
|
143
42
|
|
|
144
|
-
|
|
145
|
-
|
|
43
|
+
#### Publish Workflow README Update Fix
|
|
44
|
+
- **Fixed sed patterns** - Workflow now correctly matches and updates README release section
|
|
45
|
+
- **Flexible pattern matching** - Handles different release title formats ("Multi-Provider Revolution" vs "Release Notes")
|
|
46
|
+
- **Correct version display** - README now shows v2.0.13 in both author line and latest release section
|
|
146
47
|
|
|
147
|
-
####
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
48
|
+
#### Clean Version Without Remote-SSH Features
|
|
49
|
+
- **Skipped v2.0.11/v2.0.12** - These versions included experimental remote TTS forwarding features
|
|
50
|
+
- **Based on v2.0.10** - This is a clean release from the stable master branch
|
|
51
|
+
- **No breaking changes** - All existing functionality from v2.0.10 is preserved
|
|
151
52
|
|
|
152
|
-
|
|
153
|
-
/agent-vibes:bmad status
|
|
53
|
+
### 📝 Technical Changes
|
|
154
54
|
|
|
155
|
-
|
|
156
|
-
|
|
55
|
+
**Modified: `.github/workflows/publish.yml`**
|
|
56
|
+
- Updated sed pattern from exact "Release Notes" match to flexible `[^\]]*` pattern
|
|
57
|
+
- Improved pattern to match any title format in release section header
|
|
58
|
+
- Added comment explaining the flexible matching approach
|
|
157
59
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
```
|
|
60
|
+
**Modified: `package.json`, `package-lock.json`**
|
|
61
|
+
- Bumped version from 2.0.10 to 2.0.13
|
|
161
62
|
|
|
162
63
|
### 🔄 Migration Notes
|
|
163
64
|
|
|
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
65
|
**For All Users:**
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
|
|
181
|
-
### 📝 Commits in This Release
|
|
66
|
+
- Update via `/agent-vibes:update` or `npx agentvibes@latest install`
|
|
67
|
+
- No breaking changes - all settings and configurations preserved
|
|
68
|
+
- If you were on v2.0.12, this removes the remote-SSH code
|
|
182
69
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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>
|
|
70
|
+
**Deprecation Notice:**
|
|
71
|
+
- v2.0.12 includes experimental features and should be avoided
|
|
72
|
+
- v2.0.13 is the recommended stable version
|
|
199
73
|
|
|
200
74
|
---
|
|
201
75
|
|
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.
|
|
4
|
+
"version": "2.0.14",
|
|
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,
|
|
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
|