agentvibes 2.0.17 → 2.0.18

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 (42) hide show
  1. package/.claude/activation-instructions +54 -0
  2. package/.claude/github-star-reminder.txt +1 -1
  3. package/.claude/hooks/bmad-tts-injector.sh +33 -4
  4. package/.claude/hooks/bmad-voice-manager.sh +146 -10
  5. package/.claude/hooks/check-output-style.sh +60 -8
  6. package/.claude/hooks/github-star-reminder.sh +67 -7
  7. package/.claude/hooks/language-manager.sh +34 -2
  8. package/.claude/hooks/learn-manager.sh +34 -2
  9. package/.claude/hooks/personality-manager.sh +34 -1
  10. package/.claude/hooks/piper-download-voices.sh +131 -9
  11. package/.claude/hooks/piper-installer.sh +38 -4
  12. package/.claude/hooks/piper-voice-manager.sh +102 -36
  13. package/.claude/hooks/play-tts-elevenlabs.sh +32 -6
  14. package/.claude/hooks/play-tts-piper.sh +79 -18
  15. package/.claude/hooks/play-tts.sh +34 -3
  16. package/.claude/hooks/provider-commands.sh +36 -1
  17. package/.claude/hooks/provider-manager.sh +32 -1
  18. package/.claude/hooks/replay-target-audio.sh +34 -3
  19. package/.claude/hooks/sentiment-manager.sh +39 -1
  20. package/.claude/hooks/speed-manager.sh +36 -2
  21. package/.claude/hooks/voice-manager.sh +85 -6
  22. package/.claude/hooks/voices-config.sh +39 -2
  23. package/README.md +77 -137
  24. package/RELEASE_NOTES.md +269 -0
  25. package/RELEASE_NOTES_v2.0.17_DRAFT.md +650 -0
  26. package/docs/ai-optimized-documentation-standards.md +78 -4
  27. package/docs/bryce-beattie-voice-licensing.md +131 -0
  28. package/docs/commands.md +21 -1
  29. package/docs/mcp-setup.md +1 -6
  30. package/github-star-reminder.txt +1 -0
  31. package/mcp-server/WINDOWS_SETUP.md +182 -199
  32. package/mcp-server/docs/elevenlabs-setup.md +213 -0
  33. package/mcp-server/docs/troubleshooting-audio.md +316 -0
  34. package/mcp-server/server.py +38 -4
  35. package/mcp-server/test_server.py +38 -3
  36. package/package.json +1 -1
  37. package/test/helpers/test-helper.bash +31 -4
  38. package/test/unit/personality-manager.bats +22 -6
  39. package/test/unit/play-tts.bats +21 -3
  40. package/test/unit/provider-manager.bats +508 -0
  41. package/test/unit/speed-manager.bats +436 -0
  42. package/test/unit/voice-manager.bats +4 -1
@@ -1,8 +1,43 @@
1
1
  #!/bin/bash
2
2
  #
3
+ # File: .claude/hooks/provider-commands.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied, including but not limited to the warranties of
26
+ # merchantability, fitness for a particular purpose and noninfringement.
27
+ # In no event shall the authors or copyright holders be liable for any claim,
28
+ # damages or other liability, whether in an action of contract, tort or
29
+ # otherwise, arising from, out of or in connection with the software or the
30
+ # use or other dealings in the software.
31
+ #
32
+ # ---
33
+ #
3
34
  # @fileoverview Provider management slash commands
4
35
  # @context User-facing commands for switching and managing TTS providers
5
- # @architecture Part of /agent-vibes:* command system
36
+ # @architecture Part of /agent-vibes:* command system with language compatibility checking
37
+ # @dependencies provider-manager.sh, language-manager.sh, voice-manager.sh, piper-voice-manager.sh
38
+ # @entrypoints Called by /agent-vibes:provider slash commands (list, switch, info, test, get, preview)
39
+ # @patterns Interactive confirmations, platform detection, language compatibility validation
40
+ # @related provider-manager.sh, play-tts.sh, voice-manager.sh, piper-voice-manager.sh
6
41
  #
7
42
 
8
43
  # Get script directory
@@ -1,12 +1,43 @@
1
1
  #!/bin/bash
