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.
- package/.agentvibes/config.json +15 -1
- package/.agentvibes/install-manifest.json +342 -0
- package/.claude/audio/ui/CREDITS.txt +16 -0
- package/.claude/audio/ui/bling-success.wav +0 -0
- package/.claude/commands/agent-vibes/receiver.md +64 -0
- 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 +5 -4
- package/.claude/config/audio-effects.cfg.sample +52 -52
- package/.claude/config/background-music-enabled.txt +1 -1
- package/.claude/config/background-music-position.txt +27 -0
- package/.claude/config/background-music-volume.txt +1 -0
- package/.claude/config/background-music.cfg +1 -0
- package/.claude/config/background-music.txt +1 -0
- package/.claude/config/language.txt +1 -0
- package/.claude/config/personality.txt +1 -0
- package/.claude/config/reverb-level.txt +1 -0
- package/.claude/config/tts-speech-rate.txt +1 -0
- package/.claude/config/tts-verbosity.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 +57 -18
- 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/kokoro-installer.sh +117 -0
- package/.claude/hooks/kokoro-server.py +219 -0
- package/.claude/hooks/kokoro-tts.py +141 -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 +39 -16
- package/.claude/hooks/piper-installer.sh +11 -6
- package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
- package/.claude/hooks/piper-voice-manager.sh +6 -6
- package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +3 -1
- package/.claude/hooks/play-tts-agentvibes-receiver.sh +1 -0
- package/.claude/hooks/play-tts-elevenlabs.sh +360 -0
- package/.claude/hooks/play-tts-enhanced.sh +0 -0
- package/.claude/hooks/play-tts-kokoro.sh +127 -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 +9 -2
- package/.claude/hooks/play-tts-termux-ssh.sh +3 -1
- package/.claude/hooks/play-tts-windows-receiver.sh +0 -0
- package/.claude/hooks/play-tts.sh +78 -2
- package/.claude/hooks/prepare-release.sh +0 -0
- package/.claude/hooks/provider-commands.sh +71 -22
- package/.claude/hooks/provider-manager.sh +15 -7
- 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.user.bak +119 -0
- package/.claude/hooks-windows/kokoro-server.py +219 -0
- package/.claude/hooks-windows/kokoro-tts.py +107 -0
- package/.claude/hooks-windows/play-tts-kokoro.ps1 +191 -0
- package/.claude/hooks-windows/play-tts.ps1 +29 -1
- 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 -0
- package/.claude/verbosity.txt +1 -1
- package/.clawdbot/README.md +105 -105
- package/.mcp.json +6 -19
- package/README.md +127 -2116
- package/RELEASE_NOTES.md +73 -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 +1807 -1807
- package/mcp-server/test_server.py +0 -0
- package/package.json +4 -3
- 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 +3 -3
- package/src/console/app.js +25 -9
- package/src/console/audio-env.js +85 -1
- package/src/console/brand-colors.js +13 -13
- package/src/console/constants/personalities.js +44 -44
- package/src/console/navigation.js +4 -0
- package/src/console/tabs/agents-tab.js +12 -6
- package/src/console/tabs/help-tab.js +314 -314
- package/src/console/tabs/music-tab.js +7 -25
- package/src/console/tabs/readme-tab.js +272 -272
- package/src/console/tabs/setup-tab.js +1704 -120
- package/src/console/tabs/voices-tab.js +72 -88
- package/src/console/widgets/destroy-list.js +25 -25
- package/src/console/widgets/format-utils.js +14 -2
- package/src/console/widgets/help-bar.js +55 -0
- package/src/console/widgets/notice.js +55 -55
- package/src/console/widgets/reverb-picker.js +429 -41
- package/src/console/widgets/track-picker.js +60 -51
- package/src/i18n/de.js +2 -1
- package/src/i18n/en.js +1 -0
- package/src/i18n/es.js +2 -1
- package/src/i18n/fr.js +2 -1
- package/src/i18n/hi.js +2 -1
- package/src/i18n/ja.js +2 -1
- package/src/i18n/ko.js +2 -1
- package/src/i18n/pt.js +2 -1
- package/src/i18n/strings.js +9 -9
- package/src/i18n/zh-CN.js +2 -1
- package/src/installer/language-screen.js +31 -31
- package/src/installer/music-file-input.js +304 -304
- package/src/installer.js +95 -7
- package/src/services/config-service.js +264 -264
- package/src/services/language-service.js +47 -47
- package/src/services/provider-service.js +35 -0
- package/src/services/provider-voice-catalog.js +126 -0
- package/src/services/tts-engine-service.js +51 -2
- package/src/utils/audio-duration-validator.js +53 -10
- 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/music-file-validator.js +285 -285
- package/src/utils/preview-list-prompt.js +144 -136
- package/src/utils/provider-validator.js +70 -0
- package/src/utils/secure-music-storage.js +412 -412
- package/templates/agentvibes-receiver.sh +235 -231
- 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
|