agentvibes 5.1.4 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agentvibes/config.json +23 -13
- package/.claude/commands/agent-vibes/verbosity.md +98 -89
- package/.claude/config/audio-effects.cfg +4 -1
- package/.claude/hooks/bmad-speak.sh +2 -2
- package/.claude/hooks/piper-download-voices.sh +233 -225
- package/.claude/hooks/piper-installer.sh +1 -1
- package/.claude/hooks/piper-voice-manager.sh +125 -0
- package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +97 -90
- package/.claude/hooks/play-tts-enhanced.sh +1 -1
- package/.claude/hooks/play-tts-piper.sh +16 -5
- package/.claude/hooks/play-tts-ssh-remote.sh +168 -167
- package/.claude/hooks/play-tts.sh +21 -9
- package/.claude/hooks/session-start-tts.sh +4 -1
- package/.claude/hooks/stop-tts.sh +1 -1
- package/.claude/hooks/verbosity-manager.sh +185 -178
- package/.claude/hooks-windows/download-extra-voices.ps1 +243 -185
- package/.claude/hooks-windows/play-tts-piper.ps1 +7 -2
- package/.claude/hooks-windows/play-tts.ps1 +7 -1
- package/.claude/hooks-windows/session-start-tts.ps1 +2 -1
- package/.claude/hooks-windows/verbosity-manager.ps1 +126 -119
- package/README.md +10 -2
- package/RELEASE_NOTES.md +36 -0
- package/bin/agentvibes-voice-browser.js +1939 -1840
- package/mcp-server/server.py +52 -9
- package/package.json +1 -1
- package/src/console/tabs/receiver-tab.js +1527 -1483
- package/src/console/tabs/settings-tab.js +2 -2
- package/src/console/tabs/setup-tab.js +53 -8
- package/src/console/tabs/voices-tab.js +130 -13
- package/src/i18n/en.js +202 -202
- package/src/services/verbosity-service.js +159 -157
- package/templates/agentvibes-receiver.sh +3 -2
|
@@ -1,119 +1,126 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File: .claude/hooks-windows/verbosity-manager.ps1
|
|
3
|
-
#
|
|
4
|
-
# AgentVibes - Finally, your AI Agents can Talk Back!
|
|
5
|
-
# Website: https://agentvibes.org
|
|
6
|
-
# Copyright (c) 2025 Paul Preibisch
|
|
7
|
-
# Licensed under the Apache License, Version 2.0
|
|
8
|
-
|
|
9
|
-
param(
|
|
10
|
-
[Parameter(Position=0)]
|
|
11
|
-
[string]$Command = "info",
|
|
12
|
-
[Parameter(Position=1)]
|
|
13
|
-
[string]$Arg1 = ""
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
17
|
-
$ClaudeDir = Split-Path -Parent $ScriptDir
|
|
18
|
-
|
|
19
|
-
# Respect CLAUDE_PROJECT_DIR when set by MCP
|
|
20
|
-
if ($env:CLAUDE_PROJECT_DIR) {
|
|
21
|
-
$ConfigClaudeDir = Join-Path $env:CLAUDE_PROJECT_DIR ".claude"
|
|
22
|
-
} else {
|
|
23
|
-
$ConfigClaudeDir = $ClaudeDir
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
$VerbosityFile = Join-Path $ConfigClaudeDir "tts-verbosity.txt"
|
|
27
|
-
$GlobalVerbosityFile = Join-Path $env:USERPROFILE ".claude\tts-verbosity.txt"
|
|
28
|
-
|
|
29
|
-
function Get-Verbosity {
|
|
30
|
-
if (Test-Path $VerbosityFile) {
|
|
31
|
-
return (Get-Content $VerbosityFile -Raw).Trim()
|
|
32
|
-
}
|
|
33
|
-
if (Test-Path $GlobalVerbosityFile) {
|
|
34
|
-
return (Get-Content $GlobalVerbosityFile -Raw).Trim()
|
|
35
|
-
}
|
|
36
|
-
return "high"
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function Set-Verbosity {
|
|
40
|
-
param([string]$Level)
|
|
41
|
-
|
|
42
|
-
if ($Level -notmatch '^(low|medium|high)$') {
|
|
43
|
-
Write-Output "Invalid verbosity level: $Level"
|
|
44
|
-
Write-Output "Valid options: low, medium, high"
|
|
45
|
-
exit 1
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (Test-Path $ConfigClaudeDir) {
|
|
49
|
-
Set-Content -Path $VerbosityFile -Value $Level -NoNewline
|
|
50
|
-
Write-Output "Verbosity set to: $Level (project-local)"
|
|
51
|
-
} else {
|
|
52
|
-
$globalDir = Split-Path -Parent $GlobalVerbosityFile
|
|
53
|
-
if (-not (Test-Path $globalDir)) { New-Item -ItemType Directory -Path $globalDir -Force | Out-Null }
|
|
54
|
-
Set-Content -Path $GlobalVerbosityFile -Value $Level -NoNewline
|
|
55
|
-
Write-Output "Verbosity set to: $Level (global)"
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
Write-Output ""
|
|
59
|
-
Write-Output "Verbosity levels:"
|
|
60
|
-
Write-Output " LOW: Acknowledgments + Completions only"
|
|
61
|
-
Write-Output " MEDIUM: + Major decisions and findings"
|
|
62
|
-
Write-Output " HIGH: All reasoning (maximum transparency)"
|
|
63
|
-
Write-Output ""
|
|
64
|
-
Write-Output "
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
Write-Output "
|
|
72
|
-
Write-Output "
|
|
73
|
-
Write-Output ""
|
|
74
|
-
Write-Output "
|
|
75
|
-
Write-Output ""
|
|
76
|
-
Write-Output "
|
|
77
|
-
Write-Output "
|
|
78
|
-
Write-Output "
|
|
79
|
-
Write-Output "
|
|
80
|
-
Write-Output ""
|
|
81
|
-
Write-Output "
|
|
82
|
-
Write-Output "
|
|
83
|
-
Write-Output "
|
|
84
|
-
Write-Output "
|
|
85
|
-
Write-Output "
|
|
86
|
-
Write-Output ""
|
|
87
|
-
Write-Output "
|
|
88
|
-
Write-Output "
|
|
89
|
-
Write-Output "
|
|
90
|
-
Write-Output " All
|
|
91
|
-
Write-Output " All
|
|
92
|
-
Write-Output "
|
|
93
|
-
Write-Output ""
|
|
94
|
-
Write-Output "
|
|
95
|
-
Write-Output "
|
|
96
|
-
Write-Output "
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
"
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"set"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
1
|
+
#
|
|
2
|
+
# File: .claude/hooks-windows/verbosity-manager.ps1
|
|
3
|
+
#
|
|
4
|
+
# AgentVibes - Finally, your AI Agents can Talk Back!
|
|
5
|
+
# Website: https://agentvibes.org
|
|
6
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
7
|
+
# Licensed under the Apache License, Version 2.0
|
|
8
|
+
|
|
9
|
+
param(
|
|
10
|
+
[Parameter(Position=0)]
|
|
11
|
+
[string]$Command = "info",
|
|
12
|
+
[Parameter(Position=1)]
|
|
13
|
+
[string]$Arg1 = ""
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
17
|
+
$ClaudeDir = Split-Path -Parent $ScriptDir
|
|
18
|
+
|
|
19
|
+
# Respect CLAUDE_PROJECT_DIR when set by MCP
|
|
20
|
+
if ($env:CLAUDE_PROJECT_DIR) {
|
|
21
|
+
$ConfigClaudeDir = Join-Path $env:CLAUDE_PROJECT_DIR ".claude"
|
|
22
|
+
} else {
|
|
23
|
+
$ConfigClaudeDir = $ClaudeDir
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
$VerbosityFile = Join-Path $ConfigClaudeDir "tts-verbosity.txt"
|
|
27
|
+
$GlobalVerbosityFile = Join-Path $env:USERPROFILE ".claude\tts-verbosity.txt"
|
|
28
|
+
|
|
29
|
+
function Get-Verbosity {
|
|
30
|
+
if (Test-Path $VerbosityFile) {
|
|
31
|
+
return (Get-Content $VerbosityFile -Raw).Trim()
|
|
32
|
+
}
|
|
33
|
+
if (Test-Path $GlobalVerbosityFile) {
|
|
34
|
+
return (Get-Content $GlobalVerbosityFile -Raw).Trim()
|
|
35
|
+
}
|
|
36
|
+
return "high"
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function Set-Verbosity {
|
|
40
|
+
param([string]$Level)
|
|
41
|
+
|
|
42
|
+
if ($Level -notmatch '^(low|medium|high|caveman)$') {
|
|
43
|
+
Write-Output "Invalid verbosity level: $Level"
|
|
44
|
+
Write-Output "Valid options: low, medium, high, caveman"
|
|
45
|
+
exit 1
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (Test-Path $ConfigClaudeDir) {
|
|
49
|
+
Set-Content -Path $VerbosityFile -Value $Level -NoNewline
|
|
50
|
+
Write-Output "Verbosity set to: $Level (project-local)"
|
|
51
|
+
} else {
|
|
52
|
+
$globalDir = Split-Path -Parent $GlobalVerbosityFile
|
|
53
|
+
if (-not (Test-Path $globalDir)) { New-Item -ItemType Directory -Path $globalDir -Force | Out-Null }
|
|
54
|
+
Set-Content -Path $GlobalVerbosityFile -Value $Level -NoNewline
|
|
55
|
+
Write-Output "Verbosity set to: $Level (global)"
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
Write-Output ""
|
|
59
|
+
Write-Output "Verbosity levels:"
|
|
60
|
+
Write-Output " LOW: Acknowledgments + Completions only"
|
|
61
|
+
Write-Output " MEDIUM: + Major decisions and findings"
|
|
62
|
+
Write-Output " HIGH: All reasoning (maximum transparency)"
|
|
63
|
+
Write-Output " CAVEMAN: Ultra-terse fragments, max token savings"
|
|
64
|
+
Write-Output ""
|
|
65
|
+
Write-Output "Restart Claude Code for changes to take effect"
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function Show-Info {
|
|
69
|
+
$currentLevel = Get-Verbosity
|
|
70
|
+
|
|
71
|
+
Write-Output "AgentVibes Verbosity Control"
|
|
72
|
+
Write-Output "------------------------------------"
|
|
73
|
+
Write-Output "Current level: $currentLevel"
|
|
74
|
+
Write-Output ""
|
|
75
|
+
Write-Output "Available levels:"
|
|
76
|
+
Write-Output ""
|
|
77
|
+
Write-Output "LOW (Minimal)"
|
|
78
|
+
Write-Output " Acknowledgments only"
|
|
79
|
+
Write-Output " Completions only"
|
|
80
|
+
Write-Output " No reasoning spoken"
|
|
81
|
+
Write-Output ""
|
|
82
|
+
Write-Output "MEDIUM (Balanced)"
|
|
83
|
+
Write-Output " Acknowledgments"
|
|
84
|
+
Write-Output " Major decisions"
|
|
85
|
+
Write-Output " Key findings"
|
|
86
|
+
Write-Output " Completions"
|
|
87
|
+
Write-Output ""
|
|
88
|
+
Write-Output "HIGH (Maximum Transparency)"
|
|
89
|
+
Write-Output " Acknowledgments"
|
|
90
|
+
Write-Output " All reasoning"
|
|
91
|
+
Write-Output " All decisions"
|
|
92
|
+
Write-Output " All findings"
|
|
93
|
+
Write-Output " Completions"
|
|
94
|
+
Write-Output ""
|
|
95
|
+
Write-Output "CAVEMAN (Ultra-Terse)"
|
|
96
|
+
Write-Output " Fragments only, no filler"
|
|
97
|
+
Write-Output " 65-75% fewer output tokens"
|
|
98
|
+
Write-Output " Abbreviations (DB/auth/config/fn/impl)"
|
|
99
|
+
Write-Output " Arrows instead of prose (X -> Y)"
|
|
100
|
+
Write-Output ""
|
|
101
|
+
Write-Output "Usage:"
|
|
102
|
+
Write-Output " verbosity-manager.ps1 get Show current level"
|
|
103
|
+
Write-Output " verbosity-manager.ps1 set low|medium|high|caveman Change level"
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
switch ($Command) {
|
|
107
|
+
"get" {
|
|
108
|
+
Write-Output (Get-Verbosity)
|
|
109
|
+
}
|
|
110
|
+
"set" {
|
|
111
|
+
if (-not $Arg1) {
|
|
112
|
+
Write-Output "Error: Missing verbosity level"
|
|
113
|
+
Write-Output "Usage: verbosity-manager.ps1 set low|medium|high|caveman"
|
|
114
|
+
exit 1
|
|
115
|
+
}
|
|
116
|
+
Set-Verbosity $Arg1
|
|
117
|
+
}
|
|
118
|
+
{ $_ -in "info", "" } {
|
|
119
|
+
Show-Info
|
|
120
|
+
}
|
|
121
|
+
default {
|
|
122
|
+
Write-Output "Unknown command: $Command"
|
|
123
|
+
Write-Output "Usage: verbosity-manager.ps1 {get|set|info} [level]"
|
|
124
|
+
exit 1
|
|
125
|
+
}
|
|
126
|
+
}
|
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.2.0
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -43,7 +43,15 @@ Whether you're using Claude Code, GitHub Copilot, OpenAI Codex, Claude Desktop,
|
|
|
43
43
|
|
|
44
44
|
---
|
|
45
45
|
|
|
46
|
-
##
|
|
46
|
+
## 🎯 NEW IN v5.2.0 — Remote Voice Preview + Caveman Mode + Voice Ratings
|
|
47
|
+
|
|
48
|
+
- **Caveman verbosity mode** — Ultra-terse TTS fragments. Set via `/agent-vibes:verbosity caveman`.
|
|
49
|
+
- **👍/👎 voice ratings** — Press `+` to thumbs up, `-` to thumbs down in any voice list. Replaces star favorites.
|
|
50
|
+
- **Remote voice preview** — TUI voice preview works on headless servers via SSH receiver. No local audio needed.
|
|
51
|
+
- **SSH receiver routing** — `ssh-remote` and `agentvibes-receiver` are now first-class providers.
|
|
52
|
+
- **Voice validation hardened** — Multi-speaker `::` format, cross-platform base64, no backslash injection.
|
|
53
|
+
|
|
54
|
+
## 🛡️ v5.1.4 — TTS Resilience Overhaul + Default LLM Provider
|
|
47
55
|
|
|
48
56
|
- **Default LLM provider** — New fallback entry at the bottom of Setup → Providers. Config-only; opens the standard Configure modal. Used when a tool calls TTS without identifying its LLM.
|
|
49
57
|
- **Per-LLM background music auto-enables** — Setting a bg track on the per-LLM Configure modal actually plays it now (no need to also toggle global bg music).
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# AgentVibes Release Notes
|
|
2
2
|
|
|
3
|
+
## 🎯 v5.2.0 — Remote Voice Preview + Caveman Mode + Voice Ratings
|
|
4
|
+
|
|
5
|
+
**Release Date:** April 2026
|
|
6
|
+
|
|
7
|
+
This release adds remote TTS preview support, a new ultra-terse verbosity mode, and thumbs up/down voice ratings across the TUI.
|
|
8
|
+
|
|
9
|
+
### New Features
|
|
10
|
+
|
|
11
|
+
- **Caveman verbosity mode** — New `caveman` verbosity level for ultra-terse TTS output. Fragments instead of sentences. Set via `/agent-vibes:verbosity caveman` or the MCP `set_verbosity` tool. Auto-downloads a voice on fresh install if none are present.
|
|
12
|
+
|
|
13
|
+
- **Thumbs up/down voice ratings** — Replace the old star favorites with 👍/👎 ratings. Press `+` to thumbs up, `-` to thumbs down in both the Voices tab and the voice picker (Setup tab). Ratings persist across sessions and are shared between all voice selection UIs.
|
|
14
|
+
|
|
15
|
+
- **Remote voice preview** — Voice preview in the TUI Voices tab, voice picker, and voice browser now works on headless servers. When the active provider is `ssh-remote` or `agentvibes-receiver`, preview routes through `play-tts.sh` to play audio on the remote receiver instead of requiring local Piper + audio player. Platform-aware: uses PowerShell on Windows, bash on Linux.
|
|
16
|
+
|
|
17
|
+
- **SSH receiver provider routing** — `ssh-remote` and `agentvibes-receiver` are now first-class providers in `play-tts.sh`. Both the `speak_text()` function and the main routing case statement support them, eliminating "Unknown provider" errors.
|
|
18
|
+
|
|
19
|
+
### Fixes
|
|
20
|
+
|
|
21
|
+
- **Auto-patch LibriTTS speaker names** — Voice download now auto-patches LibriTTS speaker names so multi-speaker voices work correctly out of the box.
|
|
22
|
+
|
|
23
|
+
- **Voice validation regex hardened** — The VOICE parameter regex in `play-tts-ssh-remote.sh` and `play-tts-agentvibes-receiver.sh` now allows `::` (multi-speaker), `.` (locale), and spaces (speaker names) without accepting backslash (injection risk). Linux and Windows receiver templates updated to match.
|
|
24
|
+
|
|
25
|
+
- **`base64` cross-platform compatibility** — `play-tts-agentvibes-receiver.sh` now probes for GNU `base64 -w 0`, falls back to BSD `-b 0`, then `tr -d '\n'`. Fixes script abort on macOS/BSD systems.
|
|
26
|
+
|
|
27
|
+
- **Audio effects double-processing fix** — `play-tts-piper.ps1` skips its own audio-processor call when `AGENTVIBES_NO_PLAY` is set, preventing reverb/music from being applied twice.
|
|
28
|
+
|
|
29
|
+
- **Exit code leak fix** — `play-tts.ps1` now exits with code 0 explicitly, preventing native command exit codes (piper, ffmpeg, sox) from leaking through and causing false TTS failure reports.
|
|
30
|
+
|
|
31
|
+
- **Windows receiver-tab platform support** — Tailscale IP detection, local IP via PowerShell, sshd_config reading, and clipboard copy all work natively on Windows now.
|
|
32
|
+
|
|
33
|
+
- **`llm:default` audio effects row** — New default row in `audio-effects.cfg` ensures remote receivers get reverb, music, and pretext even without a per-LLM config entry.
|
|
34
|
+
|
|
35
|
+
- **Preview sample text** — Changed from "Here is a preview of your audio settings" to avoid Piper pronunciation glitch on the word "preview".
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
3
39
|
## 🛡️ v5.1.4 — TTS Resilience Overhaul + Default LLM Provider + Per-Client Routing
|
|
4
40
|
|
|
5
41
|
**Release Date:** April 2026
|