agentvibes 5.10.1 → 5.11.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.
Files changed (160) hide show
  1. package/.agentvibes/config.json +15 -1
  2. package/.agentvibes/install-manifest.json +342 -0
  3. package/.claude/audio/ui/CREDITS.txt +16 -0
  4. package/.claude/audio/ui/bling-success.wav +0 -0
  5. package/.claude/commands/agent-vibes/receiver.md +64 -0
  6. package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
  7. package/.claude/commands/agent-vibes-rdp.md +24 -24
  8. package/.claude/config/audio-effects.cfg +5 -4
  9. package/.claude/config/audio-effects.cfg.sample +52 -52
  10. package/.claude/config/background-music-enabled.txt +1 -1
  11. package/.claude/config/background-music-position.txt +27 -0
  12. package/.claude/config/background-music-volume.txt +1 -0
  13. package/.claude/config/background-music.cfg +1 -0
  14. package/.claude/config/background-music.txt +1 -0
  15. package/.claude/config/language.txt +1 -0
  16. package/.claude/config/personality.txt +1 -0
  17. package/.claude/config/reverb-level.txt +1 -0
  18. package/.claude/config/tts-speech-rate.txt +1 -0
  19. package/.claude/config/tts-verbosity.txt +1 -0
  20. package/.claude/docs/TERMUX_SETUP.md +408 -408
  21. package/.claude/github-star-reminder.txt +1 -1
  22. package/.claude/hooks/audio-cache-utils.sh +0 -0
  23. package/.claude/hooks/audio-processor.sh +57 -18
  24. package/.claude/hooks/background-music-manager.sh +0 -0
  25. package/.claude/hooks/bmad-party-speak.sh +0 -0
  26. package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
  27. package/.claude/hooks/bmad-speak.sh +0 -0
  28. package/.claude/hooks/bmad-tts-injector.sh +0 -0
  29. package/.claude/hooks/bmad-voice-manager.sh +0 -0
  30. package/.claude/hooks/clawdbot-receiver-SECURE.sh +0 -0
  31. package/.claude/hooks/clawdbot-receiver.sh +0 -0
  32. package/.claude/hooks/clean-audio-cache.sh +0 -0
  33. package/.claude/hooks/cleanup-cache.sh +0 -0
  34. package/.claude/hooks/configure-rdp-mode.sh +0 -0
  35. package/.claude/hooks/download-extra-voices.sh +0 -0
  36. package/.claude/hooks/effects-manager.sh +0 -0
  37. package/.claude/hooks/github-star-reminder.sh +0 -0
  38. package/.claude/hooks/kokoro-installer.sh +117 -0
  39. package/.claude/hooks/kokoro-server.py +219 -0
  40. package/.claude/hooks/kokoro-tts.py +141 -0
  41. package/.claude/hooks/language-manager.sh +0 -0
  42. package/.claude/hooks/learn-manager.sh +0 -0
  43. package/.claude/hooks/macos-voice-manager.sh +0 -0
  44. package/.claude/hooks/migrate-background-music.sh +0 -0
  45. package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
  46. package/.claude/hooks/optimize-background-music.sh +0 -0
  47. package/.claude/hooks/path-resolver.sh +0 -0
  48. package/.claude/hooks/personality-manager.sh +0 -0
  49. package/.claude/hooks/piper-download-voices.sh +39 -16
  50. package/.claude/hooks/piper-installer.sh +11 -6
  51. package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
  52. package/.claude/hooks/piper-voice-manager.sh +6 -6
  53. package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +3 -1
  54. package/.claude/hooks/play-tts-agentvibes-receiver.sh +1 -0
  55. package/.claude/hooks/play-tts-elevenlabs.sh +360 -0
  56. package/.claude/hooks/play-tts-enhanced.sh +0 -0
  57. package/.claude/hooks/play-tts-kokoro.sh +127 -0
  58. package/.claude/hooks/play-tts-macos.sh +0 -0
  59. package/.claude/hooks/play-tts-piper.sh +0 -0
  60. package/.claude/hooks/play-tts-soprano.sh +0 -0
  61. package/.claude/hooks/play-tts-ssh-remote.sh +9 -2
  62. package/.claude/hooks/play-tts-termux-ssh.sh +3 -1
  63. package/.claude/hooks/play-tts-windows-receiver.sh +0 -0
  64. package/.claude/hooks/play-tts.sh +78 -2
  65. package/.claude/hooks/prepare-release.sh +0 -0
  66. package/.claude/hooks/provider-commands.sh +71 -22
  67. package/.claude/hooks/provider-manager.sh +15 -7
  68. package/.claude/hooks/replay-target-audio.sh +0 -0
  69. package/.claude/hooks/requirements.txt +6 -6
  70. package/.claude/hooks/sentiment-manager.sh +0 -0
  71. package/.claude/hooks/session-start-tts.sh +0 -0
  72. package/.claude/hooks/soprano-gradio-synth.py +139 -139
  73. package/.claude/hooks/speed-manager.sh +0 -0
  74. package/.claude/hooks/stop-tts.sh +0 -0
  75. package/.claude/hooks/termux-installer.sh +0 -0
  76. package/.claude/hooks/translate-manager.sh +0 -0
  77. package/.claude/hooks/translator.py +237 -237
  78. package/.claude/hooks/tts-queue-worker.sh +0 -0
  79. package/.claude/hooks/tts-queue.sh +0 -0
  80. package/.claude/hooks/verbosity-manager.sh +0 -0
  81. package/.claude/hooks/voice-manager.sh +0 -0
  82. package/.claude/hooks-windows/audio-cache-utils.ps1.user.bak +119 -0
  83. package/.claude/hooks-windows/kokoro-server.py +219 -0
  84. package/.claude/hooks-windows/kokoro-tts.py +107 -0
  85. package/.claude/hooks-windows/play-tts-kokoro.ps1 +191 -0
  86. package/.claude/hooks-windows/play-tts.ps1 +29 -1
  87. package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
  88. package/.claude/hooks-windows/soprano-gradio-synth.py.user.bak +153 -0
  89. package/.claude/piper-voices-dir.txt +1 -0
  90. package/.claude/verbosity.txt +1 -1
  91. package/.clawdbot/README.md +105 -105
  92. package/.mcp.json +6 -19
  93. package/README.md +127 -2116
  94. package/RELEASE_NOTES.md +73 -0
  95. package/WINDOWS-SETUP.md +208 -208
  96. package/bin/agent-vibes +39 -39
  97. package/bin/agentvibes-voice-browser.js +0 -0
  98. package/bin/agentvibes.js +0 -0
  99. package/bin/mcp-server.js +121 -121
  100. package/bin/mcp-server.sh +0 -0
  101. package/bin/test-bmad-pr +78 -78
  102. package/mcp-server/QUICK_START.md +203 -203
  103. package/mcp-server/README.md +345 -345
  104. package/mcp-server/WINDOWS_SETUP.md +0 -0
  105. package/mcp-server/examples/claude_desktop_config.json +11 -11
  106. package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
  107. package/mcp-server/examples/custom_instructions.md +169 -169
  108. package/mcp-server/install-deps.js +0 -0
  109. package/mcp-server/server.py +1807 -1807
  110. package/mcp-server/test_server.py +0 -0
  111. package/package.json +4 -3
  112. package/src/cli/list-personalities.js +110 -110
  113. package/src/cli/list-voices.js +114 -114
  114. package/src/commands/bmad-voices.js +394 -394
  115. package/src/commands/install-mcp.js +3 -3
  116. package/src/console/app.js +25 -9
  117. package/src/console/audio-env.js +85 -1
  118. package/src/console/brand-colors.js +13 -13
  119. package/src/console/constants/personalities.js +44 -44
  120. package/src/console/navigation.js +4 -0
  121. package/src/console/tabs/agents-tab.js +12 -6
  122. package/src/console/tabs/help-tab.js +314 -314
  123. package/src/console/tabs/music-tab.js +7 -25
  124. package/src/console/tabs/readme-tab.js +272 -272
  125. package/src/console/tabs/setup-tab.js +1704 -120
  126. package/src/console/tabs/voices-tab.js +72 -88
  127. package/src/console/widgets/destroy-list.js +25 -25
  128. package/src/console/widgets/format-utils.js +14 -2
  129. package/src/console/widgets/help-bar.js +55 -0
  130. package/src/console/widgets/notice.js +55 -55
  131. package/src/console/widgets/reverb-picker.js +429 -41
  132. package/src/console/widgets/track-picker.js +60 -51
  133. package/src/i18n/de.js +2 -1
  134. package/src/i18n/en.js +1 -0
  135. package/src/i18n/es.js +2 -1
  136. package/src/i18n/fr.js +2 -1
  137. package/src/i18n/hi.js +2 -1
  138. package/src/i18n/ja.js +2 -1
  139. package/src/i18n/ko.js +2 -1
  140. package/src/i18n/pt.js +2 -1
  141. package/src/i18n/strings.js +9 -9
  142. package/src/i18n/zh-CN.js +2 -1
  143. package/src/installer/language-screen.js +31 -31
  144. package/src/installer/music-file-input.js +304 -304
  145. package/src/installer.js +95 -7
  146. package/src/services/config-service.js +264 -264
  147. package/src/services/language-service.js +47 -47
  148. package/src/services/provider-service.js +35 -0
  149. package/src/services/provider-voice-catalog.js +126 -0
  150. package/src/services/tts-engine-service.js +51 -2
  151. package/src/utils/audio-duration-validator.js +53 -10
  152. package/src/utils/audio-format-validator.js +277 -277
  153. package/src/utils/dependency-checker.js +469 -469
  154. package/src/utils/file-ownership-verifier.js +358 -358
  155. package/src/utils/music-file-validator.js +285 -285
  156. package/src/utils/preview-list-prompt.js +144 -136
  157. package/src/utils/provider-validator.js +70 -0
  158. package/src/utils/secure-music-storage.js +412 -412
  159. package/templates/agentvibes-receiver.sh +235 -231
  160. package/templates/audio/welcome-music.mp3 +0 -0
