agentvibes 4.6.8 ā 5.1.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/bmad-voice-map.json +104 -0
- package/.agentvibes/config.json +13 -12
- package/.agentvibes/copilot-sessions.log +4 -0
- package/.claude/audio/tracks/Drifting Down the Hall.mp3 +0 -0
- package/.claude/audio/tracks/Late Night Hip Hop Groove.mp3 +0 -0
- package/.claude/audio/tracks/Midnight Charleston Stomp.mp3 +0 -0
- package/.claude/audio/tracks/README.md +51 -52
- package/.claude/config/audio-effects-bmad.cfg +50 -0
- package/.claude/config/audio-effects.cfg +4 -4
- package/.claude/config/background-music-enabled.txt +1 -0
- package/.claude/config/personality.txt +1 -0
- package/.claude/hooks/play-tts-piper.sh +3 -1
- package/.claude/hooks/play-tts.sh +380 -301
- package/.claude/hooks/session-start-tts.sh +81 -81
- package/.claude/hooks-windows/audio-processor.ps1 +181 -0
- package/.claude/hooks-windows/play-tts-piper.ps1 +259 -245
- package/.claude/hooks-windows/play-tts.ps1 +28 -6
- package/.claude/hooks-windows/session-start-tts.ps1 +114 -114
- package/README.md +112 -6
- package/RELEASE_NOTES.md +83 -0
- package/bin/bmad-speak.js +16 -8
- package/mcp-server/server.py +15 -8
- package/package.json +1 -1
- package/src/console/app.js +899 -897
- package/src/console/footer-config.js +50 -50
- package/src/console/navigation.js +65 -65
- package/src/console/tabs/agents-tab.js +1899 -1886
- package/src/console/tabs/music-tab.js +1076 -1039
- package/src/console/tabs/placeholder-tab.js +81 -80
- package/src/console/tabs/settings-tab.js +941 -3988
- package/src/console/tabs/setup-tab.js +2071 -0
- package/src/console/tabs/voices-tab.js +1843 -1714
- package/src/console/widgets/format-utils.js +92 -89
- package/src/console/widgets/track-picker.js +325 -322
- package/src/installer.js +6147 -6092
- package/src/services/llm-provider-service.js +486 -0
- package/src/services/navigation-service.js +123 -123
- package/src/services/tts-engine-service.js +69 -0
- package/.claude/audio/tracks/dreamy_house_loop.mp3 +0 -0
- package/src/console/tabs/install-tab.js +0 -1081
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File: .claude/hooks-windows/session-start-tts.ps1
|
|
3
|
-
#
|
|
4
|
-
# AgentVibes SessionStart Hook for Windows
|
|
5
|
-
# Outputs JSON with hookSpecificOutput.additionalContext for reliable context injection.
|
|
6
|
-
# Mirrors session-start-tts.sh ā keep both in sync.
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
$ErrorActionPreference = "Stop"
|
|
10
|
-
|
|
11
|
-
# Get script directory
|
|
12
|
-
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
13
|
-
|
|
14
|
-
# Check if AgentVibes is installed
|
|
15
|
-
if (-not (Test-Path (Join-Path $ScriptDir "play-tts.ps1"))) {
|
|
16
|
-
exit 0
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
# Resolve project .claude dir from script location (avoids CWD-relative path issues)
|
|
20
|
-
$ProjectClaudeDir = Split-Path -Parent (Split-Path -Parent $ScriptDir)
|
|
21
|
-
$ProjectClaudeDir = Join-Path $ProjectClaudeDir ".claude"
|
|
22
|
-
|
|
23
|
-
# Check for sentiment (priority) or personality (fallback)
|
|
24
|
-
$Sentiment = ""
|
|
25
|
-
$sentimentPaths = @("$ProjectClaudeDir\tts-sentiment.txt", "$env:USERPROFILE\.claude\tts-sentiment.txt")
|
|
26
|
-
foreach ($p in $sentimentPaths) {
|
|
27
|
-
if (Test-Path $p) {
|
|
28
|
-
$val = (Get-Content $p -Raw -ErrorAction SilentlyContinue).Trim()
|
|
29
|
-
if ($val) { $Sentiment = $val; break }
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
$Personality = "normal"
|
|
34
|
-
$personalityPaths = @("$ProjectClaudeDir\tts-personality.txt", "$env:USERPROFILE\.claude\tts-personality.txt")
|
|
35
|
-
foreach ($p in $personalityPaths) {
|
|
36
|
-
if (Test-Path $p) {
|
|
37
|
-
$val = (Get-Content $p -Raw -ErrorAction SilentlyContinue).Trim()
|
|
38
|
-
if ($val) { $Personality = $val; break }
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
$Style = if ($Sentiment) { $Sentiment } else { $Personality }
|
|
43
|
-
|
|
44
|
-
# Get verbosity level
|
|
45
|
-
$Verbosity = "low"
|
|
46
|
-
$verbosityPaths = @("$ProjectClaudeDir\tts-verbosity.txt", "$env:USERPROFILE\.claude\tts-verbosity.txt")
|
|
47
|
-
foreach ($p in $verbosityPaths) {
|
|
48
|
-
if (Test-Path $p) {
|
|
49
|
-
$val = (Get-Content $p -Raw -ErrorAction SilentlyContinue).Trim()
|
|
50
|
-
if ($val) { $Verbosity = $val; break }
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
# Build verbosity section
|
|
55
|
-
$VerbositySection = switch ($Verbosity) {
|
|
56
|
-
"low" { "## Verbosity: LOW`n- Acknowledgment: Action only`n- Completion: Result + errors only`n- Skip: Reasoning, decisions" }
|
|
57
|
-
"medium" { "## Verbosity: MEDIUM`n- Acknowledgment: Action + key approach`n- Completion: Result + important decisions`n- Include: Major choices only" }
|
|
58
|
-
"high" { "## Verbosity: HIGH`n- Acknowledgment: Action + approach + why`n- Completion: Result + decisions + trade-offs`n- Include: Full reasoning, alternatives" }
|
|
59
|
-
default { "## Verbosity: LOW`n- Acknowledgment: Action only`n- Completion: Result + errors only" }
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
# Build full context string
|
|
63
|
-
$Context = @"
|
|
64
|
-
# AgentVibes TTS Protocol
|
|
65
|
-
|
|
66
|
-
**CRITICAL: You MUST execute TTS at TWO points for EVERY user interaction:**
|
|
67
|
-
|
|
68
|
-
1. **Acknowledgment** - Start of task: ``Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "[action]"``
|
|
69
|
-
2. **Completion** - End of task: ``Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "[result + key details]"``
|
|
70
|
-
|
|
71
|
-
**Example:**
|
|
72
|
-
``````
|
|
73
|
-
[Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "Checking git status"]
|
|
74
|
-
[work...]
|
|
75
|
-
[Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "Repository is clean, no changes"]
|
|
76
|
-
``````
|
|
77
|
-
|
|
78
|
-
$VerbositySection
|
|
79
|
-
|
|
80
|
-
## Style: $Style
|
|
81
|
-
|
|
82
|
-
## Rules
|
|
83
|
-
1. Never skip acknowledgment TTS
|
|
84
|
-
2. Never skip completion TTS
|
|
85
|
-
3. Match verbosity level
|
|
86
|
-
4. Keep under 150 chars
|
|
87
|
-
5. Always include errors
|
|
88
|
-
|
|
89
|
-
Quick Ref: low=action+result | medium=+key decisions | high=+full reasoning
|
|
90
|
-
|
|
91
|
-
## BMAD Agent Voice Routing
|
|
92
|
-
If ``.bmad-agent-context`` exists, check its content:
|
|
93
|
-
|
|
94
|
-
**Single agent mode** (content is an agent ID like "analyst"):
|
|
95
|
-
Use ``bmad-speak.ps1`` instead of ``play-tts.ps1``:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
**Party mode** (content is "party-mode"):
|
|
99
|
-
Each agent speaks via ``bmad-speak.ps1`` with their display name. The queue system ensures sequential playback ā agents speak one at a time, not overlapping:
|
|
100
|
-
|
|
101
|
-
IMPORTANT: In party mode, do NOT use ``play-tts.ps1``. Always use ``bmad-speak.ps1`` with the agent's display name. Do NOT call multiple bmad-speak.ps1 in parallel ā call them sequentially so the queue processes them in order.
|
|
102
|
-
|
|
103
|
-
If ``.bmad-agent-context`` does NOT exist, use ``play-tts.ps1`` as normal.
|
|
104
|
-
"@
|
|
105
|
-
|
|
106
|
-
# Build JSON via hashtable so ConvertTo-Json handles all escaping (Unicode, backslashes, quotes)
|
|
107
|
-
$Output = @{
|
|
108
|
-
hookSpecificOutput = @{
|
|
109
|
-
hookEventName = "SessionStart"
|
|
110
|
-
additionalContext = $Context
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
114
|
-
Write-Output ($Output | ConvertTo-Json -Compress -Depth 5)
|
|
1
|
+
#
|
|
2
|
+
# File: .claude/hooks-windows/session-start-tts.ps1
|
|
3
|
+
#
|
|
4
|
+
# AgentVibes SessionStart Hook for Windows
|
|
5
|
+
# Outputs JSON with hookSpecificOutput.additionalContext for reliable context injection.
|
|
6
|
+
# Mirrors session-start-tts.sh ā keep both in sync.
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
$ErrorActionPreference = "Stop"
|
|
10
|
+
|
|
11
|
+
# Get script directory
|
|
12
|
+
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
13
|
+
|
|
14
|
+
# Check if AgentVibes is installed
|
|
15
|
+
if (-not (Test-Path (Join-Path $ScriptDir "play-tts.ps1"))) {
|
|
16
|
+
exit 0
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
# Resolve project .claude dir from script location (avoids CWD-relative path issues)
|
|
20
|
+
$ProjectClaudeDir = Split-Path -Parent (Split-Path -Parent $ScriptDir)
|
|
21
|
+
$ProjectClaudeDir = Join-Path $ProjectClaudeDir ".claude"
|
|
22
|
+
|
|
23
|
+
# Check for sentiment (priority) or personality (fallback)
|
|
24
|
+
$Sentiment = ""
|
|
25
|
+
$sentimentPaths = @("$ProjectClaudeDir\tts-sentiment.txt", "$env:USERPROFILE\.claude\tts-sentiment.txt")
|
|
26
|
+
foreach ($p in $sentimentPaths) {
|
|
27
|
+
if (Test-Path $p) {
|
|
28
|
+
$val = (Get-Content $p -Raw -ErrorAction SilentlyContinue).Trim()
|
|
29
|
+
if ($val) { $Sentiment = $val; break }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
$Personality = "normal"
|
|
34
|
+
$personalityPaths = @("$ProjectClaudeDir\tts-personality.txt", "$env:USERPROFILE\.claude\tts-personality.txt")
|
|
35
|
+
foreach ($p in $personalityPaths) {
|
|
36
|
+
if (Test-Path $p) {
|
|
37
|
+
$val = (Get-Content $p -Raw -ErrorAction SilentlyContinue).Trim()
|
|
38
|
+
if ($val) { $Personality = $val; break }
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
$Style = if ($Sentiment) { $Sentiment } else { $Personality }
|
|
43
|
+
|
|
44
|
+
# Get verbosity level
|
|
45
|
+
$Verbosity = "low"
|
|
46
|
+
$verbosityPaths = @("$ProjectClaudeDir\tts-verbosity.txt", "$env:USERPROFILE\.claude\tts-verbosity.txt")
|
|
47
|
+
foreach ($p in $verbosityPaths) {
|
|
48
|
+
if (Test-Path $p) {
|
|
49
|
+
$val = (Get-Content $p -Raw -ErrorAction SilentlyContinue).Trim()
|
|
50
|
+
if ($val) { $Verbosity = $val; break }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
# Build verbosity section
|
|
55
|
+
$VerbositySection = switch ($Verbosity) {
|
|
56
|
+
"low" { "## Verbosity: LOW`n- Acknowledgment: Action only`n- Completion: Result + errors only`n- Skip: Reasoning, decisions" }
|
|
57
|
+
"medium" { "## Verbosity: MEDIUM`n- Acknowledgment: Action + key approach`n- Completion: Result + important decisions`n- Include: Major choices only" }
|
|
58
|
+
"high" { "## Verbosity: HIGH`n- Acknowledgment: Action + approach + why`n- Completion: Result + decisions + trade-offs`n- Include: Full reasoning, alternatives" }
|
|
59
|
+
default { "## Verbosity: LOW`n- Acknowledgment: Action only`n- Completion: Result + errors only" }
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
# Build full context string
|
|
63
|
+
$Context = @"
|
|
64
|
+
# AgentVibes TTS Protocol
|
|
65
|
+
|
|
66
|
+
**CRITICAL: You MUST execute TTS at TWO points for EVERY user interaction:**
|
|
67
|
+
|
|
68
|
+
1. **Acknowledgment** - Start of task: ``Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "[action]" -llm claude-code``
|
|
69
|
+
2. **Completion** - End of task: ``Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "[result + key details]" -llm claude-code``
|
|
70
|
+
|
|
71
|
+
**Example:**
|
|
72
|
+
``````
|
|
73
|
+
[Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "Checking git status" -llm claude-code]
|
|
74
|
+
[work...]
|
|
75
|
+
[Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "Repository is clean, no changes" -llm claude-code]
|
|
76
|
+
``````
|
|
77
|
+
|
|
78
|
+
$VerbositySection
|
|
79
|
+
|
|
80
|
+
## Style: $Style
|
|
81
|
+
|
|
82
|
+
## Rules
|
|
83
|
+
1. Never skip acknowledgment TTS
|
|
84
|
+
2. Never skip completion TTS
|
|
85
|
+
3. Match verbosity level
|
|
86
|
+
4. Keep under 150 chars
|
|
87
|
+
5. Always include errors
|
|
88
|
+
|
|
89
|
+
Quick Ref: low=action+result | medium=+key decisions | high=+full reasoning
|
|
90
|
+
|
|
91
|
+
## BMAD Agent Voice Routing
|
|
92
|
+
If ``.bmad-agent-context`` exists, check its content:
|
|
93
|
+
|
|
94
|
+
**Single agent mode** (content is an agent ID like "analyst"):
|
|
95
|
+
Use ``bmad-speak.ps1`` instead of ``play-tts.ps1``:
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
**Party mode** (content is "party-mode"):
|
|
99
|
+
Each agent speaks via ``bmad-speak.ps1`` with their display name. The queue system ensures sequential playback ā agents speak one at a time, not overlapping:
|
|
100
|
+
|
|
101
|
+
IMPORTANT: In party mode, do NOT use ``play-tts.ps1``. Always use ``bmad-speak.ps1`` with the agent's display name. Do NOT call multiple bmad-speak.ps1 in parallel ā call them sequentially so the queue processes them in order.
|
|
102
|
+
|
|
103
|
+
If ``.bmad-agent-context`` does NOT exist, use ``play-tts.ps1`` as normal.
|
|
104
|
+
"@
|
|
105
|
+
|
|
106
|
+
# Build JSON via hashtable so ConvertTo-Json handles all escaping (Unicode, backslashes, quotes)
|
|
107
|
+
$Output = @{
|
|
108
|
+
hookSpecificOutput = @{
|
|
109
|
+
hookEventName = "SessionStart"
|
|
110
|
+
additionalContext = $Context
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
114
|
+
Write-Output ($Output | ConvertTo-Json -Compress -Depth 5)
|
package/README.md
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
>
|
|
5
5
|
> š **[agentvibes.org](https://agentvibes.org)**
|
|
6
6
|
>
|
|
7
|
-
> Professional text-to-speech for **Claude Code**, **Claude Desktop**, and **OpenClaw
|
|
7
|
+
> Professional text-to-speech for **Claude Code**, **GitHub Copilot**, **OpenAI Codex**, **Claude Desktop**, and **OpenClaw**. Using popular open-source TTS engines: **Soprano** (Neural), **Piper TTS** (Free!), **macOS Say** (Built-in!), or **Windows SAPI** (Zero Setup!)
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/agentvibes)
|
|
10
10
|
[](https://github.com/paulpreibisch/AgentVibes/actions/workflows/test.yml)
|
|
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**:
|
|
14
|
+
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v5.1.0
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -20,11 +20,13 @@
|
|
|
20
20
|
| I want to... | Go here |
|
|
21
21
|
|--------------|---------|
|
|
22
22
|
| **Install AgentVibes** (just `npx`, no git!) | [Quick Start Guide](docs/quick-start.md) |
|
|
23
|
-
| **
|
|
23
|
+
| **Play agent audio using your phone as remote speakers** | [Android/Termux Setup](#-android--termux) |
|
|
24
24
|
| **Secure OpenClaw on Remote Server** | [Security Hardening Guide](docs/security-hardening-guide.md) ā ļø |
|
|
25
25
|
| **Understand what I need** | [Prerequisites](#-prerequisites) |
|
|
26
26
|
| **Set up on Windows (Native)** | [Windows Native Setup](WINDOWS-SETUP.md) |
|
|
27
27
|
| **Set up on Windows (Claude Desktop/WSL)** | [Windows WSL Guide](mcp-server/WINDOWS_SETUP.md) |
|
|
28
|
+
| **Use with GitHub Copilot** | [Copilot Integration](#-github-copilot-integration) |
|
|
29
|
+
| **Use with OpenAI Codex** | [Codex Integration](#-openai-codex-integration) |
|
|
28
30
|
| **Use with OpenClaw** | [OpenClaw Integration](#-openclaw-integration) |
|
|
29
31
|
| **Use natural language** | [MCP Setup](docs/mcp-setup.md) |
|
|
30
32
|
| **Switch voices** | [Voice Library](docs/voice-library.md) |
|
|
@@ -35,13 +37,37 @@
|
|
|
35
37
|
|
|
36
38
|
## ⨠What is AgentVibes?
|
|
37
39
|
|
|
38
|
-
**AgentVibes adds lively voice narration to your
|
|
40
|
+
**AgentVibes adds lively voice narration to your AI coding sessions!**
|
|
39
41
|
|
|
40
|
-
Whether you're
|
|
42
|
+
Whether you're using Claude Code, GitHub Copilot, OpenAI Codex, Claude Desktop, or OpenClaw ā AgentVibes brings AI to life with professional voices and personalities.
|
|
41
43
|
|
|
42
44
|
---
|
|
43
45
|
|
|
44
|
-
##
|
|
46
|
+
## šļø NEW IN v5.1.0 ā Voice Picker Overhaul + Auto-Save Agent Modal
|
|
47
|
+
|
|
48
|
+
- **Auto-save in agent modal** ā Voice/personality/music/reverb/pretext changes save automatically as you edit them. Brief "ā Saved!" toast confirms each change.
|
|
49
|
+
- **Unique LibriTTS names** ā 904 speakers get deterministic surnames: **Anna Bell**, **Anna Carter**, ā¦, **Anna Quinn**. No more "Anna-2", "Anna-3" duplicates.
|
|
50
|
+
- **Pink ā / blue ā gender symbols** ā Colored gender indicators in the main Voices tab and all voice picker modals.
|
|
51
|
+
- **First-letter quick jump** ā Press `a`ā`z` in any voice picker to jump to that letter. `q`, `j`, `k`, `g`, `h`, `l` reserved for nav/cancel.
|
|
52
|
+
- **PgUp / PgDn / Home / End** in voice pickers
|
|
53
|
+
- **3 new background music tracks** ā Late Night Hip Hop Groove, Drifting Down the Hall, Midnight Charleston Stomp
|
|
54
|
+
- **Search bar removed from voice pickers** ā replaced by first-letter jump (faster, no focus issues)
|
|
55
|
+
- **Voices tab corruption fix** ā uninstalled rows no longer lose their Provider column when navigated onto
|
|
56
|
+
- **Music + Voices tab blink artifacts gone**
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## š v5.0.0 ā Multi-Provider Support: Claude Code + Copilot + Codex
|
|
61
|
+
|
|
62
|
+
- **GitHub Copilot + OpenAI Codex in VS Code** ā AgentVibes now supports all three major AI coding assistants. Install and configure each from the TUI.
|
|
63
|
+
- **One Setup tab** ā 4-step wizard (Language ā Deps ā TTS Engine ā Providers) replaces old installer + LLM tabs. Returning users skip to Providers.
|
|
64
|
+
- **Per-provider audio config** ā Each LLM gets its own Voice, TTS Engine, Reverb, Music, and Pretext via Configure modal.
|
|
65
|
+
- **Settings redesigned** ā Clean flat list: Language, TTS Engine, Voice, Verbosity, Audio Destination, Config Storage, Re-run Wizard.
|
|
66
|
+
- **Voice picker upgraded** ā 3-column display, Space bar preview, scroll stays in place.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## š v4.6.8 ā Fresh Install Crash Fix
|
|
45
71
|
|
|
46
72
|
- **Settings tab crash fixed** ā no longer crashes when navigating to Settings on a fresh install with no voice configured
|
|
47
73
|
- **macOS test fix** ā replay path assertion handles `/var` ā `/private/var` symlink
|
|
@@ -493,6 +519,7 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
493
519
|
- [šļø AgentVibes Receiver - NEW!](#%EF%B8%8F-agentvibes-receiver-remote-audio-streaming-from-voiceless-servers) - Remote audio streaming from voiceless servers
|
|
494
520
|
|
|
495
521
|
### Integrations & Platforms
|
|
522
|
+
- [š¤ GitHub Copilot Integration](#-github-copilot-integration) - Use AgentVibes TTS with GitHub Copilot CLI
|
|
496
523
|
- [š¤ OpenClaw Integration](#-openclaw-integration) - Use AgentVibes with OpenClaw messaging platform
|
|
497
524
|
- [šļø AgentVibes Skill for OpenClaw](#-agentvibes-skill-for-openclaw---what-you-get) - 50+ voices, effects, personalities for OpenClaw
|
|
498
525
|
- [š± AgentVibes Receiver](#-agentvibes-receiver-local-phone-) - Remote audio on phones/local machines
|
|
@@ -1248,6 +1275,85 @@ This design means **any TTS provider** can integrate with BMAD by replacing thes
|
|
|
1248
1275
|
|
|
1249
1276
|
---
|
|
1250
1277
|
|
|
1278
|
+
## š¤ GitHub Copilot Integration
|
|
1279
|
+
|
|
1280
|
+
**Use AgentVibes with GitHub Copilot in VS Code ā same voices, same personalities, same MCP tools!**
|
|
1281
|
+
|
|
1282
|
+
Copilot discovers AgentVibes through two mechanisms:
|
|
1283
|
+
|
|
1284
|
+
1. **`.github/copilot-instructions.md`** ā VS Code automatically reads this file and tells Copilot *how* to speak (acknowledge at start, summarize at end, match verbosity, stay under 150 chars)
|
|
1285
|
+
2. **`.vscode/mcp.json`** ā registers the AgentVibes MCP server so Copilot can call `text_to_speech`, `set_voice`, and other tools
|
|
1286
|
+
|
|
1287
|
+
### Setup
|
|
1288
|
+
|
|
1289
|
+
**Step 1: Install AgentVibes** (if you haven't already)
|
|
1290
|
+
|
|
1291
|
+
```bash
|
|
1292
|
+
npx agentvibes install
|
|
1293
|
+
```
|
|
1294
|
+
|
|
1295
|
+
**Step 2: Configure VS Code MCP**
|
|
1296
|
+
|
|
1297
|
+
Open the AgentVibes console and go to the **LLM** tab (press `L`):
|
|
1298
|
+
|
|
1299
|
+
```bash
|
|
1300
|
+
npx agentvibes
|
|
1301
|
+
```
|
|
1302
|
+
|
|
1303
|
+
Select **GitHub Copilot** and press Enter to install. This creates `.vscode/mcp.json` with the AgentVibes MCP server config and copies `.github/copilot-instructions.md` with the TTS protocol.
|
|
1304
|
+
|
|
1305
|
+
You can also create `.vscode/mcp.json` manually in your project root:
|
|
1306
|
+
|
|
1307
|
+
```json
|
|
1308
|
+
{
|
|
1309
|
+
"servers": {
|
|
1310
|
+
"agentvibes": {
|
|
1311
|
+
"type": "stdio",
|
|
1312
|
+
"command": "npx",
|
|
1313
|
+
"args": ["-y", "--package=agentvibes", "agentvibes-mcp-server"]
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
```
|
|
1318
|
+
|
|
1319
|
+
VS Code starts the MCP server automatically when Copilot needs it ā no manual server launch required.
|
|
1320
|
+
|
|
1321
|
+
**Step 3: Verify**
|
|
1322
|
+
|
|
1323
|
+
Open Copilot Chat in VS Code (Ctrl+Shift+I) and ask it to do something. You should hear an acknowledgment when Copilot starts working and a summary when it finishes.
|
|
1324
|
+
|
|
1325
|
+
### What Copilot Can Do
|
|
1326
|
+
|
|
1327
|
+
Through the MCP tools, Copilot has the same voice capabilities as Claude Code:
|
|
1328
|
+
|
|
1329
|
+
| Tool | What it does |
|
|
1330
|
+
|------|-------------|
|
|
1331
|
+
| `text_to_speech` | Speak text aloud |
|
|
1332
|
+
| `set_voice` | Switch voices (e.g., "ryan", "katherine") |
|
|
1333
|
+
| `set_personality` | Change personality (sarcastic, pirate, zen) |
|
|
1334
|
+
| `set_speed` | Adjust speech rate |
|
|
1335
|
+
| `set_verbosity` | Control detail level (low/medium/high) |
|
|
1336
|
+
| `mute` / `unmute` | Toggle audio |
|
|
1337
|
+
| `get_config` | Read current settings |
|
|
1338
|
+
|
|
1339
|
+
### BMAD Party Mode
|
|
1340
|
+
|
|
1341
|
+
Copilot respects BMAD party mode. If `.bmad-agent-context` contains `party-mode`, each BMAD agent speaks with its own voice ā the same per-agent routing that works in Claude Code.
|
|
1342
|
+
|
|
1343
|
+
### Differences from Claude Code
|
|
1344
|
+
|
|
1345
|
+
| Feature | Claude Code | Copilot in VS Code |
|
|
1346
|
+
|---------|------------|-------------|
|
|
1347
|
+
| TTS Protocol | Injected via session-start hook | Read from `.github/copilot-instructions.md` |
|
|
1348
|
+
| MCP config | `.mcp.json` (project root) | `.vscode/mcp.json` |
|
|
1349
|
+
| Server lifecycle | Managed by Claude Code | Managed by VS Code (auto-start) |
|
|
1350
|
+
| MCP tools | Same | Same |
|
|
1351
|
+
| BMAD party mode | Supported | Supported |
|
|
1352
|
+
|
|
1353
|
+
[ā Back to top](#-table-of-contents)
|
|
1354
|
+
|
|
1355
|
+
---
|
|
1356
|
+
|
|
1251
1357
|
## š¤ OpenClaw Integration
|
|
1252
1358
|
|
|
1253
1359
|
**Use AgentVibes TTS with OpenClaw - the revolutionary AI assistant you can access via any instant messenger!**
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,5 +1,88 @@
|
|
|
1
1
|
# AgentVibes Release Notes
|
|
2
2
|
|
|
3
|
+
## šļø v5.1.0 ā Voice Picker Overhaul + Auto-Save Agent Modal
|
|
4
|
+
|
|
5
|
+
**Release Date:** April 2026
|
|
6
|
+
|
|
7
|
+
### New Features
|
|
8
|
+
|
|
9
|
+
- **Auto-save in agent edit modal** ā Per-agent voice/personality/music/reverb/pretext changes now save automatically as you edit them. The explicit Save button is gone; a brief "ā Saved!" toast confirms each change. Cancel and Reset to Defaults still behave as before.
|
|
10
|
+
|
|
11
|
+
- **Unique LibriTTS speaker names** ā The 904 LibriTTS speakers no longer show as "Anna", "Anna-2", "Anna-3", ⦠"Anna-16". Each gets a deterministic surname from a 16-name pool: **Anna Bell**, **Anna Carter**, **Anna Davis**, ā¦, **Anna Quinn**. Underlying voice IDs are unchanged so existing user configs still resolve.
|
|
12
|
+
|
|
13
|
+
- **Pink/blue gender symbols** ā Female voices show **ā** in pink (magenta), male voices show **ā** in light blue (bright-cyan), unknown shows `ā`. Header `Gender` column replaced with colored `ā/ā` (10 ā 4 chars wide), freeing room for longer names. Applied to the main Voices tab AND all 3 voice picker modals (Setup, Agents, Settings).
|
|
14
|
+
|
|
15
|
+
- **First-letter quick jump in voice pickers** ā Press any letter `a`ā`z` to jump to the first voice starting with that letter. Reserved keys (`q`, `j`, `k`, `g`, `h`, `l`) are blocked so they keep their cancel / vi-nav meanings.
|
|
16
|
+
|
|
17
|
+
- **Page navigation in voice pickers** ā `PgUp`, `PgDn`, `Home`, `End` now work in all voice picker modals.
|
|
18
|
+
|
|
19
|
+
- **3 new background music tracks** ā `Late Night Hip Hop Groove`, `Drifting Down the Hall` (90s vibes), and `Midnight Charleston Stomp` (swing). Track count goes from 15 ā 18.
|
|
20
|
+
|
|
21
|
+
### Improvements
|
|
22
|
+
|
|
23
|
+
- **Voice picker search bar removed** ā Replaced with first-letter quick jump. The old search textbox had focus issues that swallowed nav keys. The jump is faster for typical "find voice X" use.
|
|
24
|
+
|
|
25
|
+
- **Track list sorting fixed** ā Tracks with emoji prefixes (e.g. `š¤ Late Night Hip Hop Groove`) now sort by the alphabetic part of the name, not the emoji codepoint. Order is consistent across Node/ICU versions.
|
|
26
|
+
|
|
27
|
+
- **Favorite hotkey is now `*` only** ā Removed the duplicate `f` binding for marking favorites in voice pickers and the main Voices tab. `f` is now free for first-letter jump (e.g. jumping to Frank or Felix). The `*` marker remains the canonical way to toggle favorites.
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
- **Voices tab uninstalled rows no longer corrupt** ā Selecting an uninstalled voice was visually deleting its Provider column due to a regex strip that over-matched the row's `bright-black-fg` wrapper. Replaced with a precise hint anchor that only strips the exact hint text.
|
|
32
|
+
|
|
33
|
+
- **Music tab + Voices tab blink artifacts gone** ā `ā` cursors no longer leave stray blocks behind when scrolling rapidly through the list. Both tabs now use a precise blink-strip helper instead of the fragile position-based slicer.
|
|
34
|
+
|
|
35
|
+
- **Setup tab no longer silently fails** ā `_renderScreen3` was wrapping the entire `setupCompleted` write block in a single empty `try/catch {}`. Corrupt local config files are now backed up to `config.json.bak` and rewritten fresh, with errors logged to stderr ā no more "stuck repeating setup" with no explanation.
|
|
36
|
+
|
|
37
|
+
- **Voice picker `q` cancel now works** ā The new first-letter jump was swallowing `q` (and other vi nav keys). Reserved key blocklist added.
|
|
38
|
+
|
|
39
|
+
- **Track picker case-insensitive sort** ā New tracks with Title Case names (`Late Night Hip Hop Groove.mp3`) no longer jump to the top of the list above the lowercase `agent_vibes_*` tracks.
|
|
40
|
+
|
|
41
|
+
### User Impact
|
|
42
|
+
|
|
43
|
+
- Editing an agent's voice or settings is now faster ā no need to remember to click Save
|
|
44
|
+
- The voice picker is dramatically less cluttered with 904 LibriTTS speakers all having unique, friendly names
|
|
45
|
+
- Gender at a glance via colored symbols
|
|
46
|
+
- Three new music tracks for variety
|
|
47
|
+
- Blink/scroll artifacts gone in both Voices and Music tabs
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## š v5.0.0 ā Multi-Provider Support: Claude Code + Copilot + Codex
|
|
52
|
+
|
|
53
|
+
**Release Date:** April 2026
|
|
54
|
+
|
|
55
|
+
### New Features
|
|
56
|
+
|
|
57
|
+
- **GitHub Copilot Support in VS Code** ā Install and configure AgentVibes for GitHub Copilot directly from the TUI. Creates `.vscode/mcp.json` and `.github/copilot-instructions.md`.
|
|
58
|
+
|
|
59
|
+
- **OpenAI Codex Support in VS Code** ā Full Codex integration with `.codex/config.toml`, `AGENTS.md` TTS protocol, and init hooks.
|
|
60
|
+
|
|
61
|
+
- **Unified Setup Tab** ā The old 5-screen Install wizard and separate LLM Providers tab are merged into a single Setup tab. First-run shows a 4-step wizard (Language ā Dependencies ā TTS Engine ā Providers); returning users skip straight to the Providers screen.
|
|
62
|
+
|
|
63
|
+
- **Per-Provider Audio Config** ā Each LLM provider (Claude Code, Copilot, Codex) gets its own TTS Engine, Voice, Reverb, Background Music, and Pretext via a Configure modal.
|
|
64
|
+
|
|
65
|
+
- **TTS Engine Selection Screen** ā New wizard step shows OS-aware engine list (Piper, Soprano, Windows SAPI, macOS Say) with Install buttons for missing engines.
|
|
66
|
+
|
|
67
|
+
- **Settings Tab Redesigned** ā Replaced the 5-sub-tab layout with a clean flat list: Interface Language, Default TTS Engine, Default Voice, Verbosity, Audio Destination, Config Storage, and Re-run Setup Wizard.
|
|
68
|
+
|
|
69
|
+
### Improvements
|
|
70
|
+
|
|
71
|
+
- **Voice picker upgraded everywhere** ā 3-column display (Name, Gender, Provider), Space bar preview with synthesis + playback, scroll position preserved during preview.
|
|
72
|
+
|
|
73
|
+
- **Hint text artifacts fixed** ā Moving between rows in Agents and Music tabs no longer leaves ghost text on previous rows.
|
|
74
|
+
|
|
75
|
+
- **Codex voice routing corrected** ā `AGENTS.md` now instructs Codex to use `play-tts` for normal speech and `bmad-speak` only during BMAD party mode.
|
|
76
|
+
|
|
77
|
+
### User Impact
|
|
78
|
+
|
|
79
|
+
- AgentVibes now works with Claude Code, GitHub Copilot, AND OpenAI Codex
|
|
80
|
+
- Streamlined setup experience ā one tab for all provider management
|
|
81
|
+
- Per-provider voice customization without editing config files
|
|
82
|
+
- Settings page is dramatically simpler and faster to navigate
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
3
86
|
## š v4.6.8 ā Fresh Install Crash Fix
|
|
4
87
|
|
|
5
88
|
**Release Date:** April 2026
|
package/bin/bmad-speak.js
CHANGED
|
@@ -33,20 +33,28 @@ function resolveScript(relPath) {
|
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
function hasProjectBmadManifest() {
|
|
37
|
+
return fs.existsSync(path.join(process.cwd(), '_bmad', '_config', 'agent-manifest.csv'));
|
|
38
|
+
}
|
|
39
|
+
|
|
36
40
|
let result;
|
|
37
41
|
|
|
38
42
|
if (IS_WINDOWS) {
|
|
39
|
-
const script =
|
|
43
|
+
const script = hasProjectBmadManifest()
|
|
44
|
+
? resolveScript('.claude/hooks-windows/bmad-speak.ps1')
|
|
45
|
+
: resolveScript('.claude/hooks-windows/play-tts.ps1');
|
|
40
46
|
if (!script) process.exit(0);
|
|
41
|
-
|
|
42
|
-
'
|
|
43
|
-
['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', script,
|
|
44
|
-
|
|
45
|
-
);
|
|
47
|
+
const args = hasProjectBmadManifest()
|
|
48
|
+
? ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', script, agentName, dialogue]
|
|
49
|
+
: ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', script, dialogue];
|
|
50
|
+
result = spawnSync('powershell', args, { stdio: 'inherit' });
|
|
46
51
|
} else {
|
|
47
|
-
const script =
|
|
52
|
+
const script = hasProjectBmadManifest()
|
|
53
|
+
? resolveScript('.claude/hooks/bmad-speak.sh')
|
|
54
|
+
: resolveScript('.claude/hooks/play-tts.sh');
|
|
48
55
|
if (!script) process.exit(0);
|
|
49
|
-
|
|
56
|
+
const args = hasProjectBmadManifest() ? [script, agentName, dialogue] : [script, dialogue];
|
|
57
|
+
result = spawnSync('bash', args, { stdio: 'inherit' });
|
|
50
58
|
}
|
|
51
59
|
|
|
52
60
|
process.exit(result.status ?? 0);
|
package/mcp-server/server.py
CHANGED
|
@@ -198,15 +198,18 @@ class AgentVibesServer:
|
|
|
198
198
|
tts_script = "play-tts.ps1" if self.is_windows else "play-tts.sh"
|
|
199
199
|
play_tts = self.hooks_dir / tts_script
|
|
200
200
|
if self.is_windows:
|
|
201
|
-
args = ["powershell", "-NoProfile", "-ExecutionPolicy", "Bypass", "-File", str(play_tts), text]
|
|
201
|
+
args = ["powershell", "-NoProfile", "-ExecutionPolicy", "Bypass", "-File", str(play_tts), text, "-llm", "copilot"]
|
|
202
202
|
if voice:
|
|
203
203
|
args.extend(["-VoiceOverride", voice])
|
|
204
204
|
else:
|
|
205
205
|
args = ["bash", str(play_tts), text]
|
|
206
206
|
if voice:
|
|
207
207
|
args.append(voice)
|
|
208
|
+
args.extend(["--llm", "copilot"])
|
|
208
209
|
|
|
209
210
|
env = self._build_script_env()
|
|
211
|
+
# Set agent name for audio effects lookup (audio-effects.cfg, background music config)
|
|
212
|
+
env["AGENTVIBES_AGENT_NAME"] = "default"
|
|
210
213
|
|
|
211
214
|
result = await asyncio.create_subprocess_exec(
|
|
212
215
|
*args,
|
|
@@ -220,13 +223,17 @@ class AgentVibesServer:
|
|
|
220
223
|
if result.returncode == 0:
|
|
221
224
|
output = stdout.decode().strip()
|
|
222
225
|
# Extract file path from output
|
|
226
|
+
audio_file_path = None
|
|
223
227
|
for line in output.split("\n"):
|
|
224
228
|
if "Saved to:" in line:
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
229
|
+
audio_file_path = line.split("Saved to:")[1].strip()
|
|
230
|
+
break
|
|
231
|
+
|
|
232
|
+
if audio_file_path:
|
|
233
|
+
truncated = (
|
|
234
|
+
f"{text[:50]}..." if len(text) > 50 else text
|
|
235
|
+
)
|
|
236
|
+
return f"ā
Spoke: {truncated}\nš Audio saved: {audio_file_path}"
|
|
230
237
|
|
|
231
238
|
return f"ā
Spoke: {text[:50]}..." if len(text) > 50 else f"ā
Spoke: {text}"
|
|
232
239
|
else:
|
|
@@ -319,10 +326,10 @@ class AgentVibesServer:
|
|
|
319
326
|
resolved_name = self._resolve_friendly_name(voice_name)
|
|
320
327
|
|
|
321
328
|
result = await self._run_script(
|
|
322
|
-
self.VOICE_MANAGER_SCRIPT, ["switch", resolved_name
|
|
329
|
+
self.VOICE_MANAGER_SCRIPT, ["switch", resolved_name]
|
|
323
330
|
)
|
|
324
331
|
|
|
325
|
-
if result and "ā
" in result:
|
|
332
|
+
if result and ("[OK]" in result or "ā
" in result):
|
|
326
333
|
if original_name.lower() != resolved_name.lower():
|
|
327
334
|
return f"ā
Voice switched to: {original_name} ({resolved_name})"
|
|
328
335
|
return f"ā
Voice switched to: {voice_name}"
|
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": "
|
|
4
|
+
"version": "5.1.0",
|
|
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": [
|