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.
- package/.agentvibes/config.json +12 -5
- package/.agentvibes/install-manifest.json +188 -300
- package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
- package/.claude/commands/agent-vibes-rdp.md +24 -24
- package/.claude/config/audio-effects.cfg +3 -2
- package/.claude/config/audio-effects.cfg.sample +52 -52
- package/.claude/config/background-music-enabled.txt +1 -0
- package/.claude/config/background-music-position.txt +1 -1
- package/.claude/config/language.txt +1 -0
- package/.claude/docs/TERMUX_SETUP.md +408 -408
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/audio-cache-utils.sh +0 -0
- package/.claude/hooks/audio-processor.sh +0 -0
- package/.claude/hooks/background-music-manager.sh +0 -0
- package/.claude/hooks/bmad-party-speak.sh +0 -0
- package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
- package/.claude/hooks/bmad-speak.sh +0 -0
- package/.claude/hooks/bmad-tts-injector.sh +0 -0
- package/.claude/hooks/bmad-voice-manager.sh +0 -0
- package/.claude/hooks/clawdbot-receiver-SECURE.sh +0 -0
- package/.claude/hooks/clawdbot-receiver.sh +0 -0
- package/.claude/hooks/clean-audio-cache.sh +0 -0
- package/.claude/hooks/cleanup-cache.sh +0 -0
- package/.claude/hooks/configure-rdp-mode.sh +0 -0
- package/.claude/hooks/download-extra-voices.sh +0 -0
- package/.claude/hooks/effects-manager.sh +0 -0
- package/.claude/hooks/github-star-reminder.sh +0 -0
- package/.claude/hooks/language-manager.sh +0 -0
- package/.claude/hooks/learn-manager.sh +0 -0
- package/.claude/hooks/macos-voice-manager.sh +0 -0
- package/.claude/hooks/migrate-background-music.sh +0 -0
- package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
- package/.claude/hooks/optimize-background-music.sh +0 -0
- package/.claude/hooks/path-resolver.sh +0 -0
- package/.claude/hooks/personality-manager.sh +0 -0
- package/.claude/hooks/piper-download-voices.sh +0 -0
- package/.claude/hooks/piper-installer.sh +0 -0
- package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
- package/.claude/hooks/piper-voice-manager.sh +0 -0
- package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +0 -0
- package/.claude/hooks/play-tts-agentvibes-receiver.sh +1 -0
- package/.claude/hooks/play-tts-enhanced.sh +0 -0
- package/.claude/hooks/play-tts-macos.sh +0 -0
- package/.claude/hooks/play-tts-piper.sh +0 -0
- package/.claude/hooks/play-tts-soprano.sh +0 -0
- package/.claude/hooks/play-tts-ssh-remote.sh +2 -2
- package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
- package/.claude/hooks/play-tts-windows-receiver.sh +0 -0
- package/.claude/hooks/play-tts.sh +0 -0
- package/.claude/hooks/prepare-release.sh +0 -0
- package/.claude/hooks/provider-commands.sh +0 -0
- package/.claude/hooks/provider-manager.sh +0 -0
- package/.claude/hooks/replay-target-audio.sh +0 -0
- package/.claude/hooks/requirements.txt +6 -6
- package/.claude/hooks/sentiment-manager.sh +0 -0
- package/.claude/hooks/session-start-tts.sh +0 -0
- package/.claude/hooks/soprano-gradio-synth.py +139 -139
- package/.claude/hooks/speed-manager.sh +0 -0
- package/.claude/hooks/stop-tts.sh +0 -0
- package/.claude/hooks/termux-installer.sh +0 -0
- package/.claude/hooks/translate-manager.sh +0 -0
- package/.claude/hooks/translator.py +237 -237
- package/.claude/hooks/tts-queue-worker.sh +0 -0
- package/.claude/hooks/tts-queue.sh +0 -0
- package/.claude/hooks/verbosity-manager.sh +0 -0
- package/.claude/hooks/voice-manager.sh +0 -0
- package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
- package/.claude/hooks-windows/audio-cache-utils.ps1.user.bak +119 -0
- package/.claude/hooks-windows/bmad-speak.ps1 +9 -38
- package/.claude/hooks-windows/play-tts-soprano.ps1 +13 -2
- package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
- package/.claude/hooks-windows/soprano-gradio-synth.py.user.bak +153 -0
- package/.claude/piper-voices-dir.txt +1 -1
- package/.claude/verbosity.txt +1 -1
- package/.clawdbot/README.md +105 -105
- package/.mcp.json +5 -14
- package/README.md +33 -2
- package/RELEASE_NOTES.md +80 -0
- package/WINDOWS-SETUP.md +208 -208
- package/bin/agent-vibes +39 -39
- package/bin/agentvibes-voice-browser.js +0 -0
- package/bin/agentvibes.js +0 -0
- package/bin/mcp-server.js +121 -121
- package/bin/mcp-server.sh +0 -0
- package/bin/test-bmad-pr +78 -78
- package/mcp-server/QUICK_START.md +203 -203
- package/mcp-server/README.md +345 -345
- package/mcp-server/WINDOWS_SETUP.md +0 -0
- package/mcp-server/examples/claude_desktop_config.json +11 -11
- package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
- package/mcp-server/examples/custom_instructions.md +169 -169
- package/mcp-server/install-deps.js +0 -0
- package/mcp-server/server.py +1797 -1797
- package/mcp-server/test_server.py +0 -0
- package/package.json +1 -1
- package/src/cli/list-personalities.js +110 -110
- package/src/cli/list-voices.js +114 -114
- package/src/commands/bmad-voices.js +394 -394
- package/src/commands/install-mcp.js +476 -476
- package/src/console/audio-env.js +4 -1
- package/src/console/brand-colors.js +13 -13
- package/src/console/constants/personalities.js +44 -44
- package/src/console/tabs/agents-tab.js +84 -61
- package/src/console/tabs/help-tab.js +314 -314
- package/src/console/tabs/music-tab.js +3 -2
- package/src/console/tabs/readme-tab.js +272 -272
- package/src/console/tabs/setup-tab.js +285 -41
- package/src/console/tabs/voices-tab.js +13 -1
- package/src/console/widgets/destroy-list.js +25 -25
- package/src/console/widgets/notice.js +55 -55
- package/src/i18n/de.js +202 -202
- package/src/i18n/es.js +202 -202
- package/src/i18n/fr.js +202 -202
- package/src/i18n/hi.js +202 -202
- package/src/i18n/ja.js +202 -202
- package/src/i18n/ko.js +202 -202
- package/src/i18n/pt.js +202 -202
- package/src/i18n/strings.js +54 -54
- package/src/i18n/zh-CN.js +202 -202
- package/src/installer/language-screen.js +31 -31
- package/src/installer/music-file-input.js +304 -304
- package/src/installer.js +0 -0
- package/src/services/config-service.js +264 -264
- package/src/services/language-service.js +47 -47
- package/src/services/provider-service.js +143 -143
- package/src/utils/audio-duration-validator.js +298 -298
- package/src/utils/audio-format-validator.js +277 -277
- package/src/utils/dependency-checker.js +469 -469
- package/src/utils/file-ownership-verifier.js +358 -358
- package/src/utils/list-formatter.js +194 -194
- package/src/utils/music-file-validator.js +285 -285
- package/src/utils/preview-list-prompt.js +136 -136
- package/src/utils/secure-music-storage.js +412 -412
- package/templates/agentvibes-receiver.sh +231 -231
- package/templates/audio/welcome-music.mp3 +0 -0
- package/.claude/hooks/bmad-party-manager.sh +0 -225
- package/.claude/hooks/stop.sh +0 -38
- /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
|
-
"
|
|
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
|
-
"
|
|
10
|
+
"agentvibes": {
|
|
21
11
|
"command": "npx",
|
|
22
12
|
"args": [
|
|
23
13
|
"-y",
|
|
24
|
-
"
|
|
14
|
+
"--package=agentvibes",
|
|
15
|
+
"agentvibes-mcp-server"
|
|
25
16
|
],
|
|
26
17
|
"env": {
|
|
27
|
-
"
|
|
18
|
+
"AGENTVIBES_MCP_FALLBACK": "copilot"
|
|
28
19
|
}
|
|
29
20
|
}
|
|
30
21
|
}
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
|
|
12
12
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
13
13
|
|
|
14
|
-
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v5.
|
|
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.
|
|
43
|
+
## 🌟 NEW IN v5.9.0 — SSH 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
|
+
}
|