agentvibes 5.7.7 → 5.9.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.
Files changed (138) hide show
  1. package/.agentvibes/config.json +12 -5
  2. package/.agentvibes/install-manifest.json +188 -300
  3. package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
  4. package/.claude/commands/agent-vibes-rdp.md +24 -24
  5. package/.claude/config/audio-effects.cfg +3 -2
  6. package/.claude/config/audio-effects.cfg.sample +52 -52
  7. package/.claude/config/background-music-enabled.txt +1 -0
  8. package/.claude/config/background-music-position.txt +1 -1
  9. package/.claude/config/language.txt +1 -0
  10. package/.claude/docs/TERMUX_SETUP.md +408 -408
  11. package/.claude/github-star-reminder.txt +1 -1
  12. package/.claude/hooks/audio-cache-utils.sh +0 -0
  13. package/.claude/hooks/audio-processor.sh +0 -0
  14. package/.claude/hooks/background-music-manager.sh +0 -0
  15. package/.claude/hooks/bmad-party-speak.sh +0 -0
  16. package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
  17. package/.claude/hooks/bmad-speak.sh +0 -0
  18. package/.claude/hooks/bmad-tts-injector.sh +0 -0
  19. package/.claude/hooks/bmad-voice-manager.sh +0 -0
  20. package/.claude/hooks/clawdbot-receiver-SECURE.sh +0 -0
  21. package/.claude/hooks/clawdbot-receiver.sh +0 -0
  22. package/.claude/hooks/clean-audio-cache.sh +0 -0
  23. package/.claude/hooks/cleanup-cache.sh +0 -0
  24. package/.claude/hooks/configure-rdp-mode.sh +0 -0
  25. package/.claude/hooks/download-extra-voices.sh +0 -0
  26. package/.claude/hooks/effects-manager.sh +0 -0
  27. package/.claude/hooks/github-star-reminder.sh +0 -0
  28. package/.claude/hooks/language-manager.sh +0 -0
  29. package/.claude/hooks/learn-manager.sh +0 -0
  30. package/.claude/hooks/macos-voice-manager.sh +0 -0
  31. package/.claude/hooks/migrate-background-music.sh +0 -0
  32. package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
  33. package/.claude/hooks/optimize-background-music.sh +0 -0
  34. package/.claude/hooks/path-resolver.sh +0 -0
  35. package/.claude/hooks/personality-manager.sh +0 -0
  36. package/.claude/hooks/piper-download-voices.sh +0 -0
  37. package/.claude/hooks/piper-installer.sh +0 -0
  38. package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
  39. package/.claude/hooks/piper-voice-manager.sh +0 -0
  40. package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +0 -0
  41. package/.claude/hooks/play-tts-agentvibes-receiver.sh +1 -0
  42. package/.claude/hooks/play-tts-enhanced.sh +0 -0
  43. package/.claude/hooks/play-tts-macos.sh +0 -0
  44. package/.claude/hooks/play-tts-piper.sh +0 -0
  45. package/.claude/hooks/play-tts-soprano.sh +0 -0
  46. package/.claude/hooks/play-tts-ssh-remote.sh +2 -2
  47. package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
  48. package/.claude/hooks/play-tts-windows-receiver.sh +0 -0
  49. package/.claude/hooks/play-tts.sh +0 -0
  50. package/.claude/hooks/prepare-release.sh +0 -0
  51. package/.claude/hooks/provider-commands.sh +0 -0
  52. package/.claude/hooks/provider-manager.sh +0 -0
  53. package/.claude/hooks/replay-target-audio.sh +0 -0
  54. package/.claude/hooks/requirements.txt +6 -6
  55. package/.claude/hooks/sentiment-manager.sh +0 -0
  56. package/.claude/hooks/session-start-tts.sh +0 -0
  57. package/.claude/hooks/soprano-gradio-synth.py +139 -139
  58. package/.claude/hooks/speed-manager.sh +0 -0
  59. package/.claude/hooks/stop-tts.sh +0 -0
  60. package/.claude/hooks/termux-installer.sh +0 -0
  61. package/.claude/hooks/translate-manager.sh +0 -0
  62. package/.claude/hooks/translator.py +237 -237
  63. package/.claude/hooks/tts-queue-worker.sh +0 -0
  64. package/.claude/hooks/tts-queue.sh +0 -0
  65. package/.claude/hooks/verbosity-manager.sh +0 -0
  66. package/.claude/hooks/voice-manager.sh +0 -0
  67. package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
  68. package/.claude/hooks-windows/audio-cache-utils.ps1.user.bak +119 -0
  69. package/.claude/hooks-windows/bmad-speak.ps1 +9 -38
  70. package/.claude/hooks-windows/play-tts-soprano.ps1 +13 -2
  71. package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
  72. package/.claude/hooks-windows/soprano-gradio-synth.py.user.bak +153 -0
  73. package/.claude/piper-voices-dir.txt +1 -1
  74. package/.claude/verbosity.txt +1 -1
  75. package/.clawdbot/README.md +105 -105
  76. package/.mcp.json +5 -14
  77. package/README.md +33 -2
  78. package/RELEASE_NOTES.md +80 -0
  79. package/WINDOWS-SETUP.md +208 -208
  80. package/bin/agent-vibes +39 -39
  81. package/bin/agentvibes-voice-browser.js +0 -0
  82. package/bin/agentvibes.js +0 -0
  83. package/bin/mcp-server.js +121 -121
  84. package/bin/mcp-server.sh +0 -0
  85. package/bin/test-bmad-pr +78 -78
  86. package/mcp-server/QUICK_START.md +203 -203
  87. package/mcp-server/README.md +345 -345
  88. package/mcp-server/WINDOWS_SETUP.md +0 -0
  89. package/mcp-server/examples/claude_desktop_config.json +11 -11
  90. package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
  91. package/mcp-server/examples/custom_instructions.md +169 -169
  92. package/mcp-server/install-deps.js +0 -0
  93. package/mcp-server/server.py +1797 -1797
  94. package/mcp-server/test_server.py +0 -0
  95. package/package.json +1 -1
  96. package/src/cli/list-personalities.js +110 -110
  97. package/src/cli/list-voices.js +114 -114
  98. package/src/commands/bmad-voices.js +394 -394
  99. package/src/commands/install-mcp.js +476 -476
  100. package/src/console/audio-env.js +4 -1
  101. package/src/console/brand-colors.js +13 -13
  102. package/src/console/constants/personalities.js +44 -44
  103. package/src/console/tabs/agents-tab.js +84 -61
  104. package/src/console/tabs/help-tab.js +314 -314
  105. package/src/console/tabs/music-tab.js +3 -2
  106. package/src/console/tabs/readme-tab.js +272 -272
  107. package/src/console/tabs/setup-tab.js +285 -41
  108. package/src/console/tabs/voices-tab.js +13 -1
  109. package/src/console/widgets/destroy-list.js +25 -25
  110. package/src/console/widgets/notice.js +55 -55
  111. package/src/i18n/de.js +202 -202
  112. package/src/i18n/es.js +202 -202
  113. package/src/i18n/fr.js +202 -202
  114. package/src/i18n/hi.js +202 -202
  115. package/src/i18n/ja.js +202 -202
  116. package/src/i18n/ko.js +202 -202
  117. package/src/i18n/pt.js +202 -202
  118. package/src/i18n/strings.js +54 -54
  119. package/src/i18n/zh-CN.js +202 -202
  120. package/src/installer/language-screen.js +31 -31
  121. package/src/installer/music-file-input.js +304 -304
  122. package/src/installer.js +0 -0
  123. package/src/services/config-service.js +264 -264
  124. package/src/services/language-service.js +47 -47
  125. package/src/services/provider-service.js +143 -143
  126. package/src/utils/audio-duration-validator.js +298 -298
  127. package/src/utils/audio-format-validator.js +277 -277
  128. package/src/utils/dependency-checker.js +469 -469
  129. package/src/utils/file-ownership-verifier.js +358 -358
  130. package/src/utils/list-formatter.js +194 -194
  131. package/src/utils/music-file-validator.js +285 -285
  132. package/src/utils/preview-list-prompt.js +136 -136
  133. package/src/utils/secure-music-storage.js +412 -412
  134. package/templates/agentvibes-receiver.sh +231 -231
  135. package/templates/audio/welcome-music.mp3 +0 -0
  136. package/.claude/hooks/bmad-party-manager.sh +0 -225
  137. package/.claude/hooks/stop.sh +0 -38
  138. /package/.claude/audio/tracks/{CelestialVelvet.mp3 → celestial_velvet.mp3} +0 -0
