agentvibes 2.0.20 → 2.0.22
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/agents/health-coach.md +154 -0
- package/.claude/agents/motivator.md +171 -0
- package/.claude/agents/negotiator.md +97 -0
- package/.claude/commands/agent-vibes/agent-health-coach.md +15 -0
- package/.claude/commands/agent-vibes/agent-motivator.md +15 -0
- package/.claude/commands/agent-vibes/agent-negotiator.md +15 -0
- package/.claude/commands/agent-vibes/agent.md +79 -0
- package/.claude/commands/agent-vibes/commands.json +4 -0
- package/.claude/commands/agent-vibes/set-favorite-voice.md +84 -0
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/download-extra-voices.sh +244 -0
- package/.claude/hooks/personality-manager.sh +81 -0
- package/.claude/hooks/piper-download-voices.sh +3 -93
- package/.claude/hooks/piper-multispeaker-registry.sh +165 -0
- package/.claude/hooks/play-tts-elevenlabs.sh +5 -3
- package/.claude/hooks/play-tts-piper.sh +27 -44
- package/.claude/hooks/provider-manager.sh +24 -5
- package/.claude/hooks/speed-manager.sh +10 -12
- package/.claude/hooks/voice-manager.sh +94 -56
- package/README.md +0 -3
- package/RELEASE_NOTES.md +40 -247
- package/docs/agents.md +485 -0
- package/docs/commands.md +1 -21
- package/docs/extra-voices-implementation-summary.md +235 -0
- package/docs/voice-registration-fix.md +254 -0
- package/fix-vscode-colors.sh +88 -0
- package/fixcolors +88 -0
- package/generate-all-agent-voices.sh +174 -0
- package/generate-missing-elevenlabs-complete.sh +236 -0
- package/generate-missing-elevenlabs.sh +110 -0
- package/generate-new-voices.sh +108 -0
- package/generate-piper-agent-intros.sh +85 -0
- package/generate-provider-and-agent-intros.sh +136 -0
- package/logo/fav_icon_128x128.png +0 -0
- package/logo/fav_icon_128x128.png:Zone.Identifier +4 -0
- package/logo/logo1.webp +0 -0
- package/logo/logo1.webp:Zone.Identifier +4 -0
- package/logo/social.png +0 -0
- package/logo/social.png:Zone.Identifier +4 -0
- package/mcp-server/agentvibes.db +0 -0
- package/mcp-server/server.py +47 -14
- package/package.json +3 -3
- package/regenerate-agent-voices.sh +79 -0
- package/test/unit/provider-manager.bats +8 -5
- package/test/unit/speed-manager.bats +4 -4
- package/agentvibes.org/.claude/audio/tts-padded-1760744118.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760748535.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760748676.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760750748.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760750947.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760752718.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760752907.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753017.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753045.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753241.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753315.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753382.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753408.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753426.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753446.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753541.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753553.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753577.mp3 +0 -0
- package/agentvibes.org/.claude/commands/agent-vibes/add.md +0 -21
- package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +0 -68
- package/agentvibes.org/.claude/commands/agent-vibes/bmad.md +0 -196
- package/agentvibes.org/.claude/commands/agent-vibes/commands.json +0 -77
- package/agentvibes.org/.claude/commands/agent-vibes/get.md +0 -9
- package/agentvibes.org/.claude/commands/agent-vibes/language.md +0 -23
- package/agentvibes.org/.claude/commands/agent-vibes/learn.md +0 -67
- package/agentvibes.org/.claude/commands/agent-vibes/list.md +0 -13
- package/agentvibes.org/.claude/commands/agent-vibes/personality.md +0 -79
- package/agentvibes.org/.claude/commands/agent-vibes/preview.md +0 -17
- package/agentvibes.org/.claude/commands/agent-vibes/provider.md +0 -54
- package/agentvibes.org/.claude/commands/agent-vibes/replay-target.md +0 -14
- package/agentvibes.org/.claude/commands/agent-vibes/replay.md +0 -19
- package/agentvibes.org/.claude/commands/agent-vibes/sample.md +0 -12
- package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +0 -52
- package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +0 -47
- package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +0 -65
- package/agentvibes.org/.claude/commands/agent-vibes/set-speed.md +0 -41
- package/agentvibes.org/.claude/commands/agent-vibes/switch.md +0 -53
- package/agentvibes.org/.claude/commands/agent-vibes/target-voice.md +0 -26
- package/agentvibes.org/.claude/commands/agent-vibes/target.md +0 -30
- package/agentvibes.org/.claude/commands/agent-vibes/update.md +0 -20
- package/agentvibes.org/.claude/commands/agent-vibes/version.md +0 -10
- package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +0 -7
- package/agentvibes.org/.claude/hooks/bmad-tts-injector.sh +0 -386
- package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +0 -375
- package/agentvibes.org/.claude/hooks/check-output-style.sh +0 -60
- package/agentvibes.org/.claude/hooks/github-star-reminder.sh +0 -94
- package/agentvibes.org/.claude/hooks/language-manager.sh +0 -360
- package/agentvibes.org/.claude/hooks/learn-manager.sh +0 -443
- package/agentvibes.org/.claude/hooks/personality-manager.sh +0 -324
- package/agentvibes.org/.claude/hooks/piper-download-voices.sh +0 -133
- package/agentvibes.org/.claude/hooks/piper-installer.sh +0 -144
- package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +0 -227
- package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +0 -376
- package/agentvibes.org/.claude/hooks/play-tts-piper.sh +0 -281
- package/agentvibes.org/.claude/hooks/play-tts.sh +0 -69
- package/agentvibes.org/.claude/hooks/provider-commands.sh +0 -505
- package/agentvibes.org/.claude/hooks/provider-manager.sh +0 -248
- package/agentvibes.org/.claude/hooks/replay-target-audio.sh +0 -64
- package/agentvibes.org/.claude/hooks/sentiment-manager.sh +0 -163
- package/agentvibes.org/.claude/hooks/speed-manager.sh +0 -259
- package/agentvibes.org/.claude/hooks/voice-manager.sh +0 -477
- package/agentvibes.org/.claude/hooks/voices-config.sh +0 -33
- package/agentvibes.org/.claude/journal/2025-10-07.html +0 -373
- package/agentvibes.org/.claude/journal/index.html +0 -91
- package/agentvibes.org/.claude/output-styles/agent-vibes.md +0 -203
- package/agentvibes.org/.claude/personalities/angry.md +0 -17
- package/agentvibes.org/.claude/personalities/annoying.md +0 -17
- package/agentvibes.org/.claude/personalities/crass.md +0 -17
- package/agentvibes.org/.claude/personalities/dramatic.md +0 -17
- package/agentvibes.org/.claude/personalities/dry-humor.md +0 -53
- package/agentvibes.org/.claude/personalities/flirty.md +0 -23
- package/agentvibes.org/.claude/personalities/funny.md +0 -17
- package/agentvibes.org/.claude/personalities/grandpa.md +0 -35
- package/agentvibes.org/.claude/personalities/millennial.md +0 -17
- package/agentvibes.org/.claude/personalities/moody.md +0 -17
- package/agentvibes.org/.claude/personalities/normal.md +0 -19
- package/agentvibes.org/.claude/personalities/pirate.md +0 -17
- package/agentvibes.org/.claude/personalities/poetic.md +0 -17
- package/agentvibes.org/.claude/personalities/professional.md +0 -17
- package/agentvibes.org/.claude/personalities/robot.md +0 -17
- package/agentvibes.org/.claude/personalities/sarcastic.md +0 -41
- package/agentvibes.org/.claude/personalities/sassy.md +0 -17
- package/agentvibes.org/.claude/personalities/surfer-dude.md +0 -17
- package/agentvibes.org/.claude/personalities/zen.md +0 -17
- package/agentvibes.org/.claude/piper-voices-dir.txt +0 -1
- package/agentvibes.org/.claude/plugins/bmad-voices.md +0 -42
- package/agentvibes.org/.claude/tts-provider.txt +0 -1
- package/agentvibes.org/.mcp-minimal.json +0 -60
- package/agentvibes.org/CHANGELOG.md +0 -56
- package/agentvibes.org/README.md +0 -93
- package/agentvibes.org/app/(auth)/layout.tsx +0 -15
- package/agentvibes.org/app/(auth)/reset-password/page.tsx +0 -45
- package/agentvibes.org/app/(auth)/signin/page.tsx +0 -82
- package/agentvibes.org/app/(auth)/signup/page.tsx +0 -104
- package/agentvibes.org/app/(default)/blog/[slug]/page.tsx +0 -128
- package/agentvibes.org/app/(default)/blog/page.tsx +0 -95
- package/agentvibes.org/app/(default)/layout.tsx +0 -31
- package/agentvibes.org/app/(default)/page.tsx +0 -20
- package/agentvibes.org/app/api/hello/route.ts +0 -3
- package/agentvibes.org/app/css/additional-styles/theme.css +0 -82
- package/agentvibes.org/app/css/additional-styles/utility-patterns.css +0 -55
- package/agentvibes.org/app/css/style.css +0 -100
- package/agentvibes.org/app/layout.tsx +0 -63
- package/agentvibes.org/components/code-block.tsx +0 -27
- package/agentvibes.org/components/cta.tsx +0 -58
- package/agentvibes.org/components/features.tsx +0 -256
- package/agentvibes.org/components/hero-home.tsx +0 -133
- package/agentvibes.org/components/mdx-components.tsx +0 -128
- package/agentvibes.org/components/modal-video.tsx +0 -137
- package/agentvibes.org/components/page-illustration.tsx +0 -55
- package/agentvibes.org/components/spotlight.tsx +0 -77
- package/agentvibes.org/components/testimonials.tsx +0 -282
- package/agentvibes.org/components/ui/footer.tsx +0 -82
- package/agentvibes.org/components/ui/header.tsx +0 -68
- package/agentvibes.org/components/ui/logo.tsx +0 -10
- package/agentvibes.org/components/workflows.tsx +0 -176
- package/agentvibes.org/content/blog/discovering-new-piper-voices.mdx +0 -253
- package/agentvibes.org/content/blog/getting-started-agentvibes.mdx +0 -228
- package/agentvibes.org/content/blog/introducing-agentvibes-v2.mdx +0 -250
- package/agentvibes.org/content/blog/language-learning-with-agentvibes.mdx +0 -142
- package/agentvibes.org/content/blog/voice-personalities-guide.mdx +0 -119
- package/agentvibes.org/lib/blog.ts +0 -73
- package/agentvibes.org/next.config.js +0 -6
- package/agentvibes.org/package-lock.json +0 -4285
- package/agentvibes.org/package.json +0 -40
- package/agentvibes.org/pnpm-lock.yaml +0 -1141
- package/agentvibes.org/postcss.config.js +0 -5
- package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
- package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
- package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
- package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
- package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_0_Cori_Samuel.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_10_Steve_C.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_11_Owlivia.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_12_Paul_Hampton.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_13_Jennifer_Dorr.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_14_Emily_Cripps.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_15_Martin_Clifton.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_1_Kara_Shallenberg.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_2_Kristin_Hughes.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_3_Maria_Kasper.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_4_Mike_Pelton.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_5_Mark_Nelson.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_6_Michael_Scherer.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_7_James_K_White.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_8_Rose_Ibex.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_9_progressingamerica.wav +0 -0
- package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
- package/agentvibes.org/public/favicon.ico +0 -0
- package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
- package/agentvibes.org/public/images/blurred-shape-gray.svg +0 -1
- package/agentvibes.org/public/images/blurred-shape.svg +0 -1
- package/agentvibes.org/public/images/client-logo-01.svg +0 -1
- package/agentvibes.org/public/images/client-logo-02.svg +0 -1
- package/agentvibes.org/public/images/client-logo-03.svg +0 -1
- package/agentvibes.org/public/images/client-logo-04.svg +0 -1
- package/agentvibes.org/public/images/client-logo-05.svg +0 -1
- package/agentvibes.org/public/images/client-logo-06.svg +0 -1
- package/agentvibes.org/public/images/client-logo-07.svg +0 -1
- package/agentvibes.org/public/images/client-logo-08.svg +0 -1
- package/agentvibes.org/public/images/client-logo-09.svg +0 -1
- package/agentvibes.org/public/images/features.png +0 -0
- package/agentvibes.org/public/images/footer-illustration.svg +0 -1
- package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
- package/agentvibes.org/public/images/logo.svg +0 -1
- package/agentvibes.org/public/images/page-illustration.svg +0 -1
- package/agentvibes.org/public/images/secondary-illustration.svg +0 -1
- package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
- package/agentvibes.org/public/images/workflow-01.png +0 -0
- package/agentvibes.org/public/images/workflow-02.png +0 -0
- package/agentvibes.org/public/images/workflow-03.png +0 -0
- package/agentvibes.org/public/videos/video.mp4 +0 -0
- package/agentvibes.org/tsconfig.json +0 -28
- package/agentvibes.org/utils/useMasonry.tsx +0 -67
- package/agentvibes.org/utils/useMousePosition.tsx +0 -27
- package/docs/bryce-beattie-voice-licensing.md +0 -131
|
@@ -1,375 +0,0 @@
|
|
|
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
|
-
|
|
108
|
-
# Create activation-instructions file for BMAD agents
|
|
109
|
-
ACTIVATION_FILE=".claude/activation-instructions"
|
|
110
|
-
if [[ ! -f "$ACTIVATION_FILE" ]]; then
|
|
111
|
-
cat > "$ACTIVATION_FILE" <<'ACTIVATION_EOF'
|
|
112
|
-
# BMAD Agent Activation Instructions
|
|
113
|
-
|
|
114
|
-
When a BMAD agent activates, follow these steps EXACTLY:
|
|
115
|
-
|
|
116
|
-
## STEP 3.5a: Create BMAD Context File (CRITICAL)
|
|
117
|
-
|
|
118
|
-
**IMMEDIATELY after agent identification, create the context file:**
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
echo "$AGENT_ID" > .bmad-agent-context
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Where `$AGENT_ID` is one of:
|
|
125
|
-
- `pm` (Product Manager)
|
|
126
|
-
- `dev` (Developer)
|
|
127
|
-
- `qa` (QA)
|
|
128
|
-
- `architect` (Architect)
|
|
129
|
-
- `po` (Product Owner)
|
|
130
|
-
- `analyst` (Analyst)
|
|
131
|
-
- `sm` (Scrum Master)
|
|
132
|
-
- `ux-expert` (UX Expert)
|
|
133
|
-
- `bmad-master` (BMAD Master)
|
|
134
|
-
- `bmad-orchestrator` (Orchestrator)
|
|
135
|
-
|
|
136
|
-
**Example:**
|
|
137
|
-
```bash
|
|
138
|
-
# For Product Manager agent
|
|
139
|
-
echo "pm" > .bmad-agent-context
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
This file allows AgentVibes to:
|
|
143
|
-
1. Detect which BMAD agent is active
|
|
144
|
-
2. Look up the correct voice mapping
|
|
145
|
-
3. Automatically speak questions using the agent's assigned voice
|
|
146
|
-
|
|
147
|
-
## STEP 10: Clean Up on Exit
|
|
148
|
-
|
|
149
|
-
**Before exiting the agent, remove the context file:**
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
rm -f .bmad-agent-context
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
This ensures voice switching only happens when an agent is active.
|
|
156
|
-
|
|
157
|
-
## Why This Matters
|
|
158
|
-
|
|
159
|
-
Without the `.bmad-agent-context` file:
|
|
160
|
-
- AgentVibes cannot detect which agent is active
|
|
161
|
-
- Questions won't be spoken automatically
|
|
162
|
-
- Voice switching won't work
|
|
163
|
-
- The BMAD voice plugin becomes non-functional
|
|
164
|
-
|
|
165
|
-
**This is MANDATORY for BMAD voice integration to work!**
|
|
166
|
-
ACTIVATION_EOF
|
|
167
|
-
echo "📝 Created activation instructions: $ACTIVATION_FILE"
|
|
168
|
-
fi
|
|
169
|
-
|
|
170
|
-
echo "✅ BMAD voice plugin enabled"
|
|
171
|
-
echo "💾 Previous settings backed up:"
|
|
172
|
-
echo " Voice: $CURRENT_VOICE"
|
|
173
|
-
echo " Personality: $CURRENT_PERSONALITY"
|
|
174
|
-
[[ -n "$CURRENT_SENTIMENT" ]] && echo " Sentiment: $CURRENT_SENTIMENT"
|
|
175
|
-
echo ""
|
|
176
|
-
list_mappings
|
|
177
|
-
|
|
178
|
-
# Automatically inject TTS into BMAD agents
|
|
179
|
-
echo ""
|
|
180
|
-
echo "🎤 Automatically enabling TTS for BMAD agents..."
|
|
181
|
-
echo ""
|
|
182
|
-
|
|
183
|
-
# Get the directory where this script is located
|
|
184
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
185
|
-
|
|
186
|
-
# Check if bmad-tts-injector.sh exists
|
|
187
|
-
if [[ -f "$SCRIPT_DIR/bmad-tts-injector.sh" ]]; then
|
|
188
|
-
# Run the TTS injector
|
|
189
|
-
"$SCRIPT_DIR/bmad-tts-injector.sh" enable
|
|
190
|
-
else
|
|
191
|
-
echo "⚠️ TTS injector not found at: $SCRIPT_DIR/bmad-tts-injector.sh"
|
|
192
|
-
echo " You can manually enable TTS with: /agent-vibes:bmad-tts enable"
|
|
193
|
-
fi
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
# Disable plugin
|
|
197
|
-
disable_plugin() {
|
|
198
|
-
BACKUP_FILE="$PLUGIN_DIR/.bmad-previous-settings"
|
|
199
|
-
|
|
200
|
-
# Check if we have a backup to restore
|
|
201
|
-
if [[ -f "$BACKUP_FILE" ]]; then
|
|
202
|
-
source "$BACKUP_FILE"
|
|
203
|
-
|
|
204
|
-
echo "❌ BMAD voice plugin disabled"
|
|
205
|
-
echo "🔄 Restoring previous settings:"
|
|
206
|
-
echo " Voice: $VOICE"
|
|
207
|
-
echo " Personality: $PERSONALITY"
|
|
208
|
-
[[ -n "$SENTIMENT" ]] && echo " Sentiment: $SENTIMENT"
|
|
209
|
-
|
|
210
|
-
# Restore voice
|
|
211
|
-
if [[ -n "$VOICE" ]]; then
|
|
212
|
-
echo "$VOICE" > .claude/tts-voice.txt 2>/dev/null || echo "$VOICE" > "$HOME/.claude/tts-voice.txt"
|
|
213
|
-
fi
|
|
214
|
-
|
|
215
|
-
# Restore personality
|
|
216
|
-
if [[ -n "$PERSONALITY" ]] && [[ "$PERSONALITY" != "normal" ]]; then
|
|
217
|
-
echo "$PERSONALITY" > .claude/tts-personality.txt 2>/dev/null || echo "$PERSONALITY" > "$HOME/.claude/tts-personality.txt"
|
|
218
|
-
fi
|
|
219
|
-
|
|
220
|
-
# Restore sentiment
|
|
221
|
-
if [[ -n "$SENTIMENT" ]]; then
|
|
222
|
-
echo "$SENTIMENT" > .claude/tts-sentiment.txt 2>/dev/null || echo "$SENTIMENT" > "$HOME/.claude/tts-sentiment.txt"
|
|
223
|
-
fi
|
|
224
|
-
|
|
225
|
-
# Clean up backup
|
|
226
|
-
rm -f "$BACKUP_FILE"
|
|
227
|
-
else
|
|
228
|
-
echo "❌ BMAD voice plugin disabled"
|
|
229
|
-
echo "⚠️ No previous settings found to restore"
|
|
230
|
-
echo "AgentVibes will use current voice/personality settings"
|
|
231
|
-
fi
|
|
232
|
-
|
|
233
|
-
rm -f "$ENABLED_FLAG"
|
|
234
|
-
|
|
235
|
-
# Automatically remove TTS from BMAD agents
|
|
236
|
-
echo ""
|
|
237
|
-
echo "🔇 Automatically disabling TTS for BMAD agents..."
|
|
238
|
-
echo ""
|
|
239
|
-
|
|
240
|
-
# Get the directory where this script is located
|
|
241
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
242
|
-
|
|
243
|
-
# Check if bmad-tts-injector.sh exists
|
|
244
|
-
if [[ -f "$SCRIPT_DIR/bmad-tts-injector.sh" ]]; then
|
|
245
|
-
# Run the TTS injector disable
|
|
246
|
-
"$SCRIPT_DIR/bmad-tts-injector.sh" disable
|
|
247
|
-
else
|
|
248
|
-
echo "⚠️ TTS injector not found"
|
|
249
|
-
echo " You can manually disable TTS with: /agent-vibes:bmad-tts disable"
|
|
250
|
-
fi
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
# List all mappings
|
|
254
|
-
list_mappings() {
|
|
255
|
-
if [[ ! -f "$PLUGIN_FILE" ]]; then
|
|
256
|
-
echo "❌ Plugin file not found: $PLUGIN_FILE"
|
|
257
|
-
return 1
|
|
258
|
-
fi
|
|
259
|
-
|
|
260
|
-
echo "📊 BMAD Agent Voice Mappings:"
|
|
261
|
-
echo ""
|
|
262
|
-
|
|
263
|
-
grep "^| " "$PLUGIN_FILE" | grep -v "Agent ID" | grep -v "^|---" | \
|
|
264
|
-
while IFS='|' read -r _ agent_id name voice personality _; do
|
|
265
|
-
agent_id=$(echo "$agent_id" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
266
|
-
name=$(echo "$name" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
267
|
-
voice=$(echo "$voice" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
268
|
-
personality=$(echo "$personality" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
269
|
-
|
|
270
|
-
[[ -n "$agent_id" ]] && echo " $agent_id → $voice [$personality]"
|
|
271
|
-
done
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
# Set voice for agent
|
|
275
|
-
set_agent_voice() {
|
|
276
|
-
local agent_id="$1"
|
|
277
|
-
local voice="$2"
|
|
278
|
-
local personality="${3:-normal}"
|
|
279
|
-
|
|
280
|
-
if [[ ! -f "$PLUGIN_FILE" ]]; then
|
|
281
|
-
echo "❌ Plugin file not found: $PLUGIN_FILE"
|
|
282
|
-
return 1
|
|
283
|
-
fi
|
|
284
|
-
|
|
285
|
-
# Check if agent exists
|
|
286
|
-
if ! grep -q "^| $agent_id " "$PLUGIN_FILE"; then
|
|
287
|
-
echo "❌ Agent '$agent_id' not found in plugin"
|
|
288
|
-
return 1
|
|
289
|
-
fi
|
|
290
|
-
|
|
291
|
-
# Update the voice and personality in the table
|
|
292
|
-
sed -i.bak "s/^| $agent_id |.*| .* | .* |$/| $agent_id | $(grep "^| $agent_id " "$PLUGIN_FILE" | awk -F'|' '{print $3}') | $voice | $personality |/" "$PLUGIN_FILE"
|
|
293
|
-
|
|
294
|
-
echo "✅ Updated $agent_id → $voice [$personality]"
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
# Show status
|
|
298
|
-
show_status() {
|
|
299
|
-
# Check for BMAD installation
|
|
300
|
-
local bmad_installed="false"
|
|
301
|
-
if [[ -f ".bmad-core/install-manifest.yaml" ]]; then
|
|
302
|
-
bmad_installed="true"
|
|
303
|
-
fi
|
|
304
|
-
|
|
305
|
-
if [[ $(is_plugin_enabled) == "true" ]]; then
|
|
306
|
-
echo "✅ BMAD voice plugin: ENABLED"
|
|
307
|
-
if [[ "$bmad_installed" == "true" ]]; then
|
|
308
|
-
echo "🔍 BMAD detected: Auto-enabled"
|
|
309
|
-
fi
|
|
310
|
-
else
|
|
311
|
-
echo "❌ BMAD voice plugin: DISABLED"
|
|
312
|
-
if [[ "$bmad_installed" == "true" ]]; then
|
|
313
|
-
echo "⚠️ BMAD detected but plugin disabled (enable with: /agent-vibes-bmad enable)"
|
|
314
|
-
fi
|
|
315
|
-
fi
|
|
316
|
-
echo ""
|
|
317
|
-
list_mappings
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
# Edit plugin file
|
|
321
|
-
edit_plugin() {
|
|
322
|
-
if [[ ! -f "$PLUGIN_FILE" ]]; then
|
|
323
|
-
echo "❌ Plugin file not found: $PLUGIN_FILE"
|
|
324
|
-
return 1
|
|
325
|
-
fi
|
|
326
|
-
|
|
327
|
-
echo "Opening $PLUGIN_FILE for editing..."
|
|
328
|
-
echo "Edit the markdown table to change voice mappings"
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
# Main command dispatcher
|
|
332
|
-
case "${1:-help}" in
|
|
333
|
-
enable)
|
|
334
|
-
enable_plugin
|
|
335
|
-
;;
|
|
336
|
-
disable)
|
|
337
|
-
disable_plugin
|
|
338
|
-
;;
|
|
339
|
-
status)
|
|
340
|
-
show_status
|
|
341
|
-
;;
|
|
342
|
-
list)
|
|
343
|
-
list_mappings
|
|
344
|
-
;;
|
|
345
|
-
set)
|
|
346
|
-
if [[ -z "$2" ]] || [[ -z "$3" ]]; then
|
|
347
|
-
echo "Usage: bmad-voice-manager.sh set <agent-id> <voice> [personality]"
|
|
348
|
-
exit 1
|
|
349
|
-
fi
|
|
350
|
-
set_agent_voice "$2" "$3" "$4"
|
|
351
|
-
;;
|
|
352
|
-
get-voice)
|
|
353
|
-
get_agent_voice "$2"
|
|
354
|
-
;;
|
|
355
|
-
get-personality)
|
|
356
|
-
get_agent_personality "$2"
|
|
357
|
-
;;
|
|
358
|
-
edit)
|
|
359
|
-
edit_plugin
|
|
360
|
-
;;
|
|
361
|
-
*)
|
|
362
|
-
echo "Usage: bmad-voice-manager.sh {enable|disable|status|list|set|get-voice|get-personality|edit}"
|
|
363
|
-
echo ""
|
|
364
|
-
echo "Commands:"
|
|
365
|
-
echo " enable Enable BMAD voice plugin"
|
|
366
|
-
echo " disable Disable BMAD voice plugin"
|
|
367
|
-
echo " status Show plugin status and mappings"
|
|
368
|
-
echo " list List all agent voice mappings"
|
|
369
|
-
echo " set <id> <voice> Set voice for agent"
|
|
370
|
-
echo " get-voice <id> Get voice for agent"
|
|
371
|
-
echo " get-personality <id> Get personality for agent"
|
|
372
|
-
echo " edit Edit plugin configuration"
|
|
373
|
-
exit 1
|
|
374
|
-
;;
|
|
375
|
-
esac
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
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
|
|
7
|
-
#
|
|
8
|
-
|
|
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
|
|
12
|
-
|
|
13
|
-
check_output_style() {
|
|
14
|
-
# Strategy: Check if this script is being called from within a Claude response
|
|
15
|
-
# If CLAUDECODE env var is set, we're in Claude Code
|
|
16
|
-
# If not, we're running standalone (not in a Claude Code session)
|
|
17
|
-
|
|
18
|
-
if [[ -z "$CLAUDECODE" ]]; then
|
|
19
|
-
# Not in Claude Code at all
|
|
20
|
-
return 1
|
|
21
|
-
fi
|
|
22
|
-
|
|
23
|
-
# We're in Claude Code, but we can't directly detect output style
|
|
24
|
-
# The agent-vibes output style calls our TTS hooks automatically
|
|
25
|
-
# So if this function is called, it means a slash command was invoked
|
|
26
|
-
|
|
27
|
-
# Check if we have the necessary TTS setup
|
|
28
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
29
|
-
|
|
30
|
-
# Check if agent-vibes output style is installed
|
|
31
|
-
if [[ ! -f "$SCRIPT_DIR/../output-styles/agent-vibes.md" ]]; then
|
|
32
|
-
return 1
|
|
33
|
-
fi
|
|
34
|
-
|
|
35
|
-
# All checks passed - likely using agent-vibes output style
|
|
36
|
-
return 0
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
# Show warning if output style is not agent-vibes
|
|
40
|
-
show_output_style_warning() {
|
|
41
|
-
echo ""
|
|
42
|
-
echo "⚠️ Voice commands require the Agent Vibes output style"
|
|
43
|
-
echo ""
|
|
44
|
-
echo "To enable voice narration, run:"
|
|
45
|
-
echo " /output-style Agent Vibes"
|
|
46
|
-
echo ""
|
|
47
|
-
echo "This will make Claude speak with TTS for all responses."
|
|
48
|
-
echo "You can still use voice commands manually with agent-vibes disabled,"
|
|
49
|
-
echo "but you won't hear automatic TTS narration."
|
|
50
|
-
echo ""
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
# Main execution when called directly
|
|
54
|
-
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
55
|
-
if ! check_output_style; then
|
|
56
|
-
show_output_style_warning
|
|
57
|
-
exit 1
|
|
58
|
-
fi
|
|
59
|
-
exit 0
|
|
60
|
-
fi
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
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
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
# Determine config directory (project-local or global)
|
|
10
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
11
|
-
CLAUDE_DIR="$(dirname "$SCRIPT_DIR")"
|
|
12
|
-
|
|
13
|
-
# Check if we have a project-local .claude directory
|
|
14
|
-
if [[ -d "$CLAUDE_DIR" ]] && [[ "$CLAUDE_DIR" != "$HOME/.claude" ]]; then
|
|
15
|
-
REMINDER_FILE="$CLAUDE_DIR/github-star-reminder.txt"
|
|
16
|
-
else
|
|
17
|
-
REMINDER_FILE="$HOME/.claude/github-star-reminder.txt"
|
|
18
|
-
mkdir -p "$HOME/.claude"
|
|
19
|
-
fi
|
|
20
|
-
|
|
21
|
-
GITHUB_REPO="https://github.com/paulpreibisch/AgentVibes"
|
|
22
|
-
|
|
23
|
-
# Check if reminders are disabled
|
|
24
|
-
is_reminder_disabled() {
|
|
25
|
-
# Check for disable flag file
|
|
26
|
-
local disable_file_local="$CLAUDE_DIR/github-star-reminder-disabled.flag"
|
|
27
|
-
local disable_file_global="$HOME/.claude/github-star-reminder-disabled.flag"
|
|
28
|
-
|
|
29
|
-
if [[ -f "$disable_file_local" ]] || [[ -f "$disable_file_global" ]]; then
|
|
30
|
-
return 0 # Disabled
|
|
31
|
-
fi
|
|
32
|
-
|
|
33
|
-
# Check if reminder file contains "disabled"
|
|
34
|
-
if [[ -f "$REMINDER_FILE" ]]; then
|
|
35
|
-
local content=$(cat "$REMINDER_FILE" 2>/dev/null)
|
|
36
|
-
if [[ "$content" == "disabled" ]]; then
|
|
37
|
-
return 0 # Disabled
|
|
38
|
-
fi
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
return 1 # Not disabled
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
# Check if we should show the reminder
|
|
45
|
-
should_show_reminder() {
|
|
46
|
-
# Check if disabled first
|
|
47
|
-
if is_reminder_disabled; then
|
|
48
|
-
return 1
|
|
49
|
-
fi
|
|
50
|
-
|
|
51
|
-
# If no reminder file exists, show it
|
|
52
|
-
if [[ ! -f "$REMINDER_FILE" ]]; then
|
|
53
|
-
return 0
|
|
54
|
-
fi
|
|
55
|
-
|
|
56
|
-
# Read last reminder date
|
|
57
|
-
LAST_REMINDER=$(cat "$REMINDER_FILE" 2>/dev/null || echo "0")
|
|
58
|
-
CURRENT_DATE=$(date +%Y%m%d)
|
|
59
|
-
|
|
60
|
-
# Show reminder if it's a new day
|
|
61
|
-
if [[ "$LAST_REMINDER" != "$CURRENT_DATE" ]]; then
|
|
62
|
-
return 0
|
|
63
|
-
fi
|
|
64
|
-
|
|
65
|
-
return 1
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
# Show the reminder
|
|
69
|
-
show_reminder() {
|
|
70
|
-
echo ""
|
|
71
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
72
|
-
echo "⭐ Enjoying AgentVibes?"
|
|
73
|
-
echo ""
|
|
74
|
-
echo " If you find this project helpful, please consider giving us"
|
|
75
|
-
echo " a star on GitHub! It helps others discover AgentVibes and"
|
|
76
|
-
echo " motivates us to keep improving it."
|
|
77
|
-
echo ""
|
|
78
|
-
echo " 👉 $GITHUB_REPO"
|
|
79
|
-
echo ""
|
|
80
|
-
echo " Thank you for your support! 🙏"
|
|
81
|
-
echo ""
|
|
82
|
-
echo " 💡 To disable these reminders, run:"
|
|
83
|
-
echo " echo \"disabled\" > $REMINDER_FILE"
|
|
84
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
85
|
-
echo ""
|
|
86
|
-
|
|
87
|
-
# Update the reminder file with today's date
|
|
88
|
-
date +%Y%m%d > "$REMINDER_FILE"
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
# Main execution
|
|
92
|
-
if should_show_reminder; then
|
|
93
|
-
show_reminder
|
|
94
|
-
fi
|