2
2
  #
3
+ # File: .claude/hooks/provider-manager.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied, including but not limited to the warranties of
26
+ # merchantability, fitness for a particular purpose and noninfringement.
27
+ # In no event shall the authors or copyright holders be liable for any claim,
28
+ # damages or other liability, whether in an action of contract, tort or
29
+ # otherwise, arising from, out of or in connection with the software or the
30
+ # use or other dealings in the software.
31
+ #
32
+ # ---
33
+ #
3
34
  # @fileoverview TTS Provider Management Functions
4
35
  # @context Core provider abstraction layer for multi-provider TTS system
5
36
  # @architecture Provides functions to get/set/list/validate TTS providers
6
37
  # @dependencies None - pure bash implementation
7
38
  # @entrypoints Sourced by play-tts.sh and provider management commands
8
39
  # @patterns File-based state management with project-local and global fallback
9
- # @related play-tts.sh, play-tts-elevenlabs.sh, GitHub Issue #25
40
+ # @related play-tts.sh, play-tts-elevenlabs.sh, play-tts-piper.sh, provider-commands.sh
10
41
  #
11
42
 
12
43
  # @function get_provider_config_path
@@ -1,11 +1,42 @@
1
1
  #!/bin/bash
2
2
  #
3
+ # File: .claude/hooks/replay-target-audio.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied, including but not limited to the warranties of
26
+ # merchantability, fitness for a particular purpose and noninfringement.
27
+ # In no event shall the authors or copyright holders be liable for any claim,
28
+ # damages or other liability, whether in an action of contract, tort or
29
+ # otherwise, arising from, out of or in connection with the software or the
30
+ # use or other dealings in the software.
31
+ #
32
+ # ---
33
+ #
3
34
  # @fileoverview Replay Last Target Language Audio
4
35
  # @context Replays the most recent target language TTS for language learning
5
- # @architecture Simple audio replay with lock mechanism
6
- # @dependencies ffprobe, paplay/aplay/mpg123
36
+ # @architecture Simple audio replay with lock mechanism for sequential playback
37
+ # @dependencies ffprobe, paplay/aplay/mpg123/mpv, .claude/last-target-audio.txt
7
38
  # @entrypoints Called by /agent-vibes:replay-target slash command
8
- # @patterns Sequential audio playback with lock file
39
+ # @patterns Sequential audio playback with lock file, duration-based lock release
9
40
  # @related play-tts-piper.sh, play-tts-elevenlabs.sh, learn-manager.sh
10
41
  #
11
42
 
@@ -1,5 +1,43 @@
1
1
  #!/bin/bash
2
- # Sentiment manager for AgentVibes - applies personality to current voice
2
+ #
3
+ # File: .claude/hooks/sentiment-manager.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied, including but not limited to the warranties of
26
+ # merchantability, fitness for a particular purpose and noninfringement.
27
+ # In no event shall the authors or copyright holders be liable for any claim,
28
+ # damages or other liability, whether in an action of contract, tort or
29
+ # otherwise, arising from, out of or in connection with the software or the
30
+ # use or other dealings in the software.
31
+ #
32
+ # ---
33
+ #
34
+ # @fileoverview Sentiment Manager - Applies personality styles to current voice without changing the voice itself
35
+ # @context Allows adding emotional/tonal layers (flirty, sarcastic, etc.) to any voice while preserving voice identity
36
+ # @architecture Reuses personality markdown files, stores sentiment separately from personality
37
+ # @dependencies .claude/personalities/*.md files, play-tts.sh for acknowledgment
38
+ # @entrypoints Called by /agent-vibes:sentiment slash command
39
+ # @patterns Personality/sentiment separation, state file management, random example selection
40
+ # @related personality-manager.sh, .claude/personalities/*.md, .claude/tts-sentiment.txt
3
41
 
4
42
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
43
  PERSONALITIES_DIR="$SCRIPT_DIR/../personalities"
@@ -1,9 +1,43 @@
1
1
  #!/bin/bash
2
2
  #
