agentvibes 5.5.0 → 5.6.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 +3 -30
- package/.claude/config/background-music-enabled.txt +1 -1
- package/.claude/config/background-music-position.txt +6 -6
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/play-tts-ssh-remote.sh +119 -42
- package/.claude/hooks/play-tts-windows-receiver.sh +31 -0
- package/.claude/hooks/stop.sh +2 -27
- package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -108
- package/.claude/hooks-windows/play-tts.ps1 +23 -7
- package/.claude/piper-voices-dir.txt +1 -1
- package/.clawdbot/skill/README.md +326 -0
- package/.mcp.json +17 -27
- package/README.md +73 -82
- package/RELEASE_NOTES.md +61 -0
- package/bin/agent-vibes +39 -39
- package/package.json +1 -1
- package/src/bmad-detector.js +71 -71
- 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/brand-colors.js +13 -13
- package/src/console/constants/personalities.js +44 -44
- package/src/console/modals/modal-overlay.js +247 -247
- package/src/console/navigation.js +5 -1
- package/src/console/tabs/agents-tab.js +5 -5
- package/src/console/tabs/help-tab.js +314 -314
- package/src/console/tabs/readme-tab.js +272 -272
- package/src/console/tabs/setup-tab.js +32 -17
- package/src/console/tabs/voices-tab.js +2 -2
- package/src/console/widgets/destroy-list.js +25 -25
- package/src/console/widgets/notice.js +55 -55
- package/src/console/widgets/personality-picker.js +213 -213
- package/src/console/widgets/reverb-picker.js +97 -97
- package/src/console/widgets/track-picker.js +1 -1
- 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/services/agent-voice-store.js +420 -423
- package/src/services/config-service.js +264 -264
- package/src/services/language-service.js +47 -47
- package/src/services/llm-provider-service.js +11 -4
- package/src/services/navigation-service.js +34 -10
- 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/.agentvibes/LITE-MODE.md +0 -236
- package/.agentvibes/README.md +0 -136
- package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +0 -141
- package/.agentvibes/backups/agents/analyst_20260204_144958.md +0 -78
- package/.agentvibes/backups/agents/architect_20260204_144958.md +0 -72
- package/.agentvibes/backups/agents/dev_20260204_144958.md +0 -74
- package/.agentvibes/backups/agents/pm_20260204_144958.md +0 -72
- package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +0 -64
- package/.agentvibes/backups/agents/sm_20260204_144958.md +0 -87
- package/.agentvibes/backups/agents/tea_20260204_144958.md +0 -79
- package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +0 -82
- package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +0 -80
- package/.agentvibes/config/README-personality-defaults.md +0 -162
- package/.agentvibes/config/agentvibes.json +0 -1
- package/.agentvibes/config/mode.txt +0 -1
- package/.agentvibes/config/personality-voice-defaults.default.json +0 -21
- package/.agentvibes/config/save-audio.txt +0 -1
- package/.agentvibes/config/voice-metadata.json +0 -160
- package/.agentvibes/hooks/help.sh +0 -191
- package/.agentvibes/hooks/post-tool-use-lite.sh +0 -111
- package/.agentvibes/hooks/save-audio-manager.sh +0 -162
- package/.agentvibes/hooks/session-start-full-optimized.sh +0 -102
- package/.agentvibes/hooks/session-start-full.sh +0 -142
- package/.agentvibes/hooks/session-start-lite-v2.sh +0 -34
- package/.agentvibes/hooks/session-start-lite.sh +0 -29
- package/.agentvibes/hooks/stop-lite.sh +0 -115
- package/.agentvibes/hooks/switch-mode.sh +0 -215
- package/.agentvibes/output-styles/audio-summary.md +0 -30
- package/.claude/audio/voice-samples/piper/alan.wav +0 -0
- package/.claude/audio/voice-samples/piper/amy.wav +0 -0
- package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
- package/.claude/audio/voice-samples/piper/joe.wav +0 -0
- package/.claude/audio/voice-samples/piper/john.wav +0 -0
- package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
- package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
- package/.claude/audio/voice-samples/piper/linda.wav +0 -0
- package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
- package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
- package/.claude/hooks/post-response.sh +0 -41
- package/bin/ensure-soprano-running.sh +0 -43
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.6.1
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -40,13 +40,22 @@ 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.6.1 — Hermes Agent Integration
|
|
44
|
+
|
|
45
|
+
AgentVibes now speaks for **[Hermes Agent](https://github.com/NousResearch/hermes-agent)** — the self-hosted, self-improving AI assistant. Two production-ready skills ship in `docs/hermes/skills/`:
|
|
46
|
+
|
|
47
|
+
- **`hermes-agentvibes-hook`** — Auto-speaks every Hermes response via AgentVibes TTS. Fires on `agent:end`, strips markdown, rate-limits, and ships with full SSH MITM protection
|
|
48
|
+
- **`agentvibes-target`** — Teaches Hermes to send any text to your speakers on demand, supporting laptop and Android targets
|
|
49
|
+
|
|
50
|
+
Also in this release: Windows PS5.1 compatibility fixes for `play-tts.ps1`, modal/hotkey repairs, and BMAD tab now shows all agents.
|
|
51
|
+
|
|
52
|
+
## v5.5 — Per-LLM Audio Routing
|
|
44
53
|
|
|
45
54
|
Give **each LLM its own voice, pretext, and music** — Claude Code, Copilot, and Codex can all sound different without touching global settings.
|
|
46
55
|
|
|
47
56
|
- Add `llm:<name>|...|voice|pretext|engine` rows to `audio-effects.cfg`
|
|
48
57
|
- MCP server auto-detects which LLM is calling and passes `--llm <key>`
|
|
49
|
-
- Configure via **Setup
|
|
58
|
+
- Configure via **Setup tab → Configure** in the TUI
|
|
50
59
|
|
|
51
60
|
Also fixed: Windows installer crash (`spinner.info is not a function`) on **reinstall** with an older global AgentVibes install.
|
|
52
61
|
|
|
@@ -54,34 +63,20 @@ Also fixed: Windows installer crash (`spinner.info is not a function`) on **rein
|
|
|
54
63
|
|
|
55
64
|
## v5.4 — TUI Installer, Spinner Fix & Dependency Cleanup
|
|
56
65
|
|
|
57
|
-
### 🎤
|
|
58
|
-
|
|
59
|
-
**🎤 Browse, Sample & Install 914 Voices in Real-Time**
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
npx agentvibes-voice-browser
|
|
63
|
-
```
|
|
66
|
+
### 🎤 Voice Browser — Browse, Sample & Install 914 Voices
|
|
64
67
|
|
|
65
|
-
|
|
68
|
+
**Built right into the TUI — accessible via Setup → Configure → Voice**
|
|
66
69
|
|
|
67
|
-
- 🎧 **Hear Before You Choose** -
|
|
68
|
-
- ⭐ **Mark Your Favorites** -
|
|
69
|
-
- 🔍 **
|
|
70
|
-
- 📦 **One-Click
|
|
71
|
-
- 🎨 **Beautiful Interface** - Stunning terminal UI
|
|
70
|
+
- 🎧 **Hear Before You Choose** - Press Space to preview any voice instantly
|
|
71
|
+
- ⭐ **Mark Your Favorites** - Thumbs up/down with `+` / `-`
|
|
72
|
+
- 🔍 **Alpha Jump** - Press any letter to jump to names starting with it
|
|
73
|
+
- 📦 **One-Click Select** - Press Enter to set as your voice
|
|
74
|
+
- 🎨 **Beautiful Interface** - Stunning terminal UI built into AgentVibes
|
|
72
75
|
|
|
73
76
|
**914 Total Voices:**
|
|
74
77
|
- 904 High-Quality Piper TTS Speakers (libritts-high model)
|
|
75
78
|
- 10 Hand-Curated Personality Voices
|
|
76
79
|
|
|
77
|
-
**Perfect for:**
|
|
78
|
-
- Finding your ideal AI voice
|
|
79
|
-
- Exploring voice characteristics
|
|
80
|
-
- Quick voice switching
|
|
81
|
-
- Building favorite collections
|
|
82
|
-
|
|
83
|
-
Launch now: `npx agentvibes-voice-browser`
|
|
84
|
-
|
|
85
80
|
---
|
|
86
81
|
|
|
87
82
|
### 💬 Intro Text (Pretext) - Your Personal AI Branding
|
|
@@ -132,9 +127,11 @@ Configure now: `npx agentvibes config intro-text`
|
|
|
132
127
|
**Upload your own background music with battle-tested security!**
|
|
133
128
|
|
|
134
129
|
```bash
|
|
135
|
-
npx agentvibes
|
|
130
|
+
npx agentvibes # press M for Music tab
|
|
136
131
|
```
|
|
137
132
|
|
|
133
|
+

|
|
134
|
+
|
|
138
135
|
Replace the default background tracks with your own audio files for complete sonic branding.
|
|
139
136
|
|
|
140
137
|
**Supported Formats:**
|
|
@@ -252,10 +249,10 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
252
249
|
- [📋 Prerequisites](#-prerequisites) - What you actually need (Node.js + optional tools)
|
|
253
250
|
- [✨ What is AgentVibes?](#-what-is-agentvibes) - Overview & key features
|
|
254
251
|
- [🌟 NEW FEATURE HIGHLIGHTS](#-new-feature-highlights) - **START HERE!**
|
|
255
|
-
- [🎤
|
|
252
|
+
- [🎤 Voices Tab](#-voices-tab) - Browse & sample 914 voices in the TUI
|
|
256
253
|
- [💬 Intro Text](#-intro-text-pretext---your-personal-ai-branding) - Custom TTS prefixes
|
|
257
254
|
- [🎵 Custom Background Music](#-custom-background-music---complete-audio-control) - Upload your own tracks
|
|
258
|
-
- [📰 Latest Release](#-latest-release) -
|
|
255
|
+
- [📰 Latest Release](#-latest-release) - v5.5.0 with Per-LLM Audio Routing, Windows Installer Resilience
|
|
259
256
|
- [🪟 Windows Setup Guide for Claude Desktop](mcp-server/WINDOWS_SETUP.md) - Complete Windows installation with WSL & Python
|
|
260
257
|
|
|
261
258
|
### AgentVibes MCP (Natural Language Control)
|
|
@@ -265,7 +262,7 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
265
262
|
- [For Claude Code](docs/mcp-setup.md#for-claude-code) - Project-specific setup
|
|
266
263
|
|
|
267
264
|
### Core Features
|
|
268
|
-
- [🎤
|
|
265
|
+
- [🎤 Voices Tab](#-voices-tab) - **Browse and sample 914 voices in the TUI**
|
|
269
266
|
- [🎤 Commands Reference](#-commands-reference) - All available commands
|
|
270
267
|
- [🎙️ Verbosity Control](#%EF%B8%8F-verbosity-control) - Control how much Claude speaks (low/medium/high)
|
|
271
268
|
- [🎭 Personalities vs Sentiments](#-personalities-vs-sentiments) - Two systems explained
|
|
@@ -303,20 +300,17 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
303
300
|
|
|
304
301
|
**[v3.6.0 - "Voice Explorer" Release](https://github.com/paulpreibisch/AgentVibes/releases/tag/v3.6.0)** 🎉
|
|
305
302
|
|
|
306
|
-
### 🎤
|
|
303
|
+
### 🎤 Voices Tab — Browse & Sample 914 Voices
|
|
307
304
|
|
|
308
|
-
**
|
|
305
|
+
**Built into the TUI — launch with `npx agentvibes` then press V**
|
|
309
306
|
|
|
310
|
-
|
|
311
|
-
npx agentvibes-voice-browser
|
|
312
|
-
```
|
|
307
|
+

|
|
313
308
|
|
|
314
|
-
|
|
315
|
-
- 🎧 Real-time voice sampling - hear before you choose
|
|
309
|
+
- 🎧 Real-time voice sampling - press Space to hear before you choose
|
|
316
310
|
- ⭐ Favorite system - mark your top voices
|
|
317
311
|
- 🔍 Search & filter - find voices by personality, accent, gender
|
|
318
|
-
- 📦 One-click
|
|
319
|
-
- 🎨 Beautiful UI -
|
|
312
|
+
- 📦 One-click select - press Enter to install directly
|
|
313
|
+
- 🎨 Beautiful UI - built into the AgentVibes TUI
|
|
320
314
|
|
|
321
315
|
**914 Total Voices:**
|
|
322
316
|
- 904 Piper speaker variations (libritts-high)
|
|
@@ -379,8 +373,8 @@ npx agentvibes config music
|
|
|
379
373
|
# Install AgentVibes
|
|
380
374
|
npx agentvibes install
|
|
381
375
|
|
|
382
|
-
#
|
|
383
|
-
npx agentvibes
|
|
376
|
+
# Browse voices in the TUI
|
|
377
|
+
npx agentvibes # press V for Voices tab
|
|
384
378
|
```
|
|
385
379
|
|
|
386
380
|
**🐞 Bug Fixes in v3.6.0:**
|
|
@@ -432,6 +426,12 @@ Just say "Switch to Aria voice" or "Speak in Spanish" instead of typing commands
|
|
|
432
426
|
npx agentvibes install
|
|
433
427
|
```
|
|
434
428
|
|
|
429
|
+

|
|
430
|
+
|
|
431
|
+
Click **Configure** on any LLM to set its voice, pretext, reverb, and music:
|
|
432
|
+
|
|
433
|
+

|
|
434
|
+
|
|
435
435
|
### 2️⃣ Choose Provider (Auto-Detected)
|
|
436
436
|
- **macOS**: Native `say` provider (100+ voices) ✨
|
|
437
437
|
- **Linux/WSL**: Piper TTS (50+ free voices) 🎙️
|
|
@@ -457,39 +457,37 @@ macOS ships with bash 3.2 (from 2007). After this, everything works perfectly!
|
|
|
457
457
|
|
|
458
458
|
---
|
|
459
459
|
|
|
460
|
-
## 🎤
|
|
460
|
+
## 🎤 Voice Browser
|
|
461
461
|
|
|
462
|
-
**
|
|
463
|
-
|
|
464
|
-
### Launch the Browser
|
|
462
|
+
**914 voices — browse, preview, and select right inside the TUI.**
|
|
465
463
|
|
|
466
464
|
```bash
|
|
467
|
-
npx agentvibes
|
|
465
|
+
npx agentvibes # Setup tab → Configure → Voice (or press V for global voice)
|
|
468
466
|
```
|
|
469
467
|
|
|
468
|
+

|
|
469
|
+
|
|
470
470
|
### Features
|
|
471
471
|
|
|
472
472
|
- **914 Voices** - Browse 904 Piper speakers + 10 curated voices
|
|
473
|
-
- **Real-Time Sampling** - Press
|
|
474
|
-
- **Favorite System** -
|
|
475
|
-
- **
|
|
476
|
-
- **One-Click
|
|
477
|
-
- **Beautiful UI** - Stunning console interface
|
|
473
|
+
- **Real-Time Sampling** - Press Space to hear any voice instantly
|
|
474
|
+
- **Favorite System** - Thumbs up `+` / thumbs down `-` for quick filtering
|
|
475
|
+
- **Alpha Jump** - Press any letter key to jump to that part of the list
|
|
476
|
+
- **One-Click Select** - Press Enter to install and switch to a voice
|
|
477
|
+
- **Beautiful UI** - Stunning console interface built into AgentVibes
|
|
478
478
|
|
|
479
479
|
### Keyboard Shortcuts
|
|
480
480
|
|
|
481
481
|
| Key | Action |
|
|
482
482
|
|-----|--------|
|
|
483
|
-
| **
|
|
484
|
-
| **
|
|
485
|
-
|
|
|
486
|
-
|
|
|
487
|
-
| **
|
|
483
|
+
| **Space** | Preview voice sample |
|
|
484
|
+
| **Enter** | Select/Install voice |
|
|
485
|
+
| **+** | Thumbs up (favorite) |
|
|
486
|
+
| **-** | Thumbs down |
|
|
487
|
+
| **PgUp / PgDn** | Page through list |
|
|
488
488
|
| **↑/↓** | Navigate list |
|
|
489
|
-
| **
|
|
490
|
-
| **
|
|
491
|
-
| **H** | Show help |
|
|
492
|
-
| **Q** | Quit |
|
|
489
|
+
| **a-z** | Jump to names starting with letter |
|
|
490
|
+
| **Esc** | Cancel / close |
|
|
493
491
|
|
|
494
492
|
### Voice Categories
|
|
495
493
|
|
|
@@ -505,13 +503,13 @@ npx agentvibes-voice-browser
|
|
|
505
503
|
|
|
506
504
|
### Finding Your Perfect Voice
|
|
507
505
|
|
|
508
|
-
1. **
|
|
509
|
-
2. **
|
|
510
|
-
3. **Sample voices:** Navigate with arrows, press
|
|
511
|
-
4. **Mark favorites:** Press
|
|
512
|
-
5. **
|
|
506
|
+
1. **Open voice browser:** Setup tab → Configure → navigate to Voice → Enter
|
|
507
|
+
2. **Jump alphabetically:** Press a letter key to jump to that name
|
|
508
|
+
3. **Sample voices:** Navigate with arrows, press Space to hear
|
|
509
|
+
4. **Mark favorites:** Press `+` on voices you like
|
|
510
|
+
5. **Select:** Press Enter to set as your voice
|
|
513
511
|
|
|
514
|
-
**Pro Tip:** Use
|
|
512
|
+
**Pro Tip:** Use PgUp/PgDn to page quickly through 900+ voices!
|
|
515
513
|
|
|
516
514
|
[↑ Back to top](#-table-of-contents)
|
|
517
515
|
|
|
@@ -860,18 +858,13 @@ AgentVibes provides **50+ slash commands** and **natural language MCP equivalent
|
|
|
860
858
|
|
|
861
859
|
**[→ View Complete Command Reference](docs/commands.md)** - All voice, system, personality, sentiment, language, and BMAD commands with MCP equivalents
|
|
862
860
|
|
|
863
|
-
###
|
|
861
|
+
### Voices Tab Commands
|
|
864
862
|
|
|
865
863
|
```bash
|
|
866
|
-
# Launch
|
|
867
|
-
npx agentvibes
|
|
868
|
-
|
|
869
|
-
# Or use global command (if installed globally)
|
|
870
|
-
agentvibes-voice-browser
|
|
864
|
+
# Launch the TUI and open Voices tab
|
|
865
|
+
npx agentvibes # then press V
|
|
871
866
|
```
|
|
872
867
|
|
|
873
|
-
**MCP Equivalent:** Currently CLI-only (no MCP command)
|
|
874
|
-
|
|
875
868
|
### Intro Text Commands
|
|
876
869
|
|
|
877
870
|
```bash
|
|
@@ -1010,7 +1003,7 @@ Every task acknowledgment plays **twice** - first in English, then in your targe
|
|
|
1010
1003
|
|
|
1011
1004
|
## 🗣️ Voice Library
|
|
1012
1005
|
|
|
1013
|
-
**
|
|
1006
|
+
**Browse voices in the TUI:** Run `npx agentvibes` and press **V** to open the **[Voices Tab](#-voices-tab)** — browse, sample, and install from 914 voices without leaving your terminal.
|
|
1014
1007
|
|
|
1015
1008
|
### Friendly Voice Names
|
|
1016
1009
|
|
|
@@ -1052,13 +1045,11 @@ The BMAD plugin detects when you activate a BMAD agent (e.g., `/BMad:agents:pm`)
|
|
|
1052
1045
|
|
|
1053
1046
|
**Version Support**: AgentVibes supports both BMAD v4 and v6-alpha installations. Version detection is automatic - just install BMAD and AgentVibes will detect and configure itself correctly!
|
|
1054
1047
|
|
|
1055
|
-
### 🎭
|
|
1056
|
-
|
|
1057
|
-
Open the **BMad** tab in the AgentVibes TUI (`npx agentvibes`) to configure which voice each agent uses:
|
|
1048
|
+
### 🎭 BMad Tab — Assign a Voice to Every Agent
|
|
1058
1049
|
|
|
1059
|
-
|
|
1050
|
+
Open the **BMad** tab in the AgentVibes TUI (`npx agentvibes` → press **B**) to configure which voice, reverb, and pretext each BMAD agent uses:
|
|
1060
1051
|
|
|
1061
|
-
|
|
1052
|
+

|
|
1062
1053
|
|
|
1063
1054
|
### 🔊 TTS Injection: How It Works
|
|
1064
1055
|
|
|
@@ -1882,10 +1873,10 @@ Both do the exact same thing - MCP is more convenient, slash commands are more t
|
|
|
1882
1873
|
- **Optional**: sox (audio effects), ffmpeg (background music, padding)
|
|
1883
1874
|
- All TTS generation works without optional dependencies - they just enhance the experience
|
|
1884
1875
|
|
|
1885
|
-
###
|
|
1876
|
+
### Voices Tab & New Features
|
|
1886
1877
|
|
|
1887
|
-
**Q: How do I
|
|
1888
|
-
**A:**
|
|
1878
|
+
**Q: How do I browse and select voices?**
|
|
1879
|
+
**A:** Run `npx agentvibes` and press **V** to open the Voices tab. Use arrow keys to navigate, Space to preview voices, Enter to select/install, F to favorite, and / to search.
|
|
1889
1880
|
|
|
1890
1881
|
**Q: What are friendly voice names?**
|
|
1891
1882
|
**A:** Instead of technical IDs like `en_US-ryan-high`, you can now use simple names like "Ryan" when switching voices. All 904+ voices have friendly names matched to their characteristics.
|
|
@@ -1903,7 +1894,7 @@ Both do the exact same thing - MCP is more convenient, slash commands are more t
|
|
|
1903
1894
|
**A:** No! You can type "ryan", "Ryan", or "RYAN" - they all work. The voice resolution is case-insensitive.
|
|
1904
1895
|
|
|
1905
1896
|
**Q: Can I favorite voices without installing them?**
|
|
1906
|
-
**A:** Yes! In the
|
|
1897
|
+
**A:** Yes! In the Voices tab, press 'F' to mark any voice as a favorite. Favorites are saved and you can filter to show only favorites later.
|
|
1907
1898
|
|
|
1908
1899
|
**Q: Does custom music work with all TTS providers?**
|
|
1909
1900
|
**A:** Yes! Custom background music works with Piper TTS, Soprano, macOS Say, and Windows SAPI.
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,5 +1,66 @@
|
|
|
1
1
|
# AgentVibes Release Notes
|
|
2
2
|
|
|
3
|
+
## 🤖 v5.6.1 — Hermes Agent Integration & Windows PS5.1 Fixes
|
|
4
|
+
|
|
5
|
+
**Released:** 2026-05-01
|
|
6
|
+
|
|
7
|
+
### 🎉 Hermes Agent Integration (New!)
|
|
8
|
+
|
|
9
|
+
AgentVibes now officially supports **[Hermes Agent](https://github.com/NousResearch/hermes-agent)** — the self-hosted, self-improving AI assistant. Two production-ready Hermes skills ship in `docs/hermes/skills/`:
|
|
10
|
+
|
|
11
|
+
**`hermes-agentvibes-hook`** — Auto-speaks every Hermes response via AgentVibes
|
|
12
|
+
- Fires on every `agent:end` event (Telegram, Discord, CLI, etc.)
|
|
13
|
+
- Strips markdown, code blocks, emoji before speaking
|
|
14
|
+
- Truncates at word boundaries, rate-limits to prevent queue flooding
|
|
15
|
+
- MITM-safe SSH with `StrictHostKeyChecking=accept-new` + persistent `known_hosts`
|
|
16
|
+
- Full logging to `tts-hook.log` for debugging
|
|
17
|
+
|
|
18
|
+
**`agentvibes-target`** — Teaches Hermes to send any text to your speakers on demand
|
|
19
|
+
- Base64 JSON payload over SSH (same ForceCommand architecture as the Windows receiver)
|
|
20
|
+
- Supports Windows and Android targets
|
|
21
|
+
- Detailed troubleshooting guide included
|
|
22
|
+
|
|
23
|
+
**Install:** Copy the skill to your Hermes home and restart the gateway:
|
|
24
|
+
```bash
|
|
25
|
+
cp -r docs/hermes/skills/tts/hermes-agentvibes-hook ~/.hermes/skills/tts/
|
|
26
|
+
hermes gateway restart
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 🐛 Windows PS5.1 Bug Fixes
|
|
30
|
+
|
|
31
|
+
- **play-tts.ps1 PS5.1 compatibility** — Fixed three regressions from v5.6.0 rebase:
|
|
32
|
+
replaced PS7 null-conditional (`?.`) with PS5.1-compatible if/else, added UTF-8 BOM so
|
|
33
|
+
em-dash literals aren't mangled by CP1252, restored piper provider alias and
|
|
34
|
+
`AGENTVIBES_TEXT_FILE` sentinel lost in merge
|
|
35
|
+
- **Modal & hotkey fixes** — Modal escape key, navigation hotkeys, Q+Caps Lock, and voice
|
|
36
|
+
preview error handling all repaired
|
|
37
|
+
- **BMAD tab** — Now shows all agents regardless of module
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 📸 v5.6.0 — TUI Screenshots & Documentation Cleanup
|
|
42
|
+
|
|
43
|
+
**Released:** 2026-04-28
|
|
44
|
+
|
|
45
|
+
### 📸 TUI Screenshots Added
|
|
46
|
+
|
|
47
|
+
Added real screenshots of every major TUI tab to the README:
|
|
48
|
+
|
|
49
|
+
- **Setup tab** — LLM Providers screen (Claude Code, Copilot, Codex, Default)
|
|
50
|
+
- **Configure dialog** — Per-LLM audio config (voice, pretext, reverb, music)
|
|
51
|
+
- **Voice Browser** — Select Voice dialog with alpha-jump, thumbs up/down, 914 voices
|
|
52
|
+
- **Music tab** — Built-in tracks list with preview and toggle
|
|
53
|
+
- **BMad tab** — Agent voice assignment (voice, reverb, music, pretext per agent)
|
|
54
|
+
|
|
55
|
+
### 🧹 Documentation Cleanup
|
|
56
|
+
|
|
57
|
+
- Removed all `npx agentvibes-voice-browser` references (tool retired, replaced by TUI)
|
|
58
|
+
- Renamed "Voice Browser" section to reflect TUI-native access via Setup → Configure → Voice
|
|
59
|
+
- All image paths now use absolute GitHub raw URLs (renders correctly on npmjs.com)
|
|
60
|
+
- Fixed BMad section placeholder screenshot replaced with real screenshot
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
3
64
|
## 🎵 v5.5.0 — Per-LLM Audio Routing & Windows Installer Resilience
|
|
4
65
|
|
|
5
66
|
**Released:** 2026-04-27
|
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
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "agentvibes",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.6.1",
|
|
5
5
|
"description": "Now your AI Agents can finally talk back! Professional TTS voice for Claude Code, Claude Desktop (via MCP), and Clawdbot with multi-provider support.",
|
|
6
6
|
"homepage": "https://agentvibes.org",
|
|
7
7
|
"keywords": [
|
package/src/bmad-detector.js
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import fs from 'node:fs/promises';
|
|
3
|
-
import yaml from 'js-yaml';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Detect BMAD installation and version
|
|
7
|
-
* @param {string} targetDir - Directory to check
|
|
8
|
-
* @returns {Promise<Object>} Detection result with version info
|
|
9
|
-
*/
|
|
10
|
-
export async function detectBMAD(targetDir) {
|
|
11
|
-
// Check v6 first (newer version) - support both .bmad and bmad paths
|
|
12
|
-
// Try .bmad (standard path with dot prefix) first
|
|
13
|
-
let v6Manifest = path.join(targetDir, '.bmad/_cfg/manifest.yaml');
|
|
14
|
-
let bmadPath = '.bmad';
|
|
15
|
-
|
|
16
|
-
try {
|
|
17
|
-
await fs.access(v6Manifest);
|
|
18
|
-
} catch {
|
|
19
|
-
// Try bmad (alternative path without dot prefix)
|
|
20
|
-
v6Manifest = path.join(targetDir, 'bmad/_cfg/manifest.yaml');
|
|
21
|
-
bmadPath = 'bmad';
|
|
22
|
-
try {
|
|
23
|
-
await fs.access(v6Manifest);
|
|
24
|
-
} catch {
|
|
25
|
-
// Neither path found, continue to v4 check
|
|
26
|
-
bmadPath = null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (bmadPath) {
|
|
31
|
-
try {
|
|
32
|
-
const manifestContent = await fs.readFile(v6Manifest, 'utf8');
|
|
33
|
-
const manifest = yaml.load(manifestContent);
|
|
34
|
-
|
|
35
|
-
return {
|
|
36
|
-
version: 6,
|
|
37
|
-
detailedVersion: manifest.installation?.version || '6.0.0-alpha.x',
|
|
38
|
-
manifestPath: v6Manifest,
|
|
39
|
-
configPath: path.join(targetDir, bmadPath, 'core/config.yaml'),
|
|
40
|
-
bmadPath: path.join(targetDir, bmadPath),
|
|
41
|
-
installed: true
|
|
42
|
-
};
|
|
43
|
-
} catch {}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Check v4 (legacy)
|
|
47
|
-
const v4Manifest = path.join(targetDir, '.bmad-core/install-manifest.yaml');
|
|
48
|
-
try {
|
|
49
|
-
await fs.access(v4Manifest);
|
|
50
|
-
return {
|
|
51
|
-
version: 4,
|
|
52
|
-
detailedVersion: '4.x',
|
|
53
|
-
manifestPath: v4Manifest,
|
|
54
|
-
configPath: path.join(targetDir, '.bmad-core/config.yaml'),
|
|
55
|
-
bmadPath: path.join(targetDir, '.bmad-core'),
|
|
56
|
-
installed: true
|
|
57
|
-
};
|
|
58
|
-
} catch {}
|
|
59
|
-
|
|
60
|
-
// Not installed
|
|
61
|
-
return { version: null, installed: false };
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Get BMAD configuration file path for detected version
|
|
66
|
-
* @param {Object} detection - Result from detectBMAD()
|
|
67
|
-
* @returns {string|null} Path to config.yaml or null
|
|
68
|
-
*/
|
|
69
|
-
export function getBMADConfigPath(detection) {
|
|
70
|
-
return detection.installed ? detection.configPath : null;
|
|
71
|
-
}
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
3
|
+
import yaml from 'js-yaml';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Detect BMAD installation and version
|
|
7
|
+
* @param {string} targetDir - Directory to check
|
|
8
|
+
* @returns {Promise<Object>} Detection result with version info
|
|
9
|
+
*/
|
|
10
|
+
export async function detectBMAD(targetDir) {
|
|
11
|
+
// Check v6 first (newer version) - support both .bmad and bmad paths
|
|
12
|
+
// Try .bmad (standard path with dot prefix) first
|
|
13
|
+
let v6Manifest = path.join(targetDir, '.bmad/_cfg/manifest.yaml');
|
|
14
|
+
let bmadPath = '.bmad';
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
await fs.access(v6Manifest);
|
|
18
|
+
} catch {
|
|
19
|
+
// Try bmad (alternative path without dot prefix)
|
|
20
|
+
v6Manifest = path.join(targetDir, 'bmad/_cfg/manifest.yaml');
|
|
21
|
+
bmadPath = 'bmad';
|
|
22
|
+
try {
|
|
23
|
+
await fs.access(v6Manifest);
|
|
24
|
+
} catch {
|
|
25
|
+
// Neither path found, continue to v4 check
|
|
26
|
+
bmadPath = null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (bmadPath) {
|
|
31
|
+
try {
|
|
32
|
+
const manifestContent = await fs.readFile(v6Manifest, 'utf8');
|
|
33
|
+
const manifest = yaml.load(manifestContent);
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
version: 6,
|
|
37
|
+
detailedVersion: manifest.installation?.version || '6.0.0-alpha.x',
|
|
38
|
+
manifestPath: v6Manifest,
|
|
39
|
+
configPath: path.join(targetDir, bmadPath, 'core/config.yaml'),
|
|
40
|
+
bmadPath: path.join(targetDir, bmadPath),
|
|
41
|
+
installed: true
|
|
42
|
+
};
|
|
43
|
+
} catch {}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Check v4 (legacy)
|
|
47
|
+
const v4Manifest = path.join(targetDir, '.bmad-core/install-manifest.yaml');
|
|
48
|
+
try {
|
|
49
|
+
await fs.access(v4Manifest);
|
|
50
|
+
return {
|
|
51
|
+
version: 4,
|
|
52
|
+
detailedVersion: '4.x',
|
|
53
|
+
manifestPath: v4Manifest,
|
|
54
|
+
configPath: path.join(targetDir, '.bmad-core/config.yaml'),
|
|
55
|
+
bmadPath: path.join(targetDir, '.bmad-core'),
|
|
56
|
+
installed: true
|
|
57
|
+
};
|
|
58
|
+
} catch {}
|
|
59
|
+
|
|
60
|
+
// Not installed
|
|
61
|
+
return { version: null, installed: false };
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Get BMAD configuration file path for detected version
|
|
66
|
+
* @param {Object} detection - Result from detectBMAD()
|
|
67
|
+
* @returns {string|null} Path to config.yaml or null
|
|
68
|
+
*/
|
|
69
|
+
export function getBMADConfigPath(detection) {
|
|
70
|
+
return detection.installed ? detection.configPath : null;
|
|
71
|
+
}
|