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.
Files changed (152) hide show
  1. package/.claude/commands/agent-vibes/bmad.md +203 -0
  2. package/.claude/github-star-reminder.txt +1 -0
  3. package/.claude/hooks/bmad-tts-injector.sh +333 -0
  4. package/.claude/hooks/bmad-voice-manager.sh +34 -0
  5. package/.claude/hooks/check-output-style.sh +2 -2
  6. package/.claude/hooks/github-star-reminder.sh +94 -0
  7. package/.claude/hooks/personality-manager.sh +2 -2
  8. package/.claude/hooks/piper-installer.sh +194 -0
  9. package/.claude/hooks/play-tts-elevenlabs.sh +30 -3
  10. package/.claude/hooks/play-tts-local-wrapper.sh +44 -0
  11. package/.claude/hooks/play-tts-piper.sh +10 -2
  12. package/.claude/hooks/play-tts-remote.sh +81 -0
  13. package/.claude/hooks/play-tts.sh +34 -0
  14. package/.claude/hooks/provider-commands.sh +30 -1
  15. package/.claude/hooks/voice-manager.sh +2 -2
  16. package/.claude/output-styles/agent-vibes.md +52 -36
  17. package/README.md +2 -2
  18. package/RELEASE_NOTES.md +412 -0
  19. package/agentvibes.org/.claude/commands/agent-vibes/add.md +21 -0
  20. package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +68 -0
  21. package/agentvibes.org/.claude/commands/agent-vibes/commands.json +53 -0
  22. package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
  23. package/agentvibes.org/.claude/commands/agent-vibes/list.md +13 -0
  24. package/agentvibes.org/.claude/commands/agent-vibes/personality.md +79 -0
  25. package/agentvibes.org/.claude/commands/agent-vibes/preview.md +16 -0
  26. package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
  27. package/agentvibes.org/.claude/commands/agent-vibes/replay.md +19 -0
  28. package/agentvibes.org/.claude/commands/agent-vibes/sample.md +12 -0
  29. package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +52 -0
  30. package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +47 -0
  31. package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +65 -0
  32. package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
  33. package/agentvibes.org/.claude/commands/agent-vibes/update.md +20 -0
  34. package/agentvibes.org/.claude/commands/agent-vibes/version.md +10 -0
  35. package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +7 -0
  36. package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +278 -0
  37. package/agentvibes.org/.claude/hooks/language-manager.sh +190 -0
  38. package/agentvibes.org/.claude/hooks/personality-manager.sh +279 -0
  39. package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
  40. package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
  41. package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +201 -0
  42. package/agentvibes.org/.claude/hooks/play-tts-piper.sh +175 -0
  43. package/agentvibes.org/.claude/hooks/play-tts.sh +138 -0
  44. package/agentvibes.org/.claude/hooks/provider-commands.sh +374 -0
  45. package/agentvibes.org/.claude/hooks/provider-manager.sh +196 -0
  46. package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
  47. package/agentvibes.org/.claude/hooks/voice-manager.sh +349 -0
  48. package/agentvibes.org/.claude/hooks/voices-config.sh +33 -0
  49. package/agentvibes.org/.claude/journal/2025-10-07.html +373 -0
  50. package/agentvibes.org/.claude/journal/index.html +91 -0
  51. package/agentvibes.org/.claude/output-styles/agent-vibes.md +203 -0
  52. package/agentvibes.org/.claude/personalities/angry.md +16 -0
  53. package/agentvibes.org/.claude/personalities/annoying.md +16 -0
  54. package/agentvibes.org/.claude/personalities/crass.md +16 -0
  55. package/agentvibes.org/.claude/personalities/dramatic.md +16 -0
  56. package/agentvibes.org/.claude/personalities/dry-humor.md +52 -0
  57. package/agentvibes.org/.claude/personalities/flirty.md +22 -0
  58. package/agentvibes.org/.claude/personalities/funny.md +16 -0
  59. package/agentvibes.org/.claude/personalities/grandpa.md +34 -0
  60. package/agentvibes.org/.claude/personalities/millennial.md +16 -0
  61. package/agentvibes.org/.claude/personalities/moody.md +16 -0
  62. package/agentvibes.org/.claude/personalities/normal.md +18 -0
  63. package/agentvibes.org/.claude/personalities/pirate.md +16 -0
  64. package/agentvibes.org/.claude/personalities/poetic.md +16 -0
  65. package/agentvibes.org/.claude/personalities/professional.md +16 -0
  66. package/agentvibes.org/.claude/personalities/robot.md +16 -0
  67. package/agentvibes.org/.claude/personalities/sarcastic.md +40 -0
  68. package/agentvibes.org/.claude/personalities/sassy.md +16 -0
  69. package/agentvibes.org/.claude/personalities/surfer-dude.md +16 -0
  70. package/agentvibes.org/.claude/personalities/zen.md +16 -0
  71. package/agentvibes.org/.mcp-minimal.json +60 -0
  72. package/agentvibes.org/CHANGELOG.md +56 -0
  73. package/agentvibes.org/README.md +93 -0
  74. package/agentvibes.org/app/(auth)/layout.tsx +15 -0
  75. package/agentvibes.org/app/(auth)/reset-password/page.tsx +45 -0
  76. package/agentvibes.org/app/(auth)/signin/page.tsx +82 -0
  77. package/agentvibes.org/app/(auth)/signup/page.tsx +104 -0
  78. package/agentvibes.org/app/(default)/layout.tsx +31 -0
  79. package/agentvibes.org/app/(default)/page.tsx +20 -0
  80. package/agentvibes.org/app/api/hello/route.ts +3 -0
  81. package/agentvibes.org/app/css/additional-styles/theme.css +82 -0
  82. package/agentvibes.org/app/css/additional-styles/utility-patterns.css +55 -0
  83. package/agentvibes.org/app/css/style.css +100 -0
  84. package/agentvibes.org/app/layout.tsx +63 -0
  85. package/agentvibes.org/components/cta.tsx +58 -0
  86. package/agentvibes.org/components/features.tsx +256 -0
  87. package/agentvibes.org/components/hero-home.tsx +133 -0
  88. package/agentvibes.org/components/modal-video.tsx +137 -0
  89. package/agentvibes.org/components/page-illustration.tsx +55 -0
  90. package/agentvibes.org/components/spotlight.tsx +77 -0
  91. package/agentvibes.org/components/testimonials.tsx +282 -0
  92. package/agentvibes.org/components/ui/footer.tsx +82 -0
  93. package/agentvibes.org/components/ui/header.tsx +53 -0
  94. package/agentvibes.org/components/ui/logo.tsx +10 -0
  95. package/agentvibes.org/components/workflows.tsx +176 -0
  96. package/agentvibes.org/next.config.js +4 -0
  97. package/agentvibes.org/package-lock.json +1974 -0
  98. package/agentvibes.org/package.json +30 -0
  99. package/agentvibes.org/pnpm-lock.yaml +1141 -0
  100. package/agentvibes.org/postcss.config.js +5 -0
  101. package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
  102. package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
  103. package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
  104. package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
  105. package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
  106. package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
  107. package/agentvibes.org/public/favicon.ico +0 -0
  108. package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
  109. package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
  110. package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
  111. package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
  112. package/agentvibes.org/public/images/blurred-shape-gray.svg +1 -0
  113. package/agentvibes.org/public/images/blurred-shape.svg +1 -0
  114. package/agentvibes.org/public/images/client-logo-01.svg +1 -0
  115. package/agentvibes.org/public/images/client-logo-02.svg +1 -0
  116. package/agentvibes.org/public/images/client-logo-03.svg +1 -0
  117. package/agentvibes.org/public/images/client-logo-04.svg +1 -0
  118. package/agentvibes.org/public/images/client-logo-05.svg +1 -0
  119. package/agentvibes.org/public/images/client-logo-06.svg +1 -0
  120. package/agentvibes.org/public/images/client-logo-07.svg +1 -0
  121. package/agentvibes.org/public/images/client-logo-08.svg +1 -0
  122. package/agentvibes.org/public/images/client-logo-09.svg +1 -0
  123. package/agentvibes.org/public/images/features.png +0 -0
  124. package/agentvibes.org/public/images/footer-illustration.svg +1 -0
  125. package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
  126. package/agentvibes.org/public/images/logo.svg +1 -0
  127. package/agentvibes.org/public/images/page-illustration.svg +1 -0
  128. package/agentvibes.org/public/images/secondary-illustration.svg +1 -0
  129. package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
  130. package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
  131. package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
  132. package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
  133. package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
  134. package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
  135. package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
  136. package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
  137. package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
  138. package/agentvibes.org/public/images/workflow-01.png +0 -0
  139. package/agentvibes.org/public/images/workflow-02.png +0 -0
  140. package/agentvibes.org/public/images/workflow-03.png +0 -0
  141. package/agentvibes.org/public/videos/video.mp4 +0 -0
  142. package/agentvibes.org/tsconfig.json +28 -0
  143. package/agentvibes.org/utils/useMasonry.tsx +67 -0
  144. package/agentvibes.org/utils/useMousePosition.tsx +27 -0
  145. package/docs/REMOTE_TTS_SETUP.md +190 -0
  146. package/package.json +2 -2
  147. package/src/installer.js +193 -9
  148. package/test/helpers/test-helper.bash +4 -2
  149. package/test/unit/personality-manager.bats +16 -4
  150. package/test/unit/personality-voice-mapping.bats +15 -6
  151. package/test/unit/play-tts.bats +0 -9
  152. 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,10 @@
1
+ ---
2
+ description: Show the installed AgentVibes version
3
+ ---
4
+
5
+ Display the currently installed version of AgentVibes.
6
+
7
+ Usage:
8
+ - `/agent-vibes:version` - Show version information
9
+
10
+ !bash npx agent-vibes --version
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: Show the current active voice
3
+ ---
4
+
5
+ Display the currently selected ElevenLabs TTS voice.
6
+
7
+ !bash .claude/hooks/voice-manager.sh whoami
@@ -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