3
+ # File: .claude/hooks/speed-manager.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied, including but not limited to the warranties of
26
+ # merchantability, fitness for a particular purpose and noninfringement.
27
+ # In no event shall the authors or copyright holders be liable for any claim,
28
+ # damages or other liability, whether in an action of contract, tort or
29
+ # otherwise, arising from, out of or in connection with the software or the
30
+ # use or other dealings in the software.
31
+ #
32
+ # ---
33
+ #
3
34
  # @fileoverview Speech Speed Manager for Multi-Provider TTS
4
35
  # @context Manage speech rate for main and target language voices
5
- # @architecture Simple config file manager supporting both Piper and ElevenLabs
6
- # @providers Piper (length-scale), ElevenLabs (speed API parameter)
36
+ # @architecture Simple config file manager supporting both Piper (length-scale) and ElevenLabs (speed API parameter)
37
+ # @dependencies .claude/config/tts-speech-rate.txt, .claude/config/tts-target-speech-rate.txt
38
+ # @entrypoints Called by /agent-vibes:set-speed slash command
39
+ # @patterns Provider-agnostic speed config, legacy file migration, random tongue twisters for testing
40
+ # @related play-tts.sh, play-tts-piper.sh, play-tts-elevenlabs.sh, learn-manager.sh
7
41
  #
8
42
 
9
43
  # Get script directory
@@ -1,6 +1,38 @@
1
1
  #!/bin/bash
2
- # Voice Manager - Handle voice switching and listing
3
- # Usage: voice-manager.sh [list|switch|get] [voice_name]
2
+ #
3
+ # File: .claude/hooks/voice-manager.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied. Use at your own risk. See the Apache License for details.
26
+ #
27
+ # ---
28
+ #
29
+ # @fileoverview Voice Manager - Unified voice management for both ElevenLabs and Piper providers
30
+ # @context Central interface for listing, switching, previewing, and replaying TTS voices across providers
31
+ # @architecture Provider-aware operations with dynamic voice listing based on active provider
32
+ # @dependencies voices-config.sh (ElevenLabs mappings), piper-voice-manager.sh (Piper voices), provider-manager.sh
33
+ # @entrypoints Called by /agent-vibes:switch, /agent-vibes:list, /agent-vibes:whoami, /agent-vibes:replay commands
34
+ # @patterns Provider abstraction, numbered selection UI, silent mode for programmatic switching
35
+ # @related voices-config.sh, piper-voice-manager.sh, .claude/tts-voice.txt, .claude/audio/ (replay)
4
36
 
5
37
  # Get script directory (physical path for sourcing files)
6
38
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
@@ -55,17 +87,64 @@ case "$1" in
55
87
  source "$SCRIPT_DIR/piper-voice-manager.sh"
56
88
  VOICE_DIR=$(get_voice_storage_dir)
57
89
  VOICE_COUNT=0
