-
-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·507 lines (461 loc) · 18.7 KB
/
Copy pathsetup.sh
File metadata and controls
executable file
·507 lines (461 loc) · 18.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
#!/bin/bash
# Setup script for Vibe Coder MCP Server (Production Ready v0.3.5)
set -e # Exit immediately if a command exits with a non-zero status.
# Color codes for better output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Function to print colored output
print_status() {
echo -e "${GREEN}✓${NC} $1"
}
print_warning() {
echo -e "${YELLOW}⚠${NC} $1"
}
print_error() {
echo -e "${RED}✗${NC} $1"
}
print_info() {
echo -e "${BLUE}ℹ${NC} $1"
}
echo "Setting up Vibe Coder MCP Server v0.3.5..."
echo "=================================================="
echo "Production-ready MCP server with complete agent integration"
echo "Multi-transport support • Real-time notifications • Dynamic port allocation"
echo "Agent coordination • Task management • Code analysis • Research • Context curation"
echo "=================================================="
# Check if npm is installed
echo "Checking if npm is installed..."
if ! command -v npm &> /dev/null; then
print_error "npm is not installed. Please install Node.js and npm first."
echo "Visit: https://nodejs.org/"
exit 1
fi
print_status "npm is installed."
# Check Node.js version (require v20+)
echo "Checking Node.js version..."
if ! command -v node &> /dev/null; then
print_error "Node.js is not installed. Please install Node.js first."
echo "Visit: https://nodejs.org/"
exit 1
fi
node_version=$(node -v | cut -d "v" -f 2 | cut -d "." -f 1)
if [ "$node_version" -lt 20 ]; then
print_error "Node.js v20+ is required (found v$(node -v)). Please upgrade Node.js."
echo "Visit: https://nodejs.org/"
exit 1
fi
print_status "Node.js version check passed (found v$(node -v))."
# Check disk space
echo "Checking available disk space..."
if command -v df &> /dev/null; then
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS uses different df syntax
available_space=$(df -m . | awk 'NR==2 {print $4}')
else
# Linux
available_space=$(df -BM . | awk 'NR==2 {print $4}' | sed 's/M//')
fi
if [ -n "$available_space" ] && [ "$available_space" -lt 500 ]; then
print_warning "Less than 500MB free disk space available."
print_warning "Installation may fail. Please free up disk space."
fi
else
print_warning "Cannot check disk space. Ensure you have at least 500MB free."
fi
# Check memory availability
echo "Checking system memory..."
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS
total_memory=$(sysctl -n hw.memsize | awk '{print int($1/1024/1024)}')
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
# Linux
total_memory=$(grep MemTotal /proc/meminfo | awk '{print int($2/1024)}')
else
total_memory=0
fi
if [ "$total_memory" -gt 0 ] && [ "$total_memory" -lt 4096 ]; then
print_warning "Less than 4GB RAM detected (${total_memory}MB)."
print_warning "Large projects may experience performance issues."
fi
# Check network connectivity
echo "Checking network connectivity..."
if ! ping -c 1 -W 1 registry.npmjs.org &> /dev/null && ! curl -s --head registry.npmjs.org &> /dev/null; then
print_warning "Cannot reach npm registry. Check internet connection."
print_warning "Installation may fail without network access."
fi
# Check git configuration
echo "Checking git configuration..."
if ! git config --get user.name &> /dev/null; then
print_warning "Git user.name not configured. Consider running:"
echo " git config --global user.name \"Your Name\""
fi
if ! git config --get user.email &> /dev/null; then
print_warning "Git user.email not configured. Consider running:"
echo " git config --global user.email \"your.email@example.com\""
fi
# Check npm cache and clean if needed
echo "Checking npm cache health..."
if ! npm cache verify &> /dev/null; then
print_warning "npm cache issues detected. Cleaning cache..."
npm cache clean --force
fi
# Install dependencies
echo "Installing dependencies..."
if ! npm install; then
print_error "npm install failed. Check npm logs above."
echo "Troubleshooting steps:"
echo " 1. Try: npm cache clean --force && npm install"
echo " 2. Delete node_modules and package-lock.json, then run npm install"
echo " 3. Check your internet connection"
echo " 4. Ensure you have sufficient disk space"
exit 1
fi
print_status "Dependencies installed successfully."
# Verify critical dependencies
echo "Verifying critical dependencies..."
missing_deps=()
# Core MCP and TypeScript dependencies
if ! npm list @modelcontextprotocol/sdk &> /dev/null; then
missing_deps+=("@modelcontextprotocol/sdk")
fi
if ! npm list typescript &> /dev/null; then
missing_deps+=("typescript")
fi
if ! npm list dotenv &> /dev/null; then
missing_deps+=("dotenv")
fi
if ! npm list vitest &> /dev/null; then
missing_deps+=("vitest")
fi
if ! npm list zod &> /dev/null; then
missing_deps+=("zod")
fi
if ! npm list yaml &> /dev/null; then
missing_deps+=("yaml")
fi
# Runtime server dependencies
if ! npm list express &> /dev/null; then
missing_deps+=("express")
fi
if ! npm list cors &> /dev/null; then
missing_deps+=("cors")
fi
if ! npm list axios &> /dev/null; then
missing_deps+=("axios")
fi
if ! npm list ws &> /dev/null; then
missing_deps+=("ws")
fi
# File system and utilities
if ! npm list fs-extra &> /dev/null; then
missing_deps+=("fs-extra")
fi
if ! npm list uuid &> /dev/null; then
missing_deps+=("uuid")
fi
if ! npm list pino &> /dev/null; then
missing_deps+=("pino")
fi
# Code analysis dependencies
if ! npm list web-tree-sitter &> /dev/null; then
missing_deps+=("web-tree-sitter")
fi
if ! npm list dependency-cruiser &> /dev/null; then
missing_deps+=("dependency-cruiser")
fi
if [ ${#missing_deps[@]} -gt 0 ]; then
print_warning "Some critical dependencies are missing:"
for dep in "${missing_deps[@]}"; do
echo " - $dep"
done
print_warning "This may cause issues. Consider running: npm install"
else
print_status "All critical dependencies verified."
fi
# Create required VibeCoderOutput directories (for tools that save files)
echo "Creating required VibeCoderOutput directories..."
mkdir -p VibeCoderOutput # Ensure base dir exists
# Core tool output directories (based on actual tools in src/tools/):
declare -a tool_dirs=(
"research-manager"
"rules-generator"
"prd-generator"
"user-stories-generator"
"task-list-generator"
"fullstack-starter-kit-generator"
"workflow-runner"
"code-map-generator"
"vibe-task-manager"
"context-curator"
"job-result-retriever"
"agent-registry"
"agent-tasks"
"agent-response"
"generated_task_lists"
)
for dir in "${tool_dirs[@]}"; do
if mkdir -p "VibeCoderOutput/$dir"; then
print_info "Created directory: VibeCoderOutput/$dir"
else
print_warning "Failed to create directory: VibeCoderOutput/$dir"
fi
done
print_status "Output directories created."
# Build TypeScript
echo "Building TypeScript project..."
if ! npm run build; then
print_error "TypeScript build failed (npm run build). Check compiler output above."
echo "Common fixes:"
echo " - Check for TypeScript syntax errors with: npm run lint"
echo " - Ensure all dependencies are installed"
echo " - Check tsconfig.json for configuration issues"
echo " - Try cleaning and rebuilding: rm -rf build && npm run build"
exit 1
fi
print_status "TypeScript project built successfully."
# Verify build output
echo "Verifying build output..."
required_files=(
"build/index.js"
"build/server.js"
"build/logger.js"
)
missing_files=()
for file in "${required_files[@]}"; do
if [ ! -f "$file" ]; then
missing_files+=("$file")
fi
done
if [ ${#missing_files[@]} -gt 0 ]; then
print_error "Build verification failed. Missing files:"
for file in "${missing_files[@]}"; do
echo " - $file"
done
print_error "Build may have failed silently. Check TypeScript compilation."
exit 1
fi
print_status "Build verification complete."
# Ensure the built file is executable
echo "Setting executable permissions for build files..."
chmod +x build/index.js
if [ -f "build/server.js" ]; then
chmod +x build/server.js
fi
print_status "Executable permissions set."
# Verify configuration files
echo "Verifying configuration files..."
config_files=(
"llm_config.json:LLM model mappings"
"mcp-config.json:MCP tool configurations"
"workflows.json:Workflow definitions"
"tsconfig.json:TypeScript configuration"
"package.json:Project dependencies"
)
missing_configs=()
for config_entry in "${config_files[@]}"; do
file="${config_entry%%:*}"
description="${config_entry##*:}"
if [ ! -f "$file" ]; then
missing_configs+=("$file ($description)")
else
print_info "Found: $file"
fi
done
if [ ${#missing_configs[@]} -gt 0 ]; then
print_error "Missing required configuration files:"
for config in "${missing_configs[@]}"; do
echo " - $config"
done
exit 1
fi
print_status "Configuration files verified."
# Check if .env file exists, copy from .env.example if not
echo "Checking for .env file..."
if [ ! -f .env ]; then
if [ -f .env.example ]; then
echo "Creating .env file from template (.env.example)..."
cp .env.example .env
print_warning ".env file created from template."
print_warning "You MUST edit .env to add your OPENROUTER_API_KEY before starting the server."
else
print_error ".env.example template is missing. Cannot create .env file."
echo "Please create .env manually with your OPENROUTER_API_KEY."
exit 1
fi
else
print_status ".env file already exists."
# Validate .env file has required variables
if ! grep -q "OPENROUTER_API_KEY" .env; then
print_warning ".env file exists but may be missing OPENROUTER_API_KEY."
print_warning "Please ensure .env contains all required environment variables."
fi
fi
# Run post-setup validation
echo "Running post-setup validation..."
# Test TypeScript compilation
if npm run build &> /dev/null; then
print_status "TypeScript compilation test passed."
else
print_warning "TypeScript compilation test failed. There may be build issues."
fi
# Test basic npm scripts
if npm run lint &> /dev/null; then
print_status "Linting test passed."
else
print_warning "Linting test failed. There may be code quality issues."
fi
# Check if server can start (basic syntax check)
if timeout 5s node build/index.js --help &> /dev/null; then
print_status "Server startup test passed."
else
print_warning "Server startup test failed. Check for runtime issues."
fi
# Test CLI interface
echo "Testing CLI interface..."
if timeout 5s node build/unified-cli.js --help &> /dev/null; then
print_status "CLI interface test passed."
else
print_warning "CLI interface test failed. Check for CLI runtime issues."
fi
# Test setup wizard (dry run)
if timeout 5s node -e "import('./build/setup-wizard.js').then(m => console.log('Setup wizard loaded'))" &> /dev/null; then
print_status "Setup wizard validation passed."
else
print_warning "Setup wizard validation failed. Check for setup wizard issues."
fi
# Validate directory structure
echo "Validating directory structure..."
if [ -d "VibeCoderOutput" ] && [ -d "build" ] && [ -d "src" ]; then
print_status "Directory structure validation passed."
else
print_warning "Directory structure validation failed."
fi
echo ""
print_status "Setup completed successfully!"
echo "=================================================="
echo "Vibe Coder MCP Server v2.8 (Production Ready) is now set up with complete agent integration:"
echo ""
echo "📋 PLANNING & DOCUMENTATION TOOLS:"
echo " - Research Manager (research-manager) - AI-powered research with Perplexity Sonar"
echo " - PRD Generator (generate-prd) - Comprehensive Product Requirements Documents"
echo " - User Stories Generator (generate-user-stories) - Agile user stories with acceptance criteria"
echo " - Task List Generator (generate-task-list) - Development task breakdown with dependencies"
echo " - Rules Generator (generate-rules) - Development guidelines and coding standards"
echo ""
echo "🏗️ PROJECT SCAFFOLDING & CODE ANALYSIS:"
echo " - Fullstack Starter Kit Generator (generate-fullstack-starter-kit) - Dynamic LLM-generated project scaffolding"
echo " - Code Map Generator (map-codebase) - Semantic codebase analysis (30+ languages, 95% token reduction)"
echo " - Context Curator (curate-context) - Intelligent context curation with chunked processing and relevance scoring"
echo ""
echo "🤖 TASK MANAGEMENT & AUTOMATION:"
echo " - Vibe Task Manager (vibe-task-manager) - Production-ready AI-agent-native task management with RDD methodology"
echo " * Natural language processing with 6 core intents and multi-strategy recognition"
echo " * Artifact parsing for PRD and task list integration from other Vibe Coder tools"
echo " * Session persistence and orchestration workflows with comprehensive CLI"
echo " * Multi-agent coordination with capability mapping and real-time status synchronization"
echo " * 99.9% test success rate with zero mock code policy"
echo " - Workflow Runner (run-workflow) - Predefined development workflow execution"
echo " - Job Result Retriever (get-job-result) - Asynchronous task result management with real-time polling"
echo ""
echo "🔗 AGENT COORDINATION & COMMUNICATION:"
echo " - Agent Registry (register-agent) - Register AI agents for task coordination"
echo " - Agent Tasks (get-agent-tasks) - Retrieve assigned tasks for agents"
echo " - Agent Response (submit-task-response) - Submit completed task results"
echo " - Process Request (process-request) - Unified request processing with semantic routing"
echo ""
echo "🔧 ADVANCED FEATURES:"
echo " - Complete Agent Task Integration with unified payload format and real-time status synchronization"
echo " - Multi-Transport Support with dynamic port allocation and conflict resolution"
echo " - SSE Task Notifications with real-time assignment and completion events"
echo " - Advanced Error Recovery with automatic retry, escalation, and pattern analysis"
echo " - Semantic Routing & Sequential Thinking for intelligent tool selection"
echo " - Asynchronous Job Handling with SSE notifications for long-running tasks"
echo " - Multi-language support (30+ programming languages)"
echo " - Agent coordination and autonomous development workflows"
echo " - Unified communication protocol (stdio/SSE/WebSocket/HTTP)"
echo " - Production-ready task management with zero mock code (99.9% test success rate)"
echo " - Real-time agent orchestration and task assignment"
echo " - Enhanced JSON parsing with 6-strategy progressive pipeline"
echo " - Memory optimization with sophisticated caching"
echo " - Security boundaries with separate read/write path validation"
echo " - Schema-aware LLM integration with Zod validation"
echo " - Dynamic template generation replacing static YAML templates"
echo " - Chunked processing for large codebases (>40 files)"
echo " - Enhanced project type detection with multi-language intelligence"
echo ""
echo ""
echo -e "${YELLOW}⚠️ CRITICAL NEXT STEPS:${NC}"
echo ""
echo -e "${RED}1. REQUIRED: Configure Environment Variables${NC}"
echo " - Open .env in a text editor"
echo " - Replace 'YOUR_OPENROUTER_API_KEY_HERE' with your actual OpenRouter API key"
echo " - Optionally set other variables like LOG_LEVEL, NODE_ENV, etc."
echo " - Save the file"
echo ""
echo -e "${BLUE}2. OPTIONAL: Review Configuration Files${NC}"
echo " - llm_config.json: LLM model mappings for different tasks"
echo " - mcp-config.json: MCP tool configurations and routing patterns"
echo " - workflows.json: Predefined workflow definitions"
echo ""
echo -e "${GREEN}3. START THE SERVER OR USE CLI${NC}"
echo " - For MCP Server (stdio): npm start"
echo " - For web clients (SSE): npm run start:sse"
echo " - For CLI interface: node build/unified-cli.js"
echo " - For interactive setup: node build/unified-cli.js --setup"
echo " - For development with hot reload: npm run dev"
echo " - For development with SSE: npm run dev:sse"
echo ""
echo -e "${BLUE}4. CONFIGURE YOUR MCP CLIENT${NC}"
echo " - Add server configuration to your MCP client settings"
echo " - Use the paths shown in README.md for your specific client"
echo " - Restart your MCP client after configuration"
echo ""
echo -e "${GREEN}5. VALIDATE THE SETUP${NC}"
echo " - Run tests: npm test"
echo " - Test specific tools: npm run test:unit"
echo " - Run E2E tests: npm run test:e2e"
echo " - Check test coverage: npm run coverage"
echo ""
echo -e "${BLUE}6. TEST TOOL FUNCTIONALITY${NC}"
echo " - CLI Mode: node build/unified-cli.js \"research modern JavaScript frameworks\""
echo " - CLI Mode: node build/unified-cli.js \"create a PRD for a todo app\""
echo " - CLI Mode: node build/unified-cli.js \"map the codebase structure\""
echo " - MCP Mode: 'Research modern JavaScript frameworks' (via MCP client)"
echo " - Task Manager: 'vibe-task-manager create project \"Test Project\" \"Testing setup\"'"
echo " - Context Curation: 'curate-context' for intelligent context packages"
echo " - Try: 'generate-fullstack-starter-kit' for dynamic project scaffolding"
echo ""
echo -e "${YELLOW}7. ADVANCED USAGE${NC}"
echo " - Use 'get-job-result <jobId>' to retrieve outcomes from long-running tasks"
echo " - Register agents for coordination: 'register-agent' with capabilities"
echo " - Use agent tools for distributed task execution and coordination"
echo " - Configure security settings via environment variables"
echo ""
echo -e "${BLUE}📚 DOCUMENTATION${NC}"
echo " - README.md: Complete setup and usage guide"
echo " - VIBE_CODER_MCP_SYSTEM_INSTRUCTIONS.md: System prompt documentation"
echo " - docs/: Additional documentation and examples"
echo " - Individual tool READMEs in src/tools/*/README.md"
echo ""
echo -e "${GREEN}🧪 TESTING & DEBUGGING${NC}"
echo " - Run all tests: npm test"
echo " - Run unit tests only: npm run test:unit"
echo " - Run integration tests: npm run test:integration"
echo " - Run E2E tests: npm run test:e2e"
echo " - Run agent integration tests: npm run test:agent-integration"
echo " - Run multi-transport tests: npm run test:multi-transport"
echo " - Run agent response tests: npm run test:agent-response"
echo " - Run full integration suite: npm run test:full-integration"
echo " - Check coverage: npm run coverage"
echo " - Lint code: npm run lint"
echo ""
echo -e "${YELLOW}🔧 TROUBLESHOOTING${NC}"
echo " - If build fails: rm -rf build && npm run build"
echo " - If dependencies fail: rm -rf node_modules package-lock.json && npm install"
echo " - If tests fail: Check .env file has OPENROUTER_API_KEY set"
echo " - For permission issues: chmod +x setup.sh && ./setup.sh"
echo " - Check logs in server.log for runtime issues"
echo ""