🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
220 lines
5.7 KiB
Bash
Executable File
220 lines
5.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# BZZZ Setup Transition Script
|
|
# This script helps users transition to the new web-based configuration system
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Configuration
|
|
BZZZ_CONFIG_DIR="$HOME/.bzzz"
|
|
BZZZ_CONFIG_FILE="$BZZZ_CONFIG_DIR/config.yaml"
|
|
BACKUP_DIR="$BZZZ_CONFIG_DIR/backups"
|
|
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
|
|
|
echo -e "${BLUE}🐝 BZZZ Setup Transition Script${NC}"
|
|
echo -e "${BLUE}================================${NC}"
|
|
echo ""
|
|
|
|
# Check if BZZZ is installed
|
|
check_bzzz_installation() {
|
|
echo -e "📦 Checking BZZZ installation..."
|
|
|
|
if ! command -v bzzz &> /dev/null; then
|
|
if [ -f "./bzzz" ]; then
|
|
echo -e "${GREEN}✅ Found BZZZ binary in current directory${NC}"
|
|
BZZZ_BINARY="./bzzz"
|
|
elif [ -f "./build/bzzz" ]; then
|
|
echo -e "${GREEN}✅ Found BZZZ binary in build directory${NC}"
|
|
BZZZ_BINARY="./build/bzzz"
|
|
else
|
|
echo -e "${RED}❌ BZZZ binary not found${NC}"
|
|
echo -e "Please build BZZZ first: ${YELLOW}make build${NC}"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo -e "${GREEN}✅ BZZZ is installed system-wide${NC}"
|
|
BZZZ_BINARY="bzzz"
|
|
fi
|
|
}
|
|
|
|
# Backup existing configuration
|
|
backup_existing_config() {
|
|
if [ -f "$BZZZ_CONFIG_FILE" ]; then
|
|
echo -e "💾 Backing up existing configuration..."
|
|
mkdir -p "$BACKUP_DIR"
|
|
cp "$BZZZ_CONFIG_FILE" "$BACKUP_DIR/config_backup_$TIMESTAMP.yaml"
|
|
echo -e "${GREEN}✅ Configuration backed up to: $BACKUP_DIR/config_backup_$TIMESTAMP.yaml${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚪ No existing configuration found${NC}"
|
|
fi
|
|
}
|
|
|
|
# Check configuration status
|
|
check_config_status() {
|
|
echo -e "🔍 Checking configuration status..."
|
|
|
|
if [ -f "$BZZZ_CONFIG_FILE" ]; then
|
|
echo -e "${GREEN}✅ Configuration file exists: $BZZZ_CONFIG_FILE${NC}"
|
|
|
|
# Try to validate the configuration
|
|
if $BZZZ_BINARY --config-check 2>/dev/null; then
|
|
echo -e "${GREEN}✅ Configuration is valid${NC}"
|
|
echo -e "${BLUE}🚀 BZZZ should start normally without setup${NC}"
|
|
return 0
|
|
else
|
|
echo -e "${YELLOW}⚠️ Configuration exists but appears invalid${NC}"
|
|
echo -e "${BLUE}🔧 BZZZ will start in setup mode${NC}"
|
|
return 1
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}⚪ No configuration file found${NC}"
|
|
echo -e "${BLUE}🔧 BZZZ will start in setup mode${NC}"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Start setup mode
|
|
start_setup_mode() {
|
|
echo -e "🌐 Starting BZZZ in setup mode..."
|
|
echo -e "📍 Setup interface will be available at: ${GREEN}http://localhost:8080${NC}"
|
|
echo -e "📋 Follow the setup wizard to configure your BZZZ cluster"
|
|
echo ""
|
|
echo -e "${YELLOW}Press Ctrl+C to stop the setup server${NC}"
|
|
echo ""
|
|
|
|
# Start BZZZ (it will automatically detect setup is needed)
|
|
$BZZZ_BINARY
|
|
}
|
|
|
|
# Generate sample configuration
|
|
generate_sample_config() {
|
|
echo -e "📄 Generating sample configuration..."
|
|
|
|
mkdir -p "$BZZZ_CONFIG_DIR"
|
|
|
|
cat > "$BZZZ_CONFIG_FILE" << 'EOF'
|
|
# BZZZ Configuration File
|
|
# This is a sample configuration - customize for your environment
|
|
|
|
agent:
|
|
id: "bzzz-agent-sample"
|
|
capabilities:
|
|
- "code_generation"
|
|
- "task_coordination"
|
|
- "p2p_communication"
|
|
models:
|
|
- "llama2:7b"
|
|
- "codellama:7b"
|
|
specialization: "general_developer"
|
|
max_tasks: 5
|
|
|
|
github:
|
|
token_file: "~/.config/bzzz/github_token"
|
|
assignee: "your-username"
|
|
rate_limit: true
|
|
|
|
p2p:
|
|
service_tag: "bzzz-peer-discovery"
|
|
bzzz_topic: "bzzz/coordination/v1"
|
|
hmmm_topic: "hmmm/meta-discussion/v1"
|
|
discovery_timeout: "10s"
|
|
|
|
logging:
|
|
level: "info"
|
|
format: "text"
|
|
output: "stdout"
|
|
structured: false
|
|
|
|
v2:
|
|
enabled: true
|
|
dht:
|
|
enabled: true
|
|
bootstrap_peers: []
|
|
|
|
security:
|
|
election_config:
|
|
heartbeat_timeout: "30s"
|
|
election_timeout: "60s"
|
|
minimum_peers: 1
|
|
audit_logging: true
|
|
EOF
|
|
|
|
echo -e "${GREEN}✅ Sample configuration created: $BZZZ_CONFIG_FILE${NC}"
|
|
echo -e "${YELLOW}⚠️ Please customize this configuration for your environment${NC}"
|
|
}
|
|
|
|
# Main menu
|
|
show_menu() {
|
|
echo -e "What would you like to do?"
|
|
echo -e "1) ${GREEN}Check configuration status${NC}"
|
|
echo -e "2) ${BLUE}Start setup mode (web interface)${NC}"
|
|
echo -e "3) ${YELLOW}Generate sample configuration${NC}"
|
|
echo -e "4) ${GREEN}Backup existing configuration${NC}"
|
|
echo -e "5) ${RED}Exit${NC}"
|
|
echo ""
|
|
read -p "Enter your choice (1-5): " choice
|
|
}
|
|
|
|
# Process menu choice
|
|
process_choice() {
|
|
case $choice in
|
|
1)
|
|
check_config_status
|
|
;;
|
|
2)
|
|
start_setup_mode
|
|
;;
|
|
3)
|
|
generate_sample_config
|
|
;;
|
|
4)
|
|
backup_existing_config
|
|
;;
|
|
5)
|
|
echo -e "${GREEN}👋 Goodbye!${NC}"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo -e "${RED}❌ Invalid choice. Please enter 1-5.${NC}"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Main execution
|
|
main() {
|
|
check_bzzz_installation
|
|
|
|
echo ""
|
|
check_config_status
|
|
config_valid=$?
|
|
|
|
echo ""
|
|
if [ $config_valid -eq 0 ]; then
|
|
echo -e "${GREEN}🎉 Your BZZZ configuration is ready!${NC}"
|
|
echo -e "Run ${YELLOW}$BZZZ_BINARY${NC} to start BZZZ normally"
|
|
else
|
|
echo -e "${BLUE}🔧 Setup is required${NC}"
|
|
while true; do
|
|
echo ""
|
|
show_menu
|
|
process_choice
|
|
|
|
if [ $choice -eq 5 ]; then
|
|
break
|
|
fi
|
|
|
|
echo ""
|
|
read -p "Press Enter to continue..."
|
|
done
|
|
fi
|
|
}
|
|
|
|
# Run main function
|
|
main |