package/RELEASE_NOTES.md CHANGED
@@ -1,5 +1,78 @@
1
1
  # AgentVibes Release Notes
2
2
 
3
+ ## 🧾 v5.11.1 — README Overhaul (docs only)
4
+
5
+ **Released:** 2026-06-27
6
+
7
+ A documentation release so the npm package page reflects the rewritten README. **No functional changes since 5.11.0.**
8
+
9
+ - Rewrote `README.md` to be value-first: a clear elevator pitch, **explained** features, and the v5.11.0 highlights — trimmed from ~2,150 lines to ~235.
10
+ - Removed the long inline version changelog; version history now lives here and in [GitHub Releases](https://github.com/paulpreibisch/AgentVibes/releases).
11
+
12
+ See **v5.11.0** below for the full feature list (Kokoro + ElevenLabs providers, combinable audio effects, provider-aware BMAD auto-assign, streamlined voices tab, rock-solid CI).
13
+
14
+ ---
15
+
16
+ ## 🎙️ v5.11.0 — Kokoro & ElevenLabs Providers, Unified Pickers, Windows SAPI, Rock-Solid CI
17
+
18
+ **Released:** 2026-06-26
19
+
20
+ This is a big one. AgentVibes gains two new TTS engines — **Kokoro** (high-quality local neural voices, including Chinese/Japanese/Korean) and **ElevenLabs** (premium cloud voices) — combinable audio effects, a unified selector UI, a Windows SAPI routing fix, and a deterministically green test suite. It also rolls up everything from the earlier 5.11.0 preview (LibriTTS 900+ voices, setup UX).
21
+
22
+ ### 🆕 New TTS Provider: Kokoro (local neural voices)
23
+ - Browse and preview Kokoro voices from the Setup tab using the standardized picker.
24
+ - **CPU synthesis** path so it runs without a GPU.
25
+ - Smart dependency detection with in-TUI install dialogs — installs `kokoro`, `soundfile`, and `numpy` together, with a real progress bar (not just a spinner).
26
+ - **CJK support**: Chinese, Japanese, and Korean voices, with per-language `misaki` / `pyopenjtalk` dependency handling and native sample phrases.
27
+ - Windows playback fixed (Forms assembly load, correct paths, clearer exit-code errors).
28
+ - A readiness "bling" cue (bundled CC0 sound) signals when a voice is ready to preview.
29
+
30
+ ### 🆕 New TTS Provider: ElevenLabs (premium cloud voices)
31
+ - API-key dialog built into the Setup tab, with a navigation hint and Escape-to-close.
32
+ - Routed through the same per-LLM voice system as every other provider.
33
+
34
+ ### 🎚️ New: Combinable Audio Effects — Reverb · Echo · Chorus
35
+ Give any voice real character. A new multi-select effects modal lets you stack **reverb**, **echo**, and **chorus** independently:
36
+ - **Reverb:** Room, Hall, Cathedral, and Warm (reverb + bass).
37
+ - **Echo:** Echo (short delay) and Cave Echo (long) — brand new; there was no echo before.
38
+ - **Chorus** for a richer, doubled timbre.
39
+ - Effects **combine** (e.g. a little reverb *plus* a short echo), preview live with Space, and the picker now speaks the effect name and shows a spinner while auditioning.
40
+
41
+ ### 🎨 Unified Selector Chrome
42
+ - All selector pickers (voices, tracks, reverb/effects) now share a common help bar, title style, and a fixed-width voice-row formatter — a consistent look and aligned status columns across every picker.
43
+
44
+ ### 🪟 Windows SAPI Routing Fixed
45
+ - The bash hook router now recognizes the `sapi` / `windows-sapi` provider and routes to `play-tts-sapi.ps1` correctly (previously errored with "Unknown provider: sapi").
46
+
47
+ ### 🎤 Voices & BMAD Tab Improvements
48
+ - **Streamlined, keystroke-only voice list.** Removed the redundant Switch / Favorite / Download button row — **Enter** selects (and downloads an uninstalled Piper voice first), **Space** previews, and **`f`** toggles a favorite ★. Thumbs-up/thumbs-down collapsed into a single favorite star.
49
+ - **Removed the confusing "Install BMAD Voices" button.** Bulk voice downloads are available from the CLI (`npx agentvibes voices download`) instead.
50
+ - **BMAD auto-assign now respects the active provider.** Pressing **[A] Auto-assign** previously always picked Piper voices; it now assigns voices from whichever provider is currently selected (Piper, Kokoro, ElevenLabs, soprano, …).
51
+
52
+ ### 🎛️ Picker & Preview Polish
53
+ - **Effects preview:** correct voice + effect routing, an inline spinner on the item row, and a `pyopenjtalk` install prompt where needed.
54
+ - **Track picker:** uses an `ffmpeg → pacat` pipe on headless PulseAudio TCP servers so previews work in remote/headless setups.
55
+ - **Navigation:** pressing a tab's shortcut key while already on that tab is now a no-op.
56
+
57
+ ### 🧪 Rock-Solid CI (no more flaky failures)
58
+ - Eliminated the intermittent CI red: fixed a `blessed.log()`-after-teardown crash in the Voices tab that randomly failed an innocent test file, and added a coverage runner (`scripts/run-coverage.mjs`) that gates on the actual reported test results instead of node's flaky `--test-force-exit` exit code. Real failures still fail the build; node's force-exit artifacts are tolerated.
59
+ - Test audio is fully silenced during runs (marker file + env flags) so the suite never bleeds to your speakers.
60
+
61
+ ### 🐛 Audio Robustness Fixes
62
+ - `getAudioDuration()` now attaches an error listener to its `which ffprobe` probe (previously this could throw an unhandled error and crash on Windows, where `which` doesn't exist) and bounds both spawns with 5s/10s timeouts so a stalled `ffprobe` can never hang the caller.
63
+ - The interactive voice-preview prompt now releases (`pause()`) the stdin handle it opens, so the process exits cleanly instead of lingering.
64
+
65
+ ### 📦 Also in 5.11.0 (earlier preview)
66
+ - LibriTTS 900+ voice library offer during install (~114 MB, 904 speakers).
67
+ - Linux Piper install now uses the project's own `piper-installer.sh --non-interactive`.
68
+ - Setup tab: spinner during engine install, smarter Tab navigation to Continue, install timeout raised to 30 minutes.
69
+
70
+ ### 🛡️ Quality
71
+ - Full test suite green. New audio code covered: `audio-duration-validator` 96%, `preview-list-prompt` 90%.
72
+ - Known pre-existing: `piper-voice-manager.sh` / `piper-installer.sh` use partial shell strict mode; tracked for a future hardening pass.
73
+
74
+ ---
75
+
3
76
  ## 🔧 v5.9.0 — SSH Remote + Windows Home Directory Fixes
4
77
 
5
78
  **Released:** 2026-05-18
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
@@ -1,40 +1,40 @@
1
1
  #!/usr/bin/env node
2
-
3
- /**
4
- * AgentVibes - Beautiful ElevenLabs TTS voice commands for Claude Code
5
- * This file ensures proper execution when run via npx
6
- */
7
-
8
- import { execFileSync } from 'node:child_process';
9
- import path from 'node:path';
10
- import fs from 'node:fs';
11
- import { fileURLToPath } from 'node:url';
12
-
13
- const __filename = fileURLToPath(import.meta.url);
14
- const __dirname = path.dirname(__filename);
15
-
16
- // Check if we're running in an npx temporary directory
17
- const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm');
18
-
19
- // Get CLI arguments
20
- const arguments_ = process.argv.slice(2);
21
-
22
- // Route through the TUI console (agentvibes.js) which handles install/config/etc
23
- const installerPath = path.join(__dirname, 'agentvibes.js');
24
-
25
- if (!fs.existsSync(installerPath)) {
26
- console.error('Error: Could not find installer.js at', installerPath);
27
- console.error('Current directory:', __dirname);
28
- process.exit(1);
29
- }
30
-
31
- try {
32
- // Security: Use execFileSync with array args to prevent command injection
33
- // Arguments are passed as array elements, not string interpolation
34
- execFileSync('node', [installerPath, ...arguments_], {
35
- stdio: 'inherit',
36
- cwd: path.dirname(__dirname),
37
- });
38
- } catch (error) {
39
- process.exit(error.status || 1);
40
- }
2
+
3
+ /**
4
+ * AgentVibes - Beautiful ElevenLabs TTS voice commands for Claude Code
5
+ * This file ensures proper execution when run via npx
6
+ */
7
+
8
+ import { execFileSync } from 'node:child_process';
9
+ import path from 'node:path';
10
+ import fs from 'node:fs';
11
+ import { fileURLToPath } from 'node:url';
12
+
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = path.dirname(__filename);
15
+
16
+ // Check if we're running in an npx temporary directory
17
+ const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm');
18
+
19
+ // Get CLI arguments
20
+ const arguments_ = process.argv.slice(2);
21
+
22
+ // Route through the TUI console (agentvibes.js) which handles install/config/etc
23
+ const installerPath = path.join(__dirname, 'agentvibes.js');
24
+
25
+ if (!fs.existsSync(installerPath)) {
26
+ console.error('Error: Could not find installer.js at', installerPath);
27
+ console.error('Current directory:', __dirname);
28
+ process.exit(1);
29
+ }
30
+
31
+ try {
32
+ // Security: Use execFileSync with array args to prevent command injection
33
+ // Arguments are passed as array elements, not string interpolation
34
+ execFileSync('node', [installerPath, ...arguments_], {
35
+ stdio: 'inherit',
36
+ cwd: path.dirname(__dirname),
37
+ });
38
+ } catch (error) {
39
+ process.exit(error.status || 1);
40
+ }
File without changes
package/bin/agentvibes.js CHANGED
File without changes