agentvibes 5.6.8 → 5.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/.agentvibes/LITE-MODE.md +236 -0
  2. package/.agentvibes/README.md +136 -0
  3. package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +141 -0
  4. package/.agentvibes/backups/agents/analyst_20260204_144958.md +78 -0
  5. package/.agentvibes/backups/agents/architect_20260204_144958.md +72 -0
  6. package/.agentvibes/backups/agents/dev_20260204_144958.md +74 -0
  7. package/.agentvibes/backups/agents/pm_20260204_144958.md +72 -0
  8. package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +64 -0
  9. package/.agentvibes/backups/agents/sm_20260204_144958.md +87 -0
  10. package/.agentvibes/backups/agents/tea_20260204_144958.md +79 -0
  11. package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +82 -0
  12. package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +80 -0
  13. package/.agentvibes/config/README-personality-defaults.md +162 -0
  14. package/.agentvibes/config/agentvibes.json +1 -0
  15. package/.agentvibes/config/mode.txt +1 -0
  16. package/.agentvibes/config/personality-voice-defaults.default.json +21 -0
  17. package/.agentvibes/config/save-audio.txt +1 -0
  18. package/.agentvibes/config/voice-metadata.json +160 -0
  19. package/.agentvibes/config.json +38 -1
  20. package/.agentvibes/hooks/help.sh +191 -0
  21. package/.agentvibes/hooks/post-tool-use-lite.sh +111 -0
  22. package/.agentvibes/hooks/save-audio-manager.sh +162 -0
  23. package/.agentvibes/hooks/session-start-full-optimized.sh +102 -0
  24. package/.agentvibes/hooks/session-start-full.sh +142 -0
  25. package/.agentvibes/hooks/session-start-lite-v2.sh +34 -0
  26. package/.agentvibes/hooks/session-start-lite.sh +29 -0
  27. package/.agentvibes/hooks/stop-lite.sh +115 -0
  28. package/.agentvibes/hooks/switch-mode.sh +215 -0
  29. package/.agentvibes/output-styles/audio-summary.md +30 -0
  30. package/.claude/audio/voice-samples/piper/alan.wav +0 -0
  31. package/.claude/audio/voice-samples/piper/amy.wav +0 -0
  32. package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
  33. package/.claude/audio/voice-samples/piper/joe.wav +0 -0
  34. package/.claude/audio/voice-samples/piper/john.wav +0 -0
  35. package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
  36. package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
  37. package/.claude/audio/voice-samples/piper/linda.wav +0 -0
  38. package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
  39. package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
  40. package/.claude/commands/agent-vibes/provider.md +0 -0
  41. package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
  42. package/.claude/commands/agent-vibes-rdp.md +24 -24
  43. package/.claude/config/audio-effects.cfg +1 -1
  44. package/.claude/config/background-music-position.txt +8 -7
  45. package/.claude/config/reverb-level.txt +0 -0
  46. package/.claude/docs/TERMUX_SETUP.md +408 -408
  47. package/.claude/hooks/audio-cache-utils.sh +0 -0
  48. package/.claude/hooks/audio-processor.sh +0 -0
  49. package/.claude/hooks/background-music-manager.sh +0 -0
  50. package/.claude/hooks/bmad-party-manager.sh +225 -0
  51. package/.claude/hooks/bmad-party-speak.sh +0 -0
  52. package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
  53. package/.claude/hooks/bmad-speak.sh +0 -0
  54. package/.claude/hooks/bmad-tts-injector.sh +0 -0
  55. package/.claude/hooks/bmad-voice-manager.sh +0 -0
  56. package/.claude/hooks/clawdbot-receiver-SECURE.sh +0 -0
  57. package/.claude/hooks/clawdbot-receiver.sh +0 -0
  58. package/.claude/hooks/clean-audio-cache.sh +0 -0
  59. package/.claude/hooks/cleanup-cache.sh +0 -0
  60. package/.claude/hooks/configure-rdp-mode.sh +0 -0
  61. package/.claude/hooks/download-extra-voices.sh +0 -0
  62. package/.claude/hooks/effects-manager.sh +0 -0
  63. package/.claude/hooks/github-star-reminder.sh +0 -0
  64. package/.claude/hooks/language-manager.sh +0 -0
  65. package/.claude/hooks/learn-manager.sh +0 -0
  66. package/.claude/hooks/macos-voice-manager.sh +0 -0
  67. package/.claude/hooks/migrate-background-music.sh +0 -0
  68. package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
  69. package/.claude/hooks/optimize-background-music.sh +0 -0
  70. package/.claude/hooks/path-resolver.sh +0 -0
  71. package/.claude/hooks/personality-manager.sh +0 -0
  72. package/.claude/hooks/piper-download-voices.sh +0 -0
  73. package/.claude/hooks/piper-installer.sh +0 -0
  74. package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
  75. package/.claude/hooks/piper-voice-manager.sh +0 -0
  76. package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +0 -0
  77. package/.claude/hooks/play-tts-enhanced.sh +0 -0
  78. package/.claude/hooks/play-tts-macos.sh +0 -0
  79. package/.claude/hooks/play-tts-piper.sh +1 -1
  80. package/.claude/hooks/play-tts-soprano.sh +0 -0
  81. package/.claude/hooks/play-tts-ssh-remote.sh +0 -0
  82. package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
  83. package/.claude/hooks/play-tts-windows-receiver.sh +0 -0
  84. package/.claude/hooks/play-tts.sh +4 -0
  85. package/.claude/hooks/post-response.sh +41 -0
  86. package/.claude/hooks/prepare-release.sh +0 -0
  87. package/.claude/hooks/provider-commands.sh +0 -0
  88. package/.claude/hooks/provider-manager.sh +0 -0
  89. package/.claude/hooks/replay-target-audio.sh +0 -0
  90. package/.claude/hooks/sentiment-manager.sh +0 -0
  91. package/.claude/hooks/session-start-tts.sh +0 -0
  92. package/.claude/hooks/soprano-gradio-synth.py +0 -0
  93. package/.claude/hooks/speed-manager.sh +0 -0
  94. package/.claude/hooks/stop-tts.sh +0 -0
  95. package/.claude/hooks/stop.sh +63 -0
  96. package/.claude/hooks/termux-installer.sh +0 -0
  97. package/.claude/hooks/translate-manager.sh +0 -0
  98. package/.claude/hooks/translator.py +0 -0
  99. package/.claude/hooks/tts-queue-worker.sh +0 -0
  100. package/.claude/hooks/tts-queue.sh +0 -0
  101. package/.claude/hooks/verbosity-manager.sh +0 -0
  102. package/.claude/hooks/voice-manager.sh +0 -0
  103. package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
  104. package/.claude/piper-voices-dir.txt +1 -0
  105. package/.clawdbot/README.md +105 -105
  106. package/.mcp.json +32 -3
  107. package/README.md +12 -2
  108. package/RELEASE_NOTES.md +29 -0
  109. package/WINDOWS-SETUP.md +208 -208
  110. package/bin/agent-vibes +0 -0
  111. package/bin/agentvibes-voice-browser.js +59 -4
  112. package/bin/agentvibes.js +0 -0
  113. package/bin/ensure-soprano-running.sh +43 -0
  114. package/bin/mcp-server.js +121 -121
  115. package/bin/mcp-server.sh +0 -0
  116. package/bin/test-bmad-pr +78 -78
  117. package/mcp-server/QUICK_START.md +203 -203
  118. package/mcp-server/README.md +345 -345
  119. package/mcp-server/WINDOWS_SETUP.md +260 -260
  120. package/mcp-server/docs/troubleshooting-audio.md +313 -313
  121. package/mcp-server/examples/claude_desktop_config.json +11 -11
  122. package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
  123. package/mcp-server/examples/custom_instructions.md +169 -169
  124. package/mcp-server/install-deps.js +177 -130
  125. package/mcp-server/server.py +1797 -1787
  126. package/mcp-server/test_server.py +0 -0
  127. package/package.json +1 -1
  128. package/src/console/tabs/music-tab.js +18 -2
  129. package/src/installer.js +0 -0
  130. package/templates/agentvibes-receiver.sh +0 -0
  131. package/templates/audio/welcome-music.mp3 +0 -0
  132. package/.claude/hooks/play-tts-agentvibes-receiver.sh +0 -1
