agentvibes 5.7.6 → 5.9.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/config.json +12 -5
- package/.agentvibes/install-manifest.json +188 -300
- package/.claude/audio/tracks/celestial_velvet.mp3 +0 -0
- 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 +3 -2
- package/.claude/config/audio-effects.cfg.sample +52 -52
- package/.claude/config/background-music-enabled.txt +1 -0
- package/.claude/config/background-music-position.txt +1 -1
- package/.claude/config/language.txt +1 -0
- package/.claude/docs/TERMUX_SETUP.md +408 -408
- package/.claude/hooks/audio-cache-utils.sh +0 -0
- package/.claude/hooks/audio-processor.sh +0 -0
- package/.claude/hooks/background-music-manager.sh +0 -0
- package/.claude/hooks/bmad-party-speak.sh +27 -6
- package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
- package/.claude/hooks/bmad-speak.sh +0 -0
- 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 +0 -0
- package/.claude/hooks/clawdbot-receiver.sh +0 -0
- 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/path-resolver.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 +0 -0
- package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
- package/.claude/hooks/piper-voice-manager.sh +0 -0
- package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +0 -0
- package/.claude/hooks/play-tts-agentvibes-receiver.sh +1 -0
- package/.claude/hooks/play-tts-enhanced.sh +0 -0
- package/.claude/hooks/play-tts-macos.sh +0 -0
- package/.claude/hooks/play-tts-piper.sh +0 -0
- package/.claude/hooks/play-tts-soprano.sh +0 -0
- package/.claude/hooks/play-tts-ssh-remote.sh +11 -8
- package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
- package/.claude/hooks/play-tts-windows-receiver.sh +0 -0
- package/.claude/hooks/play-tts.sh +0 -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 +0 -0
- package/.claude/hooks/soprano-gradio-synth.py +139 -139
- package/.claude/hooks/speed-manager.sh +0 -0
- package/.claude/hooks/stop-tts.sh +0 -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 +0 -0
- package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
- package/.claude/hooks-windows/audio-cache-utils.ps1.user.bak +119 -0
- package/.claude/hooks-windows/bmad-speak.ps1 +9 -38
- package/.claude/hooks-windows/play-tts-soprano.ps1 +13 -2
- package/.claude/hooks-windows/soprano-gradio-synth.py +153 -153
- package/.claude/hooks-windows/soprano-gradio-synth.py.user.bak +153 -0
- package/.claude/piper-voices-dir.txt +1 -1
- package/.claude/verbosity.txt +1 -1
- package/.clawdbot/README.md +105 -105
- package/.mcp.json +5 -14
- package/README.md +43 -2
- package/RELEASE_NOTES.md +110 -0
- package/WINDOWS-SETUP.md +208 -208
- package/bin/agent-vibes +39 -39
- package/bin/agentvibes-voice-browser.js +0 -0
- package/bin/agentvibes.js +0 -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 +0 -0
- 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 +0 -0
- package/mcp-server/server.py +1797 -1797
- package/mcp-server/test_server.py +0 -0
- package/package.json +1 -1
- package/src/cli/list-personalities.js +110 -110
- package/src/cli/list-voices.js +114 -114
- package/src/commands/bmad-voices.js +394 -394
- package/src/commands/install-mcp.js +476 -476
- package/src/console/audio-env.js +4 -1
- package/src/console/brand-colors.js +13 -13
- package/src/console/constants/personalities.js +44 -44
- package/src/console/tabs/agents-tab.js +85 -62
- package/src/console/tabs/help-tab.js +314 -314
- package/src/console/tabs/music-tab.js +3 -0
- package/src/console/tabs/readme-tab.js +272 -272
- package/src/console/tabs/setup-tab.js +285 -41
- package/src/console/tabs/voices-tab.js +14 -2
- package/src/console/widgets/destroy-list.js +25 -25
- package/src/console/widgets/notice.js +55 -55
- package/src/i18n/de.js +202 -202
- package/src/i18n/es.js +202 -202
- package/src/i18n/fr.js +202 -202
- package/src/i18n/hi.js +202 -202
- package/src/i18n/ja.js +202 -202
- package/src/i18n/ko.js +202 -202
- package/src/i18n/pt.js +202 -202
- package/src/i18n/strings.js +54 -54
- package/src/i18n/zh-CN.js +202 -202
- package/src/installer/language-screen.js +31 -31
- package/src/installer/music-file-input.js +304 -304
- package/src/installer.js +0 -0
- package/src/services/config-service.js +264 -264
- package/src/services/language-service.js +47 -47
- package/src/services/provider-service.js +143 -143
- package/src/utils/audio-duration-validator.js +298 -298
- package/src/utils/audio-format-validator.js +277 -277
- package/src/utils/dependency-checker.js +469 -469
- package/src/utils/file-ownership-verifier.js +358 -358
- package/src/utils/list-formatter.js +194 -194
- package/src/utils/music-file-validator.js +285 -285
- package/src/utils/preview-list-prompt.js +136 -136
- package/src/utils/secure-music-storage.js +412 -412
- package/templates/agentvibes-receiver.sh +231 -231
- package/templates/audio/welcome-music.mp3 +0 -0
- package/.claude/hooks/bmad-party-manager.sh +0 -225
- package/.claude/hooks/stop.sh +0 -38
package/bin/agent-vibes
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* AgentVibes - Beautiful ElevenLabs TTS voice commands for Claude Code
|
|
5
|
-
* This file ensures proper execution when run via npx
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { execFileSync } from 'node:child_process';
|
|
9
|
-
import path from 'node:path';
|
|
10
|
-
import fs from 'node:fs';
|
|
11
|
-
import { fileURLToPath } from 'node:url';
|
|
12
|
-
|
|
13
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
-
const __dirname = path.dirname(__filename);
|
|
15
|
-
|
|
16
|
-
// Check if we're running in an npx temporary directory
|
|
17
|
-
const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm');
|
|
18
|
-
|
|
19
|
-
// Get CLI arguments
|
|
20
|
-
const arguments_ = process.argv.slice(2);
|
|
21
|
-
|
|
22
|
-
// Route through the TUI console (agentvibes.js) which handles install/config/etc
|
|
23
|
-
const installerPath = path.join(__dirname, 'agentvibes.js');
|
|
24
|
-
|
|
25
|
-
if (!fs.existsSync(installerPath)) {
|
|
26
|
-
console.error('Error: Could not find installer.js at', installerPath);
|
|
27
|
-
console.error('Current directory:', __dirname);
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
try {
|
|
32
|
-
// Security: Use execFileSync with array args to prevent command injection
|
|
33
|
-
// Arguments are passed as array elements, not string interpolation
|
|
34
|
-
execFileSync('node', [installerPath, ...arguments_], {
|
|
35
|
-
stdio: 'inherit',
|
|
36
|
-
cwd: path.dirname(__dirname),
|
|
37
|
-
});
|
|
38
|
-
} catch (error) {
|
|
39
|
-
process.exit(error.status || 1);
|
|
40
|
-
}
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AgentVibes - Beautiful ElevenLabs TTS voice commands for Claude Code
|
|
5
|
+
* This file ensures proper execution when run via npx
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { execFileSync } from 'node:child_process';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
12
|
+
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = path.dirname(__filename);
|
|
15
|
+
|
|
16
|
+
// Check if we're running in an npx temporary directory
|
|
17
|
+
const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm');
|
|
18
|
+
|
|
19
|
+
// Get CLI arguments
|
|
20
|
+
const arguments_ = process.argv.slice(2);
|
|
21
|
+
|
|
22
|
+
// Route through the TUI console (agentvibes.js) which handles install/config/etc
|
|
23
|
+
const installerPath = path.join(__dirname, 'agentvibes.js');
|
|
24
|
+
|
|
25
|
+
if (!fs.existsSync(installerPath)) {
|
|
26
|
+
console.error('Error: Could not find installer.js at', installerPath);
|
|
27
|
+
console.error('Current directory:', __dirname);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
// Security: Use execFileSync with array args to prevent command injection
|
|
33
|
+
// Arguments are passed as array elements, not string interpolation
|
|
34
|
+
execFileSync('node', [installerPath, ...arguments_], {
|
|
35
|
+
stdio: 'inherit',
|
|
36
|
+
cwd: path.dirname(__dirname),
|
|
37
|
+
});
|
|
38
|
+
} catch (error) {
|
|
39
|
+
process.exit(error.status || 1);
|
|
40
|
+
}
|
|
File without changes
|
package/bin/agentvibes.js
CHANGED
|
File without changes
|
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
|