agentvibes 5.3.0 → 5.4.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.
Files changed (219) hide show
  1. package/.agentvibes/LITE-MODE.md +236 -0
  2. package/.agentvibes/README.md +136 -0
  3. package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +141 -0
  4. package/.agentvibes/backups/agents/analyst_20260204_144958.md +78 -0
  5. package/.agentvibes/backups/agents/architect_20260204_144958.md +72 -0
  6. package/.agentvibes/backups/agents/dev_20260204_144958.md +74 -0
  7. package/.agentvibes/backups/agents/pm_20260204_144958.md +72 -0
  8. package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +64 -0
  9. package/.agentvibes/backups/agents/sm_20260204_144958.md +87 -0
  10. package/.agentvibes/backups/agents/tea_20260204_144958.md +79 -0
  11. package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +82 -0
  12. package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +80 -0
  13. package/.agentvibes/bmad/bmad-voices.md +69 -69
  14. package/.agentvibes/config/README-personality-defaults.md +162 -0
  15. package/.agentvibes/config/mode.txt +1 -0
  16. package/.agentvibes/config/personality-voice-defaults.default.json +21 -0
  17. package/.agentvibes/config/save-audio.txt +1 -0
  18. package/.agentvibes/config/voice-metadata.json +160 -0
  19. package/.agentvibes/config.json +24 -15
  20. package/.agentvibes/hooks/help.sh +191 -0
  21. package/.agentvibes/hooks/post-tool-use-lite.sh +111 -0
  22. package/.agentvibes/hooks/save-audio-manager.sh +162 -0
  23. package/.agentvibes/hooks/session-start-full-optimized.sh +102 -0
  24. package/.agentvibes/hooks/session-start-full.sh +142 -0
  25. package/.agentvibes/hooks/session-start-lite-v2.sh +34 -0
  26. package/.agentvibes/hooks/session-start-lite.sh +29 -0
  27. package/.agentvibes/hooks/stop-lite.sh +115 -0
  28. package/.agentvibes/hooks/switch-mode.sh +215 -0
  29. package/.agentvibes/output-styles/audio-summary.md +30 -0
  30. package/.claude/activation-instructions +54 -54
  31. package/.claude/audio/voice-samples/piper/alan.wav +0 -0
  32. package/.claude/audio/voice-samples/piper/amy.wav +0 -0
  33. package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
  34. package/.claude/audio/voice-samples/piper/joe.wav +0 -0
  35. package/.claude/audio/voice-samples/piper/john.wav +0 -0
  36. package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
  37. package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
  38. package/.claude/audio/voice-samples/piper/linda.wav +0 -0
  39. package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
  40. package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
  41. package/.claude/commands/agent-vibes/add.md +21 -21
  42. package/.claude/commands/agent-vibes/agent-vibes.md +101 -101
  43. package/.claude/commands/agent-vibes/agent.md +79 -79
  44. package/.claude/commands/agent-vibes/background-music.md +111 -111
  45. package/.claude/commands/agent-vibes/bmad.md +198 -198
  46. package/.claude/commands/agent-vibes/clean.md +18 -18
  47. package/.claude/commands/agent-vibes/cleanup.md +18 -18
  48. package/.claude/commands/agent-vibes/commands.json +145 -145
  49. package/.claude/commands/agent-vibes/effects.md +97 -97
  50. package/.claude/commands/agent-vibes/get.md +9 -9
  51. package/.claude/commands/agent-vibes/hide.md +91 -91
  52. package/.claude/commands/agent-vibes/language.md +23 -23
  53. package/.claude/commands/agent-vibes/learn.md +67 -67
  54. package/.claude/commands/agent-vibes/list.md +13 -13
  55. package/.claude/commands/agent-vibes/mute.md +37 -37
  56. package/.claude/commands/agent-vibes/preview.md +17 -17
  57. package/.claude/commands/agent-vibes/provider.md +68 -68
  58. package/.claude/commands/agent-vibes/replay-target.md +14 -14
  59. package/.claude/commands/agent-vibes/sample.md +12 -12
  60. package/.claude/commands/agent-vibes/set-favorite-voice.md +84 -84
  61. package/.claude/commands/agent-vibes/set-pretext.md +65 -65
  62. package/.claude/commands/agent-vibes/set-speed.md +41 -41
  63. package/.claude/commands/agent-vibes/show.md +84 -84
  64. package/.claude/commands/agent-vibes/switch.md +87 -87
  65. package/.claude/commands/agent-vibes/target-voice.md +26 -26
  66. package/.claude/commands/agent-vibes/target.md +30 -30
  67. package/.claude/commands/agent-vibes/translate.md +68 -68
  68. package/.claude/commands/agent-vibes/unmute.md +45 -45
  69. package/.claude/commands/agent-vibes/whoami.md +7 -7
  70. package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
  71. package/.claude/commands/agent-vibes-rdp.md +24 -24
  72. package/.claude/config/audio-effects.cfg +4 -11
  73. package/.claude/config/audio-effects.cfg.sample +52 -52
  74. package/.claude/config/background-music-position.txt +27 -0
  75. package/.claude/config/background-music-volume.txt +1 -1
  76. package/.claude/config/background-music.cfg +1 -0
  77. package/.claude/config/background-music.txt +1 -0
  78. package/.claude/config/tts-speech-rate.txt +1 -4
  79. package/.claude/config/tts-verbosity.txt +1 -0
  80. package/.claude/docs/TERMUX_SETUP.md +408 -408
  81. package/.claude/github-star-reminder.txt +1 -1
  82. package/.claude/hooks/README-TTS-QUEUE.md +135 -135
  83. package/.claude/hooks/audio-cache-utils.sh +0 -0
  84. package/.claude/hooks/audio-processor.sh +60 -14
  85. package/.claude/hooks/background-music-manager.sh +0 -0
  86. package/.claude/hooks/bmad-party-manager.sh +225 -0
  87. package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
  88. package/.claude/hooks/bmad-speak.sh +6 -13
  89. package/.claude/hooks/bmad-tts-injector.sh +0 -0
  90. package/.claude/hooks/bmad-voice-manager.sh +0 -0
  91. package/.claude/hooks/clawdbot-receiver-SECURE.sh +25 -23
  92. package/.claude/hooks/clawdbot-receiver.sh +4 -28
  93. package/.claude/hooks/clean-audio-cache.sh +0 -0
  94. package/.claude/hooks/cleanup-cache.sh +0 -0
  95. package/.claude/hooks/configure-rdp-mode.sh +0 -0
  96. package/.claude/hooks/download-extra-voices.sh +0 -0
  97. package/.claude/hooks/effects-manager.sh +0 -0
  98. package/.claude/hooks/github-star-reminder.sh +0 -0
  99. package/.claude/hooks/language-manager.sh +0 -0
  100. package/.claude/hooks/learn-manager.sh +0 -0
  101. package/.claude/hooks/macos-voice-manager.sh +0 -0
  102. package/.claude/hooks/migrate-background-music.sh +0 -0
  103. package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
  104. package/.claude/hooks/optimize-background-music.sh +0 -0
  105. package/.claude/hooks/personality-manager.sh +0 -0
  106. package/.claude/hooks/piper-download-voices.sh +0 -0
  107. package/.claude/hooks/piper-installer.sh +1 -1
  108. package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
  109. package/.claude/hooks/piper-voice-manager.sh +0 -0
  110. package/.claude/hooks/play-tts-enhanced.sh +0 -0
  111. package/.claude/hooks/play-tts-macos.sh +6 -12
  112. package/.claude/hooks/play-tts-piper.sh +50 -79
  113. package/.claude/hooks/play-tts-soprano.sh +9 -43
  114. package/.claude/hooks/play-tts-ssh-remote.sh +43 -215
  115. package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
  116. package/.claude/hooks/play-tts.sh +31 -31
  117. package/.claude/hooks/post-response.sh +41 -0
  118. package/.claude/hooks/prepare-release.sh +0 -0
  119. package/.claude/hooks/provider-commands.sh +0 -0
  120. package/.claude/hooks/provider-manager.sh +0 -0
  121. package/.claude/hooks/replay-target-audio.sh +0 -0
  122. package/.claude/hooks/requirements.txt +6 -6
  123. package/.claude/hooks/sentiment-manager.sh +0 -0
  124. package/.claude/hooks/session-start-tts.sh +56 -39
  125. package/.claude/hooks/soprano-gradio-synth.py +139 -139
  126. package/.claude/hooks/speed-manager.sh +0 -0
  127. package/.claude/hooks/stop.sh +63 -0
  128. package/.claude/hooks/termux-installer.sh +0 -0
  129. package/.claude/hooks/translate-manager.sh +0 -0
  130. package/.claude/hooks/translator.py +237 -237
  131. package/.claude/hooks/tts-queue-worker.sh +0 -0
  132. package/.claude/hooks/tts-queue.sh +0 -0
  133. package/.claude/hooks/verbosity-manager.sh +0 -0
  134. package/.claude/hooks/voice-manager.sh +26 -4
  135. package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
  136. package/.claude/hooks-windows/bmad-party-speak.ps1 +278 -278
  137. package/.claude/hooks-windows/bmad-speak.ps1 +264 -264
  138. package/.claude/hooks-windows/clean-audio-cache.ps1 +53 -53
  139. package/.claude/hooks-windows/effects-manager.ps1 +294 -294
  140. package/.claude/hooks-windows/language-manager.ps1 +193 -193
  141. package/.claude/hooks-windows/learn-manager.ps1 +241 -241
  142. package/.claude/hooks-windows/personality-manager.ps1 +266 -266
  143. package/.claude/hooks-windows/play-tts-soprano.ps1 +5 -5
  144. package/.claude/hooks-windows/play-tts-termux-ssh.ps1 +138 -138
  145. package/.claude/hooks-windows/play-tts-windows-piper.ps1 +164 -0
  146. package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -0
  147. package/.claude/hooks-windows/play-tts.ps1 +104 -513
  148. package/.claude/hooks-windows/provider-manager.ps1 +158 -192
  149. package/.claude/hooks-windows/session-start-tts.ps1 +55 -46
  150. package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
  151. package/.claude/hooks-windows/speed-manager.ps1 +166 -166
  152. package/.claude/hooks-windows/voice-manager-windows.ps1 +176 -260
  153. package/.claude/output-styles/agent-vibes.md +202 -202
  154. package/.claude/personalities/angry.md +14 -14
  155. package/.claude/personalities/annoying.md +14 -14
  156. package/.claude/personalities/crass.md +14 -14
  157. package/.claude/personalities/dramatic.md +14 -14
  158. package/.claude/personalities/dry-humor.md +50 -50
  159. package/.claude/personalities/flirty.md +20 -20
  160. package/.claude/personalities/funny.md +14 -14
  161. package/.claude/personalities/grandpa.md +32 -32
  162. package/.claude/personalities/millennial.md +14 -14
  163. package/.claude/personalities/moody.md +14 -14
  164. package/.claude/personalities/normal.md +16 -16
  165. package/.claude/personalities/pirate.md +14 -14
  166. package/.claude/personalities/poetic.md +14 -14
  167. package/.claude/personalities/professional.md +14 -14
  168. package/.claude/personalities/rapper.md +55 -55
  169. package/.claude/personalities/robot.md +14 -14
  170. package/.claude/personalities/sarcastic.md +38 -38
  171. package/.claude/personalities/sassy.md +14 -14
  172. package/.claude/personalities/surfer-dude.md +14 -14
  173. package/.claude/personalities/zen.md +14 -14
  174. package/.claude/piper-voices-dir.txt +1 -0
  175. package/.claude/settings.json +25 -15
  176. package/.claude/verbosity.txt +1 -1
  177. package/.clawdbot/README.md +105 -105
  178. package/.clawdbot/skill/SKILL.md +149 -145
  179. package/.mcp.json +30 -11
  180. package/CLAUDE.md +170 -215
  181. package/README.md +206 -525
  182. package/RELEASE_NOTES.md +1132 -1976
  183. package/WINDOWS-SETUP.md +208 -208
  184. package/bin/agent-vibes +0 -0
  185. package/bin/agentvibes-voice-browser.js +64 -1289
  186. package/bin/agentvibes.js +0 -0
  187. package/bin/ensure-soprano-running.sh +43 -0
  188. package/bin/mcp-server.js +121 -121
  189. package/bin/mcp-server.sh +0 -0
  190. package/bin/test-bmad-pr +78 -78
  191. package/mcp-server/QUICK_START.md +203 -203
  192. package/mcp-server/README.md +345 -345
  193. package/mcp-server/WINDOWS_SETUP.md +260 -260
  194. package/mcp-server/docs/troubleshooting-audio.md +313 -313
  195. package/mcp-server/examples/claude_desktop_config.json +11 -11
  196. package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
  197. package/mcp-server/examples/custom_instructions.md +169 -169
  198. package/mcp-server/install-deps.js +130 -130
  199. package/mcp-server/pyproject.toml +52 -52
  200. package/mcp-server/requirements.txt +2 -2
  201. package/mcp-server/server.py +1451 -1578
  202. package/mcp-server/test_server.py +395 -395
  203. package/package.json +1 -3
  204. package/setup-windows.ps1 +815 -815
  205. package/src/installer.js +42 -5
  206. package/templates/agentvibes-receiver.sh +158 -483
  207. package/templates/audio/welcome-music.mp3 +0 -0
  208. package/.agentvibes/bmad-voice-map.json +0 -104
  209. package/.agentvibes/copilot-sessions.log +0 -4
  210. package/.claude/config/audio-effects-bmad.cfg +0 -50
  211. package/.claude/config/background-music-enabled.txt +0 -1
  212. package/.claude/config/intro-text.txt +0 -1
  213. package/.claude/config/personality.txt +0 -1
  214. package/.claude/config/piper-speech-rate.txt +0 -4
  215. package/.claude/config/piper-target-speech-rate.txt +0 -1
  216. package/.claude/config/reverb-level.txt +0 -1
  217. package/.claude/config/tts-target-speech-rate.txt +0 -1
  218. package/voice-assignments.json +0 -8245
  219. /package/{.claude → .agentvibes}/config/agentvibes.json +0 -0