90
+
91
+ # Extract base voice name and speaker ID from current voice if it has # format
92
+ CURRENT_BASE_VOICE="$CURRENT_VOICE"
93
+ CURRENT_SPEAKER_ID=""
94
+ if [[ "$CURRENT_VOICE" == *"#"* ]]; then
95
+ CURRENT_BASE_VOICE="${CURRENT_VOICE%%#*}"
96
+ CURRENT_SPEAKER_ID="${CURRENT_VOICE##*#}"
97
+ fi
98
+
58
99
  for onnx_file in "$VOICE_DIR"/*.onnx; do
59
100
  if [[ -f "$onnx_file" ]]; then
60
101
  voice=$(basename "$onnx_file" .onnx)
61
- if [ "$voice" = "$CURRENT_VOICE" ]; then
62
- echo " ▶ $voice (current)"
102
+ json_file="${onnx_file}.json"
103
+
104
+ # Check if this is a multi-speaker voice
105
+ if [[ -f "$json_file" ]] && command -v jq &> /dev/null; then
106
+ NUM_SPEAKERS=$(jq -r '.num_speakers // 1' "$json_file" 2>/dev/null)
107
+
108
+ if [[ "$NUM_SPEAKERS" -gt 1 ]]; then
109
+ # Multi-speaker voice - list all speakers
110
+ echo ""
111
+ echo " 📢 $voice (Multi-speaker: $NUM_SPEAKERS voices)"
112
+
113
+ # Read speaker names from JSON
114
+ jq -r '.speaker_id_map | to_entries[] | " \(.value)️. \(.key) → \(.value|tostring)#\(.value)"' "$json_file" 2>/dev/null | while read -r speaker_line; do
115
+ # Extract speaker ID from the line
116
+ speaker_id=$(echo "$speaker_line" | sed -E 's/.*→ ([0-9]+)#[0-9]+$/\1/')
117
+
118
+ # Check if this speaker is current
119
+ if [[ "$voice" == "$CURRENT_BASE_VOICE" ]] && [[ "$speaker_id" == "$CURRENT_SPEAKER_ID" ]]; then
120
+ # Remove the → ID#ID suffix and add current marker
121
+ speaker_display=$(echo "$speaker_line" | sed -E 's/ → [0-9]+#[0-9]+$//')
122
+ echo " ▶ $speaker_display (current)"
123
+ else
124
+ # Remove the → ID#ID suffix
125
+ speaker_display=$(echo "$speaker_line" | sed -E 's/ → [0-9]+#[0-9]+$//')
126
+ echo " $speaker_display"
127
+ fi
128
+ done
129
+ else
130
+ # Single-speaker voice
131
+ if [ "$voice" = "$CURRENT_VOICE" ] || [ "$voice" = "$CURRENT_BASE_VOICE" ]; then
132
+ echo " ▶ $voice (current)"
133
+ else
134
+ echo " $voice"
135
+ fi
136
+ fi
63
137
  else
64
- echo " $voice"
138
+ # No JSON file or jq not available - show as single voice
139
+ if [ "$voice" = "$CURRENT_VOICE" ] || [ "$voice" = "$CURRENT_BASE_VOICE" ]; then
140
+ echo " ▶ $voice (current)"
141
+ else
142
+ echo " $voice"
143
+ fi
65
144
  fi
66
145
  ((VOICE_COUNT++))
67
146
  fi
68
- done | sort
147
+ done
69
148
 
70
149
  if [[ $VOICE_COUNT -eq 0 ]]; then
71
150
  echo " (No Piper voices downloaded yet)"
@@ -1,6 +1,43 @@
1
1
  #!/bin/bash
2
- # Single source of truth for ElevenLabs voice IDs
3
- # This file is sourced by both voice-manager.sh and play-tts.sh
2
+ #
3
+ # File: .claude/hooks/voices-config.sh
4
+ #
5
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
6
+ # Website: https://agentvibes.org
7
+ # Repository: https://github.com/paulpreibisch/AgentVibes
8
+ #
9
+ # Co-created by Paul Preibisch with Claude AI
10
+ # Copyright (c) 2025 Paul Preibisch
11
+ #
12
+ # Licensed under the Apache License, Version 2.0 (the "License");
13
+ # you may not use this file except in compliance with the License.
14
+ # You may obtain a copy of the License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the License is distributed on an "AS IS" BASIS,
20
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ # See the License for the specific language governing permissions and
22
+ # limitations under the License.
23
+ #
24
+ # DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
+ # express or implied, including but not limited to the warranties of
26
+ # merchantability, fitness for a particular purpose and noninfringement.
27
+ # In no event shall the authors or copyright holders be liable for any claim,
28
+ # damages or other liability, whether in an action of contract, tort or
29
+ # otherwise, arising from, out of or in connection with the software or the
30
+ # use or other dealings in the software.
31
+ #
32
+ # ---
33
+ #
34
+ # @fileoverview ElevenLabs Voice Configuration - Single source of truth for voice ID mappings
35
+ # @context Maps human-readable voice names to ElevenLabs API voice IDs for consistency
36
+ # @architecture Associative array (bash hash map) sourced by multiple scripts
37
+ # @dependencies None (pure data structure)
38
+ # @entrypoints Sourced by voice-manager.sh, play-tts-elevenlabs.sh, and personality managers
39
+ # @patterns Centralized configuration, DRY principle for voice mappings
40
+ # @related voice-manager.sh, play-tts-elevenlabs.sh, personality/*.md files
4
41
 
5
42
  declare -A VOICES=(
6
43
  ["Amy"]="bhJUNIXWQQ94l8eI2VUf"