agentvibes 5.2.0 → 5.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/config/audio-effects.cfg +1 -1
- package/.claude/hooks/audio-cache-utils.sh +246 -246
- package/.claude/hooks/background-music-manager.sh +404 -404
- package/.claude/hooks/bmad-speak-enhanced.sh +165 -165
- package/.claude/hooks/bmad-speak.sh +290 -290
- package/.claude/hooks/bmad-tts-injector.sh +568 -568
- package/.claude/hooks/bmad-voice-manager.sh +928 -928
- package/.claude/hooks/clawdbot-receiver-SECURE.sh +129 -129
- package/.claude/hooks/clawdbot-receiver.sh +107 -107
- package/.claude/hooks/clean-audio-cache.sh +22 -22
- package/.claude/hooks/cleanup-cache.sh +106 -106
- package/.claude/hooks/configure-rdp-mode.sh +137 -137
- package/.claude/hooks/download-extra-voices.sh +244 -244
- package/.claude/hooks/effects-manager.sh +268 -268
- package/.claude/hooks/github-star-reminder.sh +154 -154
- package/.claude/hooks/language-manager.sh +362 -362
- package/.claude/hooks/learn-manager.sh +492 -492
- package/.claude/hooks/macos-voice-manager.sh +205 -205
- package/.claude/hooks/migrate-background-music.sh +125 -125
- package/.claude/hooks/migrate-to-agentvibes.sh +161 -161
- package/.claude/hooks/optimize-background-music.sh +87 -87
- package/.claude/hooks/path-resolver.sh +60 -60
- package/.claude/hooks/personality-manager.sh +448 -448
- package/.claude/hooks/piper-installer.sh +292 -292
- package/.claude/hooks/piper-multispeaker-registry.sh +171 -171
- package/.claude/hooks/play-tts-enhanced.sh +105 -105
- package/.claude/hooks/play-tts-termux-ssh.sh +169 -169
- package/.claude/hooks/play-tts.sh +14 -5
- package/.claude/hooks/prepare-release.sh +54 -54
- package/.claude/hooks/provider-commands.sh +617 -617
- package/.claude/hooks/provider-manager.sh +399 -399
- package/.claude/hooks/replay-target-audio.sh +95 -95
- package/.claude/hooks/sentiment-manager.sh +201 -201
- package/.claude/hooks/speed-manager.sh +291 -291
- package/.claude/hooks/stop-tts.sh +84 -84
- package/.claude/hooks/termux-installer.sh +261 -261
- package/.claude/hooks/translate-manager.sh +341 -341
- package/.claude/hooks/tts-queue-worker.sh +145 -145
- package/.claude/hooks/tts-queue.sh +165 -165
- package/.claude/hooks/voice-manager.sh +552 -548
- package/.claude/hooks-windows/play-tts.ps1 +2 -2
- package/README.md +11 -2
- package/RELEASE_NOTES.md +38 -0
- package/bin/mcp-server.sh +206 -206
- package/mcp-server/server.py +35 -6
- package/package.json +1 -1
- package/src/console/tabs/setup-tab.js +59 -23
- package/src/installer.js +79 -213
- package/src/services/llm-provider-service.js +126 -75
|
@@ -1,169 +1,169 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/play-tts-termux-ssh.sh
|
|
4
|
-
#
|
|
5
|
-
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
-
# Website: https://agentvibes.org
|
|
7
|
-
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
-
#
|
|
9
|
-
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
-
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
-
#
|
|
12
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
-
# you may not use this file except in compliance with the License.
|
|
14
|
-
# You may obtain a copy of the License at
|
|
15
|
-
#
|
|
16
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
-
#
|
|
18
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
-
# See the License for the specific language governing permissions and
|
|
22
|
-
# limitations under the License.
|
|
23
|
-
#
|
|
24
|
-
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
-
# express or implied. Use at your own risk. See the Apache License for details.
|
|
26
|
-
#
|
|
27
|
-
# ---
|
|
28
|
-
#
|
|
29
|
-
# @fileoverview Termux SSH TTS Provider - Android TTS via SSH tunnel
|
|
30
|
-
# @context Enables TTS output on Android devices when connected via SSH from Termux
|
|
31
|
-
# @architecture SSH-based remote TTS invocation using termux-tts-speak on Android
|
|
32
|
-
# @dependencies ssh, termux-tts-speak (on Android), termux-api (on Android)
|
|
33
|
-
# @entrypoints Called by play-tts.sh router when provider=termux-ssh
|
|
34
|
-
# @patterns Remote TTS invocation, SSH host alias configuration, graceful fallback
|
|
35
|
-
# @related play-tts.sh, provider-manager.sh
|
|
36
|
-
# @setup Requires user to configure SSH host alias in ~/.ssh/config
|
|
37
|
-
#
|
|
38
|
-
# SETUP INSTRUCTIONS:
|
|
39
|
-
# ===================
|
|
40
|
-
# 1. On Android device (Termux):
|
|
41
|
-
# - Install: pkg install termux-api openssh
|
|
42
|
-
# - Install Termux:API app from F-Droid
|
|
43
|
-
# - Start SSH server: sshd
|
|
44
|
-
# - Get SSH port: echo $PREFIX/var/run/sshd.pid
|
|
45
|
-
#
|
|
46
|
-
# 2. On server/desktop:
|
|
47
|
-
# - Add to ~/.ssh/config:
|
|
48
|
-
# Host android
|
|
49
|
-
# HostName <your-android-ip>
|
|
50
|
-
# User <your-termux-username>
|
|
51
|
-
# Port 8022
|
|
52
|
-
# IdentityFile ~/.ssh/id_rsa
|
|
53
|
-
#
|
|
54
|
-
# 3. Configure AgentVibes:
|
|
55
|
-
# - echo "android" > ~/.claude/termux-ssh-host.txt
|
|
56
|
-
# OR
|
|
57
|
-
# - export TERMUX_SSH_HOST="android"
|
|
58
|
-
#
|
|
59
|
-
# 4. Set provider:
|
|
60
|
-
# - echo "termux-ssh" > ~/.claude/tts-provider.txt
|
|
61
|
-
#
|
|
62
|
-
|
|
63
|
-
# Fix locale warnings
|
|
64
|
-
export LC_ALL=C
|
|
65
|
-
|
|
66
|
-
TEXT="$1"
|
|
67
|
-
VOICE_OVERRIDE="$2" # Not used for termux-ssh, but kept for interface compatibility
|
|
68
|
-
|
|
69
|
-
# Script directory
|
|
70
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
71
|
-
|
|
72
|
-
# @function get_ssh_host
|
|
73
|
-
# @intent Determine SSH host alias for Android device
|
|
74
|
-
# @why Allows users to configure their own SSH connection without hardcoded values
|
|
75
|
-
# @returns Echoes SSH host alias or empty string if not configured
|
|
76
|
-
# @sideeffects None
|
|
77
|
-
get_ssh_host() {
|
|
78
|
-
local ssh_host=""
|
|
79
|
-
|
|
80
|
-
# Priority order:
|
|
81
|
-
# 1. Environment variable TERMUX_SSH_HOST
|
|
82
|
-
# 2. Project-specific config file (CLAUDE_PROJECT_DIR)
|
|
83
|
-
# 3. Script location config file
|
|
84
|
-
# 4. Global config file (~/.claude/termux-ssh-host.txt)
|
|
85
|
-
|
|
86
|
-
if [[ -n "$TERMUX_SSH_HOST" ]]; then
|
|
87
|
-
ssh_host="$TERMUX_SSH_HOST"
|
|
88
|
-
elif [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -f "$CLAUDE_PROJECT_DIR/.claude/termux-ssh-host.txt" ]]; then
|
|
89
|
-
ssh_host=$(cat "$CLAUDE_PROJECT_DIR/.claude/termux-ssh-host.txt" 2>/dev/null | tr -d '\n\r')
|
|
90
|
-
elif [[ -f "$SCRIPT_DIR/../termux-ssh-host.txt" ]]; then
|
|
91
|
-
ssh_host=$(cat "$SCRIPT_DIR/../termux-ssh-host.txt" 2>/dev/null | tr -d '\n\r')
|
|
92
|
-
elif [[ -f "$HOME/.claude/termux-ssh-host.txt" ]]; then
|
|
93
|
-
ssh_host=$(cat "$HOME/.claude/termux-ssh-host.txt" 2>/dev/null | tr -d '\n\r')
|
|
94
|
-
fi
|
|
95
|
-
|
|
96
|
-
echo "$ssh_host"
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
# @function check_termux_connection
|
|
100
|
-
# @intent Verify SSH connection to Android device is available
|
|
101
|
-
# @why Prevent hanging on SSH timeout if device is unreachable
|
|
102
|
-
# @param $1 SSH host alias
|
|
103
|
-
# @returns 0 if connection successful, 1 otherwise
|
|
104
|
-
# @sideeffects None (uses ConnectTimeout=2)
|
|
105
|
-
check_termux_connection() {
|
|
106
|
-
local host="$1"
|
|
107
|
-
|
|
108
|
-
# Quick connection test (2 second timeout)
|
|
109
|
-
if ssh -o ConnectTimeout=2 -o BatchMode=yes "$host" "echo ok" >/dev/null 2>&1; then
|
|
110
|
-
return 0
|
|
111
|
-
else
|
|
112
|
-
return 1
|
|
113
|
-
fi
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
# Main execution
|
|
117
|
-
SSH_HOST=$(get_ssh_host)
|
|
118
|
-
|
|
119
|
-
if [[ -z "$SSH_HOST" ]]; then
|
|
120
|
-
echo "❌ Termux SSH provider not configured" >&2
|
|
121
|
-
echo " Set SSH host alias in one of:" >&2
|
|
122
|
-
echo " - Environment: export TERMUX_SSH_HOST='android'" >&2
|
|
123
|
-
echo " - Global: echo 'android' > ~/.claude/termux-ssh-host.txt" >&2
|
|
124
|
-
echo " - Project: echo 'android' > .claude/termux-ssh-host.txt" >&2
|
|
125
|
-
echo "" >&2
|
|
126
|
-
echo " See provider documentation for SSH setup instructions" >&2
|
|
127
|
-
exit 1
|
|
128
|
-
fi
|
|
129
|
-
|
|
130
|
-
if [[ -z "$TEXT" ]]; then
|
|
131
|
-
echo "❌ No text provided for TTS" >&2
|
|
132
|
-
exit 1
|
|
133
|
-
fi
|
|
134
|
-
|
|
135
|
-
# Check if SSH connection is available (with timeout)
|
|
136
|
-
if ! check_termux_connection "$SSH_HOST"; then
|
|
137
|
-
echo "⚠️ Cannot connect to SSH host '$SSH_HOST'" >&2
|
|
138
|
-
echo " Make sure:" >&2
|
|
139
|
-
echo " - Android device is reachable" >&2
|
|
140
|
-
echo " - SSH server is running: sshd" >&2
|
|
141
|
-
echo " - SSH config is correct in ~/.ssh/config" >&2
|
|
142
|
-
exit 1
|
|
143
|
-
fi
|
|
144
|
-
|
|
145
|
-
# Escape single quotes in text for safe shell transmission
|
|
146
|
-
# Replace ' with '\'' (end quote, escaped quote, start quote)
|
|
147
|
-
SAFE_TEXT="${TEXT//\'/\'\\\'\'}"
|
|
148
|
-
|
|
149
|
-
# Send TTS command to Android device via SSH
|
|
150
|
-
# Use termux-tts-speak for native Android TTS
|
|
151
|
-
# Run in background to avoid blocking
|
|
152
|
-
ssh -o ConnectTimeout=5 "$SSH_HOST" "termux-tts-speak '$SAFE_TEXT'" &
|
|
153
|
-
|
|
154
|
-
# Get the background process PID
|
|
155
|
-
SSH_PID=$!
|
|
156
|
-
|
|
157
|
-
# Optional: Wait a moment to detect immediate failures
|
|
158
|
-
sleep 0.2
|
|
159
|
-
|
|
160
|
-
# Check if the SSH process is still running (indicates successful start)
|
|
161
|
-
if kill -0 "$SSH_PID" 2>/dev/null; then
|
|
162
|
-
echo "✓ TTS sent to Android device via SSH" >&2
|
|
163
|
-
else
|
|
164
|
-
echo "⚠️ SSH command may have failed" >&2
|
|
165
|
-
fi
|
|
166
|
-
|
|
167
|
-
# Note: We don't return an audio file path since audio plays on the Android device
|
|
168
|
-
# This is by design - the provider outputs audio remotely, not locally
|
|
169
|
-
echo ""
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# File: .claude/hooks/play-tts-termux-ssh.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
+
# Website: https://agentvibes.org
|
|
7
|
+
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
+
#
|
|
9
|
+
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
+
#
|
|
12
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
# you may not use this file except in compliance with the License.
|
|
14
|
+
# You may obtain a copy of the License at
|
|
15
|
+
#
|
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
#
|
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
# See the License for the specific language governing permissions and
|
|
22
|
+
# limitations under the License.
|
|
23
|
+
#
|
|
24
|
+
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
+
# express or implied. Use at your own risk. See the Apache License for details.
|
|
26
|
+
#
|
|
27
|
+
# ---
|
|
28
|
+
#
|
|
29
|
+
# @fileoverview Termux SSH TTS Provider - Android TTS via SSH tunnel
|
|
30
|
+
# @context Enables TTS output on Android devices when connected via SSH from Termux
|
|
31
|
+
# @architecture SSH-based remote TTS invocation using termux-tts-speak on Android
|
|
32
|
+
# @dependencies ssh, termux-tts-speak (on Android), termux-api (on Android)
|
|
33
|
+
# @entrypoints Called by play-tts.sh router when provider=termux-ssh
|
|
34
|
+
# @patterns Remote TTS invocation, SSH host alias configuration, graceful fallback
|
|
35
|
+
# @related play-tts.sh, provider-manager.sh
|
|
36
|
+
# @setup Requires user to configure SSH host alias in ~/.ssh/config
|
|
37
|
+
#
|
|
38
|
+
# SETUP INSTRUCTIONS:
|
|
39
|
+
# ===================
|
|
40
|
+
# 1. On Android device (Termux):
|
|
41
|
+
# - Install: pkg install termux-api openssh
|
|
42
|
+
# - Install Termux:API app from F-Droid
|
|
43
|
+
# - Start SSH server: sshd
|
|
44
|
+
# - Get SSH port: echo $PREFIX/var/run/sshd.pid
|
|
45
|
+
#
|
|
46
|
+
# 2. On server/desktop:
|
|
47
|
+
# - Add to ~/.ssh/config:
|
|
48
|
+
# Host android
|
|
49
|
+
# HostName <your-android-ip>
|
|
50
|
+
# User <your-termux-username>
|
|
51
|
+
# Port 8022
|
|
52
|
+
# IdentityFile ~/.ssh/id_rsa
|
|
53
|
+
#
|
|
54
|
+
# 3. Configure AgentVibes:
|
|
55
|
+
# - echo "android" > ~/.claude/termux-ssh-host.txt
|
|
56
|
+
# OR
|
|
57
|
+
# - export TERMUX_SSH_HOST="android"
|
|
58
|
+
#
|
|
59
|
+
# 4. Set provider:
|
|
60
|
+
# - echo "termux-ssh" > ~/.claude/tts-provider.txt
|
|
61
|
+
#
|
|
62
|
+
|
|
63
|
+
# Fix locale warnings
|
|
64
|
+
export LC_ALL=C
|
|
65
|
+
|
|
66
|
+
TEXT="$1"
|
|
67
|
+
VOICE_OVERRIDE="$2" # Not used for termux-ssh, but kept for interface compatibility
|
|
68
|
+
|
|
69
|
+
# Script directory
|
|
70
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
71
|
+
|
|
72
|
+
# @function get_ssh_host
|
|
73
|
+
# @intent Determine SSH host alias for Android device
|
|
74
|
+
# @why Allows users to configure their own SSH connection without hardcoded values
|
|
75
|
+
# @returns Echoes SSH host alias or empty string if not configured
|
|
76
|
+
# @sideeffects None
|
|
77
|
+
get_ssh_host() {
|
|
78
|
+
local ssh_host=""
|
|
79
|
+
|
|
80
|
+
# Priority order:
|
|
81
|
+
# 1. Environment variable TERMUX_SSH_HOST
|
|
82
|
+
# 2. Project-specific config file (CLAUDE_PROJECT_DIR)
|
|
83
|
+
# 3. Script location config file
|
|
84
|
+
# 4. Global config file (~/.claude/termux-ssh-host.txt)
|
|
85
|
+
|
|
86
|
+
if [[ -n "$TERMUX_SSH_HOST" ]]; then
|
|
87
|
+
ssh_host="$TERMUX_SSH_HOST"
|
|
88
|
+
elif [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -f "$CLAUDE_PROJECT_DIR/.claude/termux-ssh-host.txt" ]]; then
|
|
89
|
+
ssh_host=$(cat "$CLAUDE_PROJECT_DIR/.claude/termux-ssh-host.txt" 2>/dev/null | tr -d '\n\r')
|
|
90
|
+
elif [[ -f "$SCRIPT_DIR/../termux-ssh-host.txt" ]]; then
|
|
91
|
+
ssh_host=$(cat "$SCRIPT_DIR/../termux-ssh-host.txt" 2>/dev/null | tr -d '\n\r')
|
|
92
|
+
elif [[ -f "$HOME/.claude/termux-ssh-host.txt" ]]; then
|
|
93
|
+
ssh_host=$(cat "$HOME/.claude/termux-ssh-host.txt" 2>/dev/null | tr -d '\n\r')
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
echo "$ssh_host"
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
# @function check_termux_connection
|
|
100
|
+
# @intent Verify SSH connection to Android device is available
|
|
101
|
+
# @why Prevent hanging on SSH timeout if device is unreachable
|
|
102
|
+
# @param $1 SSH host alias
|
|
103
|
+
# @returns 0 if connection successful, 1 otherwise
|
|
104
|
+
# @sideeffects None (uses ConnectTimeout=2)
|
|
105
|
+
check_termux_connection() {
|
|
106
|
+
local host="$1"
|
|
107
|
+
|
|
108
|
+
# Quick connection test (2 second timeout)
|
|
109
|
+
if ssh -o ConnectTimeout=2 -o BatchMode=yes "$host" "echo ok" >/dev/null 2>&1; then
|
|
110
|
+
return 0
|
|
111
|
+
else
|
|
112
|
+
return 1
|
|
113
|
+
fi
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# Main execution
|
|
117
|
+
SSH_HOST=$(get_ssh_host)
|
|
118
|
+
|
|
119
|
+
if [[ -z "$SSH_HOST" ]]; then
|
|
120
|
+
echo "❌ Termux SSH provider not configured" >&2
|
|
121
|
+
echo " Set SSH host alias in one of:" >&2
|
|
122
|
+
echo " - Environment: export TERMUX_SSH_HOST='android'" >&2
|
|
123
|
+
echo " - Global: echo 'android' > ~/.claude/termux-ssh-host.txt" >&2
|
|
124
|
+
echo " - Project: echo 'android' > .claude/termux-ssh-host.txt" >&2
|
|
125
|
+
echo "" >&2
|
|
126
|
+
echo " See provider documentation for SSH setup instructions" >&2
|
|
127
|
+
exit 1
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
if [[ -z "$TEXT" ]]; then
|
|
131
|
+
echo "❌ No text provided for TTS" >&2
|
|
132
|
+
exit 1
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
# Check if SSH connection is available (with timeout)
|
|
136
|
+
if ! check_termux_connection "$SSH_HOST"; then
|
|
137
|
+
echo "⚠️ Cannot connect to SSH host '$SSH_HOST'" >&2
|
|
138
|
+
echo " Make sure:" >&2
|
|
139
|
+
echo " - Android device is reachable" >&2
|
|
140
|
+
echo " - SSH server is running: sshd" >&2
|
|
141
|
+
echo " - SSH config is correct in ~/.ssh/config" >&2
|
|
142
|
+
exit 1
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
# Escape single quotes in text for safe shell transmission
|
|
146
|
+
# Replace ' with '\'' (end quote, escaped quote, start quote)
|
|
147
|
+
SAFE_TEXT="${TEXT//\'/\'\\\'\'}"
|
|
148
|
+
|
|
149
|
+
# Send TTS command to Android device via SSH
|
|
150
|
+
# Use termux-tts-speak for native Android TTS
|
|
151
|
+
# Run in background to avoid blocking
|
|
152
|
+
ssh -o ConnectTimeout=5 "$SSH_HOST" "termux-tts-speak '$SAFE_TEXT'" &
|
|
153
|
+
|
|
154
|
+
# Get the background process PID
|
|
155
|
+
SSH_PID=$!
|
|
156
|
+
|
|
157
|
+
# Optional: Wait a moment to detect immediate failures
|
|
158
|
+
sleep 0.2
|
|
159
|
+
|
|
160
|
+
# Check if the SSH process is still running (indicates successful start)
|
|
161
|
+
if kill -0 "$SSH_PID" 2>/dev/null; then
|
|
162
|
+
echo "✓ TTS sent to Android device via SSH" >&2
|
|
163
|
+
else
|
|
164
|
+
echo "⚠️ SSH command may have failed" >&2
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
# Note: We don't return an audio file path since audio plays on the Android device
|
|
168
|
+
# This is by design - the provider outputs audio remotely, not locally
|
|
169
|
+
echo ""
|
|
@@ -89,7 +89,7 @@ while [[ $# -gt 0 ]]; do
|
|
|
89
89
|
--llm)
|
|
90
90
|
LLM_PROVIDER="${2:-}"
|
|
91
91
|
# Security: Validate LLM provider name (alphanumeric, hyphens, underscores only)
|
|
92
|
-
if [[ -n "$LLM_PROVIDER" ]] && [[ ! "$LLM_PROVIDER" =~ ^[a-zA-Z0-9_-]
|
|
92
|
+
if [[ -n "$LLM_PROVIDER" ]] && [[ ! "$LLM_PROVIDER" =~ ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ ]]; then
|
|
93
93
|
echo "Error: Invalid LLM provider name" >&2
|
|
94
94
|
exit 1
|
|
95
95
|
fi
|
|
@@ -226,11 +226,20 @@ detect_voice_provider() {
|
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
# Override provider if voice indicates different provider (mixed-provider mode)
|
|
229
|
+
# But never override transport providers (ssh-remote, agentvibes-receiver, termux-ssh)
|
|
230
|
+
# — those are transport layers, not synth engines. The receiver picks its own engine.
|
|
229
231
|
if [[ -n "$VOICE_OVERRIDE" ]]; then
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
232
|
+
case "$ACTIVE_PROVIDER" in
|
|
233
|
+
ssh-remote|agentvibes-receiver|termux-ssh)
|
|
234
|
+
# Transport provider — don't override, voice info is forwarded to receiver
|
|
235
|
+
;;
|
|
236
|
+
*)
|
|
237
|
+
DETECTED_PROVIDER=$(detect_voice_provider "$VOICE_OVERRIDE")
|
|
238
|
+
if [[ "$DETECTED_PROVIDER" != "$ACTIVE_PROVIDER" ]]; then
|
|
239
|
+
ACTIVE_PROVIDER="$DETECTED_PROVIDER"
|
|
240
|
+
fi
|
|
241
|
+
;;
|
|
242
|
+
esac
|
|
234
243
|
fi
|
|
235
244
|
|
|
236
245
|
# @function speak_text
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/prepare-release.sh
|
|
4
|
-
#
|
|
5
|
-
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
-
# Website: https://agentvibes.org
|
|
7
|
-
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
-
#
|
|
9
|
-
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
-
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
-
#
|
|
12
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
-
# you may not use this file except in compliance with the License.
|
|
14
|
-
# You may obtain a copy of the License at
|
|
15
|
-
#
|
|
16
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
-
#
|
|
18
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
-
# See the License for the specific language governing permissions and
|
|
22
|
-
# limitations under the License.
|
|
23
|
-
#
|
|
24
|
-
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
-
# express or implied, including but not limited to the warranties of
|
|
26
|
-
# merchantability, fitness for a particular purpose and noninfringement.
|
|
27
|
-
# In no event shall the authors or copyright holders be liable for any claim,
|
|
28
|
-
# damages or other liability, whether in an action of contract, tort or
|
|
29
|
-
# otherwise, arising from, out of or in connection with the software or the
|
|
30
|
-
# use or other dealings in the software.
|
|
31
|
-
#
|
|
32
|
-
# ---
|
|
33
|
-
#
|
|
34
|
-
# @fileoverview Release preparation helper script with AI-generated notes
|
|
35
|
-
# @context Placeholder script intended to be replaced by Claude AI for generating release notes
|
|
36
|
-
# @architecture Simple informational script - actual logic delegated to Claude AI
|
|
37
|
-
# @dependencies None (informational only)
|
|
38
|
-
# @entrypoints Called manually or via CLI for release preparation
|
|
39
|
-
# @patterns Fail-fast messaging, user guidance
|
|
40
|
-
# @related RELEASE_NOTES.md, package.json version bumping
|
|
41
|
-
|
|
42
|
-
BUMP_TYPE="${1:-patch}"
|
|
43
|
-
|
|
44
|
-
echo "🤖 Preparing release with AI-generated summary..."
|
|
45
|
-
echo ""
|
|
46
|
-
echo "This command tells Claude AI to:"
|
|
47
|
-
echo "1. Analyze changes since last release"
|
|
48
|
-
echo "2. Generate intelligent summary"
|
|
49
|
-
echo "3. Create RELEASE_NOTES.md"
|
|
50
|
-
echo "4. Bump version to $BUMP_TYPE"
|
|
51
|
-
echo "5. Commit everything"
|
|
52
|
-
echo ""
|
|
53
|
-
echo "⚠️ This is handled by Claude AI, not this script"
|
|
54
|
-
echo "Please ask Claude to prepare the release instead"
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# File: .claude/hooks/prepare-release.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
|
6
|
+
# Website: https://agentvibes.org
|
|
7
|
+
# Repository: https://github.com/paulpreibisch/AgentVibes
|
|
8
|
+
#
|
|
9
|
+
# Co-created by Paul Preibisch with Claude AI
|
|
10
|
+
# Copyright (c) 2025 Paul Preibisch
|
|
11
|
+
#
|
|
12
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
# you may not use this file except in compliance with the License.
|
|
14
|
+
# You may obtain a copy of the License at
|
|
15
|
+
#
|
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
#
|
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
# See the License for the specific language governing permissions and
|
|
22
|
+
# limitations under the License.
|
|
23
|
+
#
|
|
24
|
+
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
25
|
+
# express or implied, including but not limited to the warranties of
|
|
26
|
+
# merchantability, fitness for a particular purpose and noninfringement.
|
|
27
|
+
# In no event shall the authors or copyright holders be liable for any claim,
|
|
28
|
+
# damages or other liability, whether in an action of contract, tort or
|
|
29
|
+
# otherwise, arising from, out of or in connection with the software or the
|
|
30
|
+
# use or other dealings in the software.
|
|
31
|
+
#
|
|
32
|
+
# ---
|
|
33
|
+
#
|
|
34
|
+
# @fileoverview Release preparation helper script with AI-generated notes
|
|
35
|
+
# @context Placeholder script intended to be replaced by Claude AI for generating release notes
|
|
36
|
+
# @architecture Simple informational script - actual logic delegated to Claude AI
|
|
37
|
+
# @dependencies None (informational only)
|
|
38
|
+
# @entrypoints Called manually or via CLI for release preparation
|
|
39
|
+
# @patterns Fail-fast messaging, user guidance
|
|
40
|
+
# @related RELEASE_NOTES.md, package.json version bumping
|
|
41
|
+
|
|
42
|
+
BUMP_TYPE="${1:-patch}"
|
|
43
|
+
|
|
44
|
+
echo "🤖 Preparing release with AI-generated summary..."
|
|
45
|
+
echo ""
|
|
46
|
+
echo "This command tells Claude AI to:"
|
|
47
|
+
echo "1. Analyze changes since last release"
|
|
48
|
+
echo "2. Generate intelligent summary"
|
|
49
|
+
echo "3. Create RELEASE_NOTES.md"
|
|
50
|
+
echo "4. Bump version to $BUMP_TYPE"
|
|
51
|
+
echo "5. Commit everything"
|
|
52
|
+
echo ""
|
|
53
|
+
echo "⚠️ This is handled by Claude AI, not this script"
|
|
54
|
+
echo "Please ask Claude to prepare the release instead"
|