agentvibes 5.6.7 → 5.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/.agentvibes/LITE-MODE.md +236 -0
  2. package/.agentvibes/README.md +136 -0
  3. package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +141 -0
  4. package/.agentvibes/backups/agents/analyst_20260204_144958.md +78 -0
  5. package/.agentvibes/backups/agents/architect_20260204_144958.md +72 -0
  6. package/.agentvibes/backups/agents/dev_20260204_144958.md +74 -0
  7. package/.agentvibes/backups/agents/pm_20260204_144958.md +72 -0
  8. package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +64 -0
  9. package/.agentvibes/backups/agents/sm_20260204_144958.md +87 -0
  10. package/.agentvibes/backups/agents/tea_20260204_144958.md +79 -0
  11. package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +82 -0
  12. package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +80 -0
  13. package/.agentvibes/config/README-personality-defaults.md +162 -0
  14. package/.agentvibes/config/agentvibes.json +1 -0
  15. package/.agentvibes/config/mode.txt +1 -0
  16. package/.agentvibes/config/personality-voice-defaults.default.json +21 -0
  17. package/.agentvibes/config/save-audio.txt +1 -0
  18. package/.agentvibes/config/voice-metadata.json +160 -0
  19. package/.agentvibes/config.json +38 -1
  20. package/.agentvibes/hooks/help.sh +191 -0
  21. package/.agentvibes/hooks/post-tool-use-lite.sh +111 -0
  22. package/.agentvibes/hooks/save-audio-manager.sh +162 -0
  23. package/.agentvibes/hooks/session-start-full-optimized.sh +102 -0
  24. package/.agentvibes/hooks/session-start-full.sh +142 -0
  25. package/.agentvibes/hooks/session-start-lite-v2.sh +34 -0
  26. package/.agentvibes/hooks/session-start-lite.sh +29 -0
  27. package/.agentvibes/hooks/stop-lite.sh +115 -0
  28. package/.agentvibes/hooks/switch-mode.sh +215 -0
  29. package/.agentvibes/output-styles/audio-summary.md +30 -0
  30. package/.claude/audio/voice-samples/piper/alan.wav +0 -0
  31. package/.claude/audio/voice-samples/piper/amy.wav +0 -0
  32. package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
  33. package/.claude/audio/voice-samples/piper/joe.wav +0 -0
  34. package/.claude/audio/voice-samples/piper/john.wav +0 -0
  35. package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
  36. package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
  37. package/.claude/audio/voice-samples/piper/linda.wav +0 -0
  38. package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
  39. package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
  40. package/.claude/commands/agent-vibes/provider.md +0 -0
  41. package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
  42. package/.claude/commands/agent-vibes-rdp.md +24 -24
  43. package/.claude/config/audio-effects.cfg +6 -1
  44. package/.claude/config/background-music-position.txt +8 -6
  45. package/.claude/config/reverb-level.txt +0 -0
  46. package/.claude/docs/TERMUX_SETUP.md +408 -408
  47. package/.claude/github-star-reminder.txt +1 -1
  48. package/.claude/hooks/audio-cache-utils.sh +0 -0
  49. package/.claude/hooks/audio-processor.sh +0 -0
  50. package/.claude/hooks/background-music-manager.sh +0 -0
  51. package/.claude/hooks/bmad-party-manager.sh +225 -0
  52. package/.claude/hooks/bmad-party-speak.sh +0 -0
  53. package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
  54. package/.claude/hooks/bmad-speak.sh +0 -0
  55. package/.claude/hooks/bmad-tts-injector.sh +0 -0
  56. package/.claude/hooks/bmad-voice-manager.sh +0 -0
  57. package/.claude/hooks/clawdbot-receiver-SECURE.sh +0 -0
  58. package/.claude/hooks/clawdbot-receiver.sh +0 -0
  59. package/.claude/hooks/clean-audio-cache.sh +0 -0
  60. package/.claude/hooks/cleanup-cache.sh +0 -0
  61. package/.claude/hooks/configure-rdp-mode.sh +0 -0
  62. package/.claude/hooks/download-extra-voices.sh +0 -0
  63. package/.claude/hooks/effects-manager.sh +0 -0
  64. package/.claude/hooks/github-star-reminder.sh +0 -0
  65. package/.claude/hooks/language-manager.sh +0 -0
  66. package/.claude/hooks/learn-manager.sh +0 -0
  67. package/.claude/hooks/macos-voice-manager.sh +0 -0
  68. package/.claude/hooks/migrate-background-music.sh +0 -0
  69. package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
  70. package/.claude/hooks/optimize-background-music.sh +0 -0
  71. package/.claude/hooks/path-resolver.sh +0 -0
  72. package/.claude/hooks/personality-manager.sh +0 -0
  73. package/.claude/hooks/piper-download-voices.sh +0 -0
  74. package/.claude/hooks/piper-installer.sh +0 -0
  75. package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
  76. package/.claude/hooks/piper-voice-manager.sh +0 -0
  77. package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +0 -0
  78. package/.claude/hooks/play-tts-enhanced.sh +0 -0
  79. package/.claude/hooks/play-tts-macos.sh +0 -0
  80. package/.claude/hooks/play-tts-piper.sh +40 -2
  81. package/.claude/hooks/play-tts-soprano.sh +0 -0
  82. package/.claude/hooks/play-tts-ssh-remote.sh +0 -0
  83. package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
  84. package/.claude/hooks/play-tts-windows-receiver.sh +0 -0
  85. package/.claude/hooks/play-tts.sh +13 -0
  86. package/.claude/hooks/post-response.sh +41 -0
  87. package/.claude/hooks/prepare-release.sh +0 -0
  88. package/.claude/hooks/provider-commands.sh +0 -0
  89. package/.claude/hooks/provider-manager.sh +0 -0
  90. package/.claude/hooks/replay-target-audio.sh +0 -0
  91. package/.claude/hooks/sentiment-manager.sh +0 -0
  92. package/.claude/hooks/session-start-tts.sh +48 -13
  93. package/.claude/hooks/soprano-gradio-synth.py +0 -0
  94. package/.claude/hooks/speed-manager.sh +0 -0
  95. package/.claude/hooks/stop-tts.sh +0 -0
  96. package/.claude/hooks/stop.sh +63 -0
  97. package/.claude/hooks/termux-installer.sh +0 -0
  98. package/.claude/hooks/translate-manager.sh +0 -0
  99. package/.claude/hooks/translator.py +0 -0
  100. package/.claude/hooks/tts-queue-worker.sh +0 -0
  101. package/.claude/hooks/tts-queue.sh +0 -0
  102. package/.claude/hooks/verbosity-manager.sh +0 -0
  103. package/.claude/hooks/voice-manager.sh +0 -0
  104. package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
  105. package/.claude/hooks-windows/play-tts-piper.ps1 +26 -1
  106. package/.claude/hooks-windows/play-tts.ps1 +25 -1
  107. package/.claude/hooks-windows/session-start-tts.ps1 +28 -9
  108. package/.claude/piper-voices-dir.txt +1 -0
  109. package/.claude/settings.json +2 -2
  110. package/.clawdbot/README.md +105 -105
  111. package/.mcp.json +32 -3
  112. package/CLAUDE.md +9 -0
  113. package/README.md +21 -3
  114. package/RELEASE_NOTES.md +61 -0
  115. package/WINDOWS-SETUP.md +208 -208
  116. package/bin/agent-vibes +0 -0
  117. package/bin/agentvibes-voice-browser.js +59 -4
  118. package/bin/agentvibes.js +0 -0
  119. package/bin/ensure-soprano-running.sh +43 -0
  120. package/bin/mcp-server.js +121 -121
  121. package/bin/mcp-server.sh +0 -0
  122. package/bin/test-bmad-pr +78 -78
  123. package/mcp-server/QUICK_START.md +203 -203
  124. package/mcp-server/README.md +345 -345
  125. package/mcp-server/WINDOWS_SETUP.md +260 -260
  126. package/mcp-server/docs/troubleshooting-audio.md +313 -313
  127. package/mcp-server/examples/claude_desktop_config.json +11 -11
  128. package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
  129. package/mcp-server/examples/custom_instructions.md +169 -169
  130. package/mcp-server/install-deps.js +177 -130
  131. package/mcp-server/server.py +1797 -1787
  132. package/mcp-server/test_server.py +0 -0
  133. package/package.json +1 -1
  134. package/src/console/app.js +6 -0
  135. package/src/console/tabs/music-tab.js +18 -2
  136. package/src/console/widgets/format-utils.js +11 -2
  137. package/src/installer.js +38 -37
  138. package/src/services/llm-provider-service.js +28 -9
  139. package/src/utils/voice-names.js +2 -0
  140. package/templates/agentvibes-receiver.sh +0 -0
  141. package/templates/audio/welcome-music.mp3 +0 -0
  142. package/.claude/hooks/play-tts-agentvibes-receiver.sh +0 -1
@@ -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