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
@@ -0,0 +1,54 @@
1
+ # BMAD Agent Activation Instructions
2
+
3
+ When a BMAD agent activates, follow these steps EXACTLY:
4
+
5
+ ## STEP 3.5a: Create BMAD Context File (CRITICAL)
6
+
7
+ **IMMEDIATELY after agent identification, create the context file:**
8
+
9
+ ```bash
10
+ echo "$AGENT_ID" > .bmad-agent-context
11
+ ```
12
+
13
+ Where `$AGENT_ID` is one of:
14
+ - `pm` (Product Manager)
15
+ - `dev` (Developer)
16
+ - `qa` (QA)
17
+ - `architect` (Architect)
18
+ - `po` (Product Owner)
19
+ - `analyst` (Analyst)
20
+ - `sm` (Scrum Master)
21
+ - `ux-expert` (UX Expert)
22
+ - `bmad-master` (BMAD Master)
23
+ - `bmad-orchestrator` (Orchestrator)
24
+
25
+ **Example:**
26
+ ```bash
27
+ # For Product Manager agent
28
+ echo "pm" > .bmad-agent-context
29
+ ```
30
+
31
+ This file allows AgentVibes to:
32
+ 1. Detect which BMAD agent is active
33
+ 2. Look up the correct voice mapping
34
+ 3. Automatically speak questions using the agent's assigned voice
35
+
36
+ ## STEP 10: Clean Up on Exit
37
+
38
+ **Before exiting the agent, remove the context file:**
39
+
40
+ ```bash
41
+ rm -f .bmad-agent-context
42
+ ```
43
+
44
+ This ensures voice switching only happens when an agent is active.
45
+
46
+ ## Why This Matters
47
+
48
+ Without the `.bmad-agent-context` file:
49
+ - AgentVibes cannot detect which agent is active
50
+ - Questions won't be spoken automatically
51
+ - Voice switching won't work
52
+ - The BMAD voice plugin becomes non-functional
53
+
54
+ **This is MANDATORY for BMAD voice integration to work!**
@@ -1 +1 @@
1
- 20251016
1
+ 20251017
@@ -1,9 +1,38 @@
1
1
  #!/bin/bash
2
2
  #
3
- # @fileoverview BMAD TTS Injection Manager
4
- # @context Automatically patches BMAD agent files to include AgentVibes TTS hooks
5
- # @architecture Modifies agent YAML activation-instructions to call play-tts.sh
6
- # @why Enables BMAD agents to speak their greetings and questions via TTS
3
+ # File: .claude/hooks/bmad-tts-injector.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 BMAD TTS Injection Manager - Patches BMAD agents for TTS integration
30
+ # @context Automatically modifies BMAD agent YAML files to include AgentVibes TTS capabilities
31
+ # @architecture Injects TTS hooks into activation-instructions and core_principles sections
32
+ # @dependencies bmad-core/agents/*.md files, play-tts.sh, bmad-voice-manager.sh
33
+ # @entrypoints Called via bmad-tts-injector.sh {enable|disable|status|restore}
34
+ # @patterns File patching with backup, provider-aware voice mapping, injection markers for idempotency
35
+ # @related play-tts.sh, bmad-voice-manager.sh, .bmad-core/agents/*.md
7
36
  #
8
37
 
9
38
  set -e # Exit on error
@@ -1,10 +1,62 @@
1
1
  #!/bin/bash
2
+ #
3
+ # File: .claude/hooks/bmad-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, 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 BMAD Voice Plugin Manager - Maps BMAD agents to unique TTS voices
35
+ # @context Enables each BMAD agent to have its own distinct voice for multi-agent sessions
36
+ # @architecture Markdown table-based voice mapping with enable/disable flag, auto-detection of BMAD
37
+ # @dependencies .claude/plugins/bmad-voices.md (voice mappings), bmad-tts-injector.sh, .bmad-core/ (BMAD installation)
38
+ # @entrypoints Called by /agent-vibes:bmad commands, auto-enabled on BMAD detection
39
+ # @patterns Plugin architecture, auto-enable on dependency detection, state backup/restore on toggle
40
+ # @related bmad-tts-injector.sh, .claude/plugins/bmad-voices.md, .bmad-agent-context file
2
41
 
