agentvibes 5.1.4 → 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/.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/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-download-voices.sh +233 -225
- package/.claude/hooks/piper-installer.sh +292 -292
- package/.claude/hooks/piper-multispeaker-registry.sh +171 -171
- 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 +105 -105
- package/.claude/hooks/play-tts-piper.sh +16 -5
- package/.claude/hooks/play-tts-ssh-remote.sh +168 -167
- package/.claude/hooks/play-tts-termux-ssh.sh +169 -169
- package/.claude/hooks/play-tts.sh +35 -14
- 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/session-start-tts.sh +4 -1
- 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/verbosity-manager.sh +185 -178
- package/.claude/hooks/voice-manager.sh +552 -548
- 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 +9 -3
- package/.claude/hooks-windows/session-start-tts.ps1 +2 -1
- package/.claude/hooks-windows/verbosity-manager.ps1 +126 -119
- package/README.md +19 -2
- package/RELEASE_NOTES.md +74 -0
- package/bin/agentvibes-voice-browser.js +1939 -1840
- package/bin/mcp-server.sh +206 -206
- package/mcp-server/server.py +87 -15
- 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 +112 -31
- package/src/console/tabs/voices-tab.js +130 -13
- package/src/i18n/en.js +202 -202
- package/src/installer.js +79 -213
- package/src/services/llm-provider-service.js +126 -75
- package/src/services/verbosity-service.js +159 -157
- package/templates/agentvibes-receiver.sh +3 -2
|
@@ -1,161 +1,161 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/migrate-to-agentvibes.sh
|
|
4
|
-
#
|
|
5
|
-
# AgentVibes - Migration Script for v2.10.0+
|
|
6
|
-
# Migrates configuration from .claude/config/ and .claude/plugins/ to .agentvibes/
|
|
7
|
-
#
|
|
8
|
-
# This script is automatically run by the installer if old config is detected.
|
|
9
|
-
# Can also be run manually: .claude/hooks/migrate-to-agentvibes.sh
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
set -euo pipefail
|
|
13
|
-
|
|
14
|
-
# Colors for output
|
|
15
|
-
GREEN='\033[0;32m'
|
|
16
|
-
YELLOW='\033[1;33m'
|
|
17
|
-
BLUE='\033[0;34m'
|
|
18
|
-
NC='\033[0m' # No Color
|
|
19
|
-
|
|
20
|
-
echo -e "${BLUE}🔄 AgentVibes Configuration Migration${NC}"
|
|
21
|
-
echo ""
|
|
22
|
-
echo "Migrating from .claude/config/ and .claude/plugins/ to .agentvibes/"
|
|
23
|
-
echo ""
|
|
24
|
-
|
|
25
|
-
# Determine project root
|
|
26
|
-
if [[ -n "${CLAUDE_PROJECT_DIR:-}" ]]; then
|
|
27
|
-
PROJECT_ROOT="$CLAUDE_PROJECT_DIR"
|
|
28
|
-
else
|
|
29
|
-
PROJECT_ROOT="$(pwd)"
|
|
30
|
-
fi
|
|
31
|
-
|
|
32
|
-
cd "$PROJECT_ROOT"
|
|
33
|
-
|
|
34
|
-
# Track if any migrations happened
|
|
35
|
-
MIGRATED=false
|
|
36
|
-
|
|
37
|
-
# Create target directories
|
|
38
|
-
echo -e "${BLUE}📁 Creating .agentvibes/ directory structure...${NC}"
|
|
39
|
-
mkdir -p .agentvibes/bmad
|
|
40
|
-
mkdir -p .agentvibes/config
|
|
41
|
-
echo -e "${GREEN}✓ Directories created${NC}"
|
|
42
|
-
echo ""
|
|
43
|
-
|
|
44
|
-
# Migrate BMAD files from .claude/plugins/
|
|
45
|
-
echo -e "${BLUE}🔍 Checking for BMAD files in .claude/plugins/...${NC}"
|
|
46
|
-
|
|
47
|
-
if [[ -f ".claude/plugins/bmad-voices-enabled.flag" ]]; then
|
|
48
|
-
echo -e "${YELLOW} Found: bmad-voices-enabled.flag${NC}"
|
|
49
|
-
mv .claude/plugins/bmad-voices-enabled.flag .agentvibes/bmad/
|
|
50
|
-
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
51
|
-
MIGRATED=true
|
|
52
|
-
fi
|
|
53
|
-
|
|
54
|
-
if [[ -f ".claude/plugins/bmad-party-mode-disabled.flag" ]]; then
|
|
55
|
-
echo -e "${YELLOW} Found: bmad-party-mode-disabled.flag${NC}"
|
|
56
|
-
mv .claude/plugins/bmad-party-mode-disabled.flag .agentvibes/bmad/
|
|
57
|
-
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
58
|
-
MIGRATED=true
|
|
59
|
-
fi
|
|
60
|
-
|
|
61
|
-
if [[ -f ".claude/plugins/.bmad-previous-settings" ]]; then
|
|
62
|
-
echo -e "${YELLOW} Found: .bmad-previous-settings${NC}"
|
|
63
|
-
mv .claude/plugins/.bmad-previous-settings .agentvibes/bmad/
|
|
64
|
-
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
65
|
-
MIGRATED=true
|
|
66
|
-
fi
|
|
67
|
-
|
|
68
|
-
echo ""
|
|
69
|
-
|
|
70
|
-
# Migrate BMAD files from .claude/config/
|
|
71
|
-
echo -e "${BLUE}🔍 Checking for BMAD files in .claude/config/...${NC}"
|
|
72
|
-
|
|
73
|
-
if [[ -f ".claude/config/bmad-voices.md" ]]; then
|
|
74
|
-
echo -e "${YELLOW} Found: bmad-voices.md${NC}"
|
|
75
|
-
mv .claude/config/bmad-voices.md .agentvibes/bmad/
|
|
76
|
-
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
77
|
-
MIGRATED=true
|
|
78
|
-
fi
|
|
79
|
-
|
|
80
|
-
if [[ -f ".claude/config/bmad-voices-enabled.flag" ]]; then
|
|
81
|
-
echo -e "${YELLOW} Found: bmad-voices-enabled.flag${NC}"
|
|
82
|
-
# Check if already exists in new location
|
|
83
|
-
if [[ -f ".agentvibes/bmad/bmad-voices-enabled.flag" ]]; then
|
|
84
|
-
echo -e "${BLUE} (Already exists in .agentvibes/bmad/ - removing duplicate)${NC}"
|
|
85
|
-
rm .claude/config/bmad-voices-enabled.flag
|
|
86
|
-
else
|
|
87
|
-
mv .claude/config/bmad-voices-enabled.flag .agentvibes/bmad/
|
|
88
|
-
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
89
|
-
fi
|
|
90
|
-
MIGRATED=true
|
|
91
|
-
fi
|
|
92
|
-
|
|
93
|
-
echo ""
|
|
94
|
-
|
|
95
|
-
# Migrate AgentVibes config files
|
|
96
|
-
echo -e "${BLUE}🔍 Checking for AgentVibes config in .claude/config/...${NC}"
|
|
97
|
-
|
|
98
|
-
if [[ -f ".claude/config/agentvibes.json" ]]; then
|
|
99
|
-
echo -e "${YELLOW} Found: agentvibes.json${NC}"
|
|
100
|
-
mv .claude/config/agentvibes.json .agentvibes/config/
|
|
101
|
-
echo -e "${GREEN} ✓ Moved to .agentvibes/config/${NC}"
|
|
102
|
-
MIGRATED=true
|
|
103
|
-
fi
|
|
104
|
-
|
|
105
|
-
if [[ -f ".claude/config/personality-voice-defaults.default.json" ]]; then
|
|
106
|
-
echo -e "${YELLOW} Found: personality-voice-defaults.default.json${NC}"
|
|
107
|
-
mv .claude/config/personality-voice-defaults.default.json .agentvibes/config/
|
|
108
|
-
echo -e "${GREEN} ✓ Moved to .agentvibes/config/${NC}"
|
|
109
|
-
MIGRATED=true
|
|
110
|
-
fi
|
|
111
|
-
|
|
112
|
-
if [[ -f ".claude/config/personality-voice-defaults.json" ]]; then
|
|
113
|
-
echo -e "${YELLOW} Found: personality-voice-defaults.json${NC}"
|
|
114
|
-
mv .claude/config/personality-voice-defaults.json .agentvibes/config/
|
|
115
|
-
echo -e "${GREEN} ✓ Moved to .agentvibes/config/${NC}"
|
|
116
|
-
MIGRATED=true
|
|
117
|
-
fi
|
|
118
|
-
|
|
119
|
-
if [[ -f ".claude/config/README-personality-defaults.md" ]]; then
|
|
120
|
-
echo -e "${YELLOW} Found: README-personality-defaults.md${NC}"
|
|
121
|
-
mv .claude/config/README-personality-defaults.md .agentvibes/config/
|
|
122
|
-
echo -e "${GREEN} ✓ Moved to .agentvibes/config/${NC}"
|
|
123
|
-
MIGRATED=true
|
|
124
|
-
fi
|
|
125
|
-
|
|
126
|
-
echo ""
|
|
127
|
-
|
|
128
|
-
# Clean up empty directories
|
|
129
|
-
echo -e "${BLUE}🧹 Cleaning up...${NC}"
|
|
130
|
-
|
|
131
|
-
if [[ -d ".claude/plugins" ]] && [[ -z "$(ls -A .claude/plugins 2>/dev/null)" ]]; then
|
|
132
|
-
rmdir .claude/plugins
|
|
133
|
-
echo -e "${GREEN}✓ Removed empty .claude/plugins/ directory${NC}"
|
|
134
|
-
fi
|
|
135
|
-
|
|
136
|
-
# Note: We don't remove .claude/config/ because it may contain runtime state files
|
|
137
|
-
# like tts-speech-rate.txt that should stay there
|
|
138
|
-
|
|
139
|
-
echo ""
|
|
140
|
-
|
|
141
|
-
if [[ "$MIGRATED" == "true" ]]; then
|
|
142
|
-
echo -e "${GREEN}✅ Migration complete!${NC}"
|
|
143
|
-
echo ""
|
|
144
|
-
echo "Your AgentVibes configuration has been moved to:"
|
|
145
|
-
echo " .agentvibes/bmad/ - BMAD voice mappings and state"
|
|
146
|
-
echo " .agentvibes/config/ - AgentVibes settings"
|
|
147
|
-
echo ""
|
|
148
|
-
echo "Old locations are no longer used:"
|
|
149
|
-
echo " .claude/plugins/ - (removed if empty)"
|
|
150
|
-
echo " .claude/config/ - (AgentVibes files removed)"
|
|
151
|
-
echo ""
|
|
152
|
-
echo -e "${BLUE}ℹ️ Note: .claude/config/ still exists for runtime state files${NC}"
|
|
153
|
-
echo " (like tts-speech-rate.txt - these belong to Claude Code)"
|
|
154
|
-
else
|
|
155
|
-
echo -e "${GREEN}✓ No migration needed${NC}"
|
|
156
|
-
echo ""
|
|
157
|
-
echo "All configuration is already in .agentvibes/"
|
|
158
|
-
fi
|
|
159
|
-
|
|
160
|
-
echo ""
|
|
161
|
-
echo -e "${GREEN}🎉 Ready to use AgentVibes!${NC}"
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# File: .claude/hooks/migrate-to-agentvibes.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Migration Script for v2.10.0+
|
|
6
|
+
# Migrates configuration from .claude/config/ and .claude/plugins/ to .agentvibes/
|
|
7
|
+
#
|
|
8
|
+
# This script is automatically run by the installer if old config is detected.
|
|
9
|
+
# Can also be run manually: .claude/hooks/migrate-to-agentvibes.sh
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
set -euo pipefail
|
|
13
|
+
|
|
14
|
+
# Colors for output
|
|
15
|
+
GREEN='\033[0;32m'
|
|
16
|
+
YELLOW='\033[1;33m'
|
|
17
|
+
BLUE='\033[0;34m'
|
|
18
|
+
NC='\033[0m' # No Color
|
|
19
|
+
|
|
20
|
+
echo -e "${BLUE}🔄 AgentVibes Configuration Migration${NC}"
|
|
21
|
+
echo ""
|
|
22
|
+
echo "Migrating from .claude/config/ and .claude/plugins/ to .agentvibes/"
|
|
23
|
+
echo ""
|
|
24
|
+
|
|
25
|
+
# Determine project root
|
|
26
|
+
if [[ -n "${CLAUDE_PROJECT_DIR:-}" ]]; then
|
|
27
|
+
PROJECT_ROOT="$CLAUDE_PROJECT_DIR"
|
|
28
|
+
else
|
|
29
|
+
PROJECT_ROOT="$(pwd)"
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
cd "$PROJECT_ROOT"
|
|
33
|
+
|
|
34
|
+
# Track if any migrations happened
|
|
35
|
+
MIGRATED=false
|
|
36
|
+
|
|
37
|
+
# Create target directories
|
|
38
|
+
echo -e "${BLUE}📁 Creating .agentvibes/ directory structure...${NC}"
|
|
39
|
+
mkdir -p .agentvibes/bmad
|
|
40
|
+
mkdir -p .agentvibes/config
|
|
41
|
+
echo -e "${GREEN}✓ Directories created${NC}"
|
|
42
|
+
echo ""
|
|
43
|
+
|
|
44
|
+
# Migrate BMAD files from .claude/plugins/
|
|
45
|
+
echo -e "${BLUE}🔍 Checking for BMAD files in .claude/plugins/...${NC}"
|
|
46
|
+
|
|
47
|
+
if [[ -f ".claude/plugins/bmad-voices-enabled.flag" ]]; then
|
|
48
|
+
echo -e "${YELLOW} Found: bmad-voices-enabled.flag${NC}"
|
|
49
|
+
mv .claude/plugins/bmad-voices-enabled.flag .agentvibes/bmad/
|
|
50
|
+
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
51
|
+
MIGRATED=true
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
if [[ -f ".claude/plugins/bmad-party-mode-disabled.flag" ]]; then
|
|
55
|
+
echo -e "${YELLOW} Found: bmad-party-mode-disabled.flag${NC}"
|
|
56
|
+
mv .claude/plugins/bmad-party-mode-disabled.flag .agentvibes/bmad/
|
|
57
|
+
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
58
|
+
MIGRATED=true
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
if [[ -f ".claude/plugins/.bmad-previous-settings" ]]; then
|
|
62
|
+
echo -e "${YELLOW} Found: .bmad-previous-settings${NC}"
|
|
63
|
+
mv .claude/plugins/.bmad-previous-settings .agentvibes/bmad/
|
|
64
|
+
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
65
|
+
MIGRATED=true
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
echo ""
|
|
69
|
+
|
|
70
|
+
# Migrate BMAD files from .claude/config/
|
|
71
|
+
echo -e "${BLUE}🔍 Checking for BMAD files in .claude/config/...${NC}"
|
|
72
|
+
|
|
73
|
+
if [[ -f ".claude/config/bmad-voices.md" ]]; then
|
|
74
|
+
echo -e "${YELLOW} Found: bmad-voices.md${NC}"
|
|
75
|
+
mv .claude/config/bmad-voices.md .agentvibes/bmad/
|
|
76
|
+
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
77
|
+
MIGRATED=true
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
if [[ -f ".claude/config/bmad-voices-enabled.flag" ]]; then
|
|
81
|
+
echo -e "${YELLOW} Found: bmad-voices-enabled.flag${NC}"
|
|
82
|
+
# Check if already exists in new location
|
|
83
|
+
if [[ -f ".agentvibes/bmad/bmad-voices-enabled.flag" ]]; then
|
|
84
|
+
echo -e "${BLUE} (Already exists in .agentvibes/bmad/ - removing duplicate)${NC}"
|
|
85
|
+
rm .claude/config/bmad-voices-enabled.flag
|
|
86
|
+
else
|
|
87
|
+
mv .claude/config/bmad-voices-enabled.flag .agentvibes/bmad/
|
|
88
|
+
echo -e "${GREEN} ✓ Moved to .agentvibes/bmad/${NC}"
|
|
89
|
+
fi
|
|
90
|
+
MIGRATED=true
|
|
91
|
+
fi
|
|
92
|
+
|
|
93
|
+
echo ""
|
|
94
|
+
|
|
95
|
+
# Migrate AgentVibes config files
|
|
96
|
+
echo -e "${BLUE}🔍 Checking for AgentVibes config in .claude/config/...${NC}"
|
|
97
|
+
|
|
98
|
+
if [[ -f ".claude/config/agentvibes.json" ]]; then
|
|
99
|
+
echo -e "${YELLOW} Found: agentvibes.json${NC}"
|
|
100
|
+
mv .claude/config/agentvibes.json .agentvibes/config/
|
|
101
|
+
echo -e "${GREEN} ✓ Moved to .agentvibes/config/${NC}"
|
|
102
|
+
MIGRATED=true
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
if [[ -f ".claude/config/personality-voice-defaults.default.json" ]]; then
|
|
106
|
+
echo -e "${YELLOW} Found: personality-voice-defaults.default.json${NC}"
|
|
107
|
+
mv .claude/config/personality-voice-defaults.default.json .agentvibes/config/
|
|
108
|
+
echo -e "${GREEN} ✓ Moved to .agentvibes/config/${NC}"
|
|
109
|
+
MIGRATED=true
|
|
110
|
+
fi
|
|
111
|
+
|
|
112
|
+
if [[ -f ".claude/config/personality-voice-defaults.json" ]]; then
|
|
113
|
+
echo -e "${YELLOW} Found: personality-voice-defaults.json${NC}"
|
|
114
|
+
mv .claude/config/personality-voice-defaults.json .agentvibes/config/
|
|
115
|
+
echo -e "${GREEN} ✓ Moved to .agentvibes/config/${NC}"
|
|
116
|
+
MIGRATED=true
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
if [[ -f ".claude/config/README-personality-defaults.md" ]]; then
|
|
120
|
+
echo -e "${YELLOW} Found: README-personality-defaults.md${NC}"
|
|
121
|
+
mv .claude/config/README-personality-defaults.md .agentvibes/config/
|
|
122
|
+
echo -e "${GREEN} ✓ Moved to .agentvibes/config/${NC}"
|
|
123
|
+
MIGRATED=true
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
echo ""
|
|
127
|
+
|
|
128
|
+
# Clean up empty directories
|
|
129
|
+
echo -e "${BLUE}🧹 Cleaning up...${NC}"
|
|
130
|
+
|
|
131
|
+
if [[ -d ".claude/plugins" ]] && [[ -z "$(ls -A .claude/plugins 2>/dev/null)" ]]; then
|
|
132
|
+
rmdir .claude/plugins
|
|
133
|
+
echo -e "${GREEN}✓ Removed empty .claude/plugins/ directory${NC}"
|
|
134
|
+
fi
|
|
135
|
+
|
|
136
|
+
# Note: We don't remove .claude/config/ because it may contain runtime state files
|
|
137
|
+
# like tts-speech-rate.txt that should stay there
|
|
138
|
+
|
|
139
|
+
echo ""
|
|
140
|
+
|
|
141
|
+
if [[ "$MIGRATED" == "true" ]]; then
|
|
142
|
+
echo -e "${GREEN}✅ Migration complete!${NC}"
|
|
143
|
+
echo ""
|
|
144
|
+
echo "Your AgentVibes configuration has been moved to:"
|
|
145
|
+
echo " .agentvibes/bmad/ - BMAD voice mappings and state"
|
|
146
|
+
echo " .agentvibes/config/ - AgentVibes settings"
|
|
147
|
+
echo ""
|
|
148
|
+
echo "Old locations are no longer used:"
|
|
149
|
+
echo " .claude/plugins/ - (removed if empty)"
|
|
150
|
+
echo " .claude/config/ - (AgentVibes files removed)"
|
|
151
|
+
echo ""
|
|
152
|
+
echo -e "${BLUE}ℹ️ Note: .claude/config/ still exists for runtime state files${NC}"
|
|
153
|
+
echo " (like tts-speech-rate.txt - these belong to Claude Code)"
|
|
154
|
+
else
|
|
155
|
+
echo -e "${GREEN}✓ No migration needed${NC}"
|
|
156
|
+
echo ""
|
|
157
|
+
echo "All configuration is already in .agentvibes/"
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
echo ""
|
|
161
|
+
echo -e "${GREEN}🎉 Ready to use AgentVibes!${NC}"
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/optimize-background-music.sh
|
|
4
|
-
#
|
|
5
|
-
# AgentVibes - Background Music Optimizer
|
|
6
|
-
# Creates small, looping clips optimized for RDP/remote playback
|
|
7
|
-
#
|
|
8
|
-
# Strategy:
|
|
9
|
-
# 1. Extract 10-15 second clips from each track
|
|
10
|
-
# 2. Find seamless loop points
|
|
11
|
-
# 3. Convert to mono 22kHz 32kbps MP3
|
|
12
|
-
# 4. Target: 50-100KB per file (vs 2-7MB originals)
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
set -euo pipefail
|
|
16
|
-
export LC_ALL=C
|
|
17
|
-
|
|
18
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
19
|
-
BACKGROUNDS_DIR="$SCRIPT_DIR/../audio/tracks"
|
|
20
|
-
OPTIMIZED_DIR="$BACKGROUNDS_DIR/optimized"
|
|
21
|
-
|
|
22
|
-
mkdir -p "$OPTIMIZED_DIR"
|
|
23
|
-
|
|
24
|
-
# Check dependencies
|
|
25
|
-
if ! command -v ffmpeg &> /dev/null; then
|
|
26
|
-
echo "❌ Error: ffmpeg required for optimization"
|
|
27
|
-
exit 1
|
|
28
|
-
fi
|
|
29
|
-
|
|
30
|
-
echo "🎵 Optimizing background music for RDP/remote playback..."
|
|
31
|
-
echo ""
|
|
32
|
-
|
|
33
|
-
# Function to optimize a single track
|
|
34
|
-
optimize_track() {
|
|
35
|
-
local input="$1"
|
|
36
|
-
local filename=$(basename "$input")
|
|
37
|
-
local output="$OPTIMIZED_DIR/${filename%.mp3}-loop.mp3"
|
|
38
|
-
|
|
39
|
-
# Skip if already optimized
|
|
40
|
-
if [[ -f "$output" ]]; then
|
|
41
|
-
echo " ⏭️ Skipped (already exists): $filename"
|
|
42
|
-
return
|
|
43
|
-
fi
|
|
44
|
-
|
|
45
|
-
# Get duration
|
|
46
|
-
local duration
|
|
47
|
-
duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$input" 2>/dev/null)
|
|
48
|
-
duration=${duration%.*}
|
|
49
|
-
|
|
50
|
-
# Extract middle 15 seconds (best chance for smooth loop)
|
|
51
|
-
local start=$((duration / 2 - 7))
|
|
52
|
-
[[ $start -lt 0 ]] && start=0
|
|
53
|
-
|
|
54
|
-
echo " 🔄 Processing: $filename"
|
|
55
|
-
echo " • Extract: 15s loop from middle"
|
|
56
|
-
echo " • Convert: mono, 22kHz, 32kbps"
|
|
57
|
-
|
|
58
|
-
# Extract 15 seconds, convert to mono 22kHz 32kbps, add fade in/out for seamless loop
|
|
59
|
-
ffmpeg -i "$input" -ss $start -t 15 \
|
|
60
|
-
-ac 1 -ar 22050 -b:a 32k \
|
|
61
|
-
-af "afade=t=in:d=0.3,afade=t=out:st=14.7:d=0.3" \
|
|
62
|
-
-y "$output" 2>/dev/null
|
|
63
|
-
|
|
64
|
-
# Show size comparison
|
|
65
|
-
local orig_size=$(du -h "$input" | cut -f1)
|
|
66
|
-
local new_size=$(du -h "$output" | cut -f1)
|
|
67
|
-
local reduction=$((100 - ($(stat -f%z "$output" 2>/dev/null || stat -c%s "$output") * 100 / $(stat -f%z "$input" 2>/dev/null || stat -c%s "$input"))))
|
|
68
|
-
|
|
69
|
-
echo " ✓ Done: $orig_size → $new_size (${reduction}% reduction)"
|
|
70
|
-
echo ""
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
# Process all background music files
|
|
74
|
-
for track in "$BACKGROUNDS_DIR"/*.mp3; do
|
|
75
|
-
[[ -f "$track" ]] || continue
|
|
76
|
-
optimize_track "$track"
|
|
77
|
-
done
|
|
78
|
-
|
|
79
|
-
echo "✅ Optimization complete!"
|
|
80
|
-
echo ""
|
|
81
|
-
echo "📊 Results:"
|
|
82
|
-
echo " Original dir: $(du -sh "$BACKGROUNDS_DIR" | cut -f1)"
|
|
83
|
-
echo " Optimized dir: $(du -sh "$OPTIMIZED_DIR" | cut -f1)"
|
|
84
|
-
echo ""
|
|
85
|
-
echo "💡 To use optimized tracks:"
|
|
86
|
-
echo " 1. Update audio-effects.cfg to point to optimized/*.mp3"
|
|
87
|
-
echo " 2. Or replace originals: cp optimized/* ./"
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# File: .claude/hooks/optimize-background-music.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes - Background Music Optimizer
|
|
6
|
+
# Creates small, looping clips optimized for RDP/remote playback
|
|
7
|
+
#
|
|
8
|
+
# Strategy:
|
|
9
|
+
# 1. Extract 10-15 second clips from each track
|
|
10
|
+
# 2. Find seamless loop points
|
|
11
|
+
# 3. Convert to mono 22kHz 32kbps MP3
|
|
12
|
+
# 4. Target: 50-100KB per file (vs 2-7MB originals)
|
|
13
|
+
#
|
|
14
|
+
|
|
15
|
+
set -euo pipefail
|
|
16
|
+
export LC_ALL=C
|
|
17
|
+
|
|
18
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
19
|
+
BACKGROUNDS_DIR="$SCRIPT_DIR/../audio/tracks"
|
|
20
|
+
OPTIMIZED_DIR="$BACKGROUNDS_DIR/optimized"
|
|
21
|
+
|
|
22
|
+
mkdir -p "$OPTIMIZED_DIR"
|
|
23
|
+
|
|
24
|
+
# Check dependencies
|
|
25
|
+
if ! command -v ffmpeg &> /dev/null; then
|
|
26
|
+
echo "❌ Error: ffmpeg required for optimization"
|
|
27
|
+
exit 1
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
echo "🎵 Optimizing background music for RDP/remote playback..."
|
|
31
|
+
echo ""
|
|
32
|
+
|
|
33
|
+
# Function to optimize a single track
|
|
34
|
+
optimize_track() {
|
|
35
|
+
local input="$1"
|
|
36
|
+
local filename=$(basename "$input")
|
|
37
|
+
local output="$OPTIMIZED_DIR/${filename%.mp3}-loop.mp3"
|
|
38
|
+
|
|
39
|
+
# Skip if already optimized
|
|
40
|
+
if [[ -f "$output" ]]; then
|
|
41
|
+
echo " ⏭️ Skipped (already exists): $filename"
|
|
42
|
+
return
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Get duration
|
|
46
|
+
local duration
|
|
47
|
+
duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$input" 2>/dev/null)
|
|
48
|
+
duration=${duration%.*}
|
|
49
|
+
|
|
50
|
+
# Extract middle 15 seconds (best chance for smooth loop)
|
|
51
|
+
local start=$((duration / 2 - 7))
|
|
52
|
+
[[ $start -lt 0 ]] && start=0
|
|
53
|
+
|
|
54
|
+
echo " 🔄 Processing: $filename"
|
|
55
|
+
echo " • Extract: 15s loop from middle"
|
|
56
|
+
echo " • Convert: mono, 22kHz, 32kbps"
|
|
57
|
+
|
|
58
|
+
# Extract 15 seconds, convert to mono 22kHz 32kbps, add fade in/out for seamless loop
|
|
59
|
+
ffmpeg -i "$input" -ss $start -t 15 \
|
|
60
|
+
-ac 1 -ar 22050 -b:a 32k \
|
|
61
|
+
-af "afade=t=in:d=0.3,afade=t=out:st=14.7:d=0.3" \
|
|
62
|
+
-y "$output" 2>/dev/null
|
|
63
|
+
|
|
64
|
+
# Show size comparison
|
|
65
|
+
local orig_size=$(du -h "$input" | cut -f1)
|
|
66
|
+
local new_size=$(du -h "$output" | cut -f1)
|
|
67
|
+
local reduction=$((100 - ($(stat -f%z "$output" 2>/dev/null || stat -c%s "$output") * 100 / $(stat -f%z "$input" 2>/dev/null || stat -c%s "$input"))))
|
|
68
|
+
|
|
69
|
+
echo " ✓ Done: $orig_size → $new_size (${reduction}% reduction)"
|
|
70
|
+
echo ""
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
# Process all background music files
|
|
74
|
+
for track in "$BACKGROUNDS_DIR"/*.mp3; do
|
|
75
|
+
[[ -f "$track" ]] || continue
|
|
76
|
+
optimize_track "$track"
|
|
77
|
+
done
|
|
78
|
+
|
|
79
|
+
echo "✅ Optimization complete!"
|
|
80
|
+
echo ""
|
|
81
|
+
echo "📊 Results:"
|
|
82
|
+
echo " Original dir: $(du -sh "$BACKGROUNDS_DIR" | cut -f1)"
|
|
83
|
+
echo " Optimized dir: $(du -sh "$OPTIMIZED_DIR" | cut -f1)"
|
|
84
|
+
echo ""
|
|
85
|
+
echo "💡 To use optimized tracks:"
|
|
86
|
+
echo " 1. Update audio-effects.cfg to point to optimized/*.mp3"
|
|
87
|
+
echo " 2. Or replace originals: cp optimized/* ./"
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# File: .claude/hooks/path-resolver.sh
|
|
4
|
-
#
|
|
5
|
-
# AgentVibes Path Resolver Utility - Robust path resolution for all hooks
|
|
6
|
-
# Handles: symlinks, working directory changes, non-standard installations
|
|
7
|
-
#
|
|
8
|
-
# Usage in other scripts:
|
|
9
|
-
# source "$(dirname "${BASH_SOURCE[0]}")/path-resolver.sh"
|
|
10
|
-
# # Now use: $PROJECT_ROOT, $HOOKS_DIR, $SCRIPT_DIR
|
|
11
|
-
#
|
|
12
|
-
|
|
13
|
-
set -euo pipefail
|
|
14
|
-
|
|
15
|
-
# Resolve the actual script location (handles symlinks)
|
|
16
|
-
# This function must be called from the sourcing script
|
|
17
|
-
_resolve_agentvibes_paths() {
|
|
18
|
-
local calling_script="$1"
|
|
19
|
-
|
|
20
|
-
# Get real path (resolve symlinks)
|
|
21
|
-
local script_path
|
|
22
|
-
if command -v readlink &>/dev/null; then
|
|
23
|
-
script_path="$(readlink -f "$calling_script")"
|
|
24
|
-
else
|
|
25
|
-
# Fallback for systems without readlink -f
|
|
26
|
-
script_path="$(cd "$(dirname "$calling_script")" && pwd)/$(basename "$calling_script")"
|
|
27
|
-
fi
|
|
28
|
-
|
|
29
|
-
local script_dir="$(dirname "$script_path")"
|
|
30
|
-
|
|
31
|
-
# Find PROJECT_ROOT by searching up for .claude/hooks directory
|
|
32
|
-
# This is resilient to non-standard installations
|
|
33
|
-
local current_dir="$script_dir"
|
|
34
|
-
local project_root=""
|
|
35
|
-
|
|
36
|
-
while [[ "$current_dir" != "/" ]]; do
|
|
37
|
-
if [[ -d "$current_dir/.claude/hooks" ]]; then
|
|
38
|
-
# Found .claude/hooks - PROJECT_ROOT is 2 levels up
|
|
39
|
-
project_root="$(dirname "$(dirname "$current_dir")")"
|
|
40
|
-
break
|
|
41
|
-
fi
|
|
42
|
-
current_dir="$(dirname "$current_dir")"
|
|
43
|
-
done
|
|
44
|
-
|
|
45
|
-
# Validate we found a valid project root
|
|
46
|
-
if [[ -z "$project_root" ]] || [[ ! -d "$project_root/.claude/hooks" ]]; then
|
|
47
|
-
echo "❌ ERROR: Could not locate AgentVibes installation" >&2
|
|
48
|
-
echo " Script: $script_path" >&2
|
|
49
|
-
return 1
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
# Export paths for use in sourcing script
|
|
53
|
-
export SCRIPT_PATH="$script_path"
|
|
54
|
-
export SCRIPT_DIR="$script_dir"
|
|
55
|
-
export HOOKS_DIR="$project_root/.claude/hooks"
|
|
56
|
-
export PROJECT_ROOT="$project_root"
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
# Call the resolver with the calling script
|
|
60
|
-
_resolve_agentvibes_paths "${BASH_SOURCE[1]}"
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# File: .claude/hooks/path-resolver.sh
|
|
4
|
+
#
|
|
5
|
+
# AgentVibes Path Resolver Utility - Robust path resolution for all hooks
|
|
6
|
+
# Handles: symlinks, working directory changes, non-standard installations
|
|
7
|
+
#
|
|
8
|
+
# Usage in other scripts:
|
|
9
|
+
# source "$(dirname "${BASH_SOURCE[0]}")/path-resolver.sh"
|
|
10
|
+
# # Now use: $PROJECT_ROOT, $HOOKS_DIR, $SCRIPT_DIR
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
set -euo pipefail
|
|
14
|
+
|
|
15
|
+
# Resolve the actual script location (handles symlinks)
|
|
16
|
+
# This function must be called from the sourcing script
|
|
17
|
+
_resolve_agentvibes_paths() {
|
|
18
|
+
local calling_script="$1"
|
|
19
|
+
|
|
20
|
+
# Get real path (resolve symlinks)
|
|
21
|
+
local script_path
|
|
22
|
+
if command -v readlink &>/dev/null; then
|
|
23
|
+
script_path="$(readlink -f "$calling_script")"
|
|
24
|
+
else
|
|
25
|
+
# Fallback for systems without readlink -f
|
|
26
|
+
script_path="$(cd "$(dirname "$calling_script")" && pwd)/$(basename "$calling_script")"
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
local script_dir="$(dirname "$script_path")"
|
|
30
|
+
|
|
31
|
+
# Find PROJECT_ROOT by searching up for .claude/hooks directory
|
|
32
|
+
# This is resilient to non-standard installations
|
|
33
|
+
local current_dir="$script_dir"
|
|
34
|
+
local project_root=""
|
|
35
|
+
|
|
36
|
+
while [[ "$current_dir" != "/" ]]; do
|
|
37
|
+
if [[ -d "$current_dir/.claude/hooks" ]]; then
|
|
38
|
+
# Found .claude/hooks - PROJECT_ROOT is 2 levels up
|
|
39
|
+
project_root="$(dirname "$(dirname "$current_dir")")"
|
|
40
|
+
break
|
|
41
|
+
fi
|
|
42
|
+
current_dir="$(dirname "$current_dir")"
|
|
43
|
+
done
|
|
44
|
+
|
|
45
|
+
# Validate we found a valid project root
|
|
46
|
+
if [[ -z "$project_root" ]] || [[ ! -d "$project_root/.claude/hooks" ]]; then
|
|
47
|
+
echo "❌ ERROR: Could not locate AgentVibes installation" >&2
|
|
48
|
+
echo " Script: $script_path" >&2
|
|
49
|
+
return 1
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
# Export paths for use in sourcing script
|
|
53
|
+
export SCRIPT_PATH="$script_path"
|
|
54
|
+
export SCRIPT_DIR="$script_dir"
|
|
55
|
+
export HOOKS_DIR="$project_root/.claude/hooks"
|
|
56
|
+
export PROJECT_ROOT="$project_root"
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# Call the resolver with the calling script
|
|
60
|
+
_resolve_agentvibes_paths "${BASH_SOURCE[1]}"
|