agentvibes 2.0.9 → 2.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/agent-vibes/bmad.md +203 -0
- package/.claude/github-star-reminder.txt +1 -0
- package/.claude/hooks/bmad-tts-injector.sh +333 -0
- package/.claude/hooks/bmad-voice-manager.sh +34 -0
- package/.claude/hooks/check-output-style.sh +2 -2
- package/.claude/hooks/github-star-reminder.sh +94 -0
- package/.claude/hooks/personality-manager.sh +2 -2
- package/.claude/hooks/piper-installer.sh +194 -0
- package/.claude/hooks/play-tts-elevenlabs.sh +30 -3
- package/.claude/hooks/play-tts-local-wrapper.sh +44 -0
- package/.claude/hooks/play-tts-piper.sh +10 -2
- package/.claude/hooks/play-tts-remote.sh +81 -0
- package/.claude/hooks/play-tts.sh +34 -0
- package/.claude/hooks/provider-commands.sh +30 -1
- package/.claude/hooks/voice-manager.sh +2 -2
- package/.claude/output-styles/agent-vibes.md +52 -36
- package/README.md +2 -2
- package/RELEASE_NOTES.md +412 -0
- package/agentvibes.org/.claude/commands/agent-vibes/add.md +21 -0
- package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +68 -0
- package/agentvibes.org/.claude/commands/agent-vibes/commands.json +53 -0
- package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
- package/agentvibes.org/.claude/commands/agent-vibes/list.md +13 -0
- package/agentvibes.org/.claude/commands/agent-vibes/personality.md +79 -0
- package/agentvibes.org/.claude/commands/agent-vibes/preview.md +16 -0
- package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
- package/agentvibes.org/.claude/commands/agent-vibes/replay.md +19 -0
- package/agentvibes.org/.claude/commands/agent-vibes/sample.md +12 -0
- package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +52 -0
- package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +47 -0
- package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +65 -0
- package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
- package/agentvibes.org/.claude/commands/agent-vibes/update.md +20 -0
- package/agentvibes.org/.claude/commands/agent-vibes/version.md +10 -0
- package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +7 -0
- package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +278 -0
- package/agentvibes.org/.claude/hooks/language-manager.sh +190 -0
- package/agentvibes.org/.claude/hooks/personality-manager.sh +279 -0
- package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
- package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
- package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +201 -0
- package/agentvibes.org/.claude/hooks/play-tts-piper.sh +175 -0
- package/agentvibes.org/.claude/hooks/play-tts.sh +138 -0
- package/agentvibes.org/.claude/hooks/provider-commands.sh +374 -0
- package/agentvibes.org/.claude/hooks/provider-manager.sh +196 -0
- package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
- package/agentvibes.org/.claude/hooks/voice-manager.sh +349 -0
- package/agentvibes.org/.claude/hooks/voices-config.sh +33 -0
- package/agentvibes.org/.claude/journal/2025-10-07.html +373 -0
- package/agentvibes.org/.claude/journal/index.html +91 -0
- package/agentvibes.org/.claude/output-styles/agent-vibes.md +203 -0
- package/agentvibes.org/.claude/personalities/angry.md +16 -0
- package/agentvibes.org/.claude/personalities/annoying.md +16 -0
- package/agentvibes.org/.claude/personalities/crass.md +16 -0
- package/agentvibes.org/.claude/personalities/dramatic.md +16 -0
- package/agentvibes.org/.claude/personalities/dry-humor.md +52 -0
- package/agentvibes.org/.claude/personalities/flirty.md +22 -0
- package/agentvibes.org/.claude/personalities/funny.md +16 -0
- package/agentvibes.org/.claude/personalities/grandpa.md +34 -0
- package/agentvibes.org/.claude/personalities/millennial.md +16 -0
- package/agentvibes.org/.claude/personalities/moody.md +16 -0
- package/agentvibes.org/.claude/personalities/normal.md +18 -0
- package/agentvibes.org/.claude/personalities/pirate.md +16 -0
- package/agentvibes.org/.claude/personalities/poetic.md +16 -0
- package/agentvibes.org/.claude/personalities/professional.md +16 -0
- package/agentvibes.org/.claude/personalities/robot.md +16 -0
- package/agentvibes.org/.claude/personalities/sarcastic.md +40 -0
- package/agentvibes.org/.claude/personalities/sassy.md +16 -0
- package/agentvibes.org/.claude/personalities/surfer-dude.md +16 -0
- package/agentvibes.org/.claude/personalities/zen.md +16 -0
- package/agentvibes.org/.mcp-minimal.json +60 -0
- package/agentvibes.org/CHANGELOG.md +56 -0
- package/agentvibes.org/README.md +93 -0
- package/agentvibes.org/app/(auth)/layout.tsx +15 -0
- package/agentvibes.org/app/(auth)/reset-password/page.tsx +45 -0
- package/agentvibes.org/app/(auth)/signin/page.tsx +82 -0
- package/agentvibes.org/app/(auth)/signup/page.tsx +104 -0
- package/agentvibes.org/app/(default)/layout.tsx +31 -0
- package/agentvibes.org/app/(default)/page.tsx +20 -0
- package/agentvibes.org/app/api/hello/route.ts +3 -0
- package/agentvibes.org/app/css/additional-styles/theme.css +82 -0
- package/agentvibes.org/app/css/additional-styles/utility-patterns.css +55 -0
- package/agentvibes.org/app/css/style.css +100 -0
- package/agentvibes.org/app/layout.tsx +63 -0
- package/agentvibes.org/components/cta.tsx +58 -0
- package/agentvibes.org/components/features.tsx +256 -0
- package/agentvibes.org/components/hero-home.tsx +133 -0
- package/agentvibes.org/components/modal-video.tsx +137 -0
- package/agentvibes.org/components/page-illustration.tsx +55 -0
- package/agentvibes.org/components/spotlight.tsx +77 -0
- package/agentvibes.org/components/testimonials.tsx +282 -0
- package/agentvibes.org/components/ui/footer.tsx +82 -0
- package/agentvibes.org/components/ui/header.tsx +53 -0
- package/agentvibes.org/components/ui/logo.tsx +10 -0
- package/agentvibes.org/components/workflows.tsx +176 -0
- package/agentvibes.org/next.config.js +4 -0
- package/agentvibes.org/package-lock.json +1974 -0
- package/agentvibes.org/package.json +30 -0
- package/agentvibes.org/pnpm-lock.yaml +1141 -0
- package/agentvibes.org/postcss.config.js +5 -0
- package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
- package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
- package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
- package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
- package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
- package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
- package/agentvibes.org/public/favicon.ico +0 -0
- package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
- package/agentvibes.org/public/images/blurred-shape-gray.svg +1 -0
- package/agentvibes.org/public/images/blurred-shape.svg +1 -0
- package/agentvibes.org/public/images/client-logo-01.svg +1 -0
- package/agentvibes.org/public/images/client-logo-02.svg +1 -0
- package/agentvibes.org/public/images/client-logo-03.svg +1 -0
- package/agentvibes.org/public/images/client-logo-04.svg +1 -0
- package/agentvibes.org/public/images/client-logo-05.svg +1 -0
- package/agentvibes.org/public/images/client-logo-06.svg +1 -0
- package/agentvibes.org/public/images/client-logo-07.svg +1 -0
- package/agentvibes.org/public/images/client-logo-08.svg +1 -0
- package/agentvibes.org/public/images/client-logo-09.svg +1 -0
- package/agentvibes.org/public/images/features.png +0 -0
- package/agentvibes.org/public/images/footer-illustration.svg +1 -0
- package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
- package/agentvibes.org/public/images/logo.svg +1 -0
- package/agentvibes.org/public/images/page-illustration.svg +1 -0
- package/agentvibes.org/public/images/secondary-illustration.svg +1 -0
- package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
- package/agentvibes.org/public/images/workflow-01.png +0 -0
- package/agentvibes.org/public/images/workflow-02.png +0 -0
- package/agentvibes.org/public/images/workflow-03.png +0 -0
- package/agentvibes.org/public/videos/video.mp4 +0 -0
- package/agentvibes.org/tsconfig.json +28 -0
- package/agentvibes.org/utils/useMasonry.tsx +67 -0
- package/agentvibes.org/utils/useMousePosition.tsx +27 -0
- package/docs/REMOTE_TTS_SETUP.md +190 -0
- package/package.json +2 -2
- package/src/installer.js +193 -9
- package/test/helpers/test-helper.bash +4 -2
- package/test/unit/personality-manager.bats +16 -4
- package/test/unit/personality-voice-mapping.bats +15 -6
- package/test/unit/play-tts.bats +0 -9
- package/.claude/commands/agent-vibes-bmad.md +0 -132
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Manage TTS providers (list, switch, info, test)
|
|
3
|
+
argument-hint: [command] [args...]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Provider Management Commands
|
|
7
|
+
|
|
8
|
+
Manage TTS providers (ElevenLabs, Piper) - switch between providers, view details, and test.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
/agent-vibes:provider list # Show all available providers
|
|
14
|
+
/agent-vibes:provider switch <name> # Switch to a different provider
|
|
15
|
+
/agent-vibes:provider info <name> # Show detailed provider information
|
|
16
|
+
/agent-vibes:provider test # Test current provider
|
|
17
|
+
/agent-vibes:provider get # Show current active provider
|
|
18
|
+
/agent-vibes:provider help # Show this help
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Examples
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# List available providers
|
|
25
|
+
/agent-vibes:provider list
|
|
26
|
+
|
|
27
|
+
# Switch to Piper (free, offline)
|
|
28
|
+
/agent-vibes:provider switch piper
|
|
29
|
+
|
|
30
|
+
# Switch to ElevenLabs (premium quality)
|
|
31
|
+
/agent-vibes:provider switch elevenlabs
|
|
32
|
+
|
|
33
|
+
# Get info about a provider
|
|
34
|
+
/agent-vibes:provider info piper
|
|
35
|
+
|
|
36
|
+
# Test current provider
|
|
37
|
+
/agent-vibes:provider test
|
|
38
|
+
|
|
39
|
+
# Show current provider
|
|
40
|
+
/agent-vibes:provider get
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Provider Comparison
|
|
44
|
+
|
|
45
|
+
| Feature | ElevenLabs | Piper |
|
|
46
|
+
|---------|------------|-------|
|
|
47
|
+
| Quality | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
|
48
|
+
| Cost | Free tier + $5-22/mo | Free forever |
|
|
49
|
+
| Offline | No | Yes |
|
|
50
|
+
| Platform | All | WSL/Linux only |
|
|
51
|
+
|
|
52
|
+
Learn more: agentvibes.org/providers
|
|
53
|
+
|
|
54
|
+
!bash .claude/hooks/provider-commands.sh $ARGUMENTS
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Replay recently played TTS audio
|
|
3
|
+
argument-hint: [N]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Replay previously played TTS audio from history.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
- `/agent-vibes:replay` - Replay last audio (most recent)
|
|
10
|
+
- `/agent-vibes:replay 1` - Replay last audio
|
|
11
|
+
- `/agent-vibes:replay 2` - Replay second-to-last audio
|
|
12
|
+
- `/agent-vibes:replay 3` - Replay third-to-last audio
|
|
13
|
+
|
|
14
|
+
The system keeps the last 10 audio files in history. This is useful for:
|
|
15
|
+
- Hearing a summary again
|
|
16
|
+
- Checking what was just said
|
|
17
|
+
- Comparing different voice samples
|
|
18
|
+
|
|
19
|
+
!bash .claude/hooks/voice-manager.sh replay $ARGUMENTS
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Test a voice with sample text
|
|
3
|
+
argument-hint: <voice-name>
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Test a specific ElevenLabs voice by playing sample text.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
- `/agent-vibes:sample Cowboy` - Test the Cowboy voice
|
|
10
|
+
- `/agent-vibes:sample "Northern Terry"` - Test Northern Terry voice
|
|
11
|
+
|
|
12
|
+
!bash .claude/hooks/voice-manager.sh sample $ARGUMENTS
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Set sentiment/personality for your current voice
|
|
3
|
+
argument-hint: [personality_name|list|get]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent Vibes Sentiment Command
|
|
7
|
+
|
|
8
|
+
Set the sentiment/personality style for your current voice without changing the voice itself.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
.claude/hooks/sentiment-manager.sh "$@"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Set sentiment for current voice
|
|
18
|
+
/agent-vibes:sentiment flirty
|
|
19
|
+
/agent-vibes:sentiment sarcastic
|
|
20
|
+
/agent-vibes:sentiment angry
|
|
21
|
+
|
|
22
|
+
# See current sentiment
|
|
23
|
+
/agent-vibes:sentiment get
|
|
24
|
+
|
|
25
|
+
# List available sentiments
|
|
26
|
+
/agent-vibes:sentiment list
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## What This Does
|
|
30
|
+
|
|
31
|
+
The sentiment command allows you to:
|
|
32
|
+
- Keep your current voice (e.g., your custom voice)
|
|
33
|
+
- Apply a personality style (flirty, sarcastic, angry, etc.)
|
|
34
|
+
- Change how AI speaks without changing WHO speaks
|
|
35
|
+
|
|
36
|
+
## Example
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# You're using your custom voice "MyVoice"
|
|
40
|
+
/agent-vibes:switch MyVoice
|
|
41
|
+
|
|
42
|
+
# Now add a sarcastic sentiment to MyVoice
|
|
43
|
+
/agent-vibes:sentiment sarcastic
|
|
44
|
+
# AI will now respond with sarcasm in MyVoice
|
|
45
|
+
|
|
46
|
+
# Or set both at once
|
|
47
|
+
/agent-vibes:switch MyVoice --sentiment flirty
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Available Sentiments
|
|
51
|
+
|
|
52
|
+
Run `/agent-vibes:sentiment list` to see all available personality styles.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# /agent-vibes:set-language
|
|
2
|
+
|
|
3
|
+
Set the language for TTS narration. AgentVibes will automatically use multilingual voices and speak in your chosen language.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Set language
|
|
9
|
+
/agent-vibes:set-language spanish
|
|
10
|
+
/agent-vibes:set-language french
|
|
11
|
+
/agent-vibes:set-language german
|
|
12
|
+
|
|
13
|
+
# Show current language
|
|
14
|
+
/agent-vibes:set-language
|
|
15
|
+
|
|
16
|
+
# Reset to English (default)
|
|
17
|
+
/agent-vibes:set-language english
|
|
18
|
+
/agent-vibes:set-language reset
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Supported Languages
|
|
22
|
+
|
|
23
|
+
Spanish, French, German, Italian, Portuguese, Chinese, Japanese, Korean, Polish, Dutch, Turkish, Russian, Arabic, Hindi, Swedish, Danish, Norwegian, Finnish, Czech, Romanian, Ukrainian, Greek, Bulgarian, Croatian, Slovak, and 20+ more.
|
|
24
|
+
|
|
25
|
+
## How It Works
|
|
26
|
+
|
|
27
|
+
1. **Sets Language**: Stores your language preference in `.claude/tts-language.txt`
|
|
28
|
+
2. **Voice Selection**: Automatically uses multilingual voices (Antoni, Rachel, Domi, Bella)
|
|
29
|
+
3. **BMAD Integration**: Works with BMAD plugin - agents speak in your language
|
|
30
|
+
4. **Personality Preserved**: Keeps your current personality/sentiment style
|
|
31
|
+
|
|
32
|
+
## Multilingual Voice Recommendations
|
|
33
|
+
|
|
34
|
+
- **Spanish**: Antoni, Matilda
|
|
35
|
+
- **French**: Rachel, Charlotte
|
|
36
|
+
- **German**: Domi, Charlotte
|
|
37
|
+
- **Italian**: Bella
|
|
38
|
+
- **Portuguese**: Matilda
|
|
39
|
+
- **Other Languages**: Antoni (best all-around multilingual)
|
|
40
|
+
|
|
41
|
+
## Implementation
|
|
42
|
+
|
|
43
|
+
This command tells Claude AI to:
|
|
44
|
+
1. Validate the language is supported
|
|
45
|
+
2. Save to `.claude/tts-language.txt`
|
|
46
|
+
3. Switch to an appropriate multilingual voice if needed
|
|
47
|
+
4. Inform user of the change
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Set a pretext word/phrase that prefixes all TTS announcements
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Set TTS Pretext
|
|
6
|
+
|
|
7
|
+
Configure a word or phrase that will be spoken before every TTS message.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
/agent-vibes:set-pretext <word>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Examples
|
|
16
|
+
|
|
17
|
+
Set "AgentVibes" as the pretext:
|
|
18
|
+
```bash
|
|
19
|
+
/agent-vibes:set-pretext AgentVibes
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Set a phrase:
|
|
23
|
+
```bash
|
|
24
|
+
/agent-vibes:set-pretext "Project Alpha"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Clear the pretext:
|
|
28
|
+
```bash
|
|
29
|
+
/agent-vibes:set-pretext ""
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## What It Does
|
|
33
|
+
|
|
34
|
+
When a pretext is set:
|
|
35
|
+
- **Without pretext**: "I'll do the task"
|
|
36
|
+
- **With pretext**: "AgentVibes: I'll do the task"
|
|
37
|
+
|
|
38
|
+
The pretext is saved locally in `.claude/config/agentvibes.json` and persists across sessions.
|
|
39
|
+
|
|
40
|
+
!bash
|
|
41
|
+
CONFIG_DIR="${CLAUDE_PROJECT_DIR:-.}/.claude/config"
|
|
42
|
+
CONFIG_FILE="$CONFIG_DIR/agentvibes.json"
|
|
43
|
+
|
|
44
|
+
# Get the pretext from arguments
|
|
45
|
+
PRETEXT="$ARGUMENTS"
|
|
46
|
+
|
|
47
|
+
# Create config directory if it doesn't exist
|
|
48
|
+
mkdir -p "$CONFIG_DIR"
|
|
49
|
+
|
|
50
|
+
# Initialize config file if it doesn't exist
|
|
51
|
+
if [ ! -f "$CONFIG_FILE" ]; then
|
|
52
|
+
echo '{}' > "$CONFIG_FILE"
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# Update or clear the pretext
|
|
56
|
+
if [ -z "$PRETEXT" ]; then
|
|
57
|
+
# Clear pretext
|
|
58
|
+
jq 'del(.pretext)' "$CONFIG_FILE" > "${CONFIG_FILE}.tmp" && mv "${CONFIG_FILE}.tmp" "$CONFIG_FILE"
|
|
59
|
+
echo "✅ Pretext cleared"
|
|
60
|
+
else
|
|
61
|
+
# Set pretext
|
|
62
|
+
jq --arg pretext "$PRETEXT" '.pretext = $pretext' "$CONFIG_FILE" > "${CONFIG_FILE}.tmp" && mv "${CONFIG_FILE}.tmp" "$CONFIG_FILE"
|
|
63
|
+
echo "✅ Pretext set to: $PRETEXT"
|
|
64
|
+
echo "📢 All TTS messages will now start with: \"$PRETEXT:\""
|
|
65
|
+
fi
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Switch to a different ElevenLabs TTS voice
|
|
3
|
+
argument-hint: [voice_name_or_number] [--sentiment personality_name]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Voice Selection
|
|
7
|
+
|
|
8
|
+
If no arguments provided, display this list:
|
|
9
|
+
|
|
10
|
+
## 🎤 Available ElevenLabs Voices
|
|
11
|
+
|
|
12
|
+
1. **Amy** - Young and friendly
|
|
13
|
+
2. **Aria** - Clear professional
|
|
14
|
+
3. **Cowboy Bob** - Western charm
|
|
15
|
+
4. **Demon Monster** - Deep and spooky
|
|
16
|
+
5. **Dr. Von Fusion** - Eccentric scientist
|
|
17
|
+
6. **Drill Sergeant** - Military authority
|
|
18
|
+
7. **Grandpa Spuds Oxley** - Wise elder
|
|
19
|
+
8. **Jessica Anne Bogart** - Wickedly eloquent
|
|
20
|
+
9. **Lutz Laugh** - Jovial and giggly
|
|
21
|
+
10. **Matthew Schmitz** - Deep baritone
|
|
22
|
+
11. **Michael** - British urban
|
|
23
|
+
12. **Ms. Walker** - Warm teacher
|
|
24
|
+
13. **Northern Terry** - Eccentric British
|
|
25
|
+
14. **Ralf Eisend** - International speaker
|
|
26
|
+
|
|
27
|
+
Then check current voice with: !bash .claude/hooks/voice-manager.sh get
|
|
28
|
+
|
|
29
|
+
And inform user: "To switch voices, use `/agent-vibes:switch <number>` or `/agent-vibes:switch <name>`"
|
|
30
|
+
|
|
31
|
+
If arguments ARE provided:
|
|
32
|
+
|
|
33
|
+
1. Parse arguments for --sentiment flag
|
|
34
|
+
2. If --sentiment is present:
|
|
35
|
+
- Extract voice name/number (everything before --sentiment)
|
|
36
|
+
- Extract sentiment name (after --sentiment)
|
|
37
|
+
- Execute: !bash .claude/hooks/voice-manager.sh switch <voice>
|
|
38
|
+
- Then execute: !bash .claude/hooks/sentiment-manager.sh set <sentiment>
|
|
39
|
+
3. If no --sentiment flag:
|
|
40
|
+
- Execute: !bash .claude/hooks/voice-manager.sh switch $ARGUMENTS
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Switch voice only
|
|
46
|
+
/agent-vibes:switch Jessica Anne Bogart
|
|
47
|
+
|
|
48
|
+
# Switch voice and set sentiment
|
|
49
|
+
/agent-vibes:switch Aria --sentiment sarcastic
|
|
50
|
+
|
|
51
|
+
# Switch by number with sentiment
|
|
52
|
+
/agent-vibes:switch 5 --sentiment flirty
|
|
53
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Update AgentVibes to the latest version
|
|
3
|
+
argument-hint: [--yes]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Updates AgentVibes to the latest version from the npm registry.
|
|
7
|
+
|
|
8
|
+
This will update:
|
|
9
|
+
- All slash commands
|
|
10
|
+
- TTS scripts and hooks
|
|
11
|
+
- Personality templates (new ones added, existing ones updated)
|
|
12
|
+
- Output styles
|
|
13
|
+
|
|
14
|
+
Your custom settings and voice configurations will be preserved.
|
|
15
|
+
|
|
16
|
+
Usage examples:
|
|
17
|
+
- `/agent-vibes:update` - Update with confirmation prompt
|
|
18
|
+
- `/agent-vibes:update --yes` - Update without confirmation
|
|
19
|
+
|
|
20
|
+
!bash npx agent-vibes update $ARGUMENTS
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
PLUGIN_DIR=".claude/plugins"
|
|
4
|
+
PLUGIN_FILE="$PLUGIN_DIR/bmad-voices.md"
|
|
5
|
+
ENABLED_FLAG="$PLUGIN_DIR/bmad-voices-enabled.flag"
|
|
6
|
+
|
|
7
|
+
# Auto-enable plugin if BMAD is detected
|
|
8
|
+
auto_enable_if_bmad_detected() {
|
|
9
|
+
# Check if BMAD is installed
|
|
10
|
+
if [[ -f ".bmad-core/install-manifest.yaml" ]] && [[ ! -f "$ENABLED_FLAG" ]]; then
|
|
11
|
+
# BMAD detected but plugin not enabled - enable it silently
|
|
12
|
+
mkdir -p "$PLUGIN_DIR"
|
|
13
|
+
touch "$ENABLED_FLAG"
|
|
14
|
+
return 0
|
|
15
|
+
fi
|
|
16
|
+
return 1
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
# Parse markdown table to get voice mapping
|
|
20
|
+
get_agent_voice() {
|
|
21
|
+
local agent_id="$1"
|
|
22
|
+
|
|
23
|
+
# Auto-enable if BMAD is detected
|
|
24
|
+
auto_enable_if_bmad_detected
|
|
25
|
+
|
|
26
|
+
if [[ ! -f "$ENABLED_FLAG" ]]; then
|
|
27
|
+
echo "" # Plugin disabled
|
|
28
|
+
return
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
if [[ ! -f "$PLUGIN_FILE" ]]; then
|
|
32
|
+
echo "" # Plugin file missing
|
|
33
|
+
return
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Extract voice from markdown table
|
|
37
|
+
local voice=$(grep "^| $agent_id " "$PLUGIN_FILE" | \
|
|
38
|
+
awk -F'|' '{print $4}' | \
|
|
39
|
+
sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
40
|
+
|
|
41
|
+
echo "$voice"
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
# Get personality for agent
|
|
45
|
+
get_agent_personality() {
|
|
46
|
+
local agent_id="$1"
|
|
47
|
+
|
|
48
|
+
if [[ ! -f "$PLUGIN_FILE" ]]; then
|
|
49
|
+
echo ""
|
|
50
|
+
return
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
local personality=$(grep "^| $agent_id " "$PLUGIN_FILE" | \
|
|
54
|
+
awk -F'|' '{print $5}' | \
|
|
55
|
+
sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
56
|
+
|
|
57
|
+
echo "$personality"
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
# Check if plugin is enabled
|
|
61
|
+
is_plugin_enabled() {
|
|
62
|
+
[[ -f "$ENABLED_FLAG" ]] && echo "true" || echo "false"
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Enable plugin
|
|
66
|
+
enable_plugin() {
|
|
67
|
+
mkdir -p "$PLUGIN_DIR"
|
|
68
|
+
|
|
69
|
+
# Save current settings before enabling
|
|
70
|
+
BACKUP_FILE="$PLUGIN_DIR/.bmad-previous-settings"
|
|
71
|
+
|
|
72
|
+
# Save current voice
|
|
73
|
+
if [[ -f ".claude/tts-voice.txt" ]]; then
|
|
74
|
+
CURRENT_VOICE=$(cat .claude/tts-voice.txt 2>/dev/null)
|
|
75
|
+
elif [[ -f "$HOME/.claude/tts-voice.txt" ]]; then
|
|
76
|
+
CURRENT_VOICE=$(cat "$HOME/.claude/tts-voice.txt" 2>/dev/null)
|
|
77
|
+
else
|
|
78
|
+
CURRENT_VOICE="Aria"
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
# Save current personality
|
|
82
|
+
if [[ -f ".claude/tts-personality.txt" ]]; then
|
|
83
|
+
CURRENT_PERSONALITY=$(cat .claude/tts-personality.txt 2>/dev/null)
|
|
84
|
+
elif [[ -f "$HOME/.claude/tts-personality.txt" ]]; then
|
|
85
|
+
CURRENT_PERSONALITY=$(cat "$HOME/.claude/tts-personality.txt" 2>/dev/null)
|
|
86
|
+
else
|
|
87
|
+
CURRENT_PERSONALITY="normal"
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
# Save current sentiment
|
|
91
|
+
if [[ -f ".claude/tts-sentiment.txt" ]]; then
|
|
92
|
+
CURRENT_SENTIMENT=$(cat .claude/tts-sentiment.txt 2>/dev/null)
|
|
93
|
+
elif [[ -f "$HOME/.claude/tts-sentiment.txt" ]]; then
|
|
94
|
+
CURRENT_SENTIMENT=$(cat "$HOME/.claude/tts-sentiment.txt" 2>/dev/null)
|
|
95
|
+
else
|
|
96
|
+
CURRENT_SENTIMENT=""
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
# Write backup
|
|
100
|
+
cat > "$BACKUP_FILE" <<EOF
|
|
101
|
+
VOICE=$CURRENT_VOICE
|
|
102
|
+
PERSONALITY=$CURRENT_PERSONALITY
|
|
103
|
+
SENTIMENT=$CURRENT_SENTIMENT
|
|
104
|
+
EOF
|
|
105
|
+
|
|
106
|
+
touch "$ENABLED_FLAG"
|
|
107
|
+
echo "✅ BMAD voice plugin enabled"
|
|
108
|
+
echo "💾 Previous settings backed up:"
|
|
109
|
+
echo " Voice: $CURRENT_VOICE"
|
|
110
|
+
echo " Personality: $CURRENT_PERSONALITY"
|
|
111
|
+
[[ -n "$CURRENT_SENTIMENT" ]] && echo " Sentiment: $CURRENT_SENTIMENT"
|
|
112
|
+
echo ""
|
|
113
|
+
list_mappings
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# Disable plugin
|
|
117
|
+
disable_plugin() {
|
|
118
|
+
BACKUP_FILE="$PLUGIN_DIR/.bmad-previous-settings"
|
|
119
|
+
|
|
120
|
+
# Check if we have a backup to restore
|
|
121
|
+
if [[ -f "$BACKUP_FILE" ]]; then
|
|
122
|
+
source "$BACKUP_FILE"
|
|
123
|
+
|
|
124
|
+
echo "❌ BMAD voice plugin disabled"
|
|
125
|
+
echo "🔄 Restoring previous settings:"
|
|
126
|
+
echo " Voice: $VOICE"
|
|
127
|
+
echo " Personality: $PERSONALITY"
|
|
128
|
+
[[ -n "$SENTIMENT" ]] && echo " Sentiment: $SENTIMENT"
|
|
129
|
+
|
|
130
|
+
# Restore voice
|
|
131
|
+
if [[ -n "$VOICE" ]]; then
|
|
132
|
+
echo "$VOICE" > .claude/tts-voice.txt 2>/dev/null || echo "$VOICE" > "$HOME/.claude/tts-voice.txt"
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
# Restore personality
|
|
136
|
+
if [[ -n "$PERSONALITY" ]] && [[ "$PERSONALITY" != "normal" ]]; then
|
|
137
|
+
echo "$PERSONALITY" > .claude/tts-personality.txt 2>/dev/null || echo "$PERSONALITY" > "$HOME/.claude/tts-personality.txt"
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
# Restore sentiment
|
|
141
|
+
if [[ -n "$SENTIMENT" ]]; then
|
|
142
|
+
echo "$SENTIMENT" > .claude/tts-sentiment.txt 2>/dev/null || echo "$SENTIMENT" > "$HOME/.claude/tts-sentiment.txt"
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
# Clean up backup
|
|
146
|
+
rm -f "$BACKUP_FILE"
|
|
147
|
+
else
|
|
148
|
+
echo "❌ BMAD voice plugin disabled"
|
|
149
|
+
echo "⚠️ No previous settings found to restore"
|
|
150
|
+
echo "AgentVibes will use current voice/personality settings"
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
rm -f "$ENABLED_FLAG"
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
# List all mappings
|
|
157
|
+
list_mappings() {
|
|
158
|
+
if [[ ! -f "$PLUGIN_FILE" ]]; then
|
|
159
|
+
echo "❌ Plugin file not found: $PLUGIN_FILE"
|
|
160
|
+
return 1
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
echo "📊 BMAD Agent Voice Mappings:"
|
|
164
|
+
echo ""
|
|
165
|
+
|
|
166
|
+
grep "^| " "$PLUGIN_FILE" | grep -v "Agent ID" | grep -v "^|---" | \
|
|
167
|
+
while IFS='|' read -r _ agent_id name voice personality _; do
|
|
168
|
+
agent_id=$(echo "$agent_id" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
169
|
+
name=$(echo "$name" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
170
|
+
voice=$(echo "$voice" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
171
|
+
personality=$(echo "$personality" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
172
|
+
|
|
173
|
+
[[ -n "$agent_id" ]] && echo " $agent_id → $voice [$personality]"
|
|
174
|
+
done
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
# Set voice for agent
|
|
178
|
+
set_agent_voice() {
|
|
179
|
+
local agent_id="$1"
|
|
180
|
+
local voice="$2"
|
|
181
|
+
local personality="${3:-normal}"
|
|
182
|
+
|
|
183
|
+
if [[ ! -f "$PLUGIN_FILE" ]]; then
|
|
184
|
+
echo "❌ Plugin file not found: $PLUGIN_FILE"
|
|
185
|
+
return 1
|
|
186
|
+
fi
|
|
187
|
+
|
|
188
|
+
# Check if agent exists
|
|
189
|
+
if ! grep -q "^| $agent_id " "$PLUGIN_FILE"; then
|
|
190
|
+
echo "❌ Agent '$agent_id' not found in plugin"
|
|
191
|
+
return 1
|
|
192
|
+
fi
|
|
193
|
+
|
|
194
|
+
# Update the voice and personality in the table
|
|
195
|
+
sed -i.bak "s/^| $agent_id |.*| .* | .* |$/| $agent_id | $(grep "^| $agent_id " "$PLUGIN_FILE" | awk -F'|' '{print $3}') | $voice | $personality |/" "$PLUGIN_FILE"
|
|
196
|
+
|
|
197
|
+
echo "✅ Updated $agent_id → $voice [$personality]"
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
# Show status
|
|
201
|
+
show_status() {
|
|
202
|
+
# Check for BMAD installation
|
|
203
|
+
local bmad_installed="false"
|
|
204
|
+
if [[ -f ".bmad-core/install-manifest.yaml" ]]; then
|
|
205
|
+
bmad_installed="true"
|
|
206
|
+
fi
|
|
207
|
+
|
|
208
|
+
if [[ $(is_plugin_enabled) == "true" ]]; then
|
|
209
|
+
echo "✅ BMAD voice plugin: ENABLED"
|
|
210
|
+
if [[ "$bmad_installed" == "true" ]]; then
|
|
211
|
+
echo "🔍 BMAD detected: Auto-enabled"
|
|
212
|
+
fi
|
|
213
|
+
else
|
|
214
|
+
echo "❌ BMAD voice plugin: DISABLED"
|
|
215
|
+
if [[ "$bmad_installed" == "true" ]]; then
|
|
216
|
+
echo "⚠️ BMAD detected but plugin disabled (enable with: /agent-vibes-bmad enable)"
|
|
217
|
+
fi
|
|
218
|
+
fi
|
|
219
|
+
echo ""
|
|
220
|
+
list_mappings
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
# Edit plugin file
|
|
224
|
+
edit_plugin() {
|
|
225
|
+
if [[ ! -f "$PLUGIN_FILE" ]]; then
|
|
226
|
+
echo "❌ Plugin file not found: $PLUGIN_FILE"
|
|
227
|
+
return 1
|
|
228
|
+
fi
|
|
229
|
+
|
|
230
|
+
echo "Opening $PLUGIN_FILE for editing..."
|
|
231
|
+
echo "Edit the markdown table to change voice mappings"
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
# Main command dispatcher
|
|
235
|
+
case "${1:-help}" in
|
|
236
|
+
enable)
|
|
237
|
+
enable_plugin
|
|
238
|
+
;;
|
|
239
|
+
disable)
|
|
240
|
+
disable_plugin
|
|
241
|
+
;;
|
|
242
|
+
status)
|
|
243
|
+
show_status
|
|
244
|
+
;;
|
|
245
|
+
list)
|
|
246
|
+
list_mappings
|
|
247
|
+
;;
|
|
248
|
+
set)
|
|
249
|
+
if [[ -z "$2" ]] || [[ -z "$3" ]]; then
|
|
250
|
+
echo "Usage: bmad-voice-manager.sh set <agent-id> <voice> [personality]"
|
|
251
|
+
exit 1
|
|
252
|
+
fi
|
|
253
|
+
set_agent_voice "$2" "$3" "$4"
|
|
254
|
+
;;
|
|
255
|
+
get-voice)
|
|
256
|
+
get_agent_voice "$2"
|
|
257
|
+
;;
|
|
258
|
+
get-personality)
|
|
259
|
+
get_agent_personality "$2"
|
|
260
|
+
;;
|
|
261
|
+
edit)
|
|
262
|
+
edit_plugin
|
|
263
|
+
;;
|
|
264
|
+
*)
|
|
265
|
+
echo "Usage: bmad-voice-manager.sh {enable|disable|status|list|set|get-voice|get-personality|edit}"
|
|
266
|
+
echo ""
|
|
267
|
+
echo "Commands:"
|
|
268
|
+
echo " enable Enable BMAD voice plugin"
|
|
269
|
+
echo " disable Disable BMAD voice plugin"
|
|
270
|
+
echo " status Show plugin status and mappings"
|
|
271
|
+
echo " list List all agent voice mappings"
|
|
272
|
+
echo " set <id> <voice> Set voice for agent"
|
|
273
|
+
echo " get-voice <id> Get voice for agent"
|
|
274
|
+
echo " get-personality <id> Get personality for agent"
|
|
275
|
+
echo " edit Edit plugin configuration"
|
|
276
|
+
exit 1
|
|
277
|
+
;;
|
|
278
|
+
esac
|