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.
- 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 +4 -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-speak-enhanced.sh +0 -0
- package/.claude/hooks/bmad-speak.sh +6 -13
- 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 +50 -79
- 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 +31 -31
- 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 +164 -0
- package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -0
- package/.claude/hooks-windows/play-tts.ps1 +104 -513
- 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 +206 -525
- package/RELEASE_NOTES.md +1132 -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 +0 -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 +1451 -1578
- package/mcp-server/test_server.py +395 -395
- package/package.json +1 -3
- package/setup-windows.ps1 +815 -815
- package/src/installer.js +42 -5
- 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/background-music-enabled.txt +0 -1
- 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
package/bin/agentvibes.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Helper script to start Soprano TTS server if available
|
|
3
|
+
# Fails gracefully if Soprano is not installed
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
# Check if Soprano is installed via pipx
|
|
8
|
+
if ! command -v soprano &> /dev/null; then
|
|
9
|
+
# Soprano not in PATH, exit silently
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Check if server is already running
|
|
14
|
+
if curl -s -m 1 http://127.0.0.1:7860/openapi.json &> /dev/null; then
|
|
15
|
+
# Already running
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Try to start Soprano server
|
|
20
|
+
VENV_PATH="${HOME}/.local/share/pipx/venvs/soprano-tts"
|
|
21
|
+
|
|
22
|
+
if [ ! -d "$VENV_PATH" ]; then
|
|
23
|
+
# Soprano not installed via pipx, exit silently
|
|
24
|
+
exit 0
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# Start server in background
|
|
28
|
+
cd /tmp
|
|
29
|
+
nohup "${VENV_PATH}/bin/python" -m uvicorn soprano.server:app \
|
|
30
|
+
--host 127.0.0.1 \
|
|
31
|
+
--port 7860 \
|
|
32
|
+
> "${HOME}/.soprano-tts.log" 2>&1 &
|
|
33
|
+
|
|
34
|
+
# Wait a moment to see if it starts
|
|
35
|
+
sleep 2
|
|
36
|
+
|
|
37
|
+
# Check if it started successfully
|
|
38
|
+
if curl -s -m 1 http://127.0.0.1:7860/openapi.json &> /dev/null; then
|
|
39
|
+
exit 0
|
|
40
|
+
else
|
|
41
|
+
# Failed to start, but exit gracefully
|
|
42
|
+
exit 0
|
|
43
|
+
fi
|
package/bin/mcp-server.js
CHANGED
|
@@ -1,122 +1,122 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* AgentVibes MCP Server Launcher (Cross-Platform)
|
|
5
|
-
*
|
|
6
|
-
* This Node.js script replaces the bash wrapper to work on Windows, macOS, and Linux.
|
|
7
|
-
* It auto-installs Python dependencies and launches the Python MCP server.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { spawn } from 'child_process';
|
|
11
|
-
import { fileURLToPath } from 'url';
|
|
12
|
-
import { dirname, join } from 'path';
|
|
13
|
-
import { existsSync } from 'fs';
|
|
14
|
-
import { platform } from 'os';
|
|
15
|
-
|
|
16
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
-
const __dirname = dirname(__filename);
|
|
18
|
-
|
|
19
|
-
// Package root is one level up from bin/
|
|
20
|
-
const PACKAGE_ROOT = join(__dirname, '..');
|
|
21
|
-
const MCP_SERVER = join(PACKAGE_ROOT, 'mcp-server', 'server.py');
|
|
22
|
-
const INSTALL_DEPS = join(PACKAGE_ROOT, 'mcp-server', 'install-deps.js');
|
|
23
|
-
|
|
24
|
-
// Check if Python MCP server exists
|
|
25
|
-
if (!existsSync(MCP_SERVER)) {
|
|
26
|
-
console.error(`❌ Error: MCP server not found at ${MCP_SERVER}`);
|
|
27
|
-
process.exit(1);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Function to find available Python command
|
|
31
|
-
async function findPythonCommand() {
|
|
32
|
-
const commands = platform() === 'win32' ? ['python', 'py', 'python3'] : ['python3', 'python'];
|
|
33
|
-
|
|
34
|
-
for (const cmd of commands) {
|
|
35
|
-
try {
|
|
36
|
-
const checkCmd = platform() === 'win32' ? 'where' : 'which';
|
|
37
|
-
const proc = spawn(checkCmd, [cmd], { stdio: 'ignore' });
|
|
38
|
-
const exists = await new Promise((resolve) => {
|
|
39
|
-
proc.on('close', (code) => resolve(code === 0));
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
if (exists) {
|
|
43
|
-
return cmd;
|
|
44
|
-
}
|
|
45
|
-
} catch (err) {
|
|
46
|
-
// Try next command
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Function to check if Python module is installed
|
|
54
|
-
function checkPythonModule(pythonCmd, moduleName) {
|
|
55
|
-
return new Promise((resolve) => {
|
|
56
|
-
const proc = spawn(pythonCmd, ['-c', `import ${moduleName}`], { stdio: 'ignore' });
|
|
57
|
-
proc.on('close', (code) => resolve(code === 0));
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Main setup and launch function
|
|
62
|
-
async function main() {
|
|
63
|
-
// Silent mode - no output to avoid breaking MCP JSON protocol
|
|
64
|
-
|
|
65
|
-
// Find Python command
|
|
66
|
-
const pythonCmd = await findPythonCommand();
|
|
67
|
-
if (!pythonCmd) {
|
|
68
|
-
console.error('ERROR: Python 3 not found. Install from https://python.org and restart Claude Desktop.');
|
|
69
|
-
process.exit(1);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Check if MCP Python package is installed
|
|
73
|
-
const hasMCP = await checkPythonModule(pythonCmd, 'mcp');
|
|
74
|
-
if (!hasMCP) {
|
|
75
|
-
// Try to install MCP package directly
|
|
76
|
-
try {
|
|
77
|
-
const installCmd = `${pythonCmd} -m pip install --user mcp`;
|
|
78
|
-
const installProc = spawn(pythonCmd, ['-m', 'pip', 'install', '--user', 'mcp'], {
|
|
79
|
-
stdio: 'pipe',
|
|
80
|
-
shell: false
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
await new Promise((resolve, reject) => {
|
|
84
|
-
installProc.on('close', (code) => {
|
|
85
|
-
if (code === 0) {
|
|
86
|
-
resolve();
|
|
87
|
-
} else {
|
|
88
|
-
console.error('ERROR: Failed to install Python mcp package. Run: pip install mcp');
|
|
89
|
-
reject(new Error('Dependency installation failed'));
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
} catch (err) {
|
|
94
|
-
console.error('ERROR: Failed to install Python mcp package. Run: pip install mcp');
|
|
95
|
-
process.exit(1);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Launch the Python MCP server
|
|
100
|
-
const serverProc = spawn(pythonCmd, [MCP_SERVER], {
|
|
101
|
-
stdio: 'inherit',
|
|
102
|
-
env: process.env
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
serverProc.on('error', (err) => {
|
|
106
|
-
console.error('❌ Failed to start MCP server:', err.message);
|
|
107
|
-
process.exit(1);
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
serverProc.on('close', (code) => {
|
|
111
|
-
process.exit(code || 0);
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
// Handle termination signals
|
|
115
|
-
process.on('SIGINT', () => serverProc.kill('SIGINT'));
|
|
116
|
-
process.on('SIGTERM', () => serverProc.kill('SIGTERM'));
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
main().catch((err) => {
|
|
120
|
-
console.error('❌ Error:', err.message);
|
|
121
|
-
process.exit(1);
|
|
122
|
-
});
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AgentVibes MCP Server Launcher (Cross-Platform)
|
|
5
|
+
*
|
|
6
|
+
* This Node.js script replaces the bash wrapper to work on Windows, macOS, and Linux.
|
|
7
|
+
* It auto-installs Python dependencies and launches the Python MCP server.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { spawn } from 'child_process';
|
|
11
|
+
import { fileURLToPath } from 'url';
|
|
12
|
+
import { dirname, join } from 'path';
|
|
13
|
+
import { existsSync } from 'fs';
|
|
14
|
+
import { platform } from 'os';
|
|
15
|
+
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = dirname(__filename);
|
|
18
|
+
|
|
19
|
+
// Package root is one level up from bin/
|
|
20
|
+
const PACKAGE_ROOT = join(__dirname, '..');
|
|
21
|
+
const MCP_SERVER = join(PACKAGE_ROOT, 'mcp-server', 'server.py');
|
|
22
|
+
const INSTALL_DEPS = join(PACKAGE_ROOT, 'mcp-server', 'install-deps.js');
|
|
23
|
+
|
|
24
|
+
// Check if Python MCP server exists
|
|
25
|
+
if (!existsSync(MCP_SERVER)) {
|
|
26
|
+
console.error(`❌ Error: MCP server not found at ${MCP_SERVER}`);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Function to find available Python command
|
|
31
|
+
async function findPythonCommand() {
|
|
32
|
+
const commands = platform() === 'win32' ? ['python', 'py', 'python3'] : ['python3', 'python'];
|
|
33
|
+
|
|
34
|
+
for (const cmd of commands) {
|
|
35
|
+
try {
|
|
36
|
+
const checkCmd = platform() === 'win32' ? 'where' : 'which';
|
|
37
|
+
const proc = spawn(checkCmd, [cmd], { stdio: 'ignore' });
|
|
38
|
+
const exists = await new Promise((resolve) => {
|
|
39
|
+
proc.on('close', (code) => resolve(code === 0));
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
if (exists) {
|
|
43
|
+
return cmd;
|
|
44
|
+
}
|
|
45
|
+
} catch (err) {
|
|
46
|
+
// Try next command
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Function to check if Python module is installed
|
|
54
|
+
function checkPythonModule(pythonCmd, moduleName) {
|
|
55
|
+
return new Promise((resolve) => {
|
|
56
|
+
const proc = spawn(pythonCmd, ['-c', `import ${moduleName}`], { stdio: 'ignore' });
|
|
57
|
+
proc.on('close', (code) => resolve(code === 0));
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Main setup and launch function
|
|
62
|
+
async function main() {
|
|
63
|
+
// Silent mode - no output to avoid breaking MCP JSON protocol
|
|
64
|
+
|
|
65
|
+
// Find Python command
|
|
66
|
+
const pythonCmd = await findPythonCommand();
|
|
67
|
+
if (!pythonCmd) {
|
|
68
|
+
console.error('ERROR: Python 3 not found. Install from https://python.org and restart Claude Desktop.');
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Check if MCP Python package is installed
|
|
73
|
+
const hasMCP = await checkPythonModule(pythonCmd, 'mcp');
|
|
74
|
+
if (!hasMCP) {
|
|
75
|
+
// Try to install MCP package directly
|
|
76
|
+
try {
|
|
77
|
+
const installCmd = `${pythonCmd} -m pip install --user mcp`;
|
|
78
|
+
const installProc = spawn(pythonCmd, ['-m', 'pip', 'install', '--user', 'mcp'], {
|
|
79
|
+
stdio: 'pipe',
|
|
80
|
+
shell: false
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
await new Promise((resolve, reject) => {
|
|
84
|
+
installProc.on('close', (code) => {
|
|
85
|
+
if (code === 0) {
|
|
86
|
+
resolve();
|
|
87
|
+
} else {
|
|
88
|
+
console.error('ERROR: Failed to install Python mcp package. Run: pip install mcp');
|
|
89
|
+
reject(new Error('Dependency installation failed'));
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
} catch (err) {
|
|
94
|
+
console.error('ERROR: Failed to install Python mcp package. Run: pip install mcp');
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Launch the Python MCP server
|
|
100
|
+
const serverProc = spawn(pythonCmd, [MCP_SERVER], {
|
|
101
|
+
stdio: 'inherit',
|
|
102
|
+
env: process.env
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
serverProc.on('error', (err) => {
|
|
106
|
+
console.error('❌ Failed to start MCP server:', err.message);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
serverProc.on('close', (code) => {
|
|
111
|
+
process.exit(code || 0);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Handle termination signals
|
|
115
|
+
process.on('SIGINT', () => serverProc.kill('SIGINT'));
|
|
116
|
+
process.on('SIGTERM', () => serverProc.kill('SIGTERM'));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
main().catch((err) => {
|
|
120
|
+
console.error('❌ Error:', err.message);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
});
|
package/bin/mcp-server.sh
CHANGED
|
File without changes
|
package/bin/test-bmad-pr
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# AgentVibes BMAD PR Testing Command
|
|
4
|
-
# Quick command to test BMAD PRs with AgentVibes integration
|
|
5
|
-
#
|
|
6
|
-
# Usage:
|
|
7
|
-
# npx agentvibes test-bmad-pr [PR_NUMBER]
|
|
8
|
-
# npx agentvibes test-bmad-pr 934
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
set -e
|
|
12
|
-
|
|
13
|
-
# Colors
|
|
14
|
-
GREEN='\033[0;32m'
|
|
15
|
-
BLUE='\033[0;34m'
|
|
16
|
-
YELLOW='\033[1;33m'
|
|
17
|
-
CYAN='\033[0;36m'
|
|
18
|
-
NC='\033[0m' # No Color
|
|
19
|
-
|
|
20
|
-
# Default PR number
|
|
21
|
-
PR_NUMBER="${1:-934}"
|
|
22
|
-
|
|
23
|
-
clear
|
|
24
|
-
|
|
25
|
-
echo ""
|
|
26
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
27
|
-
echo -e "${CYAN}🎙️ AgentVibes BMAD PR Testing Tool${NC}"
|
|
28
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
29
|
-
echo ""
|
|
30
|
-
echo -e "${BLUE}Testing PR #${PR_NUMBER}${NC}"
|
|
31
|
-
echo ""
|
|
32
|
-
echo -e "${YELLOW}This will download and run the automated test script for${NC}"
|
|
33
|
-
echo -e "${YELLOW}BMAD's AgentVibes integration with multi-agent party mode.${NC}"
|
|
34
|
-
echo ""
|
|
35
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
36
|
-
echo ""
|
|
37
|
-
|
|
38
|
-
# Create temp directory for the script
|
|
39
|
-
TEMP_DIR=$(mktemp -d)
|
|
40
|
-
SCRIPT_PATH="$TEMP_DIR/test-bmad-pr.sh"
|
|
41
|
-
|
|
42
|
-
echo -e "${BLUE}📥 Downloading test script...${NC}"
|
|
43
|
-
|
|
44
|
-
# Download the test script from the PR branch
|
|
45
|
-
SCRIPT_URL="https://raw.githubusercontent.com/paulpreibisch/BMAD-METHOD/feature/agentvibes-tts-integration/test-bmad-pr.sh"
|
|
46
|
-
|
|
47
|
-
if curl -fsSL "$SCRIPT_URL" -o "$SCRIPT_PATH"; then
|
|
48
|
-
chmod +x "$SCRIPT_PATH"
|
|
49
|
-
echo -e "${GREEN}✓ Test script downloaded${NC}"
|
|
50
|
-
echo ""
|
|
51
|
-
|
|
52
|
-
# Run the test script
|
|
53
|
-
exec "$SCRIPT_PATH"
|
|
54
|
-
else
|
|
55
|
-
echo -e "${YELLOW}⚠ Could not download test script from PR branch${NC}"
|
|
56
|
-
echo ""
|
|
57
|
-
echo "Trying alternative: Official BMAD repository..."
|
|
58
|
-
echo ""
|
|
59
|
-
|
|
60
|
-
# Fallback to official repo
|
|
61
|
-
SCRIPT_URL="https://raw.githubusercontent.com/bmad-code-org/BMAD-METHOD/refs/pull/${PR_NUMBER}/merge/test-bmad-pr.sh"
|
|
62
|
-
|
|
63
|
-
if curl -fsSL "$SCRIPT_URL" -o "$SCRIPT_PATH"; then
|
|
64
|
-
chmod +x "$SCRIPT_PATH"
|
|
65
|
-
echo -e "${GREEN}✓ Test script downloaded${NC}"
|
|
66
|
-
echo ""
|
|
67
|
-
exec "$SCRIPT_PATH"
|
|
68
|
-
else
|
|
69
|
-
echo -e "${YELLOW}⚠ Could not download test script${NC}"
|
|
70
|
-
echo ""
|
|
71
|
-
echo "Please try manual testing:"
|
|
72
|
-
echo -e "${GREEN}git clone https://github.com/bmad-code-org/BMAD-METHOD.git${NC}"
|
|
73
|
-
echo -e "${GREEN}cd BMAD-METHOD${NC}"
|
|
74
|
-
echo -e "${GREEN}git fetch origin pull/${PR_NUMBER}/head:test-pr-${PR_NUMBER}${NC}"
|
|
75
|
-
echo -e "${GREEN}git checkout test-pr-${PR_NUMBER}${NC}"
|
|
76
|
-
echo ""
|
|
77
|
-
exit 1
|
|
78
|
-
fi
|
|
79
|
-
fi
|
|
2
|
+
#
|
|
3
|
+
# AgentVibes BMAD PR Testing Command
|
|
4
|
+
# Quick command to test BMAD PRs with AgentVibes integration
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# npx agentvibes test-bmad-pr [PR_NUMBER]
|
|
8
|
+
# npx agentvibes test-bmad-pr 934
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
set -e
|
|
12
|
+
|
|
13
|
+
# Colors
|
|
14
|
+
GREEN='\033[0;32m'
|
|
15
|
+
BLUE='\033[0;34m'
|
|
16
|
+
YELLOW='\033[1;33m'
|
|
17
|
+
CYAN='\033[0;36m'
|
|
18
|
+
NC='\033[0m' # No Color
|
|
19
|
+
|
|
20
|
+
# Default PR number
|
|
21
|
+
PR_NUMBER="${1:-934}"
|
|
22
|
+
|
|
23
|
+
clear
|
|
24
|
+
|
|
25
|
+
echo ""
|
|
26
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
27
|
+
echo -e "${CYAN}🎙️ AgentVibes BMAD PR Testing Tool${NC}"
|
|
28
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
29
|
+
echo ""
|
|
30
|
+
echo -e "${BLUE}Testing PR #${PR_NUMBER}${NC}"
|
|
31
|
+
echo ""
|
|
32
|
+
echo -e "${YELLOW}This will download and run the automated test script for${NC}"
|
|
33
|
+
echo -e "${YELLOW}BMAD's AgentVibes integration with multi-agent party mode.${NC}"
|
|
34
|
+
echo ""
|
|
35
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
36
|
+
echo ""
|
|
37
|
+
|
|
38
|
+
# Create temp directory for the script
|
|
39
|
+
TEMP_DIR=$(mktemp -d)
|
|
40
|
+
SCRIPT_PATH="$TEMP_DIR/test-bmad-pr.sh"
|
|
41
|
+
|
|
42
|
+
echo -e "${BLUE}📥 Downloading test script...${NC}"
|
|
43
|
+
|
|
44
|
+
# Download the test script from the PR branch
|
|
45
|
+
SCRIPT_URL="https://raw.githubusercontent.com/paulpreibisch/BMAD-METHOD/feature/agentvibes-tts-integration/test-bmad-pr.sh"
|
|
46
|
+
|
|
47
|
+
if curl -fsSL "$SCRIPT_URL" -o "$SCRIPT_PATH"; then
|
|
48
|
+
chmod +x "$SCRIPT_PATH"
|
|
49
|
+
echo -e "${GREEN}✓ Test script downloaded${NC}"
|
|
50
|
+
echo ""
|
|
51
|
+
|
|
52
|
+
# Run the test script
|
|
53
|
+
exec "$SCRIPT_PATH"
|
|
54
|
+
else
|
|
55
|
+
echo -e "${YELLOW}⚠ Could not download test script from PR branch${NC}"
|
|
56
|
+
echo ""
|
|
57
|
+
echo "Trying alternative: Official BMAD repository..."
|
|
58
|
+
echo ""
|
|
59
|
+
|
|
60
|
+
# Fallback to official repo
|
|
61
|
+
SCRIPT_URL="https://raw.githubusercontent.com/bmad-code-org/BMAD-METHOD/refs/pull/${PR_NUMBER}/merge/test-bmad-pr.sh"
|
|
62
|
+
|
|
63
|
+
if curl -fsSL "$SCRIPT_URL" -o "$SCRIPT_PATH"; then
|
|
64
|
+
chmod +x "$SCRIPT_PATH"
|
|
65
|
+
echo -e "${GREEN}✓ Test script downloaded${NC}"
|
|
66
|
+
echo ""
|
|
67
|
+
exec "$SCRIPT_PATH"
|
|
68
|
+
else
|
|
69
|
+
echo -e "${YELLOW}⚠ Could not download test script${NC}"
|
|
70
|
+
echo ""
|
|
71
|
+
echo "Please try manual testing:"
|
|
72
|
+
echo -e "${GREEN}git clone https://github.com/bmad-code-org/BMAD-METHOD.git${NC}"
|
|
73
|
+
echo -e "${GREEN}cd BMAD-METHOD${NC}"
|
|
74
|
+
echo -e "${GREEN}git fetch origin pull/${PR_NUMBER}/head:test-pr-${PR_NUMBER}${NC}"
|
|
75
|
+
echo -e "${GREEN}git checkout test-pr-${PR_NUMBER}${NC}"
|
|
76
|
+
echo ""
|
|
77
|
+
exit 1
|
|
78
|
+
fi
|
|
79
|
+
fi
|