package/WINDOWS-SETUP.md CHANGED
@@ -1,208 +1,208 @@
1
- # AgentVibes Windows Native Setup
2
-
3
- This folder contains AgentVibes configured for **native Windows** (not WSL) with three TTS providers available.
4
-
5
- ## Quick Start
6
-
7
- ### 1. Open in VS Code (Native Windows)
8
-
9
- - **File > Open Folder** > Select this folder (`agentvibes-in-windows`)
10
- - Make sure you're opening in **native Windows VS Code** (not WSL remote)
11
-
12
- ### 2. Open PowerShell Terminal
13
-
14
- - **Terminal > New Terminal**
15
- - Change shell to **PowerShell** (if needed)
16
-
17
- ### 3. Run Setup
18
-
19
- ```powershell
20
- .\setup-windows.ps1
21
- ```
22
-
23
- This script will:
24
- - Check PowerShell version (5.1+)
25
- - Create `.claude` directories
26
- - Let you choose TTS provider (Piper or SAPI)
27
- - Install Piper if you choose it
28
- - Download a default voice model
29
- - Test TTS
30
- - Configure for first use
31
-
32
- ### 4. Install Dependencies
33
-
34
- ```powershell
35
- npm install
36
- ```
37
-
38
- ### 5. Start Using AgentVibes
39
-
40
- Open a Claude Code session in this project. The SessionStart hook will automatically inject TTS protocol instructions, causing Claude to speak all responses.
41
-
42
- ## TTS Providers
43
-
44
- ### Option 1: Soprano (Best Quality)
45
- - **Quality**: Ultra-high (80M parameter neural model)
46
- - **Voices**: Single high-quality voice (Soprano-1.1-80M)
47
- - **Download**: `pip install soprano-tts`
48
- - **Setup**: Start WebUI with `soprano-webui` or API with `uvicorn soprano.server:app`
49
- - **Speed**: GPU-accelerated, very fast
50
- - **Features**: Gradio WebUI mode, OpenAI-compatible API mode, CLI fallback
51
-
52
- To set up Soprano:
53
- ```powershell
54
- # Install Soprano
55
- pip install soprano-tts
56
-
57
- # Start WebUI (recommended - stays running in background)
58
- soprano-webui
59
-
60
- # Set provider
61
- .\.claude\hooks-windows\provider-manager.ps1 set soprano
62
-
63
- # Test
64
- .\.claude\hooks-windows\play-tts-soprano.ps1 "Hello from Soprano"
65
- ```
66
-
67
- ### Option 2: Windows Piper (Recommended for Offline)
68
- - **Quality**: High (neural voices)
69
- - **Voices**: 50+ available
70
- - **Download**: ~100MB
71
- - **Setup**: Automatic (run `setup-windows.ps1`)
72
- - **Speed**: Offline synthesis
73
- - **Features**: All AgentVibes features supported
74
-
75
- ### Option 3: Windows SAPI (Built-in, Zero Setup)
76
- - **Quality**: Basic
77
- - **Voices**: ~10 built-in (David, Zira, Mark)
78
- - **Download**: 0 MB (no installation needed)
79
- - **Setup**: Select during `setup-windows.ps1`
80
- - **Speed**: Fast
81
- - **Features**: Core TTS only
82
-
83
- ## Claude Code Integration
84
-
85
- AgentVibes hooks into Claude Code via `.claude/settings.json`. The SessionStart hook runs automatically when Claude starts a session:
86
-
87
- ```json
88
- {
89
- "hooks": {
90
- "SessionStart": [{
91
- "hooks": [{
92
- "type": "command",
93
- "command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"$CLAUDE_PROJECT_DIR\\.claude\\hooks-windows\\session-start-tts.ps1\""
94
- }]
95
- }]
96
- }
97
- }
98
- ```
99
-
100
- This injects TTS protocol instructions so Claude speaks every response using the configured provider.
101
-
102
- ## Manual Commands
103
-
104
- Test TTS manually:
105
-
106
- ```powershell
107
- # Test current provider
108
- .\.claude\hooks-windows\play-tts.ps1 "Hello from Windows"
109
-
110
- # Test specific providers
111
- .\.claude\hooks-windows\play-tts-windows-sapi.ps1 "Hello SAPI"
112
- .\.claude\hooks-windows\play-tts-windows-piper.ps1 "Hello Piper"
113
- .\.claude\hooks-windows\play-tts-soprano.ps1 "Hello Soprano"
114
-
115
- # List available voices
116
- .\.claude\hooks-windows\voice-manager-windows.ps1 list
117
-
118
- # Switch voice (for Piper/SAPI)
119
- .\.claude\hooks-windows\voice-manager-windows.ps1 switch "en_US-lessac-high"
120
-
121
- # List providers
122
- .\.claude\hooks-windows\provider-manager.ps1 list
123
-
124
- # Switch provider
125
- .\.claude\hooks-windows\provider-manager.ps1 set soprano
126
- .\.claude\hooks-windows\provider-manager.ps1 set windows-piper
127
- .\.claude\hooks-windows\provider-manager.ps1 set windows-sapi
128
- ```
129
-
130
- ## Troubleshooting
131
-
132
- ### PowerShell Execution Policy Error
133
-
134
- If you get an "execution policy" error, run:
135
-
136
- ```powershell
137
- Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
138
- ```
139
-
140
- Then try again.
141
-
142
- ### No Audio Playing
143
-
144
- 1. Check Windows volume isn't muted
145
- 2. Try switching to SAPI provider (zero-setup): `.\.claude\hooks-windows\provider-manager.ps1 set windows-sapi`
146
- 3. Test SAPI directly: `.\.claude\hooks-windows\play-tts-windows-sapi.ps1 "test"`
147
-
148
- ### Soprano Not Detected
149
-
150
- 1. Ensure soprano-webui is running: `soprano-webui`
151
- 2. Check port 7860 is accessible: `Test-NetConnection -ComputerName 127.0.0.1 -Port 7860`
152
- 3. Set custom port if needed: `$env:SOPRANO_PORT = "8080"` before running TTS
153
-
154
- ### Piper Installation Failed
155
-
156
- 1. Check internet connection
157
- 2. Run setup again: `.\setup-windows.ps1`
158
- 3. Or manually download from: https://github.com/rhasspy/piper/releases
159
-
160
- ### Can't Find Voice
161
-
162
- For Piper, voices are stored in: `%USERPROFILE%\.claude\piper-voices\`
163
-
164
- You can download additional voices with `.\download-piper-voices.ps1`.
165
-
166
- ## Architecture
167
-
168
- ```
169
- agentvibes-in-windows/
170
- ├── .claude/
171
- │ ├── hooks-windows/ # PowerShell TTS scripts
172
- │ │ ├── play-tts.ps1 # Main router (dispatches to active provider)
173
- │ │ ├── play-tts-soprano.ps1 # Soprano provider
174
- │ │ ├── play-tts-windows-piper.ps1 # Piper provider
175
- │ │ ├── play-tts-windows-sapi.ps1 # SAPI provider
176
- │ │ ├── soprano-gradio-synth.py # Python helper for Soprano Gradio API
177
- │ │ ├── provider-manager.ps1 # Provider switching
178
- │ │ ├── voice-manager-windows.ps1 # Voice management
179
- │ │ ├── session-start-tts.ps1 # SessionStart hook (injects TTS protocol)
180
- │ │ └── audio-cache-utils.ps1 # Audio cache cleanup
181
- │ ├── settings.json # Claude Code hooks config
182
- │ ├── audio/ # Audio cache (auto-created)
183
- │ ├── piper-voices/ # Piper voice models (auto-created)
184
- │ └── tts-provider.txt # Active provider config
185
- ├── setup-windows.ps1 # Installation script
186
- ├── download-piper-voices.ps1 # Download additional Piper voices
187
- └── WINDOWS-SETUP.md # This file
188
- ```
189
-
190
- ## What's Different from WSL
191
-
192
- | Feature | WSL Version | Windows Native |
193
- |---------|-------------|----------------|
194
- | **TTS Scripts** | Bash shell scripts (.sh) | PowerShell scripts (.ps1) |
195
- | **Audio** | PulseAudio/paplay | System.Media.SoundPlayer |
196
- | **Providers** | Piper, macOS, Termux, Soprano | Piper, SAPI, Soprano |
197
- | **Setup** | WSL + PulseAudio config | Native Windows only |
198
- | **Hook Dir** | `.claude/hooks/` | `.claude/hooks-windows/` |
199
-
200
- ## Support
201
-
202
- - **Documentation**: https://agentvibes.org
203
- - **Issues**: https://github.com/paulpreibisch/AgentVibes/issues
204
-
205
- ---
206
-
207
- **Version**: 2.0 (Windows Native + Soprano)
208
- **Last Updated**: 2026-02-11
1
+ # AgentVibes Windows Native Setup
2
+
3
+ This folder contains AgentVibes configured for **native Windows** (not WSL) with three TTS providers available.
4
+
5
+ ## Quick Start
6
+
7
+ ### 1. Open in VS Code (Native Windows)
8
+
9
+ - **File > Open Folder** > Select this folder (`agentvibes-in-windows`)
10
+ - Make sure you're opening in **native Windows VS Code** (not WSL remote)
11
+
12
+ ### 2. Open PowerShell Terminal
13
+
14
+ - **Terminal > New Terminal**
15
+ - Change shell to **PowerShell** (if needed)
16
+
17
+ ### 3. Run Setup
18
+
19
+ ```powershell
20
+ .\setup-windows.ps1
21
+ ```
22
+
23
+ This script will:
24
+ - Check PowerShell version (5.1+)
25
+ - Create `.claude` directories
26
+ - Let you choose TTS provider (Piper or SAPI)
27
+ - Install Piper if you choose it
28
+ - Download a default voice model
29
+ - Test TTS
30
+ - Configure for first use
31
+
32
+ ### 4. Install Dependencies
33
+
34
+ ```powershell
35
+ npm install
36
+ ```
37
+
38
+ ### 5. Start Using AgentVibes
39
+
40
+ Open a Claude Code session in this project. The SessionStart hook will automatically inject TTS protocol instructions, causing Claude to speak all responses.
41
+
42
+ ## TTS Providers
43
+
44
+ ### Option 1: Soprano (Best Quality)
45
+ - **Quality**: Ultra-high (80M parameter neural model)
46
+ - **Voices**: Single high-quality voice (Soprano-1.1-80M)
47
+ - **Download**: `pip install soprano-tts`
48
+ - **Setup**: Start WebUI with `soprano-webui` or API with `uvicorn soprano.server:app`
49
+ - **Speed**: GPU-accelerated, very fast
50
+ - **Features**: Gradio WebUI mode, OpenAI-compatible API mode, CLI fallback
51
+
52
+ To set up Soprano:
53
+ ```powershell
54
+ # Install Soprano
55
+ pip install soprano-tts
56
+
57
+ # Start WebUI (recommended - stays running in background)
58
+ soprano-webui
59
+
60
+ # Set provider
61
+ .\.claude\hooks-windows\provider-manager.ps1 set soprano
62
+
63
+ # Test
64
+ .\.claude\hooks-windows\play-tts-soprano.ps1 "Hello from Soprano"
65
+ ```
66
+
67
+ ### Option 2: Windows Piper (Recommended for Offline)
68
+ - **Quality**: High (neural voices)
69
+ - **Voices**: 50+ available
70
+ - **Download**: ~100MB
71
+ - **Setup**: Automatic (run `setup-windows.ps1`)
72
+ - **Speed**: Offline synthesis
73
+ - **Features**: All AgentVibes features supported
74
+
75
+ ### Option 3: Windows SAPI (Built-in, Zero Setup)
76
+ - **Quality**: Basic
77
+ - **Voices**: ~10 built-in (David, Zira, Mark)
78
+ - **Download**: 0 MB (no installation needed)
79
+ - **Setup**: Select during `setup-windows.ps1`
80
+ - **Speed**: Fast
81
+ - **Features**: Core TTS only
82
+
83
+ ## Claude Code Integration
84
+
85
+ AgentVibes hooks into Claude Code via `.claude/settings.json`. The SessionStart hook runs automatically when Claude starts a session:
86
+
87
+ ```json
88
+ {
89
+ "hooks": {
90
+ "SessionStart": [{
91
+ "hooks": [{
92
+ "type": "command",
93
+ "command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"$CLAUDE_PROJECT_DIR\\.claude\\hooks-windows\\session-start-tts.ps1\""
94
+ }]
95
+ }]
96
+ }
97
+ }
98
+ ```
99
+
100
+ This injects TTS protocol instructions so Claude speaks every response using the configured provider.
101
+
102
+ ## Manual Commands
103
+
104
+ Test TTS manually:
105
+
106
+ ```powershell
107
+ # Test current provider
108
+ .\.claude\hooks-windows\play-tts.ps1 "Hello from Windows"
109
+
110
+ # Test specific providers
111
+ .\.claude\hooks-windows\play-tts-windows-sapi.ps1 "Hello SAPI"
112
+ .\.claude\hooks-windows\play-tts-windows-piper.ps1 "Hello Piper"
113
+ .\.claude\hooks-windows\play-tts-soprano.ps1 "Hello Soprano"
114
+
115
+ # List available voices
116
+ .\.claude\hooks-windows\voice-manager-windows.ps1 list
117
+
118
+ # Switch voice (for Piper/SAPI)
119
+ .\.claude\hooks-windows\voice-manager-windows.ps1 switch "en_US-lessac-high"
120
+
121
+ # List providers
122
+ .\.claude\hooks-windows\provider-manager.ps1 list
123
+
124
+ # Switch provider
125
+ .\.claude\hooks-windows\provider-manager.ps1 set soprano
126
+ .\.claude\hooks-windows\provider-manager.ps1 set windows-piper
127
+ .\.claude\hooks-windows\provider-manager.ps1 set windows-sapi
128
+ ```
129
+
130
+ ## Troubleshooting
131
+
132
+ ### PowerShell Execution Policy Error
133
+
134
+ If you get an "execution policy" error, run:
135
+
136
+ ```powershell
137
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
138
+ ```
139
+
140
+ Then try again.
141
+
142
+ ### No Audio Playing
143
+
144
+ 1. Check Windows volume isn't muted
145
+ 2. Try switching to SAPI provider (zero-setup): `.\.claude\hooks-windows\provider-manager.ps1 set windows-sapi`
146
+ 3. Test SAPI directly: `.\.claude\hooks-windows\play-tts-windows-sapi.ps1 "test"`
147
+
148
+ ### Soprano Not Detected
149
+
150
+ 1. Ensure soprano-webui is running: `soprano-webui`
151
+ 2. Check port 7860 is accessible: `Test-NetConnection -ComputerName 127.0.0.1 -Port 7860`
152
+ 3. Set custom port if needed: `$env:SOPRANO_PORT = "8080"` before running TTS
153
+
154
+ ### Piper Installation Failed
155
+
156
+ 1. Check internet connection
157
+ 2. Run setup again: `.\setup-windows.ps1`
158
+ 3. Or manually download from: https://github.com/rhasspy/piper/releases
159
+
160
+ ### Can't Find Voice
161
+
162
+ For Piper, voices are stored in: `%USERPROFILE%\.claude\piper-voices\`
163
+
164
+ You can download additional voices with `.\download-piper-voices.ps1`.
165
+
166
+ ## Architecture
167
+
168
+ ```
169
+ agentvibes-in-windows/
170
+ ├── .claude/
171
+ │ ├── hooks-windows/ # PowerShell TTS scripts
172
+ │ │ ├── play-tts.ps1 # Main router (dispatches to active provider)
173
+ │ │ ├── play-tts-soprano.ps1 # Soprano provider
174
+ │ │ ├── play-tts-windows-piper.ps1 # Piper provider
175
+ │ │ ├── play-tts-windows-sapi.ps1 # SAPI provider
176
+ │ │ ├── soprano-gradio-synth.py # Python helper for Soprano Gradio API
177
+ │ │ ├── provider-manager.ps1 # Provider switching
178
+ │ │ ├── voice-manager-windows.ps1 # Voice management
179
+ │ │ ├── session-start-tts.ps1 # SessionStart hook (injects TTS protocol)
180
+ │ │ └── audio-cache-utils.ps1 # Audio cache cleanup
181
+ │ ├── settings.json # Claude Code hooks config
182
+ │ ├── audio/ # Audio cache (auto-created)
183
+ │ ├── piper-voices/ # Piper voice models (auto-created)
184
+ │ └── tts-provider.txt # Active provider config
185
+ ├── setup-windows.ps1 # Installation script
186
+ ├── download-piper-voices.ps1 # Download additional Piper voices
187
+ └── WINDOWS-SETUP.md # This file
188
+ ```
189
+
190
+ ## What's Different from WSL
191
+
192
+ | Feature | WSL Version | Windows Native |
193
+ |---------|-------------|----------------|
194
+ | **TTS Scripts** | Bash shell scripts (.sh) | PowerShell scripts (.ps1) |
195
+ | **Audio** | PulseAudio/paplay | System.Media.SoundPlayer |
196
+ | **Providers** | Piper, macOS, Termux, Soprano | Piper, SAPI, Soprano |
197
+ | **Setup** | WSL + PulseAudio config | Native Windows only |
198
+ | **Hook Dir** | `.claude/hooks/` | `.claude/hooks-windows/` |
199
+
200
+ ## Support
201
+
202
+ - **Documentation**: https://agentvibes.org
203
+ - **Issues**: https://github.com/paulpreibisch/AgentVibes/issues
204
+
205
+ ---
206
+
207
+ **Version**: 2.0 (Windows Native + Soprano)
208
+ **Last Updated**: 2026-02-11
package/bin/agent-vibes CHANGED
File without changes
@@ -474,6 +474,51 @@ class AgentVibesVoiceBrowser {
474
474
  this.screen.render();
475
475
  }
476
476
 
477
+ /**
478
+ * Apply audio effects (reverb, background music) via audio-processor.sh.
479
+ * Falls back to rawFile if the processor is unavailable or fails.
480
+ * @param {string} rawFile - Path to the raw piper-generated WAV
481
+ * @returns {Promise<string>} Path to processed WAV (or rawFile on failure)
482
+ */
483
+ async applyEffects(rawFile) {
484
+ // Find audio-processor.sh relative to this script (bin/../.claude/hooks/)
485
+ const processorPath = path.resolve(path.join(__dirname, '..', '.claude', 'hooks', 'audio-processor.sh'));
486
+
487
+ // SECURITY: Validate path stays within the expected hooks directory
488
+ const hooksDir = path.resolve(path.join(__dirname, '..', '.claude', 'hooks'));
489
+ if (!processorPath.startsWith(hooksDir + path.sep) && processorPath !== hooksDir) {
490
+ return rawFile;
491
+ }
492
+
493
+ if (!fsSync.existsSync(processorPath)) {
494
+ return rawFile;
495
+ }
496
+
497
+ const processedFile = rawFile.replace(/\.wav$/, '-preview-proc.wav');
498
+ const env = { ...process.env, CLAUDE_PROJECT_DIR: process.cwd() };
499
+
500
+ return new Promise((resolve) => {
501
+ // Use 'bash' prefix so the script works even without execute permission (NPX cache)
502
+ const proc = spawn('bash', [processorPath, rawFile, 'llm:claude-code', processedFile, ''], {
503
+ stdio: ['ignore', 'pipe', 'ignore'],
504
+ env
505
+ });
506
+
507
+ proc.on('close', (code) => {
508
+ let stat;
509
+ try { stat = fsSync.statSync(processedFile); } catch { stat = null; }
510
+ if (code === 0 && stat && stat.size > 0) {
511
+ resolve(processedFile);
512
+ } else {
513
+ try { fsSync.unlinkSync(processedFile); } catch { /* ignore */ }
514
+ resolve(rawFile);
515
+ }
516
+ });
517
+
518
+ proc.on('error', () => resolve(rawFile));
519
+ });
520
+ }
521
+
477
522
  async playSample(row) {
478
523
  if (this.currentAudioProcess) {
479
524
  try {
@@ -574,10 +619,13 @@ class AgentVibesVoiceBrowser {
574
619
  }
575
620
  }
576
621
 
622
+ // Apply audio effects (reverb, background music) before playback
623
+ const playFile = await this.applyEffects(outputFile);
624
+
577
625
  const players = [
578
- { cmd: 'aplay', args: [outputFile] },
579
- { cmd: 'paplay', args: [outputFile] },
580
- { cmd: 'ffplay', args: ['-nodisp', '-autoexit', outputFile] }
626
+ { cmd: 'aplay', args: [playFile] },
627
+ { cmd: 'paplay', args: [playFile] },
628
+ { cmd: 'ffplay', args: ['-nodisp', '-autoexit', playFile] }
581
629
  ];
582
630
 
583
631
  for (const player of players) {
@@ -592,14 +640,21 @@ class AgentVibesVoiceBrowser {
592
640
  if (this.currentAudioProcess === audioProcess) {
593
641
  this.currentAudioProcess = null;
594
642
  }
643
+ // Clean up processed preview file (not the cached raw file)
644
+ if (playFile !== outputFile) {
645
+ try { fsSync.unlinkSync(playFile); } catch { /* ignore */ }
646
+ }
595
647
  this.statusBar.setContent(`{green-fg}✓ Played ${row.name}{/green-fg}`);
596
648
  this.screen.render();
597
649
  });
598
650
 
599
- audioProcess.on('error', (err) => {
651
+ audioProcess.on('error', () => {
600
652
  if (this.currentAudioProcess === audioProcess) {
601
653
  this.currentAudioProcess = null;
602
654
  }
655
+ if (playFile !== outputFile) {
656
+ try { fsSync.unlinkSync(playFile); } catch { /* ignore */ }
657
+ }
603
658
  });
604
659
 
605
660
  break;
package/bin/agentvibes.js CHANGED
File without changes
@@ -0,0 +1,43 @@
1
+ #!/bin/bash
2
+ # Helper script to start Soprano TTS server if available
3
+ # Fails gracefully if Soprano is not installed
4
+
5
+ set -euo pipefail
6
+
7
+ # Check if Soprano is installed via pipx
8
+ if ! command -v soprano &> /dev/null; then
9
+ # Soprano not in PATH, exit silently
10
+ exit 0
11
+ fi
12
+
13
+ # Check if server is already running
14
+ if curl -s -m 1 http://127.0.0.1:7860/openapi.json &> /dev/null; then
15
+ # Already running
16
+ exit 0
17
+ fi
18
+
19
+ # Try to start Soprano server
20
+ VENV_PATH="${HOME}/.local/share/pipx/venvs/soprano-tts"
21
+
22
+ if [ ! -d "$VENV_PATH" ]; then
23
+ # Soprano not installed via pipx, exit silently
24
+ exit 0
25
+ fi
26
+
27
+ # Start server in background
28
+ cd /tmp
29
+ nohup "${VENV_PATH}/bin/python" -m uvicorn soprano.server:app \
30
+ --host 127.0.0.1 \
31
+ --port 7860 \
32
+ > "${HOME}/.soprano-tts.log" 2>&1 &
33
+
34
+ # Wait a moment to see if it starts
35
+ sleep 2
36
+
37
+ # Check if it started successfully
38
+ if curl -s -m 1 http://127.0.0.1:7860/openapi.json &> /dev/null; then
39
+ exit 0
40
+ else
41
+ # Failed to start, but exit gracefully
42
+ exit 0
43
+ fi