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 +1 @@
|
|
|
1
|
-
|
|
1
|
+
20260327
|
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
# TTS Queue System for Party Mode
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The TTS Queue System enables BMAD party mode agents to speak sequentially without blocking Claude Code's response generation. This provides the best of both worlds:
|
|
6
|
-
|
|
7
|
-
- ✅ **Non-blocking**: Claude Code continues generating agent responses immediately
|
|
8
|
-
- ✅ **Sequential playback**: Agents speak one at a time in order, with correct voices
|
|
9
|
-
- ✅ **No audio overlap**: The queue ensures voices don't talk over each other
|
|
10
|
-
|
|
11
|
-
## How It Works
|
|
12
|
-
|
|
13
|
-
### Architecture
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
bmad-speak.sh → tts-queue.sh → Queue Directory → tts-queue-worker.sh → play-tts.sh → Audio
|
|
17
|
-
↓ ↓ ↓
|
|
18
|
-
Returns Returns Processes queue
|
|
19
|
-
immediately immediately sequentially
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
### Components
|
|
23
|
-
|
|
24
|
-
1. **`tts-queue.sh`** - Queue manager (adds requests, shows status, clears queue)
|
|
25
|
-
2. **`tts-queue-worker.sh`** - Background worker process (plays audio sequentially)
|
|
26
|
-
3. **`bmad-speak.sh`** - Updated to use queue system with `&` for non-blocking
|
|
27
|
-
4. **Queue directory**: `/tmp/agentvibes-tts-queue/` - Stores pending TTS requests
|
|
28
|
-
|
|
29
|
-
### Flow
|
|
30
|
-
|
|
31
|
-
1. Party mode agent generates response
|
|
32
|
-
2. `bmad-speak.sh` adds TTS request to queue and returns immediately (`&`)
|
|
33
|
-
3. Queue worker automatically starts if needed
|
|
34
|
-
4. Worker processes queue items sequentially (oldest first)
|
|
35
|
-
5. Each audio file plays to completion before next one starts
|
|
36
|
-
6. Worker auto-exits after 5 seconds of idle time
|
|
37
|
-
|
|
38
|
-
## Usage
|
|
39
|
-
|
|
40
|
-
### Normal Usage (Automatic)
|
|
41
|
-
|
|
42
|
-
Party mode automatically uses the queue system. No manual intervention needed.
|
|
43
|
-
|
|
44
|
-
### Manual Queue Management
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
# Check queue status
|
|
48
|
-
bash .claude/hooks/tts-queue.sh status
|
|
49
|
-
|
|
50
|
-
# Clear all pending TTS (emergency stop)
|
|
51
|
-
bash .claude/hooks/tts-queue.sh clear
|
|
52
|
-
|
|
53
|
-
# Manually add to queue
|
|
54
|
-
bash .claude/hooks/tts-queue.sh add "Hello world" "en_US-ryan-high"
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Performance Benefits
|
|
58
|
-
|
|
59
|
-
### Before (Sequential Blocking):
|
|
60
|
-
```
|
|
61
|
-
Agent 1 text output → [WAIT 3s for audio] → Agent 2 text → [WAIT 3s] → Agent 3 text
|
|
62
|
-
Total time: ~9+ seconds
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### After (Queue System):
|
|
66
|
-
```
|
|
67
|
-
Agent 1 text → Agent 2 text → Agent 3 text (all immediate)
|
|
68
|
-
↓
|
|
69
|
-
[Audio plays sequentially in background]
|
|
70
|
-
Total text output time: <1 second
|
|
71
|
-
Total audio time: ~9 seconds (plays while Claude continues working)
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## Technical Details
|
|
75
|
-
|
|
76
|
-
### Queue File Format
|
|
77
|
-
|
|
78
|
-
Each queue item is a timestamped file containing escaped bash variables:
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
TEXT='First\ message\ from\ John'
|
|
82
|
-
VOICE='en_US-ryan-high'
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### Worker Lifecycle
|
|
86
|
-
|
|
87
|
-
- **Start**: Automatically launched when first item added to empty queue
|
|
88
|
-
- **Processing**: Continues while queue has items
|
|
89
|
-
- **Idle timeout**: Exits after 5 seconds with no new items
|
|
90
|
-
- **Auto-restart**: Next queue addition spawns new worker
|
|
91
|
-
|
|
92
|
-
### Thread Safety
|
|
93
|
-
|
|
94
|
-
- Queue items use nanosecond timestamps for uniqueness
|
|
95
|
-
- Worker processes oldest items first (sorted by filename)
|
|
96
|
-
- Audio lock mechanism in `play-tts.sh` prevents actual audio overlap
|
|
97
|
-
- Worker PID tracked in `/tmp/agentvibes-tts-queue/worker.pid`
|
|
98
|
-
|
|
99
|
-
## Troubleshooting
|
|
100
|
-
|
|
101
|
-
### Queue stuck or voices not playing
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
# Check status
|
|
105
|
-
bash .claude/hooks/tts-queue.sh status
|
|
106
|
-
|
|
107
|
-
# Clear queue and restart
|
|
108
|
-
bash .claude/hooks/tts-queue.sh clear
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### Worker not starting
|
|
112
|
-
|
|
113
|
-
Check for errors in the worker script:
|
|
114
|
-
```bash
|
|
115
|
-
bash .claude/hooks/tts-queue-worker.sh
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Audio still overlapping
|
|
119
|
-
|
|
120
|
-
Verify the lock file mechanism is working:
|
|
121
|
-
```bash
|
|
122
|
-
ls -la /tmp/agentvibes-audio.lock
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## Files Modified
|
|
126
|
-
|
|
127
|
-
- `.claude/hooks/bmad-speak.sh` - Now uses queue system with `&` for non-blocking
|
|
128
|
-
- `.claude/hooks/tts-queue.sh` - New queue manager (added)
|
|
129
|
-
- `.claude/hooks/tts-queue-worker.sh` - New background worker (added)
|
|
130
|
-
|
|
131
|
-
## Compatibility
|
|
132
|
-
|
|
133
|
-
- Works with both Piper and Piper TTS TTS providers
|
|
134
|
-
- Compatible with all existing BMAD voice mappings
|
|
135
|
-
- No changes needed to party mode workflow instructions
|
|
1
|
+
# TTS Queue System for Party Mode
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The TTS Queue System enables BMAD party mode agents to speak sequentially without blocking Claude Code's response generation. This provides the best of both worlds:
|
|
6
|
+
|
|
7
|
+
- ✅ **Non-blocking**: Claude Code continues generating agent responses immediately
|
|
8
|
+
- ✅ **Sequential playback**: Agents speak one at a time in order, with correct voices
|
|
9
|
+
- ✅ **No audio overlap**: The queue ensures voices don't talk over each other
|
|
10
|
+
|
|
11
|
+
## How It Works
|
|
12
|
+
|
|
13
|
+
### Architecture
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
bmad-speak.sh → tts-queue.sh → Queue Directory → tts-queue-worker.sh → play-tts.sh → Audio
|
|
17
|
+
↓ ↓ ↓
|
|
18
|
+
Returns Returns Processes queue
|
|
19
|
+
immediately immediately sequentially
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Components
|
|
23
|
+
|
|
24
|
+
1. **`tts-queue.sh`** - Queue manager (adds requests, shows status, clears queue)
|
|
25
|
+
2. **`tts-queue-worker.sh`** - Background worker process (plays audio sequentially)
|
|
26
|
+
3. **`bmad-speak.sh`** - Updated to use queue system with `&` for non-blocking
|
|
27
|
+
4. **Queue directory**: `/tmp/agentvibes-tts-queue/` - Stores pending TTS requests
|
|
28
|
+
|
|
29
|
+
### Flow
|
|
30
|
+
|
|
31
|
+
1. Party mode agent generates response
|
|
32
|
+
2. `bmad-speak.sh` adds TTS request to queue and returns immediately (`&`)
|
|
33
|
+
3. Queue worker automatically starts if needed
|
|
34
|
+
4. Worker processes queue items sequentially (oldest first)
|
|
35
|
+
5. Each audio file plays to completion before next one starts
|
|
36
|
+
6. Worker auto-exits after 5 seconds of idle time
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
### Normal Usage (Automatic)
|
|
41
|
+
|
|
42
|
+
Party mode automatically uses the queue system. No manual intervention needed.
|
|
43
|
+
|
|
44
|
+
### Manual Queue Management
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Check queue status
|
|
48
|
+
bash .claude/hooks/tts-queue.sh status
|
|
49
|
+
|
|
50
|
+
# Clear all pending TTS (emergency stop)
|
|
51
|
+
bash .claude/hooks/tts-queue.sh clear
|
|
52
|
+
|
|
53
|
+
# Manually add to queue
|
|
54
|
+
bash .claude/hooks/tts-queue.sh add "Hello world" "en_US-ryan-high"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Performance Benefits
|
|
58
|
+
|
|
59
|
+
### Before (Sequential Blocking):
|
|
60
|
+
```
|
|
61
|
+
Agent 1 text output → [WAIT 3s for audio] → Agent 2 text → [WAIT 3s] → Agent 3 text
|
|
62
|
+
Total time: ~9+ seconds
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### After (Queue System):
|
|
66
|
+
```
|
|
67
|
+
Agent 1 text → Agent 2 text → Agent 3 text (all immediate)
|
|
68
|
+
↓
|
|
69
|
+
[Audio plays sequentially in background]
|
|
70
|
+
Total text output time: <1 second
|
|
71
|
+
Total audio time: ~9 seconds (plays while Claude continues working)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Technical Details
|
|
75
|
+
|
|
76
|
+
### Queue File Format
|
|
77
|
+
|
|
78
|
+
Each queue item is a timestamped file containing escaped bash variables:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
TEXT='First\ message\ from\ John'
|
|
82
|
+
VOICE='en_US-ryan-high'
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Worker Lifecycle
|
|
86
|
+
|
|
87
|
+
- **Start**: Automatically launched when first item added to empty queue
|
|
88
|
+
- **Processing**: Continues while queue has items
|
|
89
|
+
- **Idle timeout**: Exits after 5 seconds with no new items
|
|
90
|
+
- **Auto-restart**: Next queue addition spawns new worker
|
|
91
|
+
|
|
92
|
+
### Thread Safety
|
|
93
|
+
|
|
94
|
+
- Queue items use nanosecond timestamps for uniqueness
|
|
95
|
+
- Worker processes oldest items first (sorted by filename)
|
|
96
|
+
- Audio lock mechanism in `play-tts.sh` prevents actual audio overlap
|
|
97
|
+
- Worker PID tracked in `/tmp/agentvibes-tts-queue/worker.pid`
|
|
98
|
+
|
|
99
|
+
## Troubleshooting
|
|
100
|
+
|
|
101
|
+
### Queue stuck or voices not playing
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Check status
|
|
105
|
+
bash .claude/hooks/tts-queue.sh status
|
|
106
|
+
|
|
107
|
+
# Clear queue and restart
|
|
108
|
+
bash .claude/hooks/tts-queue.sh clear
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Worker not starting
|
|
112
|
+
|
|
113
|
+
Check for errors in the worker script:
|
|
114
|
+
```bash
|
|
115
|
+
bash .claude/hooks/tts-queue-worker.sh
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Audio still overlapping
|
|
119
|
+
|
|
120
|
+
Verify the lock file mechanism is working:
|
|
121
|
+
```bash
|
|
122
|
+
ls -la /tmp/agentvibes-audio.lock
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Files Modified
|
|
126
|
+
|
|
127
|
+
- `.claude/hooks/bmad-speak.sh` - Now uses queue system with `&` for non-blocking
|
|
128
|
+
- `.claude/hooks/tts-queue.sh` - New queue manager (added)
|
|
129
|
+
- `.claude/hooks/tts-queue-worker.sh` - New background worker (added)
|
|
130
|
+
|
|
131
|
+
## Compatibility
|
|
132
|
+
|
|
133
|
+
- Works with both Piper and Piper TTS TTS providers
|
|
134
|
+
- Compatible with all existing BMAD voice mappings
|
|
135
|
+
- No changes needed to party mode workflow instructions
|