3
42
  PLUGIN_DIR=".claude/plugins"
4
43
  PLUGIN_FILE="$PLUGIN_DIR/bmad-voices.md"
5
44
  ENABLED_FLAG="$PLUGIN_DIR/bmad-voices-enabled.flag"
6
45
 
7
- # Auto-enable plugin if BMAD is detected
46
+ # AI NOTE: Auto-enable pattern - When BMAD is detected via .bmad-core/install-manifest.yaml,
47
+ # automatically enable the voice plugin to provide seamless multi-agent voice support.
48
+ # This avoids requiring manual plugin activation after BMAD installation.
49
+
50
+ # @function auto_enable_if_bmad_detected
51
+ # @intent Automatically enable BMAD voice plugin when BMAD framework is detected
52
+ # @why Provide seamless integration - users shouldn't need to manually enable voice mapping
53
+ # @param None
54
+ # @returns None
55
+ # @exitcode 0=auto-enabled, 1=not enabled (already enabled or BMAD not detected)
56
+ # @sideeffects Creates enabled flag file, creates plugin directory
57
+ # @edgecases Only auto-enables if plugin not already enabled, silent operation
58
+ # @calledby get_agent_voice
59
+ # @calls mkdir, touch
8
60
  auto_enable_if_bmad_detected() {
9
61
  # Check if BMAD is installed
10
62
  if [[ -f ".bmad-core/install-manifest.yaml" ]] && [[ ! -f "$ENABLED_FLAG" ]]; then
@@ -16,7 +68,16 @@ auto_enable_if_bmad_detected() {
16
68
  return 1
17
69
  }
18
70
 
19
- # Parse markdown table to get voice mapping
71
+ # @function get_agent_voice
72
+ # @intent Retrieve TTS voice assigned to specific BMAD agent
73
+ # @why Each BMAD agent needs unique voice for multi-agent conversation differentiation
74
+ # @param $1 {string} agent_id - BMAD agent identifier (pm, dev, qa, architect, etc.)
75
+ # @returns Echoes voice name to stdout, empty string if plugin disabled or agent not found
76
+ # @exitcode Always 0
77
+ # @sideeffects May auto-enable plugin if BMAD detected
78
+ # @edgecases Returns empty string if plugin disabled/missing, parses markdown table syntax
79
+ # @calledby bmad-tts-injector.sh, play-tts.sh when BMAD agent is active
80
+ # @calls auto_enable_if_bmad_detected, grep, awk, sed
20
81
  get_agent_voice() {
21
82
  local agent_id="$1"
22
83
 
@@ -41,7 +102,16 @@ get_agent_voice() {
41
102
  echo "$voice"
42
103
  }
43
104
 
44
- # Get personality for agent
105
+ # @function get_agent_personality
106
+ # @intent Retrieve TTS personality assigned to specific BMAD agent
107
+ # @why Agents may have distinct speaking styles (friendly, professional, energetic, etc.)
108
+ # @param $1 {string} agent_id - BMAD agent identifier
109
+ # @returns Echoes personality name to stdout, empty string if not found
110
+ # @exitcode Always 0
111
+ # @sideeffects None
112
+ # @edgecases Returns empty string if plugin file missing, parses column 5 of markdown table
113
+ # @calledby bmad-tts-injector.sh for personality-aware voice synthesis
114
+ # @calls grep, awk, sed
45
115
  get_agent_personality() {
46
116
  local agent_id="$1"
47
117
 
@@ -57,12 +127,31 @@ get_agent_personality() {
57
127
  echo "$personality"
58
128
  }
59
129
 
60
- # Check if plugin is enabled
130
+ # @function is_plugin_enabled
131
+ # @intent Check if BMAD voice plugin is currently enabled
132
+ # @why Allow conditional logic based on plugin state
133
+ # @param None
134
+ # @returns Echoes "true" or "false" to stdout
135
+ # @exitcode Always 0
136
+ # @sideeffects None
137
+ # @edgecases None
138
+ # @calledby show_status, enable_plugin, disable_plugin
139
+ # @calls None (file existence check)
61
140
  is_plugin_enabled() {
62
141
  [[ -f "$ENABLED_FLAG" ]] && echo "true" || echo "false"
63
142
  }
64
143
 
65
- # Enable plugin
144
+ # @function enable_plugin
145
+ # @intent Enable BMAD voice plugin and backup current voice settings
146
+ # @why Allow users to switch to per-agent voices while preserving original configuration
147
+ # @param None
148
+ # @returns None
149
+ # @exitcode Always 0
150
+ # @sideeffects Creates flag file, backs up current voice/personality/sentiment to .bmad-previous-settings
151
+ # @sideeffects Creates activation-instructions file for BMAD agents, calls bmad-tts-injector.sh
152
+ # @edgecases Handles missing settings files gracefully with defaults
153
+ # @calledby Main command dispatcher with "enable" argument
154
+ # @calls mkdir, cat, source, list_mappings, bmad-tts-injector.sh
66
155
  enable_plugin() {
67
156
  mkdir -p "$PLUGIN_DIR"
68
157
 
@@ -193,7 +282,16 @@ ACTIVATION_EOF
193
282
  fi
194
283
  }
195
284
 
196
- # Disable plugin
285
+ # @function disable_plugin
286
+ # @intent Disable BMAD voice plugin and restore previous voice settings
287
+ # @why Allow users to return to single-voice mode with their original configuration
288
+ # @param None
289
+ # @returns None
290
+ # @exitcode Always 0
291
+ # @sideeffects Removes flag file, restores settings from backup, calls bmad-tts-injector.sh disable
292
+ # @edgecases Handles missing backup file gracefully, warns user if no backup exists
293
+ # @calledby Main command dispatcher with "disable" argument
294
+ # @calls source, rm, echo, bmad-tts-injector.sh
197
295
  disable_plugin() {
198
296
  BACKUP_FILE="$PLUGIN_DIR/.bmad-previous-settings"
199
297
 
@@ -250,7 +348,16 @@ disable_plugin() {
250
348
  fi
251
349
  }
252
350
 
253
- # List all mappings
351
+ # @function list_mappings
352
+ # @intent Display all BMAD agent-to-voice mappings in readable format
353
+ # @why Help users see which voice is assigned to each agent
354
+ # @param None
355
+ # @returns None
356
+ # @exitcode 0=success, 1=plugin file not found
357
+ # @sideeffects Writes formatted output to stdout
358
+ # @edgecases Parses markdown table format, skips header and separator rows
359
+ # @calledby enable_plugin, show_status, main command dispatcher with "list"
360
+ # @calls grep, sed, echo
254
361
  list_mappings() {
255
362
  if [[ ! -f "$PLUGIN_FILE" ]]; then
256
363
  echo "❌ Plugin file not found: $PLUGIN_FILE"
@@ -271,7 +378,18 @@ list_mappings() {
271
378
  done
272
379
  }
273
380
 
274
- # Set voice for agent
381
+ # @function set_agent_voice
382
+ # @intent Update voice and personality mapping for specific BMAD agent
383
+ # @why Allow customization of agent voices to user preferences
384
+ # @param $1 {string} agent_id - BMAD agent identifier
385
+ # @param $2 {string} voice - New voice name
386
+ # @param $3 {string} personality - New personality (optional, defaults to "normal")
387
+ # @returns None
388
+ # @exitcode 0=success, 1=plugin file not found or agent not found
389
+ # @sideeffects Modifies plugin file, creates .bak backup
390
+ # @edgecases Validates agent exists before updating
391
+ # @calledby Main command dispatcher with "set" argument
392
+ # @calls grep, sed
275
393
  set_agent_voice() {
276
394
  local agent_id="$1"
277
395
  local voice="$2"
@@ -294,7 +412,16 @@ set_agent_voice() {
294
412
  echo "✅ Updated $agent_id → $voice [$personality]"
295
413
  }
296
414
 
297
- # Show status
415
+ # @function show_status
416
+ # @intent Display plugin status, BMAD detection, and current voice mappings
417
+ # @why Provide comprehensive overview of plugin state for troubleshooting
418
+ # @param None
419
+ # @returns None
420
+ # @exitcode Always 0
421
+ # @sideeffects Writes status information to stdout
422
+ # @edgecases Checks for BMAD installation via manifest file
423
+ # @calledby Main command dispatcher with "status" argument
424
+ # @calls is_plugin_enabled, list_mappings
298
425
  show_status() {
299
426
  # Check for BMAD installation
300
427
  local bmad_installed="false"
@@ -317,7 +444,16 @@ show_status() {
317
444
  list_mappings
318
445
  }
319
446
 
320
- # Edit plugin file
447
+ # @function edit_plugin
448
+ # @intent Open plugin configuration file for manual editing
449
+ # @why Allow advanced users to modify voice mappings directly
450
+ # @param None
451
+ # @returns None
452
+ # @exitcode 0=success, 1=plugin file not found
453
+ # @sideeffects Displays file path and instructions
454
+ # @edgecases Does not actually open editor, just provides guidance
455
+ # @calledby Main command dispatcher with "edit" argument
456
+ # @calls echo
321
457
  edit_plugin() {
322
458
  if [[ ! -f "$PLUGIN_FILE" ]]; then
323
459
  echo "❌ Plugin file not found: $PLUGIN_FILE"
@@ -1,15 +1,58 @@
1
1
  #!/bin/bash
2
2
  #
3
- # @fileoverview Output Style Detection for AgentVibes
4
- # @context Detects if agent-vibes output style is active
5
- # @architecture Helper for slash commands to warn users
6
- # @why Voice commands won't work without agent-vibes output style
3
+ # File: .claude/hooks/check-output-style.sh
7
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 Output Style Detection - Detects if Agent Vibes output style is active in Claude Code
35
+ # @context Voice commands require the Agent Vibes output style to work properly with automatic TTS
36
+ # @architecture Heuristic detection using environment variables and file system checks
37
+ # @dependencies CLAUDECODE environment variable, .claude/output-styles/agent-vibes.md file
38
+ # @entrypoints Called by slash commands to warn users if output style is incorrect
39
+ # @patterns Environment-based detection, graceful degradation with helpful error messages
40
+ # @related .claude/output-styles/agent-vibes.md, Claude Code output style system
8
41
 
9
- # Check if we're in a Claude Code session with agent-vibes output style
10
- # This is a heuristic check - we can't directly detect the output style,
11
- # but we can check if TTS commands would work
42
+ # AI NOTE: Output style detection is heuristic-based because Claude Code does not expose
43
+ # the active output style via environment variables. We check for CLAUDECODE env var and
44
+ # the presence of the agent-vibes.md output style file as indicators.
12
45
 
46
+ # @function check_output_style
47
+ # @intent Detect if Agent Vibes output style is likely active in Claude Code session
48
+ # @why Voice commands depend on output style hooks that automatically invoke TTS
49
+ # @param None
50
+ # @returns None
51
+ # @exitcode 0=likely using agent-vibes style, 1=not using or cannot detect
52
+ # @sideeffects None (read-only checks)
53
+ # @edgecases Cannot directly detect output style, relies on CLAUDECODE env var and file presence
54
+ # @calledby Main execution block, slash command validation
55
+ # @calls None (direct environment and file checks)
13
56
  check_output_style() {
14
57
  # Strategy: Check if this script is being called from within a Claude response
15
58
  # If CLAUDECODE env var is set, we're in Claude Code
@@ -36,7 +79,16 @@ check_output_style() {
36
79
  return 0
37
80
  }
38
81
 
39
- # Show warning if output style is not agent-vibes
82
+ # @function show_output_style_warning
83
+ # @intent Display helpful warning about enabling Agent Vibes output style
84
+ # @why Users need guidance on how to enable automatic TTS narration
85
+ # @param None
86
+ # @returns None
87
+ # @exitcode Always 0
88
+ # @sideeffects Writes warning message to stdout
89
+ # @edgecases None
90
+ # @calledby Main execution block when check_output_style fails
91
+ # @calls echo
40
92
  show_output_style_warning() {
41
93
  echo ""
42
94
  echo "⚠️ Voice commands require the Agent Vibes output style"
@@ -1,10 +1,43 @@
1
1
  #!/bin/bash
2
2
  #
3
- # @fileoverview GitHub Star Reminder System
4
- # @context Shows a gentle reminder once per day to star the repo
5
- # @architecture Tracks last reminder date in a timestamp file
6
- # @why Encourage users to support the project without being annoying
3
+ # File: .claude/hooks/github-star-reminder.sh
7
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 GitHub Star Reminder System - Gentle daily reminder to star repository
35
+ # @context Shows a once-per-day reminder to encourage users to support the project without being annoying
36
+ # @architecture Timestamp-based tracking using daily date comparison in a state file
37
+ # @dependencies date command for timestamp generation
38
+ # @entrypoints Called by play-tts.sh router on every TTS execution, sourced or executed directly
39
+ # @patterns Rate-limiting via file-based state, graceful degradation, user-opt-out support
40
+ # @related .claude/github-star-reminder.txt (state file), .claude/github-star-reminder-disabled.flag (opt-out)
8
41
 
9
42
  # Determine config directory (project-local or global)
10
43
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -20,7 +53,16 @@ fi
20
53
 
21
54
  GITHUB_REPO="https://github.com/paulpreibisch/AgentVibes"
22
55
 
23
- # Check if reminders are disabled
56
+ # @function is_reminder_disabled
57
+ # @intent Check if GitHub star reminders have been disabled by the user
58
+ # @why Respect user preferences and provide opt-out mechanism for reminders
59
+ # @param None
60
+ # @returns None
61
+ # @exitcode 0=reminders disabled, 1=reminders enabled
62
+ # @sideeffects Reads flag files from local/global .claude directories
63
+ # @edgecases Checks both flag file and "disabled" text in reminder file for backward compatibility
64
+ # @calledby should_show_reminder
65
+ # @calls cat for reading reminder file content
24
66
  is_reminder_disabled() {
25
67
  # Check for disable flag file
26
68
  local disable_file_local="$CLAUDE_DIR/github-star-reminder-disabled.flag"
@@ -41,7 +83,16 @@ is_reminder_disabled() {
41
83
  return 1 # Not disabled
42
84
  }
43
85
 
44
- # Check if we should show the reminder
86
+ # @function should_show_reminder
87
+ # @intent Determine if reminder should be displayed based on date and disable status
88
+ # @why Implement once-per-day rate limiting to avoid annoying users
89
+ # @param None
90
+ # @returns None
91
+ # @exitcode 0=should show, 1=should not show
92
+ # @sideeffects Reads .claude/github-star-reminder.txt for last reminder date
93
+ # @edgecases Shows reminder if file doesn't exist (first run), compares YYYYMMDD format dates
94
+ # @calledby Main execution block
95
+ # @calls is_reminder_disabled, cat, date
45
96
  should_show_reminder() {
46
97
  # Check if disabled first
47
98
  if is_reminder_disabled; then
@@ -65,7 +116,16 @@ should_show_reminder() {
65
116
  return 1
66
117
  }
67
118
 
68
- # Show the reminder
119
+ # @function show_reminder
120
+ # @intent Display friendly GitHub star reminder with opt-out instructions
121
+ # @why Encourage community support while being respectful and non-intrusive
122
+ # @param None
123
+ # @returns None
124
+ # @exitcode Always 0
125
+ # @sideeffects Updates reminder file with current date, writes to stdout
126
+ # @edgecases None
127
+ # @calledby Main execution block when should_show_reminder returns true
128
+ # @calls date, echo
69
129
  show_reminder() {
70
130
  echo ""
71
131
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@@ -1,6 +1,38 @@
1
1
  #!/bin/bash
2
- # Language Manager for AgentVibes
3
- # Manages language settings and multilingual voice selection
2
+ #
3
+ # File: .claude/hooks/language-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 Language Manager - Manages multilingual TTS with 30+ language support
30
+ # @context Enables TTS in multiple languages with provider-specific voice recommendations (ElevenLabs multilingual vs Piper native)
31
+ # @architecture Dual-map system: ELEVENLABS_VOICES and PIPER_VOICES for provider-aware voice selection
32
+ # @dependencies provider-manager.sh for active provider detection, .claude/tts-language.txt for state
33
+ # @entrypoints Called by /agent-vibes:language commands, play-tts-*.sh for voice resolution
34
+ # @patterns Provider abstraction, language-to-voice mapping, backward compatibility with legacy LANGUAGE_VOICES
35
+ # @related play-tts-elevenlabs.sh, play-tts-piper.sh, provider-manager.sh, learn-manager.sh
4
36
 
5
37
  # Determine target .claude directory based on context
6
38
  # Priority:
@@ -1,6 +1,38 @@
1
1
  #!/bin/bash
2
- # Language Learning Mode Manager for AgentVibes
3
- # Handles dual-language TTS for language learning
2
+ #
3
+ # File: .claude/hooks/learn-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 Language Learning Mode Manager - Enables dual-language TTS for immersive learning
30
+ # @context Speaks responses in both main language (English) and target language (Spanish, French, etc.) for language practice
31
+ # @architecture Manages main/target language pairs with voice mappings, auto-configures recommended voices per language
32
+ # @dependencies play-tts.sh (dual invocation), language-manager.sh (voice recommendations), .claude/tts-*.txt state files
33
+ # @entrypoints Called by /agent-vibes:learn commands to enable/disable learning mode
34
+ # @patterns Dual-voice orchestration, auto-configuration, greeting on activation, provider-aware voice selection
35
+ # @related language-manager.sh, play-tts.sh, .claude/tts-learn-mode.txt, .claude/tts-target-language.txt
4
36
 
5
37
  set -e
6
38
 
@@ -1,5 +1,38 @@
1
1
  #!/bin/bash
2
- # Personality manager for AgentVibes - adds character to TTS messages
2
+ #
3
+ # File: .claude/hooks/personality-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 Personality Manager - Adds character and emotional style to TTS voices
30
+ # @context Enables voices to have distinct personalities (flirty, sarcastic, pirate, etc.) with provider-aware voice assignment
31
+ # @architecture Markdown-based personality templates with provider-specific voice mappings (ElevenLabs vs Piper)
32
+ # @dependencies .claude/personalities/*.md files, voice-manager.sh, play-tts.sh, provider-manager.sh
33
+ # @entrypoints Called by /agent-vibes:personality slash commands
34
+ # @patterns Template-based configuration, provider abstraction, random personality support
35
+ # @related .claude/personalities/*.md, voice-manager.sh, .claude/tts-personality.txt
3
36
 
4
37
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
38
  PERSONALITIES_DIR="$SCRIPT_DIR/../personalities"