package/.mcp.json CHANGED
@@ -1,30 +1,21 @@
1
1
  {
2
2
  "mcpServers": {
3
- "agentvibes": {
3
+ "firecrawl-mcp": {
4
4
  "command": "npx",
5
5
  "args": [
6
6
  "-y",
7
- "--package=agentvibes",
8
- "agentvibes-mcp-server"
9
- ],
10
- "env": {
11
- "AGENTVIBES_MCP_FALLBACK": "copilot"
12
- }
13
- },
14
- "firecrawl": {
15
- "command": "npx",
16
- "args": [
17
7
  "firecrawl-mcp"
18
8
  ]
19
9
  },
20
- "context7": {
10
+ "agentvibes": {
21
11
  "command": "npx",
22
12
  "args": [
23
13
  "-y",
24
- "@upstash/context7-mcp"
14
+ "--package=agentvibes",
15
+ "agentvibes-mcp-server"
25
16
  ],
26
17
  "env": {
27
- "CONTEXT7_API_KEY": "${CONTEXT7_API_KEY}"
18
+ "AGENTVIBES_MCP_FALLBACK": "copilot"
28
19
  }
29
20
  }
30
21
  }
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![Publish](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml/badge.svg)](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
12
12
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
13
13
 
14
- **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v5.7.7
14
+ **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v5.9.0
15
15
 
16
16
  ---
17
17
 
@@ -40,7 +40,33 @@ Whether you're coding in Claude Code, chatting in Claude Desktop, using Warp Ter
40
40
 
41
41
  ---
42
42
 
43
- ## 🌟 NEW IN v5.7.7Party Mode Voice Restore + Polish
43
+ ## 🌟 NEW IN v5.9.0SSH Remote + Windows Home Directory Fixes
44
+
45
+ **SSH remote no longer hangs:** The SSH transport now applies a 10-second connection
46
+ timeout, so a stuck or unreachable remote host surfaces an error quickly instead of
47
+ blocking forever.
48
+
49
+ **Windows home directory detection fixed:** `detectRemoteLlm()` now uses null-coalescing
50
+ (`??`) to fall back to `os.homedir()` only when `HOME` is genuinely unset — safer than
51
+ the previous `||` which could misfire on an empty string.
52
+
53
+ ## v5.8.0 — Soprano Now Works + Voice Picker Fixed for All Engines
54
+
55
+ **Soprano TTS actually works now:** Soprano (our neural TTS engine) was silently broken
56
+ on Windows since launch — wrong binary name, stripped PATH, wav path sent to the wrong
57
+ output stream, and no auto-start for the WebUI server. All fixed. Install with
58
+ `pip install soprano-tts`, select Soprano in the setup tab, and AgentVibes handles
59
+ the rest.
60
+
61
+ **Voice picker now works for Windows SAPI and macOS Say:** Previously the picker showed
62
+ the entire Piper voice catalog even when SAPI or macOS Say was selected, and Space-bar
63
+ preview played through the wrong engine. The picker now shows exactly one item for each
64
+ native engine and previews through the correct binary.
65
+
66
+ **Auto-save no longer breaks your engine setting:** Saving an LLM config no longer silently
67
+ overwrites your chosen engine back to Piper.
68
+
69
+ ## v5.7.7 — Party Mode Voice Restore + Polish
44
70
 
45
71
  **Party mode agents now speak again:** BMAD `/party-mode` now reliably invokes the correct AgentVibes skill, and each agent's response is spoken aloud in their unique voice with per-agent music, pretext, and reverb — loaded automatically from `~/.agentvibes/bmad-voice-map.json`.
46
72
 
@@ -220,6 +246,11 @@ Replace the default background tracks with your own audio files for complete son
220
246
  - Automatic format detection
221
247
  - Duration warnings for non-optimal lengths
222
248
 
249
+ **Custom Track Naming Rules:**
250
+ - Use `snake_case` filenames only — e.g. `my_focus_music.mp3` ✅
251
+ - No spaces or uppercase letters in filenames — e.g. `My Focus Music.mp3` ❌
252
+ - Misnamed files will not appear in the music picker and will be skipped by the audio engine
253
+
223
254
  **Perfect for:**
224
255
  - 🎸 **Team Audio Branding** - Company theme music
225
256
  - 🎮 **Gaming Sessions** - Epic background tracks
package/RELEASE_NOTES.md CHANGED
@@ -1,5 +1,85 @@
1
1
  # AgentVibes Release Notes
2
2
 
3
+ ## 🔧 v5.9.0 — SSH Remote + Windows Home Directory Fixes
4
+
5
+ **Released:** 2026-05-18
6
+
7
+ ### 🐛 SSH Remote: Connection Timeout Added
8
+
9
+ The SSH remote transport could hang indefinitely if the remote host was unreachable or
10
+ slow to respond. A `ConnectTimeout=10` option is now applied to all SSH connections, so
11
+ a stuck session surfaces an error within 10 seconds instead of blocking forever.
12
+
13
+ The SSH subshell structure was also cleaned up so the process exit code is reliably
14
+ captured — a previous formatting issue could cause `wait` to report "pid N is not a
15
+ child of this shell" in some shell environments.
16
+
17
+ ### 🐛 Windows: Home Directory Detection Fixed
18
+
19
+ `detectRemoteLlm()` used `process.env.HOME || os.homedir()` to find the AgentVibes
20
+ config directory. On Windows, `HOME` is typically unset, but `||` would fall through to
21
+ `os.homedir()` correctly — however `??` (null-coalescing) is strictly safer since it
22
+ only falls back on `null`/`undefined`, not on an empty string. The fix also adds test
23
+ injectability: passing a fake `HOME` in tests now reliably overrides the system value on
24
+ all platforms.
25
+
26
+ ---
27
+
28
+ ## 🎸 v5.8.0 — Soprano Now Works + Voice Picker Fixed for All Engines
29
+
30
+ **Released:** 2026-05-18
31
+
32
+ ### 🐛 Soprano TTS Was Broken — Now Fixed
33
+
34
+ Soprano (our 80M-parameter neural TTS engine, introduced in v5.6) was silently failing on
35
+ Windows. Several issues combined to break it end-to-end:
36
+
37
+ - The Windows voice picker showed Soprano as an option but launched it with the wrong binary
38
+ name (`soprano-tts` instead of `soprano`)
39
+ - `play-tts-soprano.ps1` was called from Node.js with a stripped PATH, so the `soprano`
40
+ and `soprano-webui` executables couldn't be found even when installed
41
+ - The wav file path was written to PowerShell's Information stream (`Write-Host`) instead
42
+ of stdout, so the reverb/background-music processor couldn't find it and exited with an error
43
+ - The Gradio WebUI was never auto-started — you had to manually run `soprano-webui` before
44
+ every session
45
+
46
+ All of these are now fixed. AgentVibes auto-detects whether the Soprano WebUI server is
47
+ running on port 7860, starts it if not, and polls until it's ready (up to 90 seconds).
48
+ Three modes work in priority order: WebUI (fastest — model stays loaded) → OpenAI-compatible
49
+ API → direct `soprano` CLI.
50
+
51
+ ### 🐛 Voice Picker Ignored Windows SAPI and macOS Say
52
+
53
+ When opening the voice picker for an LLM configured to use **Windows SAPI** or **macOS Say**,
54
+ the picker displayed the full list of Piper voices instead of the engine's built-in voice.
55
+ This was confusing — selecting a Piper voice while using SAPI or macOS Say had no effect,
56
+ and the Space-bar preview played through the wrong engine.
57
+
58
+ The picker now adapts to whichever engine is selected:
59
+
60
+ - **Windows SAPI / macOS Say / Soprano:** shows exactly one item (the engine's built-in voice),
61
+ auto-selects it, and the Space-bar preview speaks through the correct engine binary
62
+ - **Piper:** shows the full installed-voice catalog as before
63
+
64
+ Additionally, saving the config no longer silently overwrites the `ttsEngine` field to `piper`
65
+ when a native engine is in use.
66
+
67
+ ### 🔒 Soprano Reliability (9 Adversarial-Review Fixes)
68
+
69
+ - **Crash fix:** socket `destroy()` could emit a late `error` event with no listener,
70
+ crashing the Node.js process — an absorber handler is now in place
71
+ - **Loop cancellation:** the 90-second WebUI polling loop now stops immediately when
72
+ the modal or voice picker is closed (via AbortController)
73
+ - **No unhandled rejections:** `.catch()` handlers added to all async WebUI-check calls
74
+ - **No duplicate processes:** a 10-second cooldown prevents spawning two `soprano-webui`
75
+ instances when Preview is clicked rapidly
76
+ - **Better error feedback:** spawn failures and non-zero exit codes now surface a visible
77
+ error label in the voice picker instead of silently resetting
78
+ - **PATH preserved:** the PowerShell PATH refresh now appends registry entries rather than
79
+ replacing the whole PATH, so nvm, conda, and pyenv shims continue to work
80
+
81
+ ---
82
+
3
83
  ## 🎭 v5.7.7 — Party Mode Voice Restore + Polish
4
84
 
5
85
  **Released:** 2026-05-17
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
+ }