@@ -1,294 +1,294 @@
1
- #
2
- # File: .claude/hooks-windows/effects-manager.ps1
3
- #
4
- # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
5
- # Website: https://agentvibes.org
6
- # Repository: https://github.com/paulpreibisch/AgentVibes
7
- #
8
- # Co-created by Paul Preibisch with Claude AI
9
- # Copyright (c) 2025 Paul Preibisch
10
- #
11
- # Licensed under the Apache License, Version 2.0
12
-
13
- param(
14
- [Parameter(Position=0)]
15
- [string]$Command = "help",
16
- [Parameter(Position=1)]
17
- [string]$Arg1 = "",
18
- [Parameter(Position=2)]
19
- [string]$Arg2 = "default",
20
- [Parameter(Position=3)]
21
- [string]$Arg3 = ""
22
- )
23
-
24
- $ErrorActionPreference = "Continue"
25
-
26
- # Get script directory and config file path
27
- $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
28
- $ConfigDir = Join-Path (Split-Path -Parent $ScriptDir) "config"
29
- $ConfigFile = Join-Path $ConfigDir "audio-effects.cfg"
30
- $ReverbLevelFile = Join-Path $ConfigDir "reverb-level.txt"
31
-
32
- # Reverb level mappings (sox format: reverberance HF-damping room-scale)
33
- $ReverbLevels = @{
34
- "off" = ""
35
- "light" = "reverb 20 50 50"
36
- "medium" = "reverb 40 50 70"
37
- "heavy" = "reverb 70 50 100"
38
- "cathedral" = "reverb 90 30 100"
39
- }
40
-
41
- function Get-AgentEffects {
42
- param([string]$AgentName)
43
-
44
- if (-not (Test-Path $ConfigFile)) {
45
- Write-Output ""
46
- return
47
- }
48
-
49
- $lines = Get-Content $ConfigFile
50
- $configLine = $null
51
-
52
- foreach ($line in $lines) {
53
- if ($line -match "^$([regex]::Escape($AgentName))\|") {
54
- $configLine = $line
55
- break
56
- }
57
- }
58
-
59
- if (-not $configLine) {
60
- foreach ($line in $lines) {
61
- if ($line -match "^default\|") {
62
- $configLine = $line
63
- break
64
- }
65
- }
66
- }
67
-
68
- if ($configLine) {
69
- $parts = $configLine -split '\|'
70
- if ($parts.Count -ge 2) {
71
- Write-Output $parts[1]
72
- } else {
73
- Write-Output ""
74
- }
75
- } else {
76
- Write-Output ""
77
- }
78
- }
79
-
80
- function Set-Reverb {
81
- param(
82
- [string]$Level,
83
- [string]$AgentName = "default",
84
- [string]$ApplyAll = ""
85
- )
86
-
87
- if (-not $ReverbLevels.ContainsKey($Level)) {
88
- Write-Output "Invalid reverb level: $Level"
89
- Write-Output "Valid levels: off, light, medium, heavy, cathedral"
90
- exit 1
91
- }
92
-
93
- $reverbEffect = $ReverbLevels[$Level]
94
-
95
- # Always update reverb-level.txt for play-tts.ps1 compatibility
96
- if ($ApplyAll -eq "--all" -or $AgentName -eq "default") {
97
- Set-Content -Path $ReverbLevelFile -Value $Level -NoNewline
98
- }
99
-
100
- if (-not (Test-Path $ConfigFile)) {
101
- Write-Output "Config file not found: $ConfigFile"
102
- exit 1
103
- }
104
-
105
- $lines = Get-Content $ConfigFile
106
- $newLines = @()
107
-
108
- if ($ApplyAll -eq "--all") {
109
- Write-Host "Setting reverb to '$Level' for all agents..."
110
-
111
- foreach ($line in $lines) {
112
- if ($line -match "^#" -or $line.Trim() -eq "" -or $line -match "^\|") {
113
- $newLines += $line
114
- continue
115
- }
116
-
117
- $parts = $line -split '\|', 4
118
- if ($parts.Count -ge 4) {
119
- $agent = $parts[0]
120
- $soxEffects = $parts[1]
121
- $bgFile = $parts[2]
122
- $bgVol = $parts[3]
123
-
124
- # Remove existing reverb from sox effects
125
- $newEffects = $soxEffects -replace 'reverb\s+\d+\s+\d+\s+\d+', ''
126
- $newEffects = ($newEffects -replace '\s+', ' ').Trim()
127
-
128
- # Add new reverb if not off
129
- if ($reverbEffect) {
130
- if ($newEffects) {
131
- $newEffects = "$reverbEffect $newEffects"
132
- } else {
133
- $newEffects = $reverbEffect
134
- }
135
- }
136
-
137
- $newLines += "$agent|$newEffects|$bgFile|$bgVol"
138
- } else {
139
- $newLines += $line
140
- }
141
- }
142
-
143
- Set-Content -Path $ConfigFile -Value ($newLines -join "`n") -NoNewline
144
- Write-Output "Reverb set to '$Level' for all agents"
145
- } else {
146
- Write-Host "Setting reverb to '$Level' for '$AgentName'..."
147
-
148
- # Check if agent exists in config
149
- $agentExists = $false
150
- foreach ($line in $lines) {
151
- if ($line -match "^$([regex]::Escape($AgentName))\|") {
152
- $agentExists = $true
153
- break
154
- }
155
- }
156
-
157
- if (-not $agentExists) {
158
- Add-Content -Path $ConfigFile -Value "${AgentName}|${reverbEffect}|agentvibes_soft_flamenco_loop.mp3|0.30"
159
- Write-Output "Created new config for '$AgentName' with reverb '$Level'"
160
- return
161
- }
162
-
163
- foreach ($line in $lines) {
164
- if ($line -match "^#" -or $line.Trim() -eq "" -or $line -match "^\|") {
165
- $newLines += $line
166
- continue
167
- }
168
-
169
- $parts = $line -split '\|', 4
170
- if ($parts.Count -ge 4 -and $parts[0] -eq $AgentName) {
171
- $soxEffects = $parts[1]
172
- $bgFile = $parts[2]
173
- $bgVol = $parts[3]
174
-
175
- # Remove existing reverb
176
- $newEffects = $soxEffects -replace 'reverb\s+\d+\s+\d+\s+\d+', ''
177
- $newEffects = ($newEffects -replace '\s+', ' ').Trim()
178
-
179
- if ($reverbEffect) {
180
- if ($newEffects) {
181
- $newEffects = "$reverbEffect $newEffects"
182
- } else {
183
- $newEffects = $reverbEffect
184
- }
185
- }
186
-
187
- $newLines += "$($parts[0])|$newEffects|$bgFile|$bgVol"
188
- } else {
189
- $newLines += $line
190
- }
191
- }
192
-
193
- Set-Content -Path $ConfigFile -Value ($newLines -join "`n") -NoNewline
194
- Write-Output "Reverb set to '$Level' for '$AgentName'"
195
- }
196
- }
197
-
198
- function Get-ReverbLevel {
199
- param([string]$AgentName = "default")
200
-
201
- $effects = Get-AgentEffects -AgentName $AgentName
202
-
203
- if (-not $effects -or $effects -notmatch 'reverb') {
204
- Write-Output "off"
205
- return
206
- }
207
-
208
- if ($effects -match 'reverb\s+(\d+)\s+(\d+)\s+(\d+)') {
209
- $reverbVal = [int]$Matches[1]
210
- if ($reverbVal -le 20) {
211
- Write-Output "light"
212
- } elseif ($reverbVal -le 40) {
213
- Write-Output "medium"
214
- } elseif ($reverbVal -le 70) {
215
- Write-Output "heavy"
216
- } else {
217
- Write-Output "cathedral"
218
- }
219
- } else {
220
- Write-Output "off"
221
- }
222
- }
223
-
224
- function Show-Effects {
225
- if (-not (Test-Path $ConfigFile)) {
226
- Write-Output "Config file not found: $ConfigFile"
227
- exit 1
228
- }
229
-
230
- Write-Output "Current Audio Effects Configuration:"
231
- Write-Output ""
232
-
233
- $lines = Get-Content $ConfigFile
234
- foreach ($line in $lines) {
235
- if ($line -match "^#" -or $line.Trim() -eq "" -or $line -match "^\|") {
236
- continue
237
- }
238
-
239
- $parts = $line -split '\|', 4
240
- if ($parts.Count -ge 2) {
241
- $agent = $parts[0]
242
- $soxEffects = $parts[1]
243
-
244
- $reverbLevel = "off"
245
- if ($soxEffects -match 'reverb\s+(\d+)\s+(\d+)\s+(\d+)') {
246
- $reverbVal = [int]$Matches[1]
247
- if ($reverbVal -le 20) { $reverbLevel = "light" }
248
- elseif ($reverbVal -le 40) { $reverbLevel = "medium" }
249
- elseif ($reverbVal -le 70) { $reverbLevel = "heavy" }
250
- else { $reverbLevel = "cathedral" }
251
- }
252
-
253
- Write-Output " ${agent}: reverb=$reverbLevel"
254
- if ($soxEffects) {
255
- Write-Output " Effects: $soxEffects"
256
- }
257
- }
258
- }
259
- }
260
-
261
- # Main command dispatcher
262
- switch ($Command) {
263
- "set-reverb" {
264
- if (-not $Arg1) {
265
- Write-Output "Usage: effects-manager.ps1 set-reverb <level> [agent-name] [--all]"
266
- Write-Output "Levels: off, light, medium, heavy, cathedral"
267
- exit 1
268
- }
269
- Set-Reverb -Level $Arg1 -AgentName $Arg2 -ApplyAll $Arg3
270
- }
271
- "get-reverb" {
272
- $agent = if ($Arg1) { $Arg1 } else { "default" }
273
- Get-ReverbLevel -AgentName $agent
274
- }
275
- "get-effects" {
276
- $agent = if ($Arg1) { $Arg1 } else { "default" }
277
- Get-AgentEffects -AgentName $agent
278
- }
279
- "list" {
280
- Show-Effects
281
- }
282
- default {
283
- Write-Output "Usage: effects-manager.ps1 {set-reverb|get-reverb|get-effects|list}"
284
- Write-Output ""
285
- Write-Output "Commands:"
286
- Write-Output " set-reverb <level> [agent] [--all] Set reverb level"
287
- Write-Output " get-reverb [agent] Get current reverb level"
288
- Write-Output " get-effects [agent] Get all effects for agent"
289
- Write-Output " list List all agent effects"
290
- Write-Output ""
291
- Write-Output "Reverb Levels: off, light, medium, heavy, cathedral"
292
- exit 1
293
- }
294
- }
1
+ #
2
+ # File: .claude/hooks-windows/effects-manager.ps1
3
+ #
4
+ # AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
5
+ # Website: https://agentvibes.org
6
+ # Repository: https://github.com/paulpreibisch/AgentVibes
7
+ #
8
+ # Co-created by Paul Preibisch with Claude AI
9
+ # Copyright (c) 2025 Paul Preibisch
10
+ #
11
+ # Licensed under the Apache License, Version 2.0
12
+
13
+ param(
14
+ [Parameter(Position=0)]
15
+ [string]$Command = "help",
16
+ [Parameter(Position=1)]
17
+ [string]$Arg1 = "",
18
+ [Parameter(Position=2)]
19
+ [string]$Arg2 = "default",
20
+ [Parameter(Position=3)]
21
+ [string]$Arg3 = ""
22
+ )
23
+
24
+ $ErrorActionPreference = "Continue"
25
+
26
+ # Get script directory and config file path
27
+ $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
28
+ $ConfigDir = Join-Path (Split-Path -Parent $ScriptDir) "config"
29
+ $ConfigFile = Join-Path $ConfigDir "audio-effects.cfg"
30
+ $ReverbLevelFile = Join-Path $ConfigDir "reverb-level.txt"
31
+
32
+ # Reverb level mappings (sox format: reverberance HF-damping room-scale)
33
+ $ReverbLevels = @{
34
+ "off" = ""
35
+ "light" = "reverb 20 50 50"
36
+ "medium" = "reverb 40 50 70"
37
+ "heavy" = "reverb 70 50 100"
38
+ "cathedral" = "reverb 90 30 100"
39
+ }
40
+
41
+ function Get-AgentEffects {
42
+ param([string]$AgentName)
43
+
44
+ if (-not (Test-Path $ConfigFile)) {
45
+ Write-Output ""
46
+ return
47
+ }
48
+
49
+ $lines = Get-Content $ConfigFile
50
+ $configLine = $null
51
+
52
+ foreach ($line in $lines) {
53
+ if ($line -match "^$([regex]::Escape($AgentName))\|") {
54
+ $configLine = $line
55
+ break
56
+ }
57
+ }
58
+
59
+ if (-not $configLine) {
60
+ foreach ($line in $lines) {
61
+ if ($line -match "^default\|") {
62
+ $configLine = $line
63
+ break
64
+ }
65
+ }
66
+ }
67
+
68
+ if ($configLine) {
69
+ $parts = $configLine -split '\|'
70
+ if ($parts.Count -ge 2) {
71
+ Write-Output $parts[1]
72
+ } else {
73
+ Write-Output ""
74
+ }
75
+ } else {
76
+ Write-Output ""
77
+ }
78
+ }
79
+
80
+ function Set-Reverb {
81
+ param(
82
+ [string]$Level,
83
+ [string]$AgentName = "default",
84
+ [string]$ApplyAll = ""
85
+ )
86
+
87
+ if (-not $ReverbLevels.ContainsKey($Level)) {
88
+ Write-Output "Invalid reverb level: $Level"
89
+ Write-Output "Valid levels: off, light, medium, heavy, cathedral"
90
+ exit 1
91
+ }
92
+
93
+ $reverbEffect = $ReverbLevels[$Level]
94
+
95
+ # Always update reverb-level.txt for play-tts.ps1 compatibility
96
+ if ($ApplyAll -eq "--all" -or $AgentName -eq "default") {
97
+ Set-Content -Path $ReverbLevelFile -Value $Level -NoNewline
98
+ }
99
+
100
+ if (-not (Test-Path $ConfigFile)) {
101
+ Write-Output "Config file not found: $ConfigFile"
102
+ exit 1
103
+ }
104
+
105
+ $lines = Get-Content $ConfigFile
106
+ $newLines = @()
107
+
108
+ if ($ApplyAll -eq "--all") {
109
+ Write-Host "Setting reverb to '$Level' for all agents..."
110
+
111
+ foreach ($line in $lines) {
112
+ if ($line -match "^#" -or $line.Trim() -eq "" -or $line -match "^\|") {
113
+ $newLines += $line
114
+ continue
115
+ }
116
+
117
+ $parts = $line -split '\|', 4
118
+ if ($parts.Count -ge 4) {
119
+ $agent = $parts[0]
120
+ $soxEffects = $parts[1]
121
+ $bgFile = $parts[2]
122
+ $bgVol = $parts[3]
123
+
124
+ # Remove existing reverb from sox effects
125
+ $newEffects = $soxEffects -replace 'reverb\s+\d+\s+\d+\s+\d+', ''
126
+ $newEffects = ($newEffects -replace '\s+', ' ').Trim()
127
+
128
+ # Add new reverb if not off
129
+ if ($reverbEffect) {
130
+ if ($newEffects) {
131
+ $newEffects = "$reverbEffect $newEffects"
132
+ } else {
133
+ $newEffects = $reverbEffect
134
+ }
135
+ }
136
+
137
+ $newLines += "$agent|$newEffects|$bgFile|$bgVol"
138
+ } else {
139
+ $newLines += $line
140
+ }
141
+ }
142
+
143
+ Set-Content -Path $ConfigFile -Value ($newLines -join "`n") -NoNewline
144
+ Write-Output "Reverb set to '$Level' for all agents"
145
+ } else {
146
+ Write-Host "Setting reverb to '$Level' for '$AgentName'..."
147
+
148
+ # Check if agent exists in config
149
+ $agentExists = $false
150
+ foreach ($line in $lines) {
151
+ if ($line -match "^$([regex]::Escape($AgentName))\|") {
152
+ $agentExists = $true
153
+ break
154
+ }
155
+ }
156
+
157
+ if (-not $agentExists) {
158
+ Add-Content -Path $ConfigFile -Value "${AgentName}|${reverbEffect}|agentvibes_soft_flamenco_loop.mp3|0.30"
159
+ Write-Output "Created new config for '$AgentName' with reverb '$Level'"
160
+ return
161
+ }
162
+
163
+ foreach ($line in $lines) {
164
+ if ($line -match "^#" -or $line.Trim() -eq "" -or $line -match "^\|") {
165
+ $newLines += $line
166
+ continue
167
+ }
168
+
169
+ $parts = $line -split '\|', 4
170
+ if ($parts.Count -ge 4 -and $parts[0] -eq $AgentName) {
171
+ $soxEffects = $parts[1]
172
+ $bgFile = $parts[2]
173
+ $bgVol = $parts[3]
174
+
175
+ # Remove existing reverb
176
+ $newEffects = $soxEffects -replace 'reverb\s+\d+\s+\d+\s+\d+', ''
177
+ $newEffects = ($newEffects -replace '\s+', ' ').Trim()
178
+
179
+ if ($reverbEffect) {
180
+ if ($newEffects) {
181
+ $newEffects = "$reverbEffect $newEffects"
182
+ } else {
183
+ $newEffects = $reverbEffect
184
+ }
185
+ }
186
+
187
+ $newLines += "$($parts[0])|$newEffects|$bgFile|$bgVol"
188
+ } else {
189
+ $newLines += $line
190
+ }
191
+ }
192
+
193
+ Set-Content -Path $ConfigFile -Value ($newLines -join "`n") -NoNewline
194
+ Write-Output "Reverb set to '$Level' for '$AgentName'"
195
+ }
196
+ }
197
+
198
+ function Get-ReverbLevel {
199
+ param([string]$AgentName = "default")
200
+
201
+ $effects = Get-AgentEffects -AgentName $AgentName
202
+
203
+ if (-not $effects -or $effects -notmatch 'reverb') {
204
+ Write-Output "off"
205
+ return
206
+ }
207
+
208
+ if ($effects -match 'reverb\s+(\d+)\s+(\d+)\s+(\d+)') {
209
+ $reverbVal = [int]$Matches[1]
210
+ if ($reverbVal -le 20) {
211
+ Write-Output "light"
212
+ } elseif ($reverbVal -le 40) {
213
+ Write-Output "medium"
214
+ } elseif ($reverbVal -le 70) {
215
+ Write-Output "heavy"
216
+ } else {
217
+ Write-Output "cathedral"
218
+ }
219
+ } else {
220
+ Write-Output "off"
221
+ }
222
+ }
223
+
224
+ function Show-Effects {
225
+ if (-not (Test-Path $ConfigFile)) {
226
+ Write-Output "Config file not found: $ConfigFile"
227
+ exit 1
228
+ }
229
+
230
+ Write-Output "Current Audio Effects Configuration:"
231
+ Write-Output ""
232
+
233
+ $lines = Get-Content $ConfigFile
234
+ foreach ($line in $lines) {
235
+ if ($line -match "^#" -or $line.Trim() -eq "" -or $line -match "^\|") {
236
+ continue
237
+ }
238
+
239
+ $parts = $line -split '\|', 4
240
+ if ($parts.Count -ge 2) {
241
+ $agent = $parts[0]
242
+ $soxEffects = $parts[1]
243
+
244
+ $reverbLevel = "off"
245
+ if ($soxEffects -match 'reverb\s+(\d+)\s+(\d+)\s+(\d+)') {
246
+ $reverbVal = [int]$Matches[1]
247
+ if ($reverbVal -le 20) { $reverbLevel = "light" }
248
+ elseif ($reverbVal -le 40) { $reverbLevel = "medium" }
249
+ elseif ($reverbVal -le 70) { $reverbLevel = "heavy" }
250
+ else { $reverbLevel = "cathedral" }
251
+ }
252
+
253
+ Write-Output " ${agent}: reverb=$reverbLevel"
254
+ if ($soxEffects) {
255
+ Write-Output " Effects: $soxEffects"
256
+ }
257
+ }
258
+ }
259
+ }
260
+
261
+ # Main command dispatcher
262
+ switch ($Command) {
263
+ "set-reverb" {
264
+ if (-not $Arg1) {
265
+ Write-Output "Usage: effects-manager.ps1 set-reverb <level> [agent-name] [--all]"
266
+ Write-Output "Levels: off, light, medium, heavy, cathedral"
267
+ exit 1
268
+ }
269
+ Set-Reverb -Level $Arg1 -AgentName $Arg2 -ApplyAll $Arg3
270
+ }
271
+ "get-reverb" {
272
+ $agent = if ($Arg1) { $Arg1 } else { "default" }
273
+ Get-ReverbLevel -AgentName $agent
274
+ }
275
+ "get-effects" {
276
+ $agent = if ($Arg1) { $Arg1 } else { "default" }
277
+ Get-AgentEffects -AgentName $agent
278
+ }
279
+ "list" {
280
+ Show-Effects
281
+ }
282
+ default {
283
+ Write-Output "Usage: effects-manager.ps1 {set-reverb|get-reverb|get-effects|list}"
284
+ Write-Output ""
285
+ Write-Output "Commands:"
286
+ Write-Output " set-reverb <level> [agent] [--all] Set reverb level"
287
+ Write-Output " get-reverb [agent] Get current reverb level"
288
+ Write-Output " get-effects [agent] Get all effects for agent"
289
+ Write-Output " list List all agent effects"
290
+ Write-Output ""
291
+ Write-Output "Reverb Levels: off, light, medium, heavy, cathedral"
292
+ exit 1
293
+ }
294
+ }