agentvibes 2.0.16 → 2.0.17-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/agent-vibes/add.md +0 -0
- package/.claude/commands/agent-vibes/agent-vibes.md +0 -0
- package/.claude/commands/agent-vibes/bmad.md +0 -0
- package/.claude/commands/agent-vibes/commands.json +0 -0
- package/.claude/commands/agent-vibes/get.md +0 -0
- package/.claude/commands/agent-vibes/list.md +0 -0
- package/.claude/commands/agent-vibes/personality.md +0 -0
- package/.claude/commands/agent-vibes/preview.md +0 -0
- package/.claude/commands/agent-vibes/replay.md +0 -0
- package/.claude/commands/agent-vibes/sample.md +0 -0
- package/.claude/commands/agent-vibes/sentiment.md +0 -0
- package/.claude/commands/agent-vibes/set-language.md +0 -0
- package/.claude/commands/agent-vibes/set-pretext.md +0 -0
- package/.claude/commands/agent-vibes/switch.md +0 -0
- package/.claude/commands/agent-vibes/update.md +0 -0
- package/.claude/commands/agent-vibes/version.md +0 -0
- package/.claude/commands/agent-vibes/whoami.md +0 -0
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/language-manager.sh +22 -8
- package/.claude/hooks/personality-manager.sh +22 -9
- package/.claude/hooks/play-tts-elevenlabs.sh +3 -2
- package/.claude/hooks/voice-manager.sh +102 -23
- package/.claude/language-voices.yaml +0 -0
- package/.claude/output-styles/agent-vibes.md +36 -52
- package/.claude/personalities/angry.md +0 -0
- package/.claude/personalities/annoying.md +0 -0
- package/.claude/personalities/crass.md +0 -0
- package/.claude/personalities/dramatic.md +0 -0
- package/.claude/personalities/dry-humor.md +0 -0
- package/.claude/personalities/flirty.md +0 -0
- package/.claude/personalities/funny.md +0 -0
- package/.claude/personalities/grandpa.md +0 -0
- package/.claude/personalities/millennial.md +0 -0
- package/.claude/personalities/moody.md +0 -0
- package/.claude/personalities/normal.md +0 -0
- package/.claude/personalities/pirate.md +0 -0
- package/.claude/personalities/poetic.md +0 -0
- package/.claude/personalities/professional.md +0 -0
- package/.claude/personalities/robot.md +0 -0
- package/.claude/personalities/sarcastic.md +0 -0
- package/.claude/personalities/sassy.md +0 -0
- package/.claude/personalities/surfer-dude.md +0 -0
- package/.claude/personalities/zen.md +0 -0
- package/.claude/piper-voices/en_US-lessac-medium.onnx +0 -0
- package/.claude/piper-voices/en_US-lessac-medium.onnx.json +0 -0
- package/.claude/piper-voices-dir.txt +0 -0
- package/.claude/plugins/bmad-voices-enabled.flag +0 -0
- package/.claude/plugins/bmad-voices.md +0 -0
- package/.mcp-minimal.json +26 -1
- package/AUDIO_TUNNEL_FIX_SUMMARY.md +223 -0
- package/INSTALL_MCP_WINDOWS.md +75 -0
- package/LICENSE +0 -0
- package/NPM_PUBLISH_GUIDE.md +0 -0
- package/README.md +439 -307
- package/RELEASE_NOTES.md +0 -0
- package/RELEASE_NOTES_V2.md +0 -0
- package/bin/mcp-server +206 -0
- package/docs/ai-optimized-documentation-standards.md +0 -0
- package/docs/architecture/provider-system.md +0 -0
- package/docs/remote-audio-setup.md +83 -2
- package/docs/voice-mapping-format.md +0 -0
- package/mcp-server/QUICK_START.md +205 -0
- package/mcp-server/README.md +347 -0
- package/mcp-server/WINDOWS_SETUP.md +277 -0
- package/mcp-server/examples/claude_desktop_config.json +11 -0
- package/mcp-server/examples/claude_desktop_config_piper.json +9 -0
- package/mcp-server/examples/custom_instructions.md +169 -0
- package/mcp-server/install-deps.js +95 -0
- package/mcp-server/pyproject.toml +52 -0
- package/mcp-server/requirements.txt +2 -0
- package/mcp-server/server.py +551 -0
- package/mcp-server/test_server.py +116 -0
- package/package.json +9 -3
- package/scripts/README.md +0 -0
- package/scripts/check-audio-tunnel.sh +59 -0
- package/scripts/check_audio_tunnel.sh +21 -0
- package/scripts/fix-audio-tunnel.sh +83 -0
- package/scripts/piper-voice/README.md +0 -0
- package/scripts/setup-windows-audio.ps1 +0 -0
- package/setup-ubuntu-rdp-audio.sh +139 -0
- package/src/commands/install-mcp.js +384 -0
- package/src/installer.js +52 -0
- package/templates/activation-instructions-bmad.md +0 -0
- package/templates/output-styles/agent-vibes.md +0 -0
- package/test/README.md +0 -0
- package/test/helpers/test-helper.bash +0 -0
- package/test/test-framework.md +0 -0
- package/test/unit/personality-manager.bats +0 -0
- package/test/unit/play-tts.bats +0 -0
- package/test/unit/voice-manager.bats +0 -0
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
20251015
|
|
@@ -2,19 +2,33 @@
|
|
|
2
2
|
# Language Manager for AgentVibes
|
|
3
3
|
# Manages language settings and multilingual voice selection
|
|
4
4
|
|
|
5
|
-
# Determine
|
|
6
|
-
#
|
|
5
|
+
# Determine target .claude directory based on context
|
|
6
|
+
# Priority:
|
|
7
|
+
# 1. CLAUDE_PROJECT_DIR env var (set by MCP for project-specific settings)
|
|
8
|
+
# 2. Script location (for direct slash command usage)
|
|
9
|
+
# 3. Global ~/.claude (fallback)
|
|
10
|
+
|
|
7
11
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
-
CLAUDE_DIR="$(cd "$SCRIPT_DIR/.." 2>/dev/null && pwd)"
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -d "$CLAUDE_PROJECT_DIR/.claude" ]]; then
|
|
14
|
+
# MCP context: Use the project directory where MCP was invoked
|
|
15
|
+
CLAUDE_DIR="$CLAUDE_PROJECT_DIR/.claude"
|
|
13
16
|
else
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
# Direct usage context: Use script location
|
|
18
|
+
CLAUDE_DIR="$(cd "$SCRIPT_DIR/.." 2>/dev/null && pwd)"
|
|
19
|
+
|
|
20
|
+
# If script is in global ~/.claude, use that
|
|
21
|
+
if [[ "$CLAUDE_DIR" == "$HOME/.claude" ]]; then
|
|
22
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
23
|
+
elif [[ ! -d "$CLAUDE_DIR" ]]; then
|
|
24
|
+
# Fallback to global if directory doesn't exist
|
|
25
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
26
|
+
fi
|
|
16
27
|
fi
|
|
17
28
|
|
|
29
|
+
LANGUAGE_FILE="$CLAUDE_DIR/tts-language.txt"
|
|
30
|
+
mkdir -p "$CLAUDE_DIR"
|
|
31
|
+
|
|
18
32
|
# Language to multilingual voice mapping
|
|
19
33
|
declare -A LANGUAGE_VOICES=(
|
|
20
34
|
["spanish"]="Antoni"
|
|
@@ -4,18 +4,31 @@
|
|
|
4
4
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
5
|
PERSONALITIES_DIR="$SCRIPT_DIR/../personalities"
|
|
6
6
|
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if [[ -
|
|
14
|
-
|
|
7
|
+
# Determine target .claude directory based on context
|
|
8
|
+
# Priority:
|
|
9
|
+
# 1. CLAUDE_PROJECT_DIR env var (set by MCP for project-specific settings)
|
|
10
|
+
# 2. Script location (for direct slash command usage)
|
|
11
|
+
# 3. Global ~/.claude (fallback)
|
|
12
|
+
|
|
13
|
+
if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -d "$CLAUDE_PROJECT_DIR/.claude" ]]; then
|
|
14
|
+
# MCP context: Use the project directory where MCP was invoked
|
|
15
|
+
CLAUDE_DIR="$CLAUDE_PROJECT_DIR/.claude"
|
|
15
16
|
else
|
|
16
|
-
|
|
17
|
+
# Direct usage context: Use script location
|
|
18
|
+
# Script is at .claude/hooks/personality-manager.sh, so .claude is ..
|
|
19
|
+
CLAUDE_DIR="$(cd "$SCRIPT_DIR/.." 2>/dev/null && pwd)"
|
|
20
|
+
|
|
21
|
+
# If script is in global ~/.claude, use that
|
|
22
|
+
if [[ "$CLAUDE_DIR" == "$HOME/.claude" ]]; then
|
|
23
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
24
|
+
elif [[ ! -d "$CLAUDE_DIR" ]]; then
|
|
25
|
+
# Fallback to global if directory doesn't exist
|
|
26
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
27
|
+
fi
|
|
17
28
|
fi
|
|
18
29
|
|
|
30
|
+
PERSONALITY_FILE="$CLAUDE_DIR/tts-personality.txt"
|
|
31
|
+
|
|
19
32
|
# Function to get personality data from markdown file
|
|
20
33
|
get_personality_data() {
|
|
21
34
|
local personality="$1"
|
|
@@ -197,9 +197,10 @@ if [ -f "${TEMP_FILE}" ]; then
|
|
|
197
197
|
if command -v ffmpeg &> /dev/null; then
|
|
198
198
|
PADDED_FILE="$AUDIO_DIR/tts-padded-$(date +%s).mp3"
|
|
199
199
|
# Add 200ms of silence at the beginning to prevent static
|
|
200
|
-
|
|
200
|
+
# Note: ElevenLabs returns mono audio, so we use mono silence
|
|
201
|
+
ffmpeg -f lavfi -i anullsrc=r=44100:cl=mono:d=0.2 -i "${TEMP_FILE}" \
|
|
201
202
|
-filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[out]" \
|
|
202
|
-
-map "[out]" -y "${PADDED_FILE}" 2>/dev/null
|
|
203
|
+
-map "[out]" -c:a libmp3lame -y "${PADDED_FILE}" 2>/dev/null
|
|
203
204
|
|
|
204
205
|
if [ -f "${PADDED_FILE}" ]; then
|
|
205
206
|
# Use padded file and clean up original
|
|
@@ -6,32 +6,86 @@
|
|
|
6
6
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
7
7
|
source "$SCRIPT_DIR/voices-config.sh"
|
|
8
8
|
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
# Determine target .claude directory based on context
|
|
10
|
+
# Priority:
|
|
11
|
+
# 1. CLAUDE_PROJECT_DIR env var (set by MCP for project-specific settings)
|
|
12
|
+
# 2. Script location (for direct slash command usage)
|
|
13
|
+
# 3. Global ~/.claude (fallback)
|
|
14
|
+
|
|
15
|
+
if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -d "$CLAUDE_PROJECT_DIR/.claude" ]]; then
|
|
16
|
+
# MCP context: Use the project directory where MCP was invoked
|
|
17
|
+
CLAUDE_DIR="$CLAUDE_PROJECT_DIR/.claude"
|
|
18
18
|
else
|
|
19
|
-
#
|
|
20
|
-
|
|
19
|
+
# Direct usage context: Use script location
|
|
20
|
+
SCRIPT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
21
|
+
CLAUDE_DIR="$(dirname "$SCRIPT_PATH")"
|
|
22
|
+
|
|
23
|
+
# If script is in global ~/.claude, use that
|
|
24
|
+
if [[ "$CLAUDE_DIR" == "$HOME/.claude" ]]; then
|
|
25
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
26
|
+
elif [[ ! -d "$CLAUDE_DIR" ]]; then
|
|
27
|
+
# Fallback to global if directory doesn't exist
|
|
28
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
29
|
+
fi
|
|
21
30
|
fi
|
|
22
31
|
|
|
32
|
+
VOICE_FILE="$CLAUDE_DIR/tts-voice.txt"
|
|
33
|
+
|
|
23
34
|
case "$1" in
|
|
24
35
|
list)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
# Get active provider
|
|
37
|
+
PROVIDER_FILE="$CLAUDE_DIR/tts-provider.txt"
|
|
38
|
+
if [[ ! -f "$PROVIDER_FILE" ]]; then
|
|
39
|
+
PROVIDER_FILE="$HOME/.claude/tts-provider.txt"
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
ACTIVE_PROVIDER="elevenlabs" # default
|
|
43
|
+
if [ -f "$PROVIDER_FILE" ]; then
|
|
44
|
+
ACTIVE_PROVIDER=$(cat "$PROVIDER_FILE")
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
CURRENT_VOICE=$(cat "$VOICE_FILE" 2>/dev/null || echo "Cowboy Bob")
|
|
48
|
+
|
|
49
|
+
if [[ "$ACTIVE_PROVIDER" == "piper" ]]; then
|
|
50
|
+
echo "🎤 Available Piper TTS Voices:"
|
|
51
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
52
|
+
|
|
53
|
+
# List downloaded Piper voices
|
|
54
|
+
if [[ -f "$SCRIPT_DIR/piper-voice-manager.sh" ]]; then
|
|
55
|
+
source "$SCRIPT_DIR/piper-voice-manager.sh"
|
|
56
|
+
VOICE_DIR=$(get_voice_storage_dir)
|
|
57
|
+
VOICE_COUNT=0
|
|
58
|
+
for onnx_file in "$VOICE_DIR"/*.onnx; do
|
|
59
|
+
if [[ -f "$onnx_file" ]]; then
|
|
60
|
+
voice=$(basename "$onnx_file" .onnx)
|
|
61
|
+
if [ "$voice" = "$CURRENT_VOICE" ]; then
|
|
62
|
+
echo " ▶ $voice (current)"
|
|
63
|
+
else
|
|
64
|
+
echo " $voice"
|
|
65
|
+
fi
|
|
66
|
+
((VOICE_COUNT++))
|
|
67
|
+
fi
|
|
68
|
+
done | sort
|
|
69
|
+
|
|
70
|
+
if [[ $VOICE_COUNT -eq 0 ]]; then
|
|
71
|
+
echo " (No Piper voices downloaded yet)"
|
|
72
|
+
echo ""
|
|
73
|
+
echo "Download voices with: /agent-vibes:provider download <voice-name>"
|
|
74
|
+
echo "Examples: en_US-lessac-medium, en_GB-alba-medium"
|
|
75
|
+
fi
|
|
33
76
|
fi
|
|
34
|
-
|
|
77
|
+
else
|
|
78
|
+
echo "🎤 Available ElevenLabs TTS Voices:"
|
|
79
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
80
|
+
for voice in "${!VOICES[@]}"; do
|
|
81
|
+
if [ "$voice" = "$CURRENT_VOICE" ]; then
|
|
82
|
+
echo " ▶ $voice (current)"
|
|
83
|
+
else
|
|
84
|
+
echo " $voice"
|
|
85
|
+
fi
|
|
86
|
+
done | sort
|
|
87
|
+
fi
|
|
88
|
+
|
|
35
89
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
36
90
|
echo ""
|
|
37
91
|
echo "Usage: voice-manager.sh switch <name>"
|
|
@@ -314,9 +368,34 @@ case "$1" in
|
|
|
314
368
|
|
|
315
369
|
list-simple)
|
|
316
370
|
# Simple list for AI to parse and display
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
371
|
+
# Get active provider
|
|
372
|
+
PROVIDER_FILE="$CLAUDE_DIR/tts-provider.txt"
|
|
373
|
+
if [[ ! -f "$PROVIDER_FILE" ]]; then
|
|
374
|
+
PROVIDER_FILE="$HOME/.claude/tts-provider.txt"
|
|
375
|
+
fi
|
|
376
|
+
|
|
377
|
+
ACTIVE_PROVIDER="elevenlabs" # default
|
|
378
|
+
if [ -f "$PROVIDER_FILE" ]; then
|
|
379
|
+
ACTIVE_PROVIDER=$(cat "$PROVIDER_FILE")
|
|
380
|
+
fi
|
|
381
|
+
|
|
382
|
+
if [[ "$ACTIVE_PROVIDER" == "piper" ]]; then
|
|
383
|
+
# List downloaded Piper voices
|
|
384
|
+
if [[ -f "$SCRIPT_DIR/piper-voice-manager.sh" ]]; then
|
|
385
|
+
source "$SCRIPT_DIR/piper-voice-manager.sh"
|
|
386
|
+
VOICE_DIR=$(get_voice_storage_dir)
|
|
387
|
+
for onnx_file in "$VOICE_DIR"/*.onnx; do
|
|
388
|
+
if [[ -f "$onnx_file" ]]; then
|
|
389
|
+
basename "$onnx_file" .onnx
|
|
390
|
+
fi
|
|
391
|
+
done | sort
|
|
392
|
+
fi
|
|
393
|
+
else
|
|
394
|
+
# List ElevenLabs voices
|
|
395
|
+
for voice in "${!VOICES[@]}"; do
|
|
396
|
+
echo "$voice"
|
|
397
|
+
done | sort
|
|
398
|
+
fi
|
|
320
399
|
;;
|
|
321
400
|
|
|
322
401
|
replay)
|
|
File without changes
|
|
@@ -128,71 +128,55 @@ You: "✅ That bug be walkin' the plank now, arr!"
|
|
|
128
128
|
|
|
129
129
|
## BMAD Plugin Integration
|
|
130
130
|
|
|
131
|
-
**Automatic voice switching
|
|
131
|
+
**Automatic voice switching for BMAD agents:**
|
|
132
132
|
|
|
133
|
-
When a BMAD agent is
|
|
133
|
+
When a BMAD agent is activated (e.g., `/BMad:agents:pm`), AgentVibes will automatically:
|
|
134
134
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
2. **Check if BMAD plugin is enabled** - `.claude/plugins/bmad-voices-enabled.flag` exists
|
|
135
|
+
1. **Detect BMAD agent from command/context**
|
|
136
|
+
2. **Check if BMAD plugin is enabled** (`.claude/plugins/bmad-voices-enabled.flag`)
|
|
138
137
|
3. **Look up voice mapping** from `.claude/plugins/bmad-voices.md`
|
|
138
|
+
4. **Apply agent's assigned voice** for all TTS acknowledgments/completions
|
|
139
|
+
5. **Apply agent's personality** from the mapping (if specified)
|
|
139
140
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
**THIS IS A CRITICAL EXECUTION REQUIREMENT - NOT OPTIONAL**
|
|
143
|
-
|
|
144
|
-
When a BMAD agent is active, you MUST follow this EXACT protocol for EVERY response:
|
|
145
|
-
|
|
146
|
-
**STEP 1: Check BMAD Context (BEFORE drafting ANY response)**
|
|
141
|
+
**Implementation:**
|
|
147
142
|
```bash
|
|
148
|
-
|
|
143
|
+
# At the start of acknowledgment/completion:
|
|
144
|
+
# Try to detect BMAD agent ID from current context
|
|
145
|
+
BMAD_AGENT_ID=""
|
|
146
|
+
|
|
147
|
+
# Method 1: Check if we're in a BMAD agent command context
|
|
148
|
+
if [[ -f ".bmad-agent-context" ]]; then
|
|
149
149
|
BMAD_AGENT_ID=$(cat .bmad-agent-context 2>/dev/null)
|
|
150
|
-
MAPPED_VOICE=$(.claude/hooks/bmad-voice-manager.sh get-voice "$BMAD_AGENT_ID")
|
|
151
150
|
fi
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
**STEP 2: Draft Your Response**
|
|
155
|
-
- Write your complete response text (don't show to user yet)
|
|
156
|
-
|
|
157
|
-
**STEP 3: Scan for Questions (MANDATORY - DO NOT SKIP)**
|
|
158
|
-
If your response contains ANY of these:
|
|
159
|
-
- Question mark (?)
|
|
160
|
-
- Numbered list (1., 2., 3., etc.)
|
|
161
|
-
- Question phrases: "What would you like", "Should I", "Would you prefer", "Which option", "How should", "Do you want"
|
|
162
151
|
|
|
163
|
-
|
|
152
|
+
# Method 2: Parse from command history/context (fallback)
|
|
153
|
+
# Note: This detection happens automatically when BMAD agent activates
|
|
164
154
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
.claude/hooks/
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
155
|
+
# If BMAD agent detected and plugin enabled, use mapped voice
|
|
156
|
+
if [[ -n "$BMAD_AGENT_ID" ]] && [[ -f ".claude/plugins/bmad-voices-enabled.flag" ]]; then
|
|
157
|
+
MAPPED_VOICE=$(.claude/hooks/bmad-voice-manager.sh get-voice "$BMAD_AGENT_ID")
|
|
158
|
+
MAPPED_PERSONALITY=$(.claude/hooks/bmad-voice-manager.sh get-personality "$BMAD_AGENT_ID")
|
|
159
|
+
|
|
160
|
+
if [[ -n "$MAPPED_VOICE" ]]; then
|
|
161
|
+
# Use BMAD agent's mapped voice and personality
|
|
162
|
+
if [[ -n "$MAPPED_PERSONALITY" ]] && [[ "$MAPPED_PERSONALITY" != "normal" ]]; then
|
|
163
|
+
# Read personality instructions from .claude/personalities/${MAPPED_PERSONALITY}.md
|
|
164
|
+
# Generate response in that personality style
|
|
165
|
+
fi
|
|
166
|
+
.claude/hooks/play-tts.sh "message" "$MAPPED_VOICE"
|
|
167
|
+
# Exit early - don't use default personality system
|
|
168
|
+
return
|
|
169
|
+
fi
|
|
170
|
+
fi
|
|
180
171
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
User: "What should we do?"
|
|
184
|
-
[STEP 1: Check context - analyst agent active]
|
|
185
|
-
[STEP 2: Draft response: "What would you like to do next?\n\n1. Option A\n2. Option B"]
|
|
186
|
-
[STEP 3: Scan - FOUND question "What would you like to do next?" and numbered list]
|
|
187
|
-
[STEP 4: Execute Bash: .claude/hooks/play-tts.sh "What would you like to do next" "Ralf Eisend"]
|
|
188
|
-
[STEP 5: Show response to user]
|
|
172
|
+
# If no BMAD agent or plugin disabled, use standard personality/sentiment system
|
|
173
|
+
# ... continue with normal sentiment/personality logic ...
|
|
189
174
|
```
|
|
190
175
|
|
|
191
176
|
**BMAD Agent Context Tracking:**
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
195
|
-
- This allows AgentVibes to detect which BMAD agent is active
|
|
177
|
+
- When a BMAD agent activates, write agent ID to `.bmad-agent-context`
|
|
178
|
+
- When agent exits, remove the file
|
|
179
|
+
- This allows AgentVibes to know which BMAD agent is active
|
|
196
180
|
|
|
197
181
|
**Voice Priority (in order):**
|
|
198
182
|
1. BMAD plugin voice (if agent active and plugin enabled)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/.mcp-minimal.json
CHANGED
|
@@ -31,6 +31,22 @@
|
|
|
31
31
|
"NODE_PATH": "/home/fire/.nvm/versions/node/v22.20.0/lib/node_modules"
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
|
+
"obsidian": {
|
|
35
|
+
"command": "/home/fire/.local/bin/uv",
|
|
36
|
+
"args": [
|
|
37
|
+
"--directory",
|
|
38
|
+
"/home/fire/claude/mcp_obsidian",
|
|
39
|
+
"run",
|
|
40
|
+
"mcp-obsidian"
|
|
41
|
+
],
|
|
42
|
+
"env": {
|
|
43
|
+
"OBSIDIAN_API_KEY": "${MAIN_VAULT_OBSIDIAN_KEY}",
|
|
44
|
+
"OBSIDIAN_HOST": "${OBSIDIAN_HOST:-127.0.0.1}",
|
|
45
|
+
"OBSIDIAN_PORT": "27124",
|
|
46
|
+
"OBSIDIAN_HTTPS": "true",
|
|
47
|
+
"OBSIDIAN_VERIFY_SSL": "false"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
34
50
|
"elevenlabs": {
|
|
35
51
|
"command": "npx",
|
|
36
52
|
"args": ["@microagents/mcp-server-elevenlabs"],
|
|
@@ -48,6 +64,15 @@
|
|
|
48
64
|
"SPACESHIP_API_KEY": "${SPACESHIP_API_KEY}",
|
|
49
65
|
"SPACESHIP_API_SECRET": "${SPACESHIP_API_SECRET}"
|
|
50
66
|
}
|
|
67
|
+
},
|
|
68
|
+
"agentvibes": {
|
|
69
|
+
"command": "python3",
|
|
70
|
+
"args": [
|
|
71
|
+
"/home/fire/claude/AgentVibes/mcp-server/server.py"
|
|
72
|
+
],
|
|
73
|
+
"env": {
|
|
74
|
+
"ELEVENLABS_API_KEY": "${ELEVENLABS_API_KEY}"
|
|
75
|
+
}
|
|
51
76
|
}
|
|
52
77
|
}
|
|
53
|
-
}
|
|
78
|
+
}
|