agentvibes 4.2.0 → 4.4.0
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/.agentvibes/bmad/bmad-voices.md +69 -69
- package/.agentvibes/config.json +12 -0
- package/.claude/activation-instructions +54 -54
- package/.claude/audio/tracks/README.md +52 -52
- package/.claude/commands/agent-vibes/add.md +21 -21
- package/.claude/commands/agent-vibes/agent-vibes.md +101 -101
- package/.claude/commands/agent-vibes/agent.md +79 -79
- package/.claude/commands/agent-vibes/background-music.md +111 -111
- package/.claude/commands/agent-vibes/bmad.md +198 -198
- package/.claude/commands/agent-vibes/clean.md +18 -18
- package/.claude/commands/agent-vibes/cleanup.md +18 -18
- package/.claude/commands/agent-vibes/commands.json +145 -145
- package/.claude/commands/agent-vibes/effects.md +97 -97
- package/.claude/commands/agent-vibes/get.md +9 -9
- package/.claude/commands/agent-vibes/hide.md +91 -91
- package/.claude/commands/agent-vibes/language.md +23 -23
- package/.claude/commands/agent-vibes/learn.md +67 -67
- package/.claude/commands/agent-vibes/list.md +13 -13
- package/.claude/commands/agent-vibes/mute.md +37 -37
- package/.claude/commands/agent-vibes/preview.md +17 -17
- package/.claude/commands/agent-vibes/provider.md +68 -68
- package/.claude/commands/agent-vibes/replay-target.md +14 -14
- package/.claude/commands/agent-vibes/sample.md +12 -12
- package/.claude/commands/agent-vibes/set-favorite-voice.md +84 -84
- package/.claude/commands/agent-vibes/set-pretext.md +65 -65
- package/.claude/commands/agent-vibes/set-speed.md +41 -41
- package/.claude/commands/agent-vibes/show.md +84 -84
- package/.claude/commands/agent-vibes/switch.md +87 -87
- package/.claude/commands/agent-vibes/target-voice.md +26 -26
- package/.claude/commands/agent-vibes/target.md +30 -30
- package/.claude/commands/agent-vibes/translate.md +68 -68
- package/.claude/commands/agent-vibes/unmute.md +45 -45
- package/.claude/commands/agent-vibes/verbosity.md +89 -89
- package/.claude/commands/agent-vibes/whoami.md +7 -7
- package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
- package/.claude/commands/agent-vibes-rdp.md +24 -24
- package/.claude/config/agentvibes.json +1 -0
- package/.claude/config/audio-effects.cfg +2 -2
- package/.claude/config/audio-effects.cfg.sample +52 -52
- package/.claude/config/background-music-volume.txt +1 -0
- package/.claude/config/intro-text.txt +1 -0
- package/.claude/config/piper-speech-rate.txt +4 -0
- package/.claude/config/piper-target-speech-rate.txt +1 -0
- package/.claude/config/reverb-level.txt +1 -0
- package/.claude/config/tts-speech-rate.txt +4 -0
- package/.claude/config/tts-target-speech-rate.txt +1 -0
- package/.claude/docs/TERMUX_SETUP.md +408 -408
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/README-TTS-QUEUE.md +135 -135
- package/.claude/hooks/audio-cache-utils.sh +246 -246
- package/.claude/hooks/audio-processor.sh +433 -433
- package/.claude/hooks/background-music-manager.sh +404 -404
- package/.claude/hooks/bmad-speak-enhanced.sh +165 -165
- package/.claude/hooks/bmad-speak.sh +269 -269
- package/.claude/hooks/bmad-tts-injector.sh +568 -568
- package/.claude/hooks/bmad-voice-manager.sh +928 -928
- package/.claude/hooks/clawdbot-receiver-SECURE.sh +129 -129
- package/.claude/hooks/clawdbot-receiver.sh +107 -107
- package/.claude/hooks/clean-audio-cache.sh +22 -22
- package/.claude/hooks/cleanup-cache.sh +106 -106
- package/.claude/hooks/configure-rdp-mode.sh +137 -137
- package/.claude/hooks/download-extra-voices.sh +244 -244
- package/.claude/hooks/effects-manager.sh +268 -268
- package/.claude/hooks/github-star-reminder.sh +154 -154
- package/.claude/hooks/language-manager.sh +362 -362
- package/.claude/hooks/learn-manager.sh +492 -492
- package/.claude/hooks/macos-voice-manager.sh +205 -205
- package/.claude/hooks/migrate-background-music.sh +125 -125
- package/.claude/hooks/migrate-to-agentvibes.sh +161 -161
- package/.claude/hooks/optimize-background-music.sh +87 -87
- package/.claude/hooks/path-resolver.sh +60 -60
- package/.claude/hooks/personality-manager.sh +448 -448
- package/.claude/hooks/piper-download-voices.sh +225 -225
- package/.claude/hooks/piper-installer.sh +292 -292
- package/.claude/hooks/piper-multispeaker-registry.sh +171 -171
- package/.claude/hooks/piper-voice-manager.sh +24 -3
- package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +90 -90
- package/.claude/hooks/play-tts-enhanced.sh +105 -105
- package/.claude/hooks/play-tts-macos.sh +368 -368
- package/.claude/hooks/play-tts-piper.sh +679 -679
- package/.claude/hooks/play-tts-soprano.sh +356 -356
- package/.claude/hooks/play-tts-ssh-remote.sh +167 -167
- package/.claude/hooks/play-tts-termux-ssh.sh +169 -169
- package/.claude/hooks/play-tts.sh +301 -301
- package/.claude/hooks/prepare-release.sh +54 -54
- package/.claude/hooks/provider-commands.sh +617 -617
- package/.claude/hooks/provider-manager.sh +399 -399
- package/.claude/hooks/replay-target-audio.sh +95 -95
- package/.claude/hooks/requirements.txt +6 -6
- package/.claude/hooks/sentiment-manager.sh +201 -201
- package/.claude/hooks/session-start-tts.sh +81 -81
- package/.claude/hooks/soprano-gradio-synth.py +139 -139
- package/.claude/hooks/speed-manager.sh +291 -291
- package/.claude/hooks/stop-tts.sh +84 -84
- package/.claude/hooks/termux-installer.sh +261 -261
- package/.claude/hooks/translate-manager.sh +341 -341
- package/.claude/hooks/translator.py +237 -237
- package/.claude/hooks/tts-queue-worker.sh +145 -145
- package/.claude/hooks/tts-queue.sh +165 -165
- package/.claude/hooks/verbosity-manager.sh +178 -178
- package/.claude/hooks/voice-manager.sh +548 -548
- package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
- package/.claude/hooks-windows/background-music-manager.ps1 +348 -0
- package/.claude/hooks-windows/clean-audio-cache.ps1 +53 -0
- package/.claude/hooks-windows/download-extra-voices.ps1 +185 -0
- package/.claude/hooks-windows/effects-manager.ps1 +294 -0
- package/.claude/hooks-windows/language-manager.ps1 +193 -0
- package/.claude/hooks-windows/learn-manager.ps1 +241 -0
- package/.claude/hooks-windows/personality-manager.ps1 +266 -0
- package/.claude/hooks-windows/play-tts-piper.ps1 +209 -0
- package/.claude/hooks-windows/play-tts-sapi.ps1 +108 -0
- package/.claude/hooks-windows/play-tts-soprano.ps1 +159 -158
- package/.claude/hooks-windows/play-tts-windows-piper.ps1 +50 -5
- package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -108
- package/.claude/hooks-windows/play-tts.ps1 +344 -266
- package/.claude/hooks-windows/provider-manager.ps1 +29 -10
- package/.claude/hooks-windows/session-start-tts.ps1 +124 -124
- package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
- package/.claude/hooks-windows/speed-manager.ps1 +166 -0
- package/.claude/hooks-windows/verbosity-manager.ps1 +119 -0
- package/.claude/hooks-windows/voice-manager-windows.ps1 +92 -8
- package/.claude/output-styles/agent-vibes.md +202 -202
- package/.claude/personalities/angry.md +14 -14
- package/.claude/personalities/annoying.md +14 -14
- package/.claude/personalities/crass.md +14 -14
- package/.claude/personalities/dramatic.md +14 -14
- package/.claude/personalities/dry-humor.md +50 -50
- package/.claude/personalities/flirty.md +20 -20
- package/.claude/personalities/funny.md +14 -14
- package/.claude/personalities/grandpa.md +32 -32
- package/.claude/personalities/millennial.md +14 -14
- package/.claude/personalities/moody.md +14 -14
- package/.claude/personalities/normal.md +16 -16
- package/.claude/personalities/pirate.md +14 -14
- package/.claude/personalities/poetic.md +14 -14
- package/.claude/personalities/professional.md +14 -14
- package/.claude/personalities/rapper.md +55 -55
- package/.claude/personalities/robot.md +14 -14
- package/.claude/personalities/sarcastic.md +38 -38
- package/.claude/personalities/sassy.md +14 -14
- package/.claude/personalities/surfer-dude.md +14 -14
- package/.claude/personalities/zen.md +14 -14
- package/.claude/settings.json +15 -15
- package/.claude/verbosity.txt +1 -1
- package/.clawdbot/README.md +105 -105
- package/.clawdbot/skill/SKILL.md +241 -241
- package/.mcp.json +12 -0
- package/CLAUDE.md +170 -170
- package/README.md +2029 -2007
- package/RELEASE_NOTES.md +1310 -1203
- package/WINDOWS-SETUP.md +208 -208
- package/bin/agent-vibes +39 -39
- package/bin/agentvibes-voice-browser.js +1840 -1840
- package/bin/agentvibes.js +48 -2
- package/bin/mcp-server.js +121 -121
- package/bin/mcp-server.sh +206 -206
- package/bin/test-bmad-pr +78 -78
- package/mcp-server/QUICK_START.md +203 -203
- package/mcp-server/README.md +345 -345
- package/mcp-server/WINDOWS_SETUP.md +260 -260
- package/mcp-server/docs/troubleshooting-audio.md +313 -313
- package/mcp-server/examples/claude_desktop_config.json +11 -11
- package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
- package/mcp-server/examples/custom_instructions.md +169 -169
- package/mcp-server/install-deps.js +130 -130
- package/mcp-server/pyproject.toml +52 -52
- package/mcp-server/requirements.txt +2 -2
- package/mcp-server/server.py +1465 -1453
- package/mcp-server/test_server.py +395 -395
- package/mcp-server/test_windows_script_parity.py +336 -0
- package/package.json +110 -110
- package/setup-windows.ps1 +815 -815
- package/src/bmad-detector.js +71 -71
- package/src/cli/list-personalities.js +110 -110
- package/src/cli/list-voices.js +114 -114
- package/src/commands/bmad-voices.js +394 -394
- package/src/commands/install-mcp.js +476 -476
- package/src/console/app.js +824 -824
- package/src/console/audio-env.js +20 -1
- package/src/console/brand-colors.js +13 -13
- package/src/console/constants/personalities.js +44 -44
- package/src/console/footer-config.js +50 -50
- package/src/console/modals/modal-overlay.js +247 -247
- package/src/console/navigation.js +62 -62
- package/src/console/tabs/agents-tab.js +1684 -1516
- package/src/console/tabs/help-tab.js +261 -261
- package/src/console/tabs/install-tab.js +1007 -991
- package/src/console/tabs/music-tab.js +22 -8
- package/src/console/tabs/placeholder-tab.js +53 -53
- package/src/console/tabs/readme-tab.js +267 -267
- package/src/console/tabs/receiver-tab.js +1472 -1212
- package/src/console/tabs/settings-tab.js +152 -79
- package/src/console/tabs/voices-tab.js +100 -21
- package/src/console/widgets/destroy-list.js +25 -25
- package/src/console/widgets/format-utils.js +89 -89
- package/src/console/widgets/notice.js +55 -55
- package/src/console/widgets/personality-picker.js +185 -185
- package/src/console/widgets/reverb-picker.js +94 -94
- package/src/console/widgets/track-picker.js +285 -285
- package/src/installer/music-file-input.js +304 -304
- package/src/installer.js +5882 -5829
- package/src/services/agent-voice-store.js +423 -423
- package/src/services/config-service.js +264 -264
- package/src/services/navigation-service.js +123 -123
- package/src/services/provider-service.js +132 -132
- package/src/services/verbosity-service.js +157 -157
- package/src/utils/audio-duration-validator.js +298 -298
- package/src/utils/audio-format-validator.js +277 -277
- package/src/utils/dependency-checker.js +469 -466
- package/src/utils/file-ownership-verifier.js +358 -358
- package/src/utils/list-formatter.js +194 -194
- package/src/utils/music-file-validator.js +285 -285
- package/src/utils/preview-list-prompt.js +136 -136
- package/src/utils/provider-validator.js +96 -12
- package/src/utils/secure-music-storage.js +412 -412
- package/templates/agentvibes-receiver.sh +482 -482
- package/templates/audio/welcome-music.mp3 +0 -0
- package/voice-assignments.json +8244 -8244
- package/.claude/config/background-music-position.txt +0 -1
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/play-tts-enhanced.sh
|
|
4
|
-
#
|
|
5
|
-
# AgentVibes - Enhanced TTS with Background Music and Effects
|
|
6
|
-
# Generates TTS, applies effects, mixes background, plays ONCE (no echo)
|
|
7
|
-
#
|
|
8
|
-
# Usage: play-tts-enhanced.sh "text to speak" [agent_name] [voice_override]
|
|
9
|
-
#
|
|
10
|
-
# Environment:
|
|
11
|
-
# AGENTVIBES_PARTY_MODE=true - Use room ambiance background (_party_mode config)
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
set -euo pipefail
|
|
15
|
-
export LC_ALL=C
|
|
16
|
-
|
|
17
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
18
|
-
|
|
19
|
-
TEXT="${1:-}"
|
|
20
|
-
AGENT_NAME="${2:-default}"
|
|
21
|
-
VOICE_OVERRIDE="${3:-}"
|
|
22
|
-
|
|
23
|
-
if [[ -z "$TEXT" ]]; then
|
|
24
|
-
echo "Usage: $0 \"text to speak\" [agent_name] [voice_override]" >&2
|
|
25
|
-
exit 1
|
|
26
|
-
fi
|
|
27
|
-
|
|
28
|
-
# Determine which config to use
|
|
29
|
-
CONFIG_KEY="$AGENT_NAME"
|
|
30
|
-
if [[ "${AGENTVIBES_PARTY_MODE:-false}" == "true" ]]; then
|
|
31
|
-
CONFIG_KEY="_party_mode"
|
|
32
|
-
fi
|
|
33
|
-
|
|
34
|
-
# ---------------------------------------------------------------------------
|
|
35
|
-
# Per-agent profile overrides (from bmad-voice-map.json via bmad-speak.sh)
|
|
36
|
-
# If AGENTVIBES_AGENT_PROFILE is set and the file exists, apply reverb/personality/music
|
|
37
|
-
# overrides by temporarily setting effects-manager config for this agent
|
|
38
|
-
AGENT_PROFILE="${AGENTVIBES_AGENT_PROFILE:-}"
|
|
39
|
-
|
|
40
|
-
if [[ -n "$AGENT_PROFILE" ]] && [[ -f "$AGENT_PROFILE" ]]; then
|
|
41
|
-
# Read profile fields using node (reliable JSON parsing)
|
|
42
|
-
# SECURITY: Pass values via env vars to prevent shell injection
|
|
43
|
-
_PROFILE_REVERB=$(_APFILE="$AGENT_PROFILE" node -e "try{const p=JSON.parse(require('fs').readFileSync(process.env._APFILE,'utf8'));process.stdout.write(p.reverbPreset||'')}catch{}" 2>/dev/null || true)
|
|
44
|
-
_PROFILE_MUSIC_TRACK=$(_APFILE="$AGENT_PROFILE" node -e "try{const p=JSON.parse(require('fs').readFileSync(process.env._APFILE,'utf8'));process.stdout.write(p.backgroundMusic?.track||'')}catch{}" 2>/dev/null || true)
|
|
45
|
-
_PROFILE_MUSIC_VOL=$(_APFILE="$AGENT_PROFILE" node -e "try{const p=JSON.parse(require('fs').readFileSync(process.env._APFILE,'utf8'));process.stdout.write(String(p.backgroundMusic?.volume||''))}catch{}" 2>/dev/null || true)
|
|
46
|
-
|
|
47
|
-
# Apply per-agent reverb via effects-manager (scoped to this agent's config key)
|
|
48
|
-
if [[ -n "$_PROFILE_REVERB" ]] && [[ -f "$SCRIPT_DIR/effects-manager.sh" ]]; then
|
|
49
|
-
bash "$SCRIPT_DIR/effects-manager.sh" set-reverb "$_PROFILE_REVERB" "$CONFIG_KEY" 2>/dev/null || true
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
# Override background music track/volume for this invocation via env vars
|
|
53
|
-
if [[ -n "$_PROFILE_MUSIC_TRACK" ]]; then
|
|
54
|
-
export AGENTVIBES_BG_TRACK="$_PROFILE_MUSIC_TRACK"
|
|
55
|
-
fi
|
|
56
|
-
if [[ -n "$_PROFILE_MUSIC_VOL" ]]; then
|
|
57
|
-
export AGENTVIBES_BG_VOLUME="$_PROFILE_MUSIC_VOL"
|
|
58
|
-
fi
|
|
59
|
-
fi
|
|
60
|
-
|
|
61
|
-
# Step 1: Generate TTS WITHOUT playback
|
|
62
|
-
export AGENTVIBES_NO_PLAYBACK=true
|
|
63
|
-
export AGENTVIBES_WAV_OUTPATH="${XDG_RUNTIME_DIR:-/tmp}/agentvibes-last-wav-$$.txt"
|
|
64
|
-
|
|
65
|
-
# Cleanup temp outpath file on exit
|
|
66
|
-
trap 'rm -f "$AGENTVIBES_WAV_OUTPATH"' EXIT
|
|
67
|
-
"$SCRIPT_DIR/play-tts.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
68
|
-
|
|
69
|
-
# Read the generated file path (written by play-tts-piper.sh via AGENTVIBES_WAV_OUTPATH)
|
|
70
|
-
GENERATED_FILE=""
|
|
71
|
-
if [[ -f "$AGENTVIBES_WAV_OUTPATH" ]]; then
|
|
72
|
-
GENERATED_FILE=$(cat "$AGENTVIBES_WAV_OUTPATH")
|
|
73
|
-
rm -f "$AGENTVIBES_WAV_OUTPATH"
|
|
74
|
-
fi
|
|
75
|
-
unset AGENTVIBES_WAV_OUTPATH
|
|
76
|
-
|
|
77
|
-
if [[ -z "$GENERATED_FILE" ]] || [[ ! -f "$GENERATED_FILE" ]]; then
|
|
78
|
-
echo "Error: Could not find generated audio file" >&2
|
|
79
|
-
exit 1
|
|
80
|
-
fi
|
|
81
|
-
|
|
82
|
-
# Step 2: Process with effects and background
|
|
83
|
-
PROCESSED_FILE="${GENERATED_FILE%.wav}-enhanced.wav"
|
|
84
|
-
|
|
85
|
-
if [[ -f "$SCRIPT_DIR/audio-processor.sh" ]]; then
|
|
86
|
-
"$SCRIPT_DIR/audio-processor.sh" "$GENERATED_FILE" "$CONFIG_KEY" "$PROCESSED_FILE" 2>/dev/null || {
|
|
87
|
-
# Fallback to original if processing fails
|
|
88
|
-
PROCESSED_FILE="$GENERATED_FILE"
|
|
89
|
-
}
|
|
90
|
-
else
|
|
91
|
-
PROCESSED_FILE="$GENERATED_FILE"
|
|
92
|
-
fi
|
|
93
|
-
|
|
94
|
-
# Step 3: Play the processed audio ONCE
|
|
95
|
-
if [[ -f "$PROCESSED_FILE" ]]; then
|
|
96
|
-
if [[ "$(uname -s)" == "Darwin" ]]; then
|
|
97
|
-
afplay "$PROCESSED_FILE" >/dev/null 2>&1 &
|
|
98
|
-
else
|
|
99
|
-
(mpv "$PROCESSED_FILE" || aplay "$PROCESSED_FILE" || paplay "$PROCESSED_FILE") >/dev/null 2>&1 &
|
|
100
|
-
fi
|
|
101
|
-
echo "🎵 Enhanced audio: $PROCESSED_FILE"
|
|
102
|
-
else
|
|
103
|
-
echo "Error: Processed file not found" >&2
|
|
104
|
-
exit 1
|
|
105
|
-
fi
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# File: .claude/hooks/play-tts-enhanced.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Enhanced TTS with Background Music and Effects
|
|
6
|
+
# Generates TTS, applies effects, mixes background, plays ONCE (no echo)
|
|
7
|
+
#
|
|
8
|
+
# Usage: play-tts-enhanced.sh "text to speak" [agent_name] [voice_override]
|
|
9
|
+
#
|
|
10
|
+
# Environment:
|
|
11
|
+
# AGENTVIBES_PARTY_MODE=true - Use room ambiance background (_party_mode config)
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
set -euo pipefail
|
|
15
|
+
export LC_ALL=C
|
|
16
|
+
|
|
17
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
18
|
+
|
|
19
|
+
TEXT="${1:-}"
|
|
20
|
+
AGENT_NAME="${2:-default}"
|
|
21
|
+
VOICE_OVERRIDE="${3:-}"
|
|
22
|
+
|
|
23
|
+
if [[ -z "$TEXT" ]]; then
|
|
24
|
+
echo "Usage: $0 \"text to speak\" [agent_name] [voice_override]" >&2
|
|
25
|
+
exit 1
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Determine which config to use
|
|
29
|
+
CONFIG_KEY="$AGENT_NAME"
|
|
30
|
+
if [[ "${AGENTVIBES_PARTY_MODE:-false}" == "true" ]]; then
|
|
31
|
+
CONFIG_KEY="_party_mode"
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
# ---------------------------------------------------------------------------
|
|
35
|
+
# Per-agent profile overrides (from bmad-voice-map.json via bmad-speak.sh)
|
|
36
|
+
# If AGENTVIBES_AGENT_PROFILE is set and the file exists, apply reverb/personality/music
|
|
37
|
+
# overrides by temporarily setting effects-manager config for this agent
|
|
38
|
+
AGENT_PROFILE="${AGENTVIBES_AGENT_PROFILE:-}"
|
|
39
|
+
|
|
40
|
+
if [[ -n "$AGENT_PROFILE" ]] && [[ -f "$AGENT_PROFILE" ]]; then
|
|
41
|
+
# Read profile fields using node (reliable JSON parsing)
|
|
42
|
+
# SECURITY: Pass values via env vars to prevent shell injection
|
|
43
|
+
_PROFILE_REVERB=$(_APFILE="$AGENT_PROFILE" node -e "try{const p=JSON.parse(require('fs').readFileSync(process.env._APFILE,'utf8'));process.stdout.write(p.reverbPreset||'')}catch{}" 2>/dev/null || true)
|
|
44
|
+
_PROFILE_MUSIC_TRACK=$(_APFILE="$AGENT_PROFILE" node -e "try{const p=JSON.parse(require('fs').readFileSync(process.env._APFILE,'utf8'));process.stdout.write(p.backgroundMusic?.track||'')}catch{}" 2>/dev/null || true)
|
|
45
|
+
_PROFILE_MUSIC_VOL=$(_APFILE="$AGENT_PROFILE" node -e "try{const p=JSON.parse(require('fs').readFileSync(process.env._APFILE,'utf8'));process.stdout.write(String(p.backgroundMusic?.volume||''))}catch{}" 2>/dev/null || true)
|
|
46
|
+
|
|
47
|
+
# Apply per-agent reverb via effects-manager (scoped to this agent's config key)
|
|
48
|
+
if [[ -n "$_PROFILE_REVERB" ]] && [[ -f "$SCRIPT_DIR/effects-manager.sh" ]]; then
|
|
49
|
+
bash "$SCRIPT_DIR/effects-manager.sh" set-reverb "$_PROFILE_REVERB" "$CONFIG_KEY" 2>/dev/null || true
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
# Override background music track/volume for this invocation via env vars
|
|
53
|
+
if [[ -n "$_PROFILE_MUSIC_TRACK" ]]; then
|
|
54
|
+
export AGENTVIBES_BG_TRACK="$_PROFILE_MUSIC_TRACK"
|
|
55
|
+
fi
|
|
56
|
+
if [[ -n "$_PROFILE_MUSIC_VOL" ]]; then
|
|
57
|
+
export AGENTVIBES_BG_VOLUME="$_PROFILE_MUSIC_VOL"
|
|
58
|
+
fi
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# Step 1: Generate TTS WITHOUT playback
|
|
62
|
+
export AGENTVIBES_NO_PLAYBACK=true
|
|
63
|
+
export AGENTVIBES_WAV_OUTPATH="${XDG_RUNTIME_DIR:-/tmp}/agentvibes-last-wav-$$.txt"
|
|
64
|
+
|
|
65
|
+
# Cleanup temp outpath file on exit
|
|
66
|
+
trap 'rm -f "$AGENTVIBES_WAV_OUTPATH"' EXIT
|
|
67
|
+
"$SCRIPT_DIR/play-tts.sh" "$TEXT" "$VOICE_OVERRIDE"
|
|
68
|
+
|
|
69
|
+
# Read the generated file path (written by play-tts-piper.sh via AGENTVIBES_WAV_OUTPATH)
|
|
70
|
+
GENERATED_FILE=""
|
|
71
|
+
if [[ -f "$AGENTVIBES_WAV_OUTPATH" ]]; then
|
|
72
|
+
GENERATED_FILE=$(cat "$AGENTVIBES_WAV_OUTPATH")
|
|
73
|
+
rm -f "$AGENTVIBES_WAV_OUTPATH"
|
|
74
|
+
fi
|
|
75
|
+
unset AGENTVIBES_WAV_OUTPATH
|
|
76
|
+
|
|
77
|
+
if [[ -z "$GENERATED_FILE" ]] || [[ ! -f "$GENERATED_FILE" ]]; then
|
|
78
|
+
echo "Error: Could not find generated audio file" >&2
|
|
79
|
+
exit 1
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Step 2: Process with effects and background
|
|
83
|
+
PROCESSED_FILE="${GENERATED_FILE%.wav}-enhanced.wav"
|
|
84
|
+
|
|
85
|
+
if [[ -f "$SCRIPT_DIR/audio-processor.sh" ]]; then
|
|
86
|
+
"$SCRIPT_DIR/audio-processor.sh" "$GENERATED_FILE" "$CONFIG_KEY" "$PROCESSED_FILE" 2>/dev/null || {
|
|
87
|
+
# Fallback to original if processing fails
|
|
88
|
+
PROCESSED_FILE="$GENERATED_FILE"
|
|
89
|
+
}
|
|
90
|
+
else
|
|
91
|
+
PROCESSED_FILE="$GENERATED_FILE"
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
# Step 3: Play the processed audio ONCE
|
|
95
|
+
if [[ -f "$PROCESSED_FILE" ]]; then
|
|
96
|
+
if [[ "$(uname -s)" == "Darwin" ]]; then
|
|
97
|
+
afplay "$PROCESSED_FILE" >/dev/null 2>&1 &
|
|
98
|
+
else
|
|
99
|
+
(mpv "$PROCESSED_FILE" || aplay "$PROCESSED_FILE" || paplay "$PROCESSED_FILE") >/dev/null 2>&1 &
|
|
100
|
+
fi
|
|
101
|
+
echo "🎵 Enhanced audio: $PROCESSED_FILE"
|
|
102
|
+
else
|
|
103
|
+
echo "Error: Processed file not found" >&2
|
|
104
|
+
exit 1
|
|
105
|
+
fi
|