agentvibes 5.3.0 → 5.5.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/LITE-MODE.md +236 -0
- package/.agentvibes/README.md +136 -0
- package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +141 -0
- package/.agentvibes/backups/agents/analyst_20260204_144958.md +78 -0
- package/.agentvibes/backups/agents/architect_20260204_144958.md +72 -0
- package/.agentvibes/backups/agents/dev_20260204_144958.md +74 -0
- package/.agentvibes/backups/agents/pm_20260204_144958.md +72 -0
- package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +64 -0
- package/.agentvibes/backups/agents/sm_20260204_144958.md +87 -0
- package/.agentvibes/backups/agents/tea_20260204_144958.md +79 -0
- package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +82 -0
- package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +80 -0
- package/.agentvibes/bmad/bmad-voices.md +69 -69
- package/.agentvibes/config/README-personality-defaults.md +162 -0
- package/.agentvibes/config/mode.txt +1 -0
- package/.agentvibes/config/personality-voice-defaults.default.json +21 -0
- package/.agentvibes/config/save-audio.txt +1 -0
- package/.agentvibes/config/voice-metadata.json +160 -0
- package/.agentvibes/config.json +24 -15
- package/.agentvibes/hooks/help.sh +191 -0
- package/.agentvibes/hooks/post-tool-use-lite.sh +111 -0
- package/.agentvibes/hooks/save-audio-manager.sh +162 -0
- package/.agentvibes/hooks/session-start-full-optimized.sh +102 -0
- package/.agentvibes/hooks/session-start-full.sh +142 -0
- package/.agentvibes/hooks/session-start-lite-v2.sh +34 -0
- package/.agentvibes/hooks/session-start-lite.sh +29 -0
- package/.agentvibes/hooks/stop-lite.sh +115 -0
- package/.agentvibes/hooks/switch-mode.sh +215 -0
- package/.agentvibes/output-styles/audio-summary.md +30 -0
- package/.claude/activation-instructions +54 -54
- 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/commands/agent-vibes/add.md +21 -21
- package/.claude/commands/agent-vibes/agent-vibes.md +101 -101
- package/.claude/commands/agent-vibes/agent.md +79 -79
- package/.claude/commands/agent-vibes/background-music.md +111 -111
- package/.claude/commands/agent-vibes/bmad.md +198 -198
- package/.claude/commands/agent-vibes/clean.md +18 -18
- package/.claude/commands/agent-vibes/cleanup.md +18 -18
- package/.claude/commands/agent-vibes/commands.json +145 -145
- package/.claude/commands/agent-vibes/effects.md +97 -97
- package/.claude/commands/agent-vibes/get.md +9 -9
- package/.claude/commands/agent-vibes/hide.md +91 -91
- package/.claude/commands/agent-vibes/language.md +23 -23
- package/.claude/commands/agent-vibes/learn.md +67 -67
- package/.claude/commands/agent-vibes/list.md +13 -13
- package/.claude/commands/agent-vibes/mute.md +37 -37
- package/.claude/commands/agent-vibes/preview.md +17 -17
- package/.claude/commands/agent-vibes/provider.md +68 -68
- package/.claude/commands/agent-vibes/replay-target.md +14 -14
- package/.claude/commands/agent-vibes/sample.md +12 -12
- package/.claude/commands/agent-vibes/set-favorite-voice.md +84 -84
- package/.claude/commands/agent-vibes/set-pretext.md +65 -65
- package/.claude/commands/agent-vibes/set-speed.md +41 -41
- package/.claude/commands/agent-vibes/show.md +84 -84
- package/.claude/commands/agent-vibes/switch.md +87 -87
- package/.claude/commands/agent-vibes/target-voice.md +26 -26
- package/.claude/commands/agent-vibes/target.md +30 -30
- package/.claude/commands/agent-vibes/translate.md +68 -68
- package/.claude/commands/agent-vibes/unmute.md +45 -45
- package/.claude/commands/agent-vibes/whoami.md +7 -7
- 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 +16 -11
- package/.claude/config/audio-effects.cfg.sample +52 -52
- package/.claude/config/background-music-position.txt +27 -0
- package/.claude/config/background-music-volume.txt +1 -1
- package/.claude/config/background-music.cfg +1 -0
- package/.claude/config/background-music.txt +1 -0
- package/.claude/config/tts-speech-rate.txt +1 -4
- 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/README-TTS-QUEUE.md +135 -135
- package/.claude/hooks/audio-cache-utils.sh +0 -0
- package/.claude/hooks/audio-processor.sh +60 -14
- package/.claude/hooks/background-music-manager.sh +0 -0
- package/.claude/hooks/bmad-party-manager.sh +225 -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 +12 -15
- 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 +25 -23
- package/.claude/hooks/clawdbot-receiver.sh +4 -28
- package/.claude/hooks/clean-audio-cache.sh +0 -0
- package/.claude/hooks/cleanup-cache.sh +0 -0
- package/.claude/hooks/configure-rdp-mode.sh +0 -0
- package/.claude/hooks/download-extra-voices.sh +0 -0
- package/.claude/hooks/effects-manager.sh +0 -0
- package/.claude/hooks/github-star-reminder.sh +0 -0
- package/.claude/hooks/language-manager.sh +0 -0
- package/.claude/hooks/learn-manager.sh +0 -0
- package/.claude/hooks/macos-voice-manager.sh +0 -0
- package/.claude/hooks/migrate-background-music.sh +0 -0
- package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
- package/.claude/hooks/optimize-background-music.sh +0 -0
- package/.claude/hooks/personality-manager.sh +0 -0
- package/.claude/hooks/piper-download-voices.sh +0 -0
- package/.claude/hooks/piper-installer.sh +1 -1
- package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
- package/.claude/hooks/piper-voice-manager.sh +0 -0
- package/.claude/hooks/play-tts-enhanced.sh +0 -0
- package/.claude/hooks/play-tts-macos.sh +6 -12
- package/.claude/hooks/play-tts-piper.sh +52 -81
- package/.claude/hooks/play-tts-soprano.sh +9 -43
- package/.claude/hooks/play-tts-ssh-remote.sh +43 -215
- package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
- package/.claude/hooks/play-tts.sh +41 -20
- package/.claude/hooks/post-response.sh +41 -0
- package/.claude/hooks/prepare-release.sh +0 -0
- package/.claude/hooks/provider-commands.sh +0 -0
- package/.claude/hooks/provider-manager.sh +0 -0
- package/.claude/hooks/replay-target-audio.sh +0 -0
- package/.claude/hooks/requirements.txt +6 -6
- package/.claude/hooks/sentiment-manager.sh +0 -0
- package/.claude/hooks/session-start-tts.sh +56 -39
- package/.claude/hooks/soprano-gradio-synth.py +139 -139
- package/.claude/hooks/speed-manager.sh +0 -0
- package/.claude/hooks/stop.sh +63 -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 +26 -4
- package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
- package/.claude/hooks-windows/bmad-party-speak.ps1 +278 -278
- package/.claude/hooks-windows/bmad-speak.ps1 +264 -264
- package/.claude/hooks-windows/clean-audio-cache.ps1 +53 -53
- package/.claude/hooks-windows/effects-manager.ps1 +294 -294
- package/.claude/hooks-windows/language-manager.ps1 +193 -193
- package/.claude/hooks-windows/learn-manager.ps1 +241 -241
- package/.claude/hooks-windows/personality-manager.ps1 +266 -266
- package/.claude/hooks-windows/play-tts-soprano.ps1 +5 -5
- package/.claude/hooks-windows/play-tts-termux-ssh.ps1 +138 -138
- package/.claude/hooks-windows/play-tts-windows-piper.ps1 +178 -0
- package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -0
- package/.claude/hooks-windows/play-tts.ps1 +265 -507
- package/.claude/hooks-windows/provider-manager.ps1 +158 -192
- package/.claude/hooks-windows/session-start-tts.ps1 +55 -46
- package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
- package/.claude/hooks-windows/speed-manager.ps1 +166 -166
- package/.claude/hooks-windows/voice-manager-windows.ps1 +176 -260
- package/.claude/output-styles/agent-vibes.md +202 -202
- package/.claude/personalities/angry.md +14 -14
- package/.claude/personalities/annoying.md +14 -14
- package/.claude/personalities/crass.md +14 -14
- package/.claude/personalities/dramatic.md +14 -14
- package/.claude/personalities/dry-humor.md +50 -50
- package/.claude/personalities/flirty.md +20 -20
- package/.claude/personalities/funny.md +14 -14
- package/.claude/personalities/grandpa.md +32 -32
- package/.claude/personalities/millennial.md +14 -14
- package/.claude/personalities/moody.md +14 -14
- package/.claude/personalities/normal.md +16 -16
- package/.claude/personalities/pirate.md +14 -14
- package/.claude/personalities/poetic.md +14 -14
- package/.claude/personalities/professional.md +14 -14
- package/.claude/personalities/rapper.md +55 -55
- package/.claude/personalities/robot.md +14 -14
- package/.claude/personalities/sarcastic.md +38 -38
- package/.claude/personalities/sassy.md +14 -14
- package/.claude/personalities/surfer-dude.md +14 -14
- package/.claude/personalities/zen.md +14 -14
- package/.claude/piper-voices-dir.txt +1 -0
- package/.claude/settings.json +25 -15
- package/.claude/verbosity.txt +1 -1
- package/.clawdbot/README.md +105 -105
- package/.clawdbot/skill/SKILL.md +149 -145
- package/.mcp.json +30 -11
- package/CLAUDE.md +170 -215
- package/README.md +207 -521
- package/RELEASE_NOTES.md +1172 -1976
- package/WINDOWS-SETUP.md +208 -208
- package/bin/agent-vibes +0 -0
- package/bin/agentvibes-voice-browser.js +64 -1289
- package/bin/agentvibes.js +28 -0
- package/bin/ensure-soprano-running.sh +43 -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 +260 -260
- package/mcp-server/docs/troubleshooting-audio.md +313 -313
- 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 +130 -130
- package/mcp-server/pyproject.toml +52 -52
- package/mcp-server/requirements.txt +2 -2
- package/mcp-server/server.py +1467 -1578
- package/mcp-server/test_server.py +395 -395
- package/package.json +1 -3
- package/setup-windows.ps1 +815 -815
- package/src/console/tabs/music-tab.js +5 -2
- package/src/console/tabs/voices-tab.js +71 -37
- package/src/installer.js +52 -5
- package/src/services/llm-provider-service.js +1 -1
- package/templates/agentvibes-receiver.sh +158 -483
- package/templates/audio/welcome-music.mp3 +0 -0
- package/.agentvibes/bmad-voice-map.json +0 -104
- package/.agentvibes/copilot-sessions.log +0 -4
- package/.claude/config/audio-effects-bmad.cfg +0 -50
- package/.claude/config/intro-text.txt +0 -1
- package/.claude/config/personality.txt +0 -1
- package/.claude/config/piper-speech-rate.txt +0 -4
- package/.claude/config/piper-target-speech-rate.txt +0 -1
- package/.claude/config/reverb-level.txt +0 -1
- package/.claude/config/tts-target-speech-rate.txt +0 -1
- package/voice-assignments.json +0 -8245
- /package/{.claude → .agentvibes}/config/agentvibes.json +0 -0
|
@@ -1,192 +1,158 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File: .claude/hooks-windows/provider-manager.ps1
|
|
3
|
-
#
|
|
4
|
-
# AgentVibes - Windows TTS Provider Management
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
param(
|
|
8
|
-
[Parameter(Position = 0)]
|
|
9
|
-
[ValidateSet('get', 'set', 'list', 'switch')]
|
|
10
|
-
[string]$Command = 'get',
|
|
11
|
-
|
|
12
|
-
[Parameter(Position = 1)]
|
|
13
|
-
[string]$Provider
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
$
|
|
18
|
-
$
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
$ClaudeDir
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function Get-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
$
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
$available += @{
|
|
50
|
-
name = "
|
|
51
|
-
description = "Windows
|
|
52
|
-
installed = $
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
# Check if
|
|
56
|
-
$
|
|
57
|
-
$
|
|
58
|
-
|
|
59
|
-
$
|
|
60
|
-
$
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if ($
|
|
98
|
-
$
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
$
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
Write-Host ""
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
# Main command routing
|
|
163
|
-
switch ($Command) {
|
|
164
|
-
'get' {
|
|
165
|
-
$active = Get-ActiveProvider
|
|
166
|
-
Write-Host "[ACTIVE] TTS Provider: $active"
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
'set' {
|
|
170
|
-
if (-not $Provider) {
|
|
171
|
-
Write-Host "[ERROR] Provider name required" -ForegroundColor Red
|
|
172
|
-
Write-Host "Usage: provider-manager.ps1 set PROVIDER_NAME" -ForegroundColor Yellow
|
|
173
|
-
List-Providers
|
|
174
|
-
exit 1
|
|
175
|
-
}
|
|
176
|
-
Set-ActiveProvider $Provider | Out-Null
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
'list' {
|
|
180
|
-
List-Providers
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
'switch' {
|
|
184
|
-
if (-not $Provider) {
|
|
185
|
-
Write-Host "[ERROR] Provider name required" -ForegroundColor Red
|
|
186
|
-
Write-Host "Usage: provider-manager.ps1 switch PROVIDER_NAME" -ForegroundColor Yellow
|
|
187
|
-
List-Providers
|
|
188
|
-
exit 1
|
|
189
|
-
}
|
|
190
|
-
Set-ActiveProvider $Provider | Out-Null
|
|
191
|
-
}
|
|
192
|
-
}
|
|
1
|
+
#
|
|
2
|
+
# File: .claude/hooks-windows/provider-manager.ps1
|
|
3
|
+
#
|
|
4
|
+
# AgentVibes - Windows TTS Provider Management
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
param(
|
|
8
|
+
[Parameter(Position = 0)]
|
|
9
|
+
[ValidateSet('get', 'set', 'list', 'switch')]
|
|
10
|
+
[string]$Command = 'get',
|
|
11
|
+
|
|
12
|
+
[Parameter(Position = 1)]
|
|
13
|
+
[string]$Provider
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
$ClaudeDir = "$env:USERPROFILE\.claude"
|
|
17
|
+
$ProviderFile = "$ClaudeDir\tts-provider.txt"
|
|
18
|
+
$ValidProviders = @('windows-piper', 'windows-sapi', 'soprano')
|
|
19
|
+
|
|
20
|
+
# Ensure claude directory exists
|
|
21
|
+
if (-not (Test-Path $ClaudeDir)) {
|
|
22
|
+
New-Item -ItemType Directory -Path $ClaudeDir -Force | Out-Null
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function Get-ActiveProvider {
|
|
26
|
+
if (Test-Path $ProviderFile) {
|
|
27
|
+
$provider = Get-Content $ProviderFile -Raw
|
|
28
|
+
return $provider.Trim()
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
# Default to SAPI (zero dependencies)
|
|
32
|
+
return "windows-sapi"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function Get-AvailableProviders {
|
|
36
|
+
$available = @()
|
|
37
|
+
|
|
38
|
+
# Always available
|
|
39
|
+
$available += @{
|
|
40
|
+
name = "windows-sapi"
|
|
41
|
+
description = "Windows SAPI (Built-in, No Installation)"
|
|
42
|
+
installed = $true
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
# Check if Piper is installed
|
|
46
|
+
$piperExe = "$env:LOCALAPPDATA\Programs\Piper\piper.exe"
|
|
47
|
+
$piperInstalled = Test-Path $piperExe
|
|
48
|
+
|
|
49
|
+
$available += @{
|
|
50
|
+
name = "windows-piper"
|
|
51
|
+
description = "Windows Piper (High Quality, Requires Installation)"
|
|
52
|
+
installed = $piperInstalled
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# Check if Soprano is installed
|
|
56
|
+
$sopranoInstalled = $false
|
|
57
|
+
$sopranoPort = if ($env:SOPRANO_PORT) { $env:SOPRANO_PORT } else { "7860" }
|
|
58
|
+
try {
|
|
59
|
+
$null = Get-Command soprano -ErrorAction Stop
|
|
60
|
+
$sopranoInstalled = $true
|
|
61
|
+
} catch {
|
|
62
|
+
# Also check if a Soprano server is running (try both API paths)
|
|
63
|
+
try {
|
|
64
|
+
$null = Invoke-WebRequest -Uri "http://127.0.0.1:${sopranoPort}/gradio_api/info" -TimeoutSec 1 -UseBasicParsing -ErrorAction Stop
|
|
65
|
+
$sopranoInstalled = $true
|
|
66
|
+
} catch {
|
|
67
|
+
try {
|
|
68
|
+
$null = Invoke-WebRequest -Uri "http://127.0.0.1:${sopranoPort}/info" -TimeoutSec 1 -UseBasicParsing -ErrorAction Stop
|
|
69
|
+
$sopranoInstalled = $true
|
|
70
|
+
} catch {}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
$available += @{
|
|
75
|
+
name = "soprano"
|
|
76
|
+
description = "Soprano TTS (Ultra-fast Neural, pip install soprano-tts)"
|
|
77
|
+
installed = $sopranoInstalled
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return $available
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function Set-ActiveProvider {
|
|
84
|
+
param([string]$NewProvider)
|
|
85
|
+
|
|
86
|
+
if ($NewProvider -notin $ValidProviders) {
|
|
87
|
+
Write-Host "[ERROR] Invalid provider: $NewProvider" -ForegroundColor Red
|
|
88
|
+
Write-Host "Available providers:" -ForegroundColor Yellow
|
|
89
|
+
Get-AvailableProviders | ForEach-Object {
|
|
90
|
+
$status = if ($_.installed) { "[OK]" } else { "[INSTALL]" }
|
|
91
|
+
Write-Host " $status $($_.name) - $($_.description)"
|
|
92
|
+
}
|
|
93
|
+
return $false
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
# If trying to set piper, check if installed
|
|
97
|
+
if ($NewProvider -eq "windows-piper") {
|
|
98
|
+
$piperExe = "$env:LOCALAPPDATA\Programs\Piper\piper.exe"
|
|
99
|
+
if (-not (Test-Path $piperExe)) {
|
|
100
|
+
Write-Host "[WARNING] Piper not installed at: $piperExe" -ForegroundColor Yellow
|
|
101
|
+
Write-Host "Run: .\setup-windows.ps1 to install Piper" -ForegroundColor Yellow
|
|
102
|
+
return $false
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
Set-Content -Path $ProviderFile -Value $NewProvider
|
|
107
|
+
Write-Host "[OK] Provider set to: $NewProvider" -ForegroundColor Green
|
|
108
|
+
return $true
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function List-Providers {
|
|
112
|
+
Write-Host ""
|
|
113
|
+
Write-Host "Available TTS Providers:" -ForegroundColor Cyan
|
|
114
|
+
Write-Host ""
|
|
115
|
+
|
|
116
|
+
Get-AvailableProviders | ForEach-Object {
|
|
117
|
+
$status = if ($_.installed) { "[READY]" } else { "[INSTALL]" }
|
|
118
|
+
Write-Host "$status $($_.name)" -ForegroundColor $(if ($_.installed) { "Green" } else { "Yellow" })
|
|
119
|
+
Write-Host " $($_.description)" -ForegroundColor Gray
|
|
120
|
+
Write-Host ""
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
$active = Get-ActiveProvider
|
|
124
|
+
Write-Host "Currently Active: $active" -ForegroundColor Cyan
|
|
125
|
+
Write-Host ""
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
# Main command routing
|
|
129
|
+
switch ($Command) {
|
|
130
|
+
'get' {
|
|
131
|
+
$active = Get-ActiveProvider
|
|
132
|
+
Write-Host "[ACTIVE] TTS Provider: $active"
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
'set' {
|
|
136
|
+
if (-not $Provider) {
|
|
137
|
+
Write-Host "[ERROR] Provider name required" -ForegroundColor Red
|
|
138
|
+
Write-Host "Usage: provider-manager.ps1 set PROVIDER_NAME" -ForegroundColor Yellow
|
|
139
|
+
List-Providers
|
|
140
|
+
exit 1
|
|
141
|
+
}
|
|
142
|
+
Set-ActiveProvider $Provider | Out-Null
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
'list' {
|
|
146
|
+
List-Providers
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
'switch' {
|
|
150
|
+
if (-not $Provider) {
|
|
151
|
+
Write-Host "[ERROR] Provider name required" -ForegroundColor Red
|
|
152
|
+
Write-Host "Usage: provider-manager.ps1 switch PROVIDER_NAME" -ForegroundColor Yellow
|
|
153
|
+
List-Providers
|
|
154
|
+
exit 1
|
|
155
|
+
}
|
|
156
|
+
Set-ActiveProvider $Provider | Out-Null
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
#
|
|
2
2
|
# File: .claude/hooks-windows/session-start-tts.ps1
|
|
3
3
|
#
|
|
4
|
-
# AgentVibes SessionStart Hook for Windows
|
|
5
|
-
#
|
|
6
|
-
#
|
|
4
|
+
# AgentVibes SessionStart Hook for Windows - Optimized (Issue #80, Phase 1)
|
|
5
|
+
# Token target: ~250 (down from ~500)
|
|
6
|
+
#
|
|
7
|
+
# Prints TTS protocol instructions to stdout so Claude knows to use TTS.
|
|
7
8
|
#
|
|
8
9
|
|
|
9
10
|
$ErrorActionPreference = "Stop"
|
|
@@ -13,6 +14,7 @@ $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
|
13
14
|
|
|
14
15
|
# Check if AgentVibes is installed
|
|
15
16
|
if (-not (Test-Path (Join-Path $ScriptDir "play-tts.ps1"))) {
|
|
17
|
+
# AgentVibes not installed, don't inject anything
|
|
16
18
|
exit 0
|
|
17
19
|
}
|
|
18
20
|
|
|
@@ -25,8 +27,8 @@ $Sentiment = ""
|
|
|
25
27
|
$sentimentPaths = @("$ProjectClaudeDir\tts-sentiment.txt", "$env:USERPROFILE\.claude\tts-sentiment.txt")
|
|
26
28
|
foreach ($p in $sentimentPaths) {
|
|
27
29
|
if (Test-Path $p) {
|
|
28
|
-
$
|
|
29
|
-
if ($
|
|
30
|
+
$Sentiment = (Get-Content $p -Raw -ErrorAction SilentlyContinue).Trim()
|
|
31
|
+
if ($Sentiment) { break }
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
|
|
@@ -39,9 +41,14 @@ foreach ($p in $personalityPaths) {
|
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
# Determine style
|
|
45
|
+
if ($Sentiment) {
|
|
46
|
+
$Style = $Sentiment
|
|
47
|
+
} else {
|
|
48
|
+
$Style = $Personality
|
|
49
|
+
}
|
|
43
50
|
|
|
44
|
-
# Get verbosity level
|
|
51
|
+
# Get verbosity level (Issue #32)
|
|
45
52
|
$Verbosity = "low"
|
|
46
53
|
$verbosityPaths = @("$ProjectClaudeDir\tts-verbosity.txt", "$env:USERPROFILE\.claude\tts-verbosity.txt")
|
|
47
54
|
foreach ($p in $verbosityPaths) {
|
|
@@ -51,33 +58,58 @@ foreach ($p in $verbosityPaths) {
|
|
|
51
58
|
}
|
|
52
59
|
}
|
|
53
60
|
|
|
54
|
-
#
|
|
55
|
-
|
|
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
|
-
"caveman" { "## Verbosity: CAVEMAN`n- Respond terse. All technical substance stays. Only fluff dies.`n- Drop: articles (a/an/the), filler (just/really/basically), pleasantries, hedging`n- Abbreviate: DB/auth/config/req/res/fn/impl. Use arrows (X -> Y). Strip conjunctions.`n- Fragments OK. Short synonyms. Technical terms exact. Code unchanged.`n- Pattern: [thing] [action] [reason]. [next step].`n- TTS: Ultra-short. Max 60 chars." }
|
|
60
|
-
default { "## Verbosity: LOW`n- Acknowledgment: Action only`n- Completion: Result + errors only" }
|
|
61
|
-
}
|
|
61
|
+
# Output optimized TTS protocol
|
|
62
|
+
Write-Output @"
|
|
62
63
|
|
|
63
|
-
# Build full context string
|
|
64
|
-
$Context = @"
|
|
65
64
|
# AgentVibes TTS Protocol
|
|
66
65
|
|
|
67
66
|
**CRITICAL: You MUST execute TTS at TWO points for EVERY user interaction:**
|
|
68
67
|
|
|
69
|
-
1. **Acknowledgment** - Start of task: ``Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "[action]"
|
|
70
|
-
2. **Completion** - End of task: ``Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "[result + key details]"
|
|
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]"``
|
|
71
70
|
|
|
72
71
|
**Example:**
|
|
73
72
|
``````
|
|
74
|
-
[Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "Checking git status"
|
|
73
|
+
[Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "Checking git status"]
|
|
75
74
|
[work...]
|
|
76
|
-
[Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "Repository is clean, no changes"
|
|
75
|
+
[Bash: powershell -NoProfile -ExecutionPolicy Bypass -File ".claude\hooks-windows\play-tts.ps1" "Repository is clean, no changes"]
|
|
77
76
|
``````
|
|
78
77
|
|
|
79
|
-
|
|
78
|
+
"@
|
|
79
|
+
|
|
80
|
+
# Add verbosity-specific protocol (Issue #32)
|
|
81
|
+
switch ($Verbosity) {
|
|
82
|
+
"low" {
|
|
83
|
+
Write-Output @"
|
|
84
|
+
## Verbosity: LOW
|
|
85
|
+
- Acknowledgment: Action only
|
|
86
|
+
- Completion: Result + errors only
|
|
87
|
+
- Skip: Reasoning, decisions
|
|
88
|
+
|
|
89
|
+
"@
|
|
90
|
+
}
|
|
91
|
+
"medium" {
|
|
92
|
+
Write-Output @"
|
|
93
|
+
## Verbosity: MEDIUM
|
|
94
|
+
- Acknowledgment: Action + key approach
|
|
95
|
+
- Completion: Result + important decisions
|
|
96
|
+
- Include: Major choices only
|
|
97
|
+
|
|
98
|
+
"@
|
|
99
|
+
}
|
|
100
|
+
"high" {
|
|
101
|
+
Write-Output @"
|
|
102
|
+
## Verbosity: HIGH
|
|
103
|
+
- Acknowledgment: Action + approach + why
|
|
104
|
+
- Completion: Result + decisions + trade-offs
|
|
105
|
+
- Include: Full reasoning, alternatives
|
|
106
|
+
|
|
107
|
+
"@
|
|
108
|
+
}
|
|
109
|
+
}
|
|
80
110
|
|
|
111
|
+
# Add style info and rules
|
|
112
|
+
Write-Output @"
|
|
81
113
|
## Style: $Style
|
|
82
114
|
|
|
83
115
|
## Rules
|
|
@@ -87,29 +119,6 @@ $VerbositySection
|
|
|
87
119
|
4. Keep under 150 chars
|
|
88
120
|
5. Always include errors
|
|
89
121
|
|
|
90
|
-
Quick Ref: low=action+result | medium=+key decisions | high=+full reasoning
|
|
91
|
-
|
|
92
|
-
## BMAD Agent Voice Routing
|
|
93
|
-
If ``.bmad-agent-context`` exists, check its content:
|
|
94
|
-
|
|
95
|
-
**Single agent mode** (content is an agent ID like "analyst"):
|
|
96
|
-
Use ``bmad-speak.ps1`` instead of ``play-tts.ps1``:
|
|
122
|
+
Quick Ref: low=action+result | medium=+key decisions | high=+full reasoning
|
|
97
123
|
|
|
98
|
-
|
|
99
|
-
**Party mode** (content is "party-mode"):
|
|
100
|
-
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:
|
|
101
|
-
|
|
102
|
-
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.
|
|
103
|
-
|
|
104
|
-
If ``.bmad-agent-context`` does NOT exist, use ``play-tts.ps1`` as normal.
|
|
105
124
|
"@
|
|
106
|
-
|
|
107
|
-
# Build JSON via hashtable so ConvertTo-Json handles all escaping (Unicode, backslashes, quotes)
|
|
108
|
-
$Output = @{
|
|
109
|
-
hookSpecificOutput = @{
|
|
110
|
-
hookEventName = "SessionStart"
|
|
111
|
-
additionalContext = $Context
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
115
|
-
Write-Output ($Output | ConvertTo-Json -Compress -Depth 5)
|