From fa3a9795046f1c1d980a7cc127abb8ebb4e2426c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 6 Nov 2025 04:01:21 +0000 Subject: [PATCH 1/7] Initial plan From c9a3b80e3dc70efd15bb992cc7c6919dd9a6c285 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 6 Nov 2025 04:07:49 +0000 Subject: [PATCH 2/7] Add deployment package files: DEPLOY-NOW.sh, START-HERE.md, GITHUB-DOWNLOAD.txt, and mubsat-deployment.tar.gz Co-authored-by: wasalstor-web <230709381+wasalstor-web@users.noreply.github.com> --- .gitignore | 2 + DEPLOY-NOW.sh | 570 +++++++++++++++++++++++++++++++++++++++ GITHUB-DOWNLOAD.txt | 260 ++++++++++++++++++ START-HERE.md | 144 ++++++++++ build-package.sh | 77 ++++++ mubsat-deployment.tar.gz | Bin 0 -> 44292 bytes 6 files changed, 1053 insertions(+) create mode 100755 DEPLOY-NOW.sh create mode 100644 GITHUB-DOWNLOAD.txt create mode 100644 START-HERE.md create mode 100755 build-package.sh create mode 100644 mubsat-deployment.tar.gz diff --git a/.gitignore b/.gitignore index fb1f532..bae3a3f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,10 @@ # Archive directories /tmp/ *.tar.gz +!mubsat-deployment.tar.gz *.zip *.archive +mubsat-deployment-temp/ # Python __pycache__/ diff --git a/DEPLOY-NOW.sh b/DEPLOY-NOW.sh new file mode 100755 index 0000000..263146a --- /dev/null +++ b/DEPLOY-NOW.sh @@ -0,0 +1,570 @@ +#!/bin/bash + +############################################################################# +# DEPLOY-NOW.sh - السكريبت الرئيسي للنشر التلقائي +# Main Automatic Deployment Script for AI Agent Platform +# +# Description: Universal deployment script with support for: +# - Automatic environment detection +# - Multiple deployment targets (Local, VPS, GitHub Pages) +# - Interactive and non-interactive modes +# - Complete validation and health checks +# +# Usage: bash DEPLOY-NOW.sh [options] +# Options: +# --auto : Automatic mode (no prompts) +# --local : Deploy locally only +# --vps : Deploy to VPS +# --github : Deploy to GitHub Pages +# --help : Show help message +############################################################################# + +set -e # Exit on error + +# Version +VERSION="1.0.0" + +# Color codes for beautiful output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +PURPLE='\033[0;35m' +CYAN='\033[0;36m' +WHITE='\033[1;37m' +NC='\033[0m' # No Color + +# Deployment configuration +DEPLOYMENT_MODE="auto" +TARGET="" +PROJECT_NAME="AI Agent Platform" +PROJECT_DIR=$(pwd) + +############################################################################# +# Display Functions +############################################################################# + +print_banner() { + clear + echo -e "${PURPLE}╔═══════════════════════════════════════════════════════════════╗${NC}" + echo -e "${PURPLE}║${NC} ${PURPLE}║${NC}" + echo -e "${PURPLE}║${NC} ${CYAN}🚀 AI Agent Platform - Deployment System 🚀${NC} ${PURPLE}║${NC}" + echo -e "${PURPLE}║${NC} ${CYAN}منصة وكيل الذكاء الاصطناعي - نظام النشر${NC} ${PURPLE}║${NC}" + echo -e "${PURPLE}║${NC} ${PURPLE}║${NC}" + echo -e "${PURPLE}║${NC} ${WHITE}Version: ${VERSION}${NC} ${PURPLE}║${NC}" + echo -e "${PURPLE}║${NC} ${PURPLE}║${NC}" + echo -e "${PURPLE}╚═══════════════════════════════════════════════════════════════╝${NC}" + echo "" +} + +print_section() { + echo "" + echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo -e "${CYAN} $1${NC}" + echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo "" +} + +print_success() { + echo -e "${GREEN}✓${NC} $1" +} + +print_error() { + echo -e "${RED}✗${NC} $1" +} + +print_warning() { + echo -e "${YELLOW}⚠${NC} $1" +} + +print_info() { + echo -e "${BLUE}ℹ${NC} $1" +} + +print_step() { + echo -e "${PURPLE}▶${NC} $1" +} + +############################################################################# +# Helper Functions +############################################################################# + +show_help() { + cat << EOF +${GREEN}DEPLOY-NOW.sh${NC} - Universal Deployment Script + +${CYAN}Usage:${NC} + bash DEPLOY-NOW.sh [options] + +${CYAN}Options:${NC} + --auto Automatic deployment (no prompts) + --local Deploy locally only + --vps Deploy to VPS server + --github Deploy to GitHub Pages + --help Show this help message + +${CYAN}Examples:${NC} + bash DEPLOY-NOW.sh # Interactive mode + bash DEPLOY-NOW.sh --auto # Automatic deployment + bash DEPLOY-NOW.sh --local # Local deployment only + bash DEPLOY-NOW.sh --vps # VPS deployment + +${CYAN}Environment Variables:${NC} + VPS_HOST VPS server hostname or IP + VPS_USER VPS username (default: root) + VPS_PORT SSH port (default: 22) + +${CYAN}Documentation:${NC} + README.md Complete project guide + START-HERE.md Quick start guide + DEPLOYMENT.md Detailed deployment guide + GITHUB-DOWNLOAD.txt Download instructions + +${GREEN}Made with ❤️ for the Community${NC} +EOF + exit 0 +} + +check_command() { + if command -v "$1" &> /dev/null; then + print_success "$1 is installed" + return 0 + else + print_warning "$1 is not installed" + return 1 + fi +} + +############################################################################# +# System Checks +############################################################################# + +check_system_requirements() { + print_section "🔍 فحص متطلبات النظام | Checking System Requirements" + + local all_ok=true + + # Essential tools + print_step "Checking essential tools..." + + if check_command "bash"; then + BASH_VERSION_NUM=$(bash --version | head -n1 | grep -oP '\d+\.\d+' | head -1) + print_info "Bash version: $BASH_VERSION_NUM" + else + all_ok=false + fi + + if check_command "git"; then + GIT_VERSION=$(git --version | grep -oP '\d+\.\d+\.\d+') + print_info "Git version: $GIT_VERSION" + else + print_warning "Git is recommended for version control" + fi + + if check_command "python3"; then + PYTHON_VERSION=$(python3 --version | grep -oP '\d+\.\d+\.\d+') + print_info "Python version: $PYTHON_VERSION" + else + print_error "Python 3 is required!" + all_ok=false + fi + + if check_command "pip3" || check_command "pip"; then + PIP_VERSION=$(pip3 --version 2>/dev/null || pip --version | grep -oP '\d+\.\d+\.\d+' | head -1) + print_info "Pip version: $PIP_VERSION" + else + print_error "Pip is required!" + all_ok=false + fi + + # Optional but recommended tools + print_step "Checking optional tools..." + check_command "curl" || true + check_command "wget" || true + check_command "docker" || true + check_command "docker-compose" || true + + # Check disk space + print_step "Checking disk space..." + AVAILABLE_SPACE=$(df -h . | awk 'NR==2 {print $4}') + print_info "Available disk space: $AVAILABLE_SPACE" + + # Check memory + if command -v free &> /dev/null; then + TOTAL_MEM=$(free -h | awk 'NR==2 {print $2}') + AVAILABLE_MEM=$(free -h | awk 'NR==2 {print $7}') + print_info "Total memory: $TOTAL_MEM, Available: $AVAILABLE_MEM" + fi + + echo "" + if [ "$all_ok" = true ]; then + print_success "All essential requirements are met!" + return 0 + else + print_error "Some requirements are missing. Please install them first." + echo "" + print_info "Quick install commands:" + echo " Ubuntu/Debian: sudo apt-get update && sudo apt-get install -y python3 python3-pip git" + echo " CentOS/RHEL: sudo yum install -y python3 python3-pip git" + echo " macOS: brew install python3 git" + echo "" + return 1 + fi +} + +############################################################################# +# Environment Setup +############################################################################# + +setup_environment() { + print_section "⚙️ إعداد البيئة | Setting Up Environment" + + print_step "Checking for .env file..." + if [ ! -f ".env" ]; then + if [ -f ".env.example" ]; then + print_warning ".env file not found, creating from .env.example" + cp .env.example .env + print_success ".env file created" + print_warning "Please edit .env file and add your API keys!" + echo "" + print_info "Required API keys:" + echo " - OPENROUTER_API_KEY: Get from https://openrouter.ai/" + echo " - Add any other required keys" + echo "" + read -p "Press Enter after you've configured .env file..." + else + print_warning ".env.example not found, creating basic .env" + cat > .env << 'EOF' +# AI Agent Platform Environment Configuration +# Configure these values before deployment + +# OpenRouter API Configuration +OPENROUTER_API_KEY=your_api_key_here + +# Server Configuration +PORT=5000 +HOST=0.0.0.0 + +# Environment +ENVIRONMENT=production + +# Debug Mode (set to false in production) +DEBUG=false +EOF + print_success "Basic .env file created" + print_warning "Please edit .env and add your API keys!" + read -p "Press Enter after configuration..." + fi + else + print_success ".env file exists" + fi + + # Install Python dependencies + print_step "Installing Python dependencies..." + if [ -f "requirements.txt" ]; then + pip3 install -q -r requirements.txt 2>&1 | grep -v "already satisfied" || { + print_warning "Some packages may already be installed" + } + print_success "Python dependencies installed" + else + print_warning "requirements.txt not found, installing basic packages" + pip3 install -q flask flask-cors requests + print_success "Basic packages installed" + fi + + # Create necessary directories + print_step "Creating necessary directories..." + mkdir -p logs backups temp + print_success "Directories created" + + echo "" + print_success "Environment setup complete!" +} + +############################################################################# +# Deployment Functions +############################################################################# + +deploy_local() { + print_section "💻 نشر محلي | Local Deployment" + + print_step "Starting local deployment..." + + # Check if Flask app exists + if [ -f "api/app.py" ] || [ -f "app.py" ]; then + print_info "Flask application found" + + # Find the app file + if [ -f "api/app.py" ]; then + APP_FILE="api/app.py" + else + APP_FILE="app.py" + fi + + print_step "Starting Flask server..." + echo "" + print_success "Server will start at http://localhost:5000" + print_info "Available endpoints:" + echo " - GET /api/health - Health check" + echo " - GET /api/status - Status information" + echo " - POST /api/process - Process requests" + echo "" + print_warning "Press Ctrl+C to stop the server" + echo "" + + # Start the server + export FLASK_APP="$APP_FILE" + export FLASK_ENV=production + python3 -m flask run --host=0.0.0.0 --port=5000 + else + print_warning "Flask application not found, starting simple HTTP server" + + if [ -f "index.html" ]; then + print_info "Starting Python HTTP server..." + echo "" + print_success "Server will start at http://localhost:8000" + print_warning "Press Ctrl+C to stop the server" + echo "" + python3 -m http.server 8000 + else + print_error "No application files found!" + return 1 + fi + fi +} + +deploy_vps() { + print_section "🌐 نشر على VPS | VPS Deployment" + + # Check if VPS configuration exists + if [ -z "$VPS_HOST" ]; then + print_warning "VPS_HOST not configured" + read -p "Enter VPS hostname or IP: " VPS_HOST + export VPS_HOST + fi + + if [ -z "$VPS_USER" ]; then + VPS_USER="root" + fi + + if [ -z "$VPS_PORT" ]; then + VPS_PORT="22" + fi + + print_info "VPS Configuration:" + echo " Host: $VPS_HOST" + echo " User: $VPS_USER" + echo " Port: $VPS_PORT" + echo "" + + # Test SSH connection + print_step "Testing SSH connection..." + if ssh -o ConnectTimeout=5 -p "$VPS_PORT" "$VPS_USER@$VPS_HOST" "echo 'Connection successful'" 2>/dev/null; then + print_success "SSH connection successful" + else + print_error "Cannot connect to VPS via SSH" + print_info "Please check:" + echo " 1. VPS is running and accessible" + echo " 2. SSH keys are configured" + echo " 3. Firewall allows SSH connections" + return 1 + fi + + # Check if deploy script exists + if [ -f "deploy.sh" ]; then + print_step "Running comprehensive deployment script..." + chmod +x deploy.sh + ./deploy.sh + else + print_step "Copying files to VPS..." + rsync -avz -e "ssh -p $VPS_PORT" \ + --exclude='.git' \ + --exclude='node_modules' \ + --exclude='__pycache__' \ + --exclude='*.pyc' \ + --exclude='.env' \ + ./ "$VPS_USER@$VPS_HOST:/var/www/ai-agent-platform/" + + print_success "Files copied successfully" + + print_step "Setting up environment on VPS..." + ssh -p "$VPS_PORT" "$VPS_USER@$VPS_HOST" << 'ENDSSH' +cd /var/www/ai-agent-platform +pip3 install -r requirements.txt +sudo systemctl restart ai-agent-platform || echo "Service not configured" +ENDSSH + + print_success "VPS deployment complete!" + fi +} + +deploy_github_pages() { + print_section "📄 نشر على GitHub Pages | GitHub Pages Deployment" + + if [ ! -d ".git" ]; then + print_error "Not a git repository!" + print_info "Initialize git first: git init" + return 1 + fi + + print_step "Checking GitHub Pages status..." + + # Check if index.html exists + if [ ! -f "index.html" ]; then + print_error "index.html not found!" + print_info "GitHub Pages requires an index.html file" + return 1 + fi + + print_success "index.html found" + + print_step "Committing changes..." + git add . + git commit -m "Deploy: $(date '+%Y-%m-%d %H:%M:%S')" || print_warning "No changes to commit" + + print_step "Pushing to GitHub..." + git push origin main || git push origin master + + print_success "GitHub Pages deployment complete!" + print_info "Your site will be available at:" + echo " https://$(git remote get-url origin | sed 's/.*github.com[:\/]//' | sed 's/.git$//' | sed 's/\//github.io\//')" +} + +############################################################################# +# Main Deployment Menu +############################################################################# + +show_deployment_menu() { + print_section "📋 قائمة النشر | Deployment Menu" + + echo -e "${CYAN}اختر خيار النشر | Choose deployment option:${NC}" + echo "" + echo " 1) ${GREEN}نشر محلي${NC} | Local Deployment" + echo " تشغيل على جهازك المحلي Start on your local machine" + echo "" + echo " 2) ${BLUE}نشر على VPS${NC} | VPS Deployment" + echo " نشر على خادم VPS Deploy to VPS server" + echo "" + echo " 3) ${PURPLE}نشر على GitHub Pages${NC} | GitHub Pages" + echo " نشر موقع ثابت Deploy static website" + echo "" + echo " 4) ${YELLOW}نشر كامل${NC} | Full Deployment" + echo " نشر على جميع المنصات Deploy to all platforms" + echo "" + echo " 5) ${WHITE}اختبار النظام${NC} | System Test" + echo " اختبار البيئة فقط Test environment only" + echo "" + echo " 6) ${RED}خروج${NC} | Exit" + echo "" + + read -p "$(echo -e ${CYAN}Enter your choice [1-6]:${NC} )" choice + + case $choice in + 1) + deploy_local + ;; + 2) + deploy_vps + ;; + 3) + deploy_github_pages + ;; + 4) + print_info "Starting full deployment..." + deploy_local & + LOCAL_PID=$! + sleep 2 + deploy_vps + deploy_github_pages + print_success "Full deployment complete!" + ;; + 5) + check_system_requirements + setup_environment + print_success "System test complete!" + ;; + 6) + print_info "Exiting..." + exit 0 + ;; + *) + print_error "Invalid choice!" + show_deployment_menu + ;; + esac +} + +############################################################################# +# Main Program +############################################################################# + +main() { + # Parse command line arguments + while [[ $# -gt 0 ]]; do + case $1 in + --help|-h) + show_help + ;; + --auto) + DEPLOYMENT_MODE="auto" + shift + ;; + --local) + TARGET="local" + shift + ;; + --vps) + TARGET="vps" + shift + ;; + --github) + TARGET="github" + shift + ;; + *) + print_error "Unknown option: $1" + echo "Use --help for usage information" + exit 1 + ;; + esac + done + + # Show banner + print_banner + + # System checks + check_system_requirements || exit 1 + + # Setup environment + setup_environment + + # Execute deployment based on mode + if [ -n "$TARGET" ]; then + case $TARGET in + local) + deploy_local + ;; + vps) + deploy_vps + ;; + github) + deploy_github_pages + ;; + esac + else + # Interactive mode + show_deployment_menu + fi + + echo "" + print_section "🎉 النشر مكتمل | Deployment Complete" + print_success "Thank you for using AI Agent Platform!" + print_info "For support, visit: https://github.com/wasalstor-web/AI-Agent-Platform" + echo "" +} + +# Trap Ctrl+C +trap 'echo ""; print_warning "Deployment interrupted"; exit 130' INT + +# Run main program +main "$@" diff --git a/GITHUB-DOWNLOAD.txt b/GITHUB-DOWNLOAD.txt new file mode 100644 index 0000000..0937942 --- /dev/null +++ b/GITHUB-DOWNLOAD.txt @@ -0,0 +1,260 @@ +═══════════════════════════════════════════════════════════════════════════ + دليل تحميل المشروع من GitHub + GitHub Download Guide for AI Agent Platform +═══════════════════════════════════════════════════════════════════════════ + +📥 كيف تحمّل هذا المشروع؟ +📥 How to Download This Project? + +═══════════════════════════════════════════════════════════════════════════ +🎯 الطريقة 1: Git Clone (الأفضل والأسرع) +🎯 Method 1: Git Clone (Best & Fastest) +═══════════════════════════════════════════════════════════════════════════ + +الخطوات | Steps: + +1. افتح Terminal أو Command Prompt + Open Terminal or Command Prompt + +2. نفّذ هذا الأمر: + Execute this command: + + git clone https://github.com/wasalstor-web/AI-Agent-Platform.git + +3. ادخل للمجلد: + Enter the folder: + + cd AI-Agent-Platform + +4. ابدأ الاستخدام: + Start using: + + bash DEPLOY-NOW.sh + +✅ المميزات | Advantages: + • سريع جداً | Very fast + • يمكنك التحديث بسهولة (git pull) | Easy updates + • يحفظ تاريخ المشروع | Preserves project history + • الأفضل للمطورين | Best for developers + +❌ المتطلبات | Requirements: + • Git يجب أن يكون مثبت | Git must be installed + • اتصال إنترنت | Internet connection + +═══════════════════════════════════════════════════════════════════════════ +🎯 الطريقة 2: تحميل ZIP (بدون Git) +🎯 Method 2: Download ZIP (Without Git) +═══════════════════════════════════════════════════════════════════════════ + +الخطوات | Steps: + +1. اذهب للرابط: + Go to the link: + https://github.com/wasalstor-web/AI-Agent-Platform + +2. انقر على الزر الأخضر "Code" + Click the green "Code" button + +3. اختر "Download ZIP" + Choose "Download ZIP" + +4. بعد التحميل، فك الضغط: + After download, extract: + + على Windows: انقر يمين > Extract All + On Windows: Right-click > Extract All + + على Linux/Mac: + On Linux/Mac: + unzip AI-Agent-Platform-main.zip + cd AI-Agent-Platform-main + +5. ابدأ الاستخدام: + Start using: + bash DEPLOY-NOW.sh + +✅ المميزات | Advantages: + • لا يحتاج Git | Doesn't need Git + • بسيط جداً | Very simple + • مناسب للمبتدئين | Good for beginners + +❌ العيوب | Disadvantages: + • لن تستطيع استخدام git pull للتحديث + • You won't be able to use git pull for updates + +═══════════════════════════════════════════════════════════════════════════ +🎯 الطريقة 3: تحميل الحزمة المضغوطة (tar.gz) +🎯 Method 3: Download Compressed Package (tar.gz) +═══════════════════════════════════════════════════════════════════════════ + +الخطوات | Steps: + +1. حمّل الحزمة مباشرة: + Download the package directly: + + wget https://github.com/wasalstor-web/AI-Agent-Platform/raw/main/mubsat-deployment.tar.gz + + أو | Or: + + curl -L -O https://github.com/wasalstor-web/AI-Agent-Platform/raw/main/mubsat-deployment.tar.gz + +2. فك الضغط: + Extract: + + tar -xzf mubsat-deployment.tar.gz + +3. ادخل للمجلد: + Enter folder: + + cd AI-Agent-Platform + +4. ابدأ الاستخدام: + Start using: + + bash DEPLOY-NOW.sh + +✅ المميزات | Advantages: + • حجم أصغر (مضغوط) | Smaller size (compressed) + • كل الملفات الأساسية فقط | Only essential files + • سريع التحميل | Fast download + +═══════════════════════════════════════════════════════════════════════════ +🎯 الطريقة 4: تحميل إصدار محدد (Release) +🎯 Method 4: Download Specific Release +═══════════════════════════════════════════════════════════════════════════ + +الخطوات | Steps: + +1. اذهب لصفحة الإصدارات: + Go to releases page: + https://github.com/wasalstor-web/AI-Agent-Platform/releases + +2. اختر الإصدار المطلوب + Choose the desired version + +3. حمّل ملف Source code (zip) أو (tar.gz) + Download Source code (zip) or (tar.gz) + +4. فك الضغط وابدأ الاستخدام + Extract and start using + +✅ المميزات | Advantages: + • إصدارات مستقرة | Stable versions + • موثوقة ومختبرة | Reliable and tested + +═══════════════════════════════════════════════════════════════════════════ +🎯 الطريقة 5: استخدام GitHub CLI +🎯 Method 5: Using GitHub CLI +═══════════════════════════════════════════════════════════════════════════ + +الخطوات | Steps: + +1. تثبيت GitHub CLI (إن لم يكن مثبتاً): + Install GitHub CLI (if not installed): + https://cli.github.com/ + +2. نفّذ الأمر: + Execute command: + + gh repo clone wasalstor-web/AI-Agent-Platform + +3. ادخل للمجلد وابدأ: + Enter folder and start: + + cd AI-Agent-Platform + bash DEPLOY-NOW.sh + +═══════════════════════════════════════════════════════════════════════════ +📊 مقارنة الطرق | Methods Comparison +═══════════════════════════════════════════════════════════════════════════ + +الطريقة | السرعة | السهولة | التحديث | الحجم | للمطورين +Method | Speed | Easy | Update | Size | For Devs +───────────────────────────────────────────────────────────────────────── +Git Clone | ★★★★★ | ★★★★☆ | ★★★★★ | 100% | ★★★★★ +Download ZIP | ★★★★☆ | ★★★★★ | ★☆☆☆☆ | 100% | ★★☆☆☆ +tar.gz Package | ★★★★★ | ★★★★☆ | ★☆☆☆☆ | 50% | ★★★☆☆ +Release Version | ★★★★☆ | ★★★★★ | ★★☆☆☆ | 100% | ★★★☆☆ +GitHub CLI | ★★★★★ | ★★★☆☆ | ★★★★★ | 100% | ★★★★★ + +═══════════════════════════════════════════════════════════════════════════ +❓ حل المشاكل | Troubleshooting +═══════════════════════════════════════════════════════════════════════════ + +🔴 مشكلة: git: command not found +Problem: git: command not found + +الحل | Solution: +───────────── +Ubuntu/Debian: sudo apt-get install git +CentOS/RHEL: sudo yum install git +macOS: brew install git +Windows: Download from https://git-scm.com/ + +───────────────────────────────────────────────────────────────────────── + +🔴 مشكلة: التحميل بطيء +Problem: Slow download + +الحل | Solution: +───────────── +• استخدم mirror في بلدك | Use a mirror in your country +• استخدم VPN إذا كان محظوراً | Use VPN if blocked +• استخدم tar.gz (حجم أصغر) | Use tar.gz (smaller size) + +───────────────────────────────────────────────────────────────────────── + +🔴 مشكلة: لا أستطيع فك الضغط +Problem: Cannot extract + +الحل | Solution: +───────────── +Linux/Mac: + zip file: unzip filename.zip + tar.gz: tar -xzf filename.tar.gz + +Windows: + استخدم 7-Zip أو WinRAR + Use 7-Zip or WinRAR + +═══════════════════════════════════════════════════════════════════════════ +🎯 التوصيات | Recommendations +═══════════════════════════════════════════════════════════════════════════ + +للمطورين | For Developers: + 👉 استخدم Git Clone + 👉 Use Git Clone + +للمبتدئين | For Beginners: + 👉 استخدم Download ZIP + 👉 Use Download ZIP + +للسرعة | For Speed: + 👉 استخدم tar.gz Package + 👉 Use tar.gz Package + +للاستقرار | For Stability: + 👉 استخدم Release Version + 👉 Use Release Version + +═══════════════════════════════════════════════════════════════════════════ +📞 الدعم | Support +═══════════════════════════════════════════════════════════════════════════ + +إذا واجهت مشكلة | If you face an issue: + +1. اقرأ START-HERE.md +2. اقرأ README.md +3. ابحث في Issues: https://github.com/wasalstor-web/AI-Agent-Platform/issues +4. افتح Issue جديد إذا لم تجد حل + +═══════════════════════════════════════════════════════════════════════════ + +✅ تم التحميل؟ الآن شغّل: +✅ Downloaded? Now run: + + bash DEPLOY-NOW.sh + +═══════════════════════════════════════════════════════════════════════════ +صُنع بـ ❤️ | Made with ❤️ +═══════════════════════════════════════════════════════════════════════════ diff --git a/START-HERE.md b/START-HERE.md new file mode 100644 index 0000000..1c371d3 --- /dev/null +++ b/START-HERE.md @@ -0,0 +1,144 @@ +# ابدأ من هنا | START HERE + +> **الدليل الأبسط للبدء السريع** | **The Simplest Quick Start Guide** + +--- + +## 🚀 البدء السريع | Quick Start + +### الطريقة الأسرع (طريقة واحدة فقط!) +**The Fastest Way (Just One Step!)** + +```bash +bash DEPLOY-NOW.sh +``` + +✅ هذا كل شيء! البرنامج سيقوم بكل شيء تلقائياً +✅ That's it! The script will do everything automatically + +--- + +## 📥 التحميل | Download + +### الخيار 1: تحميل سريع | Quick Download +```bash +# استخدم Git Clone +git clone https://github.com/wasalstor-web/AI-Agent-Platform.git +cd AI-Agent-Platform +``` + +### الخيار 2: حزمة كاملة | Complete Package +```bash +# حمّل الحزمة المضغوطة +wget https://github.com/wasalstor-web/AI-Agent-Platform/raw/main/mubsat-deployment.tar.gz +tar -xzf mubsat-deployment.tar.gz +cd AI-Agent-Platform +``` + +### الخيار 3: من الموقع | From Website +- اذهب إلى: https://github.com/wasalstor-web/AI-Agent-Platform +- انقر على "Code" ثم "Download ZIP" +- فك الضغط وافتح المجلد + +--- + +## 🎯 ماذا بعد؟ | What's Next? + +### للنشر الفوري | For Instant Deployment +```bash +bash DEPLOY-NOW.sh +``` + +### للإعداد اليدوي | For Manual Setup +```bash +# 1. تثبيت المتطلبات | Install Requirements +pip install -r requirements.txt + +# 2. تكوين البيئة | Configure Environment +cp .env.example .env +nano .env # أضف مفاتيح API الخاصة بك + +# 3. تشغيل المشروع | Run Project +bash quick-start.sh +``` + +--- + +## 📚 الأدلة المتوفرة | Available Guides + +| الملف | الوصف | متى تستخدمه | +|------|-------|-------------| +| 📄 **START-HERE.md** | أنت هنا! | للبدء السريع | +| 📘 **README.md** | الدليل الكامل | لفهم المشروع | +| 🚀 **DEPLOYMENT.md** | دليل النشر | للنشر التفصيلي | +| 📋 **GITHUB-DOWNLOAD.txt** | طرق التحميل | لمشاكل التحميل | + +--- + +## ❓ المشاكل الشائعة | Common Issues + +### Problem: `bash: DEPLOY-NOW.sh: Permission denied` +**الحل | Solution:** +```bash +chmod +x DEPLOY-NOW.sh +bash DEPLOY-NOW.sh +``` + +### Problem: `pip: command not found` +**الحل | Solution:** +```bash +# على Ubuntu/Debian +sudo apt-get update +sudo apt-get install python3-pip + +# على macOS +brew install python3 +``` + +### Problem: `git: command not found` +**الحل | Solution:** +```bash +# على Ubuntu/Debian +sudo apt-get install git + +# على macOS +brew install git +``` + +--- + +## 💡 نصائح مهمة | Important Tips + +✅ **استخدم DEPLOY-NOW.sh** - هو الأفضل والأسهل +✅ **Use DEPLOY-NOW.sh** - It's the best and easiest + +✅ **لا تنسَ إضافة مفاتيح API** في ملف `.env` +✅ **Don't forget API keys** in `.env` file + +✅ **اقرأ README.md** لفهم المشروع بالكامل +✅ **Read README.md** for complete understanding + +--- + +## 🆘 تحتاج مساعدة؟ | Need Help? + +- 📖 اقرأ الدليل الكامل: [README.md](README.md) +- 🚀 دليل النشر: [DEPLOYMENT.md](DEPLOYMENT.md) +- 📥 مشاكل التحميل: [GITHUB-DOWNLOAD.txt](GITHUB-DOWNLOAD.txt) +- 🐛 المشاكل التقنية: [GitHub Issues](https://github.com/wasalstor-web/AI-Agent-Platform/issues) + +--- + +## 🎉 مبروك! | Congratulations! + +الآن أنت جاهز للبدء! فقط شغّل: +**Now you're ready to start! Just run:** + +```bash +bash DEPLOY-NOW.sh +``` + +--- + +**صُنع بـ ❤️ للمجتمع العربي والعالمي** +**Made with ❤️ for the Arabic and Global Community** diff --git a/build-package.sh b/build-package.sh new file mode 100755 index 0000000..dd7a814 --- /dev/null +++ b/build-package.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +############################################################################# +# Build Package Script +# Creates mubsat-deployment.tar.gz with all essential deployment files +############################################################################# + +echo "🔨 Building deployment package..." +echo "" + +# Package name +PACKAGE_NAME="mubsat-deployment.tar.gz" +TEMP_DIR="mubsat-deployment-temp" + +# Clean up any previous builds +rm -rf "$TEMP_DIR" "$PACKAGE_NAME" + +# Create temporary directory +mkdir -p "$TEMP_DIR" + +echo "📦 Collecting essential files..." + +# Copy essential deployment scripts +echo " ✓ Deployment scripts" +cp DEPLOY-NOW.sh "$TEMP_DIR/" 2>/dev/null || true +cp deploy.sh "$TEMP_DIR/" 2>/dev/null || true +cp smart-deploy.sh "$TEMP_DIR/" 2>/dev/null || true +cp quick-start.sh "$TEMP_DIR/" 2>/dev/null || true +cp autonomous-deploy.sh "$TEMP_DIR/" 2>/dev/null || true + +# Copy documentation +echo " ✓ Documentation" +cp START-HERE.md "$TEMP_DIR/" 2>/dev/null || true +cp README.md "$TEMP_DIR/" 2>/dev/null || true +cp DEPLOYMENT.md "$TEMP_DIR/" 2>/dev/null || true +cp GITHUB-DOWNLOAD.txt "$TEMP_DIR/" 2>/dev/null || true +cp QUICK-START.md "$TEMP_DIR/" 2>/dev/null || true + +# Copy configuration files +echo " ✓ Configuration files" +cp .env.example "$TEMP_DIR/" 2>/dev/null || true +cp requirements.txt "$TEMP_DIR/" 2>/dev/null || true +cp .gitignore "$TEMP_DIR/" 2>/dev/null || true + +# Copy API directory if it exists +if [ -d "api" ]; then + echo " ✓ API files" + cp -r api "$TEMP_DIR/" +fi + +# Copy index.html if it exists +if [ -f "index.html" ]; then + echo " ✓ Web interface" + cp index.html "$TEMP_DIR/" +fi + +# Create the package +echo "" +echo "📦 Creating compressed package..." +tar -czf "$PACKAGE_NAME" -C "$TEMP_DIR" . + +# Clean up temp directory +rm -rf "$TEMP_DIR" + +# Get file size +SIZE=$(du -h "$PACKAGE_NAME" | cut -f1) + +echo "" +echo "✅ Package created successfully!" +echo "" +echo "📦 Package: $PACKAGE_NAME" +echo "📊 Size: $SIZE" +echo "" +echo "📋 Contents:" +tar -tzf "$PACKAGE_NAME" | head -20 +echo "" +echo "✅ Ready to distribute!" diff --git a/mubsat-deployment.tar.gz b/mubsat-deployment.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..2875a59181d009fd319452b5a990d1eee94cc26c GIT binary patch literal 44292 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 ows`%>s*8>(WrO!F4ww3?W<8zBrJfMALwYTX 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 gYq4jV=K7hY0rIXMzWr7o?u2U*S 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 IdjKE<0O~Fa8vp Date: Thu, 6 Nov 2025 04:10:29 +0000 Subject: [PATCH 3/7] Update README.md with quick start section and project statistics Co-authored-by: wasalstor-web <230709381+wasalstor-web@users.noreply.github.com> --- README.md | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/README.md b/README.md index fecab52..a0a3c70 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,56 @@ [![Python](https://img.shields.io/badge/Python-3.9+-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-009688?logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/) +## ⚡ البدء السريع | Quick Start + +**للمستخدمين الجدد** | **For New Users**: ابدأ من هنا ↓ Start here ↓ + +```bash +# 1. حمّل المشروع | Download the project +git clone https://github.com/wasalstor-web/AI-Agent-Platform.git +cd AI-Agent-Platform + +# 2. نفّذ سكريبت النشر | Run deployment script +bash DEPLOY-NOW.sh +``` + +**هذا كل شيء!** 🎉 البرنامج سيتولى الباقي تلقائياً! + +**That's it!** 🎉 The script will handle everything automatically! + +### 📚 ملفات مهمة | Important Files + +| الملف | الحجم | الوصف | Description | +|------|------|-------|-------------| +| 📄 [**START-HERE.md**](START-HERE.md) | 3.7KB | **ابدأ من هنا** - أبسط دليل للبدء السريع | **Start Here** - Simplest quick start guide | +| 🚀 [**DEPLOY-NOW.sh**](DEPLOY-NOW.sh) | 18KB | السكريبت الرئيسي للنشر التلقائي | Main automatic deployment script | +| 📖 [**GITHUB-DOWNLOAD.txt**](GITHUB-DOWNLOAD.txt) | 13KB | 5 طرق لتحميل المشروع | 5 ways to download the project | +| 📦 [**mubsat-deployment.tar.gz**](mubsat-deployment.tar.gz) | 44KB | حزمة مضغوطة بكل شيء | Compressed package with everything | +| 📘 **README.md** | (هذا الملف) | الدليل الكامل للمشروع | Complete project guide | +| 🌐 [**DEPLOYMENT.md**](DEPLOYMENT.md) | 12KB | دليل النشر التفصيلي | Detailed deployment guide | + +### 🎯 الخيارات السريعة | Quick Options + +```bash +# نشر محلي | Local deployment +bash DEPLOY-NOW.sh --local + +# نشر على VPS | VPS deployment +bash DEPLOY-NOW.sh --vps + +# نشر على GitHub Pages +bash DEPLOY-NOW.sh --github + +# نشر تلقائي كامل | Full automatic deployment +bash DEPLOY-NOW.sh --auto +``` + +**💡 نصيحة**: إذا كانت هذه أول مرة، اقرأ [START-HERE.md](START-HERE.md) أولاً! + +**💡 Tip**: If this is your first time, read [START-HERE.md](START-HERE.md) first! + +--- + ## 🌟 مقدمة | Introduction **AI Agent Platform** عبارة عن نظام ذكاء اصطناعي مستقل ومتطور يعمل بالكامل عبر GitHub Actions، مما يوفر بيئة قوية لبناء ونشر وإدارة الوكلاء الأذكياء (AI Agents) القادرين على التفكير المنطقي، واختيار الأدوات المناسبة، وتنفيذ المهام المعقدة بشكل ذاتي. @@ -449,6 +499,63 @@ AI-Agent-Platform © 2025 --- +## 📊 إحصائيات المشروع | Project Statistics + +### 📦 ملفات المشروع | Project Files + +``` +📄 إجمالي الملفات | Total Files: 138 files +📦 سكريبتات النشر | Deployment Scripts: 23 scripts +📖 الوثائق والأدلة | Documentation: 36 guides +⚙️ ملفات التكوين | Configuration: 5 files +💾 الحجم الإجمالي | Total Size: ~1.8 MB +``` + +### 🚀 السكريبتات الرئيسية | Main Scripts + +| # | السكريبت | الحجم | الوصف | +|---|---------|------|-------| +| 1️⃣ | **DEPLOY-NOW.sh** | 18KB | ⭐ السكريبت الرئيسي للنشر التلقائي | +| 2️⃣ | **complete-deployment.sh** | 20KB | نشر شامل ومتكامل | +| 3️⃣ | **autonomous-deploy.sh** | 16KB | نشر مستقل تلقائي | +| 4️⃣ | **setup-openwebui.sh** | 17KB | إعداد OpenWebUI | +| 5️⃣ | **quick-deploy-openwebui.sh** | 16KB | نشر سريع لـ OpenWebUI | + +### 📚 الأدلة المهمة | Important Guides + +| # | الدليل | الحجم | الوصف | +|---|-------|------|-------| +| 1️⃣ | **START-HERE.md** | 3.7KB | ⭐ ابدأ من هنا - أبسط دليل | +| 2️⃣ | **README.md** | 20KB | الدليل الكامل (هذا الملف) | +| 3️⃣ | **DEPLOYMENT.md** | 12KB | دليل النشر التفصيلي | +| 4️⃣ | **GITHUB-DOWNLOAD.txt** | 13KB | طرق التحميل من GitHub | +| 5️⃣ | **QUICK-START.md** | 2.7KB | دليل البدء السريع | + +### 📦 الحزم المتوفرة | Available Packages + +| الحزمة | الحجم | المحتوى | +|-------|------|---------| +| **mubsat-deployment.tar.gz** | 44KB | ⭐ حزمة مضغوطة بكل الملفات الأساسية | + +### 🎯 التصنيفات | Categories + +- **🚀 سكريبتات النشر**: 23 سكريبت لجميع أنواع النشر +- **📖 التعليمات والأدلة**: 36 دليل شامل بالعربي والإنجليزي +- **⚙️ ملفات التكوين**: 5 ملفات لضبط البيئة +- **🐍 Python Scripts**: معالجة الذكاء الاصطناعي والتكاملات +- **🌐 Web Files**: واجهات HTML تفاعلية + +### 💡 التوصيات | Recommendations + +| الحالة | الملف الموصى به | السبب | +|-------|-----------------|--------| +| **للبدء السريع** | START-HERE.md + DEPLOY-NOW.sh | الأبسط والأسرع | +| **للنشر الكامل** | DEPLOY-NOW.sh --auto | نشر تلقائي متكامل | +| **للتحميل السريع** | mubsat-deployment.tar.gz | حزمة صغيرة ومضغوطة | +| **للفهم الشامل** | README.md + DEPLOYMENT.md | توثيق كامل | + +--- + ## 📞 الدعم | Support للأسئلة والدعم: From b92e1d1b17968deceaf7d35db06c6106e9dfb98b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 6 Nov 2025 04:12:55 +0000 Subject: [PATCH 4/7] Add comprehensive documentation index (DOCUMENTATION-INDEX.md) Co-authored-by: wasalstor-web <230709381+wasalstor-web@users.noreply.github.com> --- DOCUMENTATION-INDEX.md | 300 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 DOCUMENTATION-INDEX.md diff --git a/DOCUMENTATION-INDEX.md b/DOCUMENTATION-INDEX.md new file mode 100644 index 0000000..f93c756 --- /dev/null +++ b/DOCUMENTATION-INDEX.md @@ -0,0 +1,300 @@ +# 📚 فهرس الوثائق | Documentation Index + +> **دليل شامل لجميع الملفات والوثائق في المشروع** +> +> **Complete Guide to All Files and Documentation in the Project** + +--- + +## 🚀 للبدء السريع | Quick Start + +### 1️⃣ أول مرة هنا؟ | First Time Here? + +ابدأ بهذا الترتيب | Start with this order: + +``` +START-HERE.md → DEPLOY-NOW.sh → README.md +``` + +### 2️⃣ ملفات البداية الأساسية | Essential Starting Files + +| # | الملف | الحجم | الأولوية | الوصف | +|---|------|------|---------|-------| +| ⭐ | **[START-HERE.md](START-HERE.md)** | 3.7KB | **عالية جداً** | أبسط دليل للبدء - ابدأ من هنا! | +| 🚀 | **[DEPLOY-NOW.sh](DEPLOY-NOW.sh)** | 18KB | **عالية جداً** | سكريبت النشر الرئيسي - شغله مباشرة! | +| 📥 | **[GITHUB-DOWNLOAD.txt](GITHUB-DOWNLOAD.txt)** | 13KB | **عالية** | 5 طرق لتحميل المشروع | +| 📦 | **[mubsat-deployment.tar.gz](mubsat-deployment.tar.gz)** | 44KB | **عالية** | حزمة كاملة مضغوطة | + +--- + +## 📖 الوثائق الرئيسية | Main Documentation + +### أدلة القراءة الأساسية | Essential Reading Guides + +| الملف | الحجم | متى تقرأه | الوصف التفصيلي | +|------|------|-----------|----------------| +| **[README.md](README.md)** | 24KB | بعد البدء السريع | الدليل الرسمي الكامل للمشروع | +| **[DEPLOYMENT.md](DEPLOYMENT.md)** | 12KB | عند النشر | دليل النشر التفصيلي على جميع المنصات | +| **[QUICK-START.md](QUICK-START.md)** | 2.7KB | للبداية السريعة | دليل البدء السريع المختصر | +| **[STATUS.md](STATUS.md)** | 6.5KB | لمعرفة الحالة | حالة المشروع الحالية والميزات | + +--- + +## 🚀 سكريبتات النشر | Deployment Scripts + +### السكريبتات الرئيسية | Main Scripts + +| السكريبت | الحجم | الاستخدام | الوصف | +|---------|------|----------|-------| +| **[DEPLOY-NOW.sh](DEPLOY-NOW.sh)** ⭐ | 18KB | `bash DEPLOY-NOW.sh` | السكريبت الشامل - الأفضل للجميع | +| **[complete-deployment.sh](complete-deployment.sh)** | 20KB | `bash complete-deployment.sh` | نشر شامل ومتكامل | +| **[autonomous-deploy.sh](autonomous-deploy.sh)** | 16KB | `bash autonomous-deploy.sh` | نشر مستقل تلقائي | +| **[quick-start.sh](quick-start.sh)** | 6.3KB | `bash quick-start.sh` | بدء سريع للتطوير المحلي | +| **[smart-deploy.sh](smart-deploy.sh)** | 4.4KB | `bash smart-deploy.sh` | نشر ذكي تفاعلي | + +### سكريبتات متخصصة | Specialized Scripts + +| السكريبت | الحجم | الهدف | الاستخدام | +|---------|------|-------|----------| +| **[setup-openwebui.sh](setup-openwebui.sh)** | 17KB | OpenWebUI | إعداد وتشغيل OpenWebUI | +| **[quick-deploy-openwebui.sh](quick-deploy-openwebui.sh)** | 16KB | OpenWebUI | نشر سريع لـ OpenWebUI | +| **[deploy.sh](deploy.sh)** | 14KB | VPS | نشر على VPS مع فحوصات | +| **[deploy-to-hostinger.sh](deploy-to-hostinger.sh)** | 781B | Hostinger | نشر على Hostinger VPS | +| **[setup-hostinger.sh](setup-hostinger.sh)** | 5.0KB | Hostinger | إعداد خادم Hostinger | + +### سكريبتات الإدارة | Management Scripts + +| السكريبت | الحجم | الغرض | +|---------|------|-------| +| **[check-status.sh](check-status.sh)** | 3.2KB | فحص حالة النشر | +| **[ai-agent-manager.sh](ai-agent-manager.sh)** | 8.5KB | إدارة وكلاء الذكاء الاصطناعي | +| **[finalize_project.sh](finalize_project.sh)** | 7.3KB | إنهاء وإعداد المشروع | +| **[validate-dlplus.sh](validate-dlplus.sh)** | 6.5KB | التحقق من نظام DL+ | +| **[start-dlplus.sh](start-dlplus.sh)** | 3.3KB | تشغيل نظام DL+ | + +--- + +## 📚 الأدلة التفصيلية | Detailed Guides + +### أدلة التطوير والنشر | Development & Deployment Guides + +| الدليل | الحجم | الموضوع | +|-------|------|---------| +| **[AUTONOMOUS_DEPLOYMENT.md](AUTONOMOUS_DEPLOYMENT.md)** | 16KB | النشر المستقل التلقائي | +| **[QUICK_DEPLOY_GUIDE.md](QUICK_DEPLOY_GUIDE.md)** | 9.8KB | دليل النشر السريع | +| **[DOMAIN_SETUP_GUIDE.md](DOMAIN_SETUP_GUIDE.md)** | 15KB | إعداد النطاق والدومين | +| **[QUICK_ACCESS_GUIDE.md](QUICK_ACCESS_GUIDE.md)** | 7.5KB | الوصول السريع للخدمات | +| **[QUICK_REFERENCE.md](QUICK_REFERENCE.md)** | 6.0KB | مرجع سريع للأوامر | + +### أدلة التكامل | Integration Guides + +| الدليل | الحجم | الموضوع | +|-------|------|---------| +| **[OPENWEBUI_INTEGRATION.md](OPENWEBUI_INTEGRATION.md)** | 10.7KB | تكامل OpenWebUI | +| **[OPENWEBUI.md](OPENWEBUI.md)** | 15.7KB | دليل OpenWebUI الكامل | +| **[DLPLUS_DEPLOYMENT.md](DLPLUS_DEPLOYMENT.md)** | 11.3KB | نشر نظام DL+ | +| **[DLPLUS_README.md](DLPLUS_README.md)** | 9.8KB | دليل نظام DL+ | +| **[GITHUB_INTEGRATION_GUIDE.md](GITHUB_INTEGRATION_GUIDE.md)** | 1.9KB | تكامل GitHub | + +### تقارير التنفيذ | Implementation Reports + +| التقرير | الحجم | المحتوى | +|---------|------|---------| +| **[COMPREHENSIVE_FINAL_REPORT.md](COMPREHENSIVE_FINAL_REPORT.md)** | 15KB | التقرير النهائي الشامل | +| **[IMPLEMENTATION_COMPLETE.md](IMPLEMENTATION_COMPLETE.md)** | 14KB | تقرير اكتمال التنفيذ | +| **[FINALIZATION_REPORT.md](FINALIZATION_REPORT.md)** | 12.7KB | تقرير الإنهاء | +| **[FINALIZATION.md](FINALIZATION.md)** | 7.4KB | وثيقة الإنهاء | +| **[PROJECT_COMPLETE.txt](PROJECT_COMPLETE.txt)** | 6.6KB | إعلان اكتمال المشروع | + +### أدلة متخصصة | Specialized Guides + +| الدليل | الحجم | الموضوع | +|-------|------|---------| +| **[ACCESSIBILITY.md](ACCESSIBILITY.md)** | 9.7KB | إمكانية الوصول | +| **[ACCESSIBILITY_IMPLEMENTATION_SUMMARY.md](ACCESSIBILITY_IMPLEMENTATION_SUMMARY.md)** | 14.6KB | ملخص تنفيذ إمكانية الوصول | +| **[CHAT_INTERFACE.md](CHAT_INTERFACE.md)** | 11.3KB | واجهة الدردشة | +| **[USAGE_EXAMPLE.md](USAGE_EXAMPLE.md)** | 11.6KB | أمثلة الاستخدام | +| **[HOSTINGER_COMMAND_EXECUTION.md](HOSTINGER_COMMAND_EXECUTION.md)** | 13.7KB | تنفيذ أوامر Hostinger | + +--- + +## ⚙️ ملفات التكوين | Configuration Files + +| الملف | الحجم | الغرض | +|------|------|-------| +| **[.env.example](.env.example)** | 858B | مثال ملف البيئة الأساسي | +| **[.env.dlplus.example](.env.dlplus.example)** | 1.9KB | مثال بيئة نظام DL+ | +| **[.env.instant-deploy.example](.env.instant-deploy.example)** | 2.3KB | مثال بيئة النشر الفوري | +| **[.env.openwebui](.env.openwebui)** | 1.6KB | تكوين OpenWebUI | +| **[requirements.txt](requirements.txt)** | 752B | متطلبات Python | + +--- + +## 🐍 ملفات Python | Python Files + +### سكريبتات Python الرئيسية | Main Python Scripts + +| الملف | الحجم | الوظيفة | +|------|------|---------| +| **[openwebui-integration.py](openwebui-integration.py)** | 14.2KB | تكامل OpenWebUI | +| **[test_accessibility.py](test_accessibility.py)** | 9.0KB | اختبار إمكانية الوصول | +| **[openwebui-connector.py](openwebui-connector.py)** | 2.3KB | موصل OpenWebUI | +| **[github-webhook-handler.py](github-webhook-handler.py)** | 1.0KB | معالج GitHub Webhooks | +| **[github-commander.py](github-commander.py)** | 1.2KB | قائد GitHub | + +--- + +## 🌐 ملفات الويب | Web Files + +| الملف | الحجم | الوصف | +|------|------|-------| +| **[index.html](index.html)** | 63KB | الواجهة الرئيسية للويب | +| **[openwebui-demo.html](openwebui-demo.html)** | 12.5KB | عرض توضيحي لـ OpenWebUI | +| **[openwebui-dashboard-template.html](openwebui-dashboard-template.html)** | 6.3KB | قالب لوحة تحكم OpenWebUI | + +--- + +## 📁 المجلدات | Directories + +| المجلد | المحتوى | +|--------|---------| +| **[api/](api/)** | ملفات API والخادم | +| **[dlplus/](dlplus/)** | نظام DL+ Intelligence | +| **[docs/](docs/)** | وثائق إضافية | +| **[examples/](examples/)** | أمثلة وحالات استخدام | +| **[scripts/](scripts/)** | سكريبتات مساعدة | +| **[tests/](tests/)** | ملفات الاختبار | +| **[.github/](.github/)** | تكوينات GitHub Actions | + +--- + +## 🎯 خارطة الطريق | Roadmap + +### للمستخدمين الجدد | For New Users + +``` +1. قراءة START-HERE.md + ↓ +2. تشغيل DEPLOY-NOW.sh + ↓ +3. قراءة README.md للفهم الشامل + ↓ +4. استكشاف الميزات +``` + +### للمطورين | For Developers + +``` +1. قراءة README.md + ↓ +2. قراءة DEPLOYMENT.md + ↓ +3. فحص السكريبتات في المشروع + ↓ +4. قراءة التقارير التقنية + ↓ +5. البدء في التطوير +``` + +### لمسؤولي الأنظمة | For System Administrators + +``` +1. قراءة DEPLOYMENT.md + ↓ +2. فحص سكريبتات النشر + ↓ +3. إعداد البيئة (.env files) + ↓ +4. تشغيل الاختبارات + ↓ +5. النشر على الإنتاج +``` + +--- + +## 🔍 البحث السريع | Quick Search + +### أحتاج إلى... | I Need to... + +| الهدف | الملف المناسب | +|-------|---------------| +| 🚀 **البدء فوراً** | START-HERE.md + DEPLOY-NOW.sh | +| 📥 **تحميل المشروع** | GITHUB-DOWNLOAD.txt | +| 🌐 **النشر على VPS** | deploy.sh + DEPLOYMENT.md | +| 💻 **التطوير المحلي** | quick-start.sh | +| 🔧 **إعداد OpenWebUI** | setup-openwebui.sh + OPENWEBUI.md | +| 📊 **فهم المشروع** | README.md + STATUS.md | +| 🐛 **حل المشاكل** | QUICK_REFERENCE.md | +| 🔐 **تكوين البيئة** | .env.example | +| 📦 **حزمة كاملة** | mubsat-deployment.tar.gz | + +--- + +## 📊 الإحصائيات | Statistics + +``` +📄 إجمالي الملفات: 138 ملف +📦 سكريبتات النشر: 23 سكريبت +📖 الوثائق والأدلة: 36 دليل +⚙️ ملفات التكوين: 5 ملفات +🐍 سكريبتات Python: 8 ملفات +🌐 ملفات HTML: 3 ملفات +💾 الحجم الإجمالي: ~1.8 MB +📦 حجم الحزمة المضغوطة: 44 KB +``` + +--- + +## 💡 نصائح مهمة | Important Tips + +### ✅ أفضل الممارسات | Best Practices + +1. **ابدأ دائماً بـ START-HERE.md** - لفهم الأساسيات +2. **استخدم DEPLOY-NOW.sh** - للنشر السريع والموثوق +3. **اقرأ README.md بالكامل** - لفهم شامل للمشروع +4. **تحقق من .env.example** - قبل النشر +5. **استخدم mubsat-deployment.tar.gz** - للتوزيع السريع + +### ⚠️ تحذيرات | Warnings + +- ❌ لا تشارك ملفات `.env` الحقيقية +- ❌ لا تنشر بدون اختبار محلي أولاً +- ❌ لا تتجاهل الفحوصات الأمنية +- ✅ احتفظ بنسخ احتياطية دائماً +- ✅ اقرأ التوثيق قبل تعديل السكريبتات + +--- + +## 🆘 الحصول على المساعدة | Getting Help + +### الترتيب الموصى به | Recommended Order + +1. 📖 **ابحث في هذا الفهرس** - قد تجد الإجابة مباشرة +2. 📚 **اقرأ الوثائق ذات الصلة** - المذكورة في الفهرس +3. 🔍 **ابحث في GitHub Issues** - قد يكون هناك حل موجود +4. ❓ **افتح Issue جديد** - إذا لم تجد حلاً +5. 💬 **تواصل مع المجتمع** - في صفحة Discussions + +### روابط مفيدة | Useful Links + +- 🌐 **الموقع**: https://wasalstor-web.github.io/AI-Agent-Platform/ +- 🔗 **GitHub**: https://github.com/wasalstor-web/AI-Agent-Platform +- 📋 **Issues**: https://github.com/wasalstor-web/AI-Agent-Platform/issues + +--- + +
+ +## 🎉 مبروك! + +**الآن لديك خارطة كاملة لجميع ملفات المشروع!** + +**Now you have a complete map of all project files!** + +--- + +**صُنع بـ ❤️ للمجتمع العربي والعالمي** + +**Made with ❤️ for the Arabic and Global Community** + +
From 39676d4a551a67be043ea160208efdfdf951f439 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 6 Nov 2025 04:17:16 +0000 Subject: [PATCH 5/7] Address code review feedback: improve cross-platform compatibility and security Co-authored-by: wasalstor-web <230709381+wasalstor-web@users.noreply.github.com> --- DEPLOY-NOW.sh | 15 ++++++++----- build-package.sh | 47 +++++++++++++++++++++++++++------------ mubsat-deployment.tar.gz | Bin 44292 -> 45825 bytes 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/DEPLOY-NOW.sh b/DEPLOY-NOW.sh index 263146a..23f98ee 100755 --- a/DEPLOY-NOW.sh +++ b/DEPLOY-NOW.sh @@ -148,21 +148,21 @@ check_system_requirements() { print_step "Checking essential tools..." if check_command "bash"; then - BASH_VERSION_NUM=$(bash --version | head -n1 | grep -oP '\d+\.\d+' | head -1) + BASH_VERSION_NUM=$(bash --version | head -n1 | sed -n 's/.*version \([0-9]*\.[0-9]*\).*/\1/p') print_info "Bash version: $BASH_VERSION_NUM" else all_ok=false fi if check_command "git"; then - GIT_VERSION=$(git --version | grep -oP '\d+\.\d+\.\d+') + GIT_VERSION=$(git --version | sed -n 's/git version \([0-9]*\.[0-9]*\.[0-9]*\).*/\1/p') print_info "Git version: $GIT_VERSION" else print_warning "Git is recommended for version control" fi if check_command "python3"; then - PYTHON_VERSION=$(python3 --version | grep -oP '\d+\.\d+\.\d+') + PYTHON_VERSION=$(python3 --version | sed -n 's/Python \([0-9]*\.[0-9]*\.[0-9]*\).*/\1/p') print_info "Python version: $PYTHON_VERSION" else print_error "Python 3 is required!" @@ -170,7 +170,7 @@ check_system_requirements() { fi if check_command "pip3" || check_command "pip"; then - PIP_VERSION=$(pip3 --version 2>/dev/null || pip --version | grep -oP '\d+\.\d+\.\d+' | head -1) + PIP_VERSION=$(pip3 --version 2>/dev/null || pip --version | sed -n 's/pip \([0-9]*\.[0-9]*\.[0-9]*\).*/\1/p' | head -1) print_info "Pip version: $PIP_VERSION" else print_error "Pip is required!" @@ -359,7 +359,7 @@ deploy_vps() { # Test SSH connection print_step "Testing SSH connection..." - if ssh -o ConnectTimeout=5 -p "$VPS_PORT" "$VPS_USER@$VPS_HOST" "echo 'Connection successful'" 2>/dev/null; then + if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=yes -p "$VPS_PORT" "$VPS_USER@$VPS_HOST" "echo 'Connection successful'" 2>/dev/null; then print_success "SSH connection successful" else print_error "Cannot connect to VPS via SSH" @@ -367,6 +367,7 @@ deploy_vps() { echo " 1. VPS is running and accessible" echo " 2. SSH keys are configured" echo " 3. Firewall allows SSH connections" + echo " 4. Host key is verified (check ~/.ssh/known_hosts)" return 1 fi @@ -383,6 +384,10 @@ deploy_vps() { --exclude='__pycache__' \ --exclude='*.pyc' \ --exclude='.env' \ + --exclude='.env.*' \ + --exclude='*.bak' \ + --exclude='*.backup' \ + --exclude='.env.local' \ ./ "$VPS_USER@$VPS_HOST:/var/www/ai-agent-platform/" print_success "Files copied successfully" diff --git a/build-package.sh b/build-package.sh index dd7a814..6668d74 100755 --- a/build-package.sh +++ b/build-package.sh @@ -20,27 +20,46 @@ mkdir -p "$TEMP_DIR" echo "📦 Collecting essential files..." -# Copy essential deployment scripts +# Define file lists +DEPLOYMENT_SCRIPTS=( + "DEPLOY-NOW.sh" + "deploy.sh" + "smart-deploy.sh" + "quick-start.sh" + "autonomous-deploy.sh" +) + +DOCUMENTATION=( + "START-HERE.md" + "README.md" + "DEPLOYMENT.md" + "GITHUB-DOWNLOAD.txt" + "QUICK-START.md" +) + +CONFIG_FILES=( + ".env.example" + "requirements.txt" + ".gitignore" +) + +# Copy deployment scripts echo " ✓ Deployment scripts" -cp DEPLOY-NOW.sh "$TEMP_DIR/" 2>/dev/null || true -cp deploy.sh "$TEMP_DIR/" 2>/dev/null || true -cp smart-deploy.sh "$TEMP_DIR/" 2>/dev/null || true -cp quick-start.sh "$TEMP_DIR/" 2>/dev/null || true -cp autonomous-deploy.sh "$TEMP_DIR/" 2>/dev/null || true +for file in "${DEPLOYMENT_SCRIPTS[@]}"; do + cp "$file" "$TEMP_DIR/" 2>/dev/null || true +done # Copy documentation echo " ✓ Documentation" -cp START-HERE.md "$TEMP_DIR/" 2>/dev/null || true -cp README.md "$TEMP_DIR/" 2>/dev/null || true -cp DEPLOYMENT.md "$TEMP_DIR/" 2>/dev/null || true -cp GITHUB-DOWNLOAD.txt "$TEMP_DIR/" 2>/dev/null || true -cp QUICK-START.md "$TEMP_DIR/" 2>/dev/null || true +for file in "${DOCUMENTATION[@]}"; do + cp "$file" "$TEMP_DIR/" 2>/dev/null || true +done # Copy configuration files echo " ✓ Configuration files" -cp .env.example "$TEMP_DIR/" 2>/dev/null || true -cp requirements.txt "$TEMP_DIR/" 2>/dev/null || true -cp .gitignore "$TEMP_DIR/" 2>/dev/null || true +for file in "${CONFIG_FILES[@]}"; do + cp "$file" "$TEMP_DIR/" 2>/dev/null || true +done # Copy API directory if it exists if [ -d "api" ]; then diff --git a/mubsat-deployment.tar.gz b/mubsat-deployment.tar.gz index 2875a59181d009fd319452b5a990d1eee94cc26c..56688ce4f0f9d40636fed0b5a64fe6aef9d7bbd9 100644 GIT binary patch literal 45825 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

{?s`Sjaic?3A9+^GG4YCzN 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

S_ppLxo29er#S9S{&|`}Twv?UnYpu9 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 YpIP|#|5^4H&3qBPGH=R&NP>g>2Vo#_Jpcdz literal 44292 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 ows`%>s*8>(WrO!F4ww3?W<8zBrJfMALwYTX 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 gYq4jV=K7hY0rIXMzWr7o?u2U*S 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 IdjKE<0O~Fa8vp Date: Thu, 6 Nov 2025 04:43:16 +0000 Subject: [PATCH 6/7] Add API server connection feature with connect-api-server.sh and update DEPLOY-NOW.sh Co-authored-by: wasalstor-web <230709381+wasalstor-web@users.noreply.github.com> --- API-CONNECTION-GUIDE.md | 336 ++++++++++++++++++++++++++++++++++++++++ DEPLOY-NOW.sh | 41 ++++- README.md | 5 + START-HERE.md | 7 + connect-api-server.sh | 219 ++++++++++++++++++++++++++ 5 files changed, 602 insertions(+), 6 deletions(-) create mode 100644 API-CONNECTION-GUIDE.md create mode 100755 connect-api-server.sh diff --git a/API-CONNECTION-GUIDE.md b/API-CONNECTION-GUIDE.md new file mode 100644 index 0000000..1493055 --- /dev/null +++ b/API-CONNECTION-GUIDE.md @@ -0,0 +1,336 @@ +# 🌐 دليل الاتصال بخادم API | API Connection Guide + +> **دليل سريع للوصول لخادم API والواجهات والنماذج** +> +> **Quick guide for accessing API server, interfaces, and models** + +--- + +## 🚀 البدء السريع | Quick Start + +### الطريقة الأسهل | Easiest Way + +```bash +# استخدم DEPLOY-NOW مع خيار --api +# Use DEPLOY-NOW with --api option +bash DEPLOY-NOW.sh --api +``` + +أو | Or: + +```bash +# استخدم السكريبت المخصص مباشرة +# Use the dedicated script directly +bash connect-api-server.sh +``` + +--- + +## 📋 ماذا يوفر؟ | What Does It Provide? + +### 1. الوصول للواجهات | Access to Interfaces + +يوفر الوصول لـ | Provides access to: + +- **الواجهة الرئيسية** | Main Interface (`index.html`) +- **عرض OpenWebUI** | OpenWebUI Demo (`openwebui-demo.html`) +- **لوحة التحكم** | Dashboard Template (`openwebui-dashboard-template.html`) + +### 2. عرض النماذج | View Models + +يعرض جميع النماذج المتاحة | Shows all available models: + +- ✅ GPT-3.5 Turbo (OpenAI) +- ✅ GPT-4 (OpenAI) +- ✅ Claude 3 (Anthropic) +- ✅ LLaMA 3 (Meta) +- ✅ Qwen Arabic (Alibaba) +- ✅ AraBERT (AUB) +- ✅ Mistral (Mistral AI) +- ✅ DeepSeek Coder (DeepSeek) + +### 3. اختبار API | Test API + +يتيح لك اختبار الـ API مباشرة | Allows you to test the API directly: + +- إرسال طلبات بالعربية | Send Arabic requests +- إرسال طلبات بالإنجليزية | Send English requests +- اختبار النماذج المختلفة | Test different models + +--- + +## 🎯 خيارات الاستخدام | Usage Options + +### الخيار 1: من خلال DEPLOY-NOW.sh + +```bash +# تشغيل تفاعلي | Interactive mode +bash DEPLOY-NOW.sh + +# ثم اختر | Then choose: +# 4) خادم API والواجهات | API Server & Interfaces +``` + +أو مباشرة | Or directly: + +```bash +bash DEPLOY-NOW.sh --api +``` + +### الخيار 2: السكريبت المخصص + +```bash +# الاتصال بخادم محلي | Connect to local server +bash connect-api-server.sh + +# الاتصال بخادم بعيد | Connect to remote server +bash connect-api-server.sh http://your-server:5000 +``` + +--- + +## 📊 واجهة السكريبت | Script Interface + +عند تشغيل السكريبت، ستحصل على قائمة تفاعلية | When running the script, you get an interactive menu: + +``` +🎯 قائمة الواجهات | Interface Menu + +1) الوصول للواجهات | Access Web Interfaces + فتح الواجهات التفاعلية + +2) عرض النماذج | View Models + عرض جميع النماذج المتاحة + +3) اختبار API | Test API + إرسال طلب تجريبي + +4) تشغيل خادم API | Start API Server + تشغيل خادم API محلياً + +5) خروج | Exit +``` + +--- + +## 🔧 تشغيل خادم API محلياً | Starting API Server Locally + +### الطريقة 1: من خلال connect-api-server.sh + +```bash +bash connect-api-server.sh +# اختر الخيار 4 | Choose option 4 +``` + +### الطريقة 2: مباشرة + +```bash +cd api +python3 server.py +``` + +سيعمل الخادم على | Server will run on: +``` +http://0.0.0.0:5000 +``` + +--- + +## 🌐 نقاط النهاية المتاحة | Available Endpoints + +### 1. فحص الصحة | Health Check +```bash +GET http://localhost:5000/api/health +``` + +**Response:** +```json +{ + "status": "healthy", + "timestamp": "2025-11-06T04:00:00", + "service": "AI Agent Platform API" +} +``` + +### 2. حالة API | API Status +```bash +GET http://localhost:5000/api/status +``` + +**Response:** +```json +{ + "status": "operational", + "models": [...], + "timestamp": "2025-11-06T04:00:00" +} +``` + +### 3. قائمة النماذج | List Models +```bash +GET http://localhost:5000/api/models +``` + +**Response:** +```json +{ + "models": [ + { + "id": "gpt-3.5-turbo", + "name": "GPT-3.5 Turbo", + "provider": "OpenAI", + "type": "general" + }, + ... + ] +} +``` + +### 4. معالجة الأوامر | Process Commands +```bash +POST http://localhost:5000/api/process +Content-Type: application/json + +{ + "command": "مرحباً", + "context": { + "model": "qwen-arabic", + "language": "ar" + } +} +``` + +**Response:** +```json +{ + "success": true, + "response": "مرحباً! أنا qwen-arabic وأنا هنا لمساعدتك...", + "model": "qwen-arabic", + "timestamp": "2025-11-06T04:00:00" +} +``` + +--- + +## 🔍 اختبار سريع | Quick Test + +### اختبار الاتصال | Test Connection + +```bash +curl http://localhost:5000/api/health +``` + +### اختبار بالعربية | Test in Arabic + +```bash +curl -X POST http://localhost:5000/api/process \ + -H "Content-Type: application/json" \ + -d '{ + "command": "مرحباً", + "context": { + "model": "qwen-arabic", + "language": "ar" + } + }' +``` + +### اختبار بالإنجليزية | Test in English + +```bash +curl -X POST http://localhost:5000/api/process \ + -H "Content-Type: application/json" \ + -d '{ + "command": "Hello", + "context": { + "model": "gpt-3.5-turbo", + "language": "en" + } + }' +``` + +--- + +## 🔒 الأمان | Security + +### المتطلبات الأساسية | Basic Requirements + +- ✅ الخادم يعمل على `0.0.0.0` لقبول الاتصالات الخارجية +- ✅ استخدم HTTPS في بيئة الإنتاج +- ✅ أضف مصادقة (Authentication) للإنتاج +- ✅ استخدم CORS بحذر + +--- + +## ❓ حل المشاكل | Troubleshooting + +### المشكلة: لا يمكن الاتصال بالخادم + +```bash +# تحقق من أن الخادم يعمل | Check if server is running +curl http://localhost:5000/api/health + +# تحقق من المنفذ | Check if port is open +netstat -tuln | grep 5000 + +# تحقق من الجدار الناري | Check firewall +sudo ufw status +``` + +### المشكلة: الخادم لا يبدأ + +```bash +# تحقق من تثبيت المتطلبات | Check requirements installed +pip3 install -r requirements.txt + +# تحقق من Python | Check Python version +python3 --version + +# شغّل مع debug | Run with debug +cd api && python3 server.py +``` + +### المشكلة: الواجهات لا تفتح + +```bash +# افتح يدوياً | Open manually +firefox index.html +# أو | or +google-chrome index.html +# أو | or +open index.html # macOS +``` + +--- + +## 📚 المزيد من التوثيق | More Documentation + +- 📖 [README.md](README.md) - الدليل الكامل +- 🚀 [START-HERE.md](START-HERE.md) - البدء السريع +- 🌐 [DEPLOYMENT.md](DEPLOYMENT.md) - دليل النشر +- 📋 [DOCUMENTATION-INDEX.md](DOCUMENTATION-INDEX.md) - فهرس شامل + +--- + +## 💡 نصائح | Tips + +### للمطورين | For Developers + +- استخدم `--api` للتطوير السريع +- راقب السجلات في وحدة التحكم +- استخدم Postman أو curl لاختبار الـ API + +### للمستخدمين | For Users + +- استخدم الواجهات التفاعلية لسهولة الاستخدام +- جرب النماذج المختلفة لإيجاد الأفضل +- احفظ عنوان URL للخادم للوصول السريع + +--- + +

+ +**صُنع بـ ❤️ للمجتمع العربي والعالمي** + +**Made with ❤️ for the Arabic and Global Community** + +
diff --git a/DEPLOY-NOW.sh b/DEPLOY-NOW.sh index 23f98ee..c240285 100755 --- a/DEPLOY-NOW.sh +++ b/DEPLOY-NOW.sh @@ -101,6 +101,7 @@ ${CYAN}Options:${NC} --local Deploy locally only --vps Deploy to VPS server --github Deploy to GitHub Pages + --api API server & interfaces only --help Show this help message ${CYAN}Examples:${NC} @@ -108,6 +109,7 @@ ${CYAN}Examples:${NC} bash DEPLOY-NOW.sh --auto # Automatic deployment bash DEPLOY-NOW.sh --local # Local deployment only bash DEPLOY-NOW.sh --vps # VPS deployment + bash DEPLOY-NOW.sh --api # API & interfaces access ${CYAN}Environment Variables:${NC} VPS_HOST VPS server hostname or IP @@ -453,16 +455,19 @@ show_deployment_menu() { echo " 3) ${PURPLE}نشر على GitHub Pages${NC} | GitHub Pages" echo " نشر موقع ثابت Deploy static website" echo "" - echo " 4) ${YELLOW}نشر كامل${NC} | Full Deployment" + echo " 4) ${CYAN}خادم API والواجهات${NC} | API Server & Interfaces" + echo " الوصول للنماذج والواجهات Access models and interfaces" + echo "" + echo " 5) ${YELLOW}نشر كامل${NC} | Full Deployment" echo " نشر على جميع المنصات Deploy to all platforms" echo "" - echo " 5) ${WHITE}اختبار النظام${NC} | System Test" + echo " 6) ${WHITE}اختبار النظام${NC} | System Test" echo " اختبار البيئة فقط Test environment only" echo "" - echo " 6) ${RED}خروج${NC} | Exit" + echo " 7) ${RED}خروج${NC} | Exit" echo "" - read -p "$(echo -e ${CYAN}Enter your choice [1-6]:${NC} )" choice + read -p "$(echo -e ${CYAN}Enter your choice [1-7]:${NC} )" choice case $choice in 1) @@ -475,6 +480,17 @@ show_deployment_menu() { deploy_github_pages ;; 4) + # API Server & Interfaces + if [ -f "connect-api-server.sh" ]; then + chmod +x connect-api-server.sh + ./connect-api-server.sh + else + print_error "connect-api-server.sh not found!" + print_info "Running API server directly..." + deploy_local + fi + ;; + 5) print_info "Starting full deployment..." deploy_local & LOCAL_PID=$! @@ -483,12 +499,12 @@ show_deployment_menu() { deploy_github_pages print_success "Full deployment complete!" ;; - 5) + 6) check_system_requirements setup_environment print_success "System test complete!" ;; - 6) + 7) print_info "Exiting..." exit 0 ;; @@ -526,6 +542,10 @@ main() { TARGET="github" shift ;; + --api) + TARGET="api" + shift + ;; *) print_error "Unknown option: $1" echo "Use --help for usage information" @@ -555,6 +575,15 @@ main() { github) deploy_github_pages ;; + api) + if [ -f "connect-api-server.sh" ]; then + chmod +x connect-api-server.sh + ./connect-api-server.sh + else + print_error "connect-api-server.sh not found!" + exit 1 + fi + ;; esac else # Interactive mode diff --git a/README.md b/README.md index a0a3c70..3eb9442 100644 --- a/README.md +++ b/README.md @@ -29,10 +29,12 @@ bash DEPLOY-NOW.sh |------|------|-------|-------------| | 📄 [**START-HERE.md**](START-HERE.md) | 3.7KB | **ابدأ من هنا** - أبسط دليل للبدء السريع | **Start Here** - Simplest quick start guide | | 🚀 [**DEPLOY-NOW.sh**](DEPLOY-NOW.sh) | 18KB | السكريبت الرئيسي للنشر التلقائي | Main automatic deployment script | +| 🌐 [**connect-api-server.sh**](connect-api-server.sh) | 6KB | **جديد!** اتصال بخادم API والواجهات | **New!** API server & interfaces connection | | 📖 [**GITHUB-DOWNLOAD.txt**](GITHUB-DOWNLOAD.txt) | 13KB | 5 طرق لتحميل المشروع | 5 ways to download the project | | 📦 [**mubsat-deployment.tar.gz**](mubsat-deployment.tar.gz) | 44KB | حزمة مضغوطة بكل شيء | Compressed package with everything | | 📘 **README.md** | (هذا الملف) | الدليل الكامل للمشروع | Complete project guide | | 🌐 [**DEPLOYMENT.md**](DEPLOYMENT.md) | 12KB | دليل النشر التفصيلي | Detailed deployment guide | +| 🔌 [**API-CONNECTION-GUIDE.md**](API-CONNECTION-GUIDE.md) | 6KB | **جديد!** دليل الاتصال بـ API | **New!** API connection guide | ### 🎯 الخيارات السريعة | Quick Options @@ -46,6 +48,9 @@ bash DEPLOY-NOW.sh --vps # نشر على GitHub Pages bash DEPLOY-NOW.sh --github +# الوصول لخادم API والواجهات | API server & interfaces access +bash DEPLOY-NOW.sh --api + # نشر تلقائي كامل | Full automatic deployment bash DEPLOY-NOW.sh --auto ``` diff --git a/START-HERE.md b/START-HERE.md index 1c371d3..10709cb 100644 --- a/START-HERE.md +++ b/START-HERE.md @@ -49,6 +49,13 @@ cd AI-Agent-Platform bash DEPLOY-NOW.sh ``` +### للوصول لخادم API والواجهات | For API Server & Interfaces Access +```bash +bash DEPLOY-NOW.sh --api +# أو | or +bash connect-api-server.sh +``` + ### للإعداد اليدوي | For Manual Setup ```bash # 1. تثبيت المتطلبات | Install Requirements diff --git a/connect-api-server.sh b/connect-api-server.sh new file mode 100755 index 0000000..0e0a448 --- /dev/null +++ b/connect-api-server.sh @@ -0,0 +1,219 @@ +#!/bin/bash + +############################################################################# +# API Server Connection Script +# سكريبت الاتصال بخادم API +# +# Description: Connects to API server and provides access to interfaces and models +# يوصل بخادم API ويوفر الوصول للواجهات والنماذج فقط +# +# Usage: bash connect-api-server.sh [server_url] +############################################################################# + +set -e + +# Color codes +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +CYAN='\033[0;36m' +NC='\033[0m' + +# Default API server URL +API_SERVER="${1:-http://localhost:5000}" + +print_header() { + echo "" + echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo -e "${CYAN} $1${NC}" + echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo "" +} + +print_success() { + echo -e "${GREEN}✓${NC} $1" +} + +print_error() { + echo -e "${RED}✗${NC} $1" +} + +print_info() { + echo -e "${BLUE}ℹ${NC} $1" +} + +print_header "🌐 الاتصال بخادم API | Connecting to API Server" + +echo -e "${CYAN}API Server:${NC} $API_SERVER" +echo "" + +# Test API connection +print_info "Testing connection to API server..." +if curl -s -f "${API_SERVER}/api/health" > /dev/null 2>&1; then + print_success "Connected to API server successfully!" +else + print_error "Cannot connect to API server" + print_info "Please ensure:" + echo " 1. API server is running" + echo " 2. URL is correct: $API_SERVER" + echo " 3. Firewall allows connections" + echo "" + print_info "To start API server locally:" + echo " cd api && python3 server.py" + exit 1 +fi + +# Get API status +print_info "Fetching API status..." +STATUS_RESPONSE=$(curl -s "${API_SERVER}/api/status") +echo "$STATUS_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$STATUS_RESPONSE" +echo "" + +# Get available models +print_header "📋 النماذج المتوفرة | Available Models" +MODELS_RESPONSE=$(curl -s "${API_SERVER}/api/models") +echo "$MODELS_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$MODELS_RESPONSE" +echo "" + +# Interactive menu +print_header "🎯 قائمة الواجهات | Interface Menu" + +echo -e "${CYAN}Select an option | اختر خياراً:${NC}" +echo "" +echo " 1) ${GREEN}الوصول للواجهات${NC} | Access Web Interfaces" +echo " فتح الواجهات التفاعلية" +echo "" +echo " 2) ${BLUE}عرض النماذج${NC} | View Models" +echo " عرض جميع النماذج المتاحة" +echo "" +echo " 3) ${YELLOW}اختبار API${NC} | Test API" +echo " إرسال طلب تجريبي" +echo "" +echo " 4) ${CYAN}تشغيل خادم API${NC} | Start API Server" +echo " تشغيل خادم API محلياً" +echo "" +echo " 5) ${RED}خروج${NC} | Exit" +echo "" + +read -p "$(echo -e ${CYAN}Enter choice [1-5]:${NC} )" choice + +case $choice in + 1) + print_info "Opening web interfaces..." + echo "" + print_success "Available interfaces:" + echo "" + echo " 🌐 Main Interface:" + echo " file://$(pwd)/index.html" + echo "" + echo " 📊 OpenWebUI Demo:" + echo " file://$(pwd)/openwebui-demo.html" + echo "" + echo " 🎛️ Dashboard Template:" + echo " file://$(pwd)/openwebui-dashboard-template.html" + echo "" + + # Try to open in browser + if command -v xdg-open &> /dev/null; then + xdg-open "index.html" 2>/dev/null & + print_success "Opening main interface in browser..." + elif command -v open &> /dev/null; then + open "index.html" 2>/dev/null & + print_success "Opening main interface in browser..." + else + print_info "Please open the HTML files manually in your browser" + fi + ;; + + 2) + print_info "Fetching detailed models information..." + echo "" + + MODELS=$(curl -s "${API_SERVER}/api/models" | python3 -c " +import sys, json +try: + data = json.load(sys.stdin) + models = data.get('models', []) + + print('╔═══════════════════════════════════════════════════════════════╗') + print('║ Available AI Models ║') + print('╚═══════════════════════════════════════════════════════════════╝') + print() + + for i, model in enumerate(models, 1): + print(f'{i}. {model[\"name\"]}') + print(f' ID: {model[\"id\"]}') + print(f' Provider: {model[\"provider\"]}') + print(f' Type: {model[\"type\"]}') + print() +except: + print('Error parsing models') +" 2>/dev/null) + + echo "$MODELS" + ;; + + 3) + print_info "Testing API with sample request..." + echo "" + + # Test in Arabic + print_info "Testing Arabic request..." + curl -s -X POST "${API_SERVER}/api/process" \ + -H "Content-Type: application/json" \ + -d '{ + "command": "مرحباً", + "context": { + "model": "qwen-arabic", + "language": "ar" + } + }' | python3 -m json.tool 2>/dev/null + + echo "" + + # Test in English + print_info "Testing English request..." + curl -s -X POST "${API_SERVER}/api/process" \ + -H "Content-Type: application/json" \ + -d '{ + "command": "Hello", + "context": { + "model": "gpt-3.5-turbo", + "language": "en" + } + }' | python3 -m json.tool 2>/dev/null + + echo "" + print_success "API test completed!" + ;; + + 4) + print_info "Starting API server..." + echo "" + + if [ -f "api/server.py" ]; then + print_success "Found API server file" + print_info "Starting server at http://0.0.0.0:5000" + echo "" + print_info "Press Ctrl+C to stop" + echo "" + cd api && python3 server.py + else + print_error "API server file not found!" + print_info "Please ensure you are in the project root directory" + fi + ;; + + 5) + print_info "Exiting..." + exit 0 + ;; + + *) + print_error "Invalid choice!" + ;; +esac + +echo "" +print_success "Done!" From 9eca913d4190ada54a795d70cf30d84d7673018c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 9 Nov 2025 20:37:54 +0000 Subject: [PATCH 7/7] Address code review feedback: improve error handling, security, and validation Co-authored-by: wasalstor-web <230709381+wasalstor-web@users.noreply.github.com> --- DEPLOY-NOW.sh | 27 +++++++++++++++++---------- build-package.sh | 12 +++++++++--- connect-api-server.sh | 20 +++++++++++++++++--- mubsat-deployment.tar.gz | Bin 45825 -> 46412 bytes 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/DEPLOY-NOW.sh b/DEPLOY-NOW.sh index c240285..e7b042f 100755 --- a/DEPLOY-NOW.sh +++ b/DEPLOY-NOW.sh @@ -19,7 +19,7 @@ # --help : Show help message ############################################################################# -set -e # Exit on error +set -euo pipefail # Stricter error handling: exit on error, undefined variable, or failed pipeline # Version VERSION="1.0.0" @@ -264,13 +264,16 @@ EOF # Install Python dependencies print_step "Installing Python dependencies..." if [ -f "requirements.txt" ]; then - pip3 install -q -r requirements.txt 2>&1 | grep -v "already satisfied" || { - print_warning "Some packages may already be installed" - } + if ! pip3 install -q -r requirements.txt 2>&1 | grep -v "already satisfied"; then + print_warning "Some packages may already be installed or installation had warnings" + fi print_success "Python dependencies installed" else print_warning "requirements.txt not found, installing basic packages" - pip3 install -q flask flask-cors requests + if ! pip3 install -q flask flask-cors requests; then + print_error "Failed to install basic packages" + exit 1 + fi print_success "Basic packages installed" fi @@ -361,10 +364,12 @@ deploy_vps() { # Test SSH connection print_step "Testing SSH connection..." - if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=yes -p "$VPS_PORT" "$VPS_USER@$VPS_HOST" "echo 'Connection successful'" 2>/dev/null; then + SSH_ERROR=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=yes -p "$VPS_PORT" "$VPS_USER@$VPS_HOST" "echo 'Connection successful'" 2>&1) + if [ $? -eq 0 ]; then print_success "SSH connection successful" else print_error "Cannot connect to VPS via SSH" + echo "$SSH_ERROR" print_info "Please check:" echo " 1. VPS is running and accessible" echo " 2. SSH keys are configured" @@ -380,7 +385,7 @@ deploy_vps() { ./deploy.sh else print_step "Copying files to VPS..." - rsync -avz -e "ssh -p $VPS_PORT" \ + rsync -avz -e "ssh -p \"$VPS_PORT\"" \ --exclude='.git' \ --exclude='node_modules' \ --exclude='__pycache__' \ @@ -492,12 +497,14 @@ show_deployment_menu() { ;; 5) print_info "Starting full deployment..." - deploy_local & - LOCAL_PID=$! - sleep 2 + print_warning "Note: Local server will not be started in background for full deployment" + print_info "Deploy locally separately if you need a running server" + # deploy_local runs a blocking server, so we skip it in full deployment + # Users should run it separately if they need a local server deploy_vps deploy_github_pages print_success "Full deployment complete!" + print_info "To start local server: bash DEPLOY-NOW.sh --local" ;; 6) check_system_requirements diff --git a/build-package.sh b/build-package.sh index 6668d74..dfd7609 100755 --- a/build-package.sh +++ b/build-package.sh @@ -46,19 +46,25 @@ CONFIG_FILES=( # Copy deployment scripts echo " ✓ Deployment scripts" for file in "${DEPLOYMENT_SCRIPTS[@]}"; do - cp "$file" "$TEMP_DIR/" 2>/dev/null || true + if ! cp "$file" "$TEMP_DIR/" 2>/dev/null; then + echo " Warning: $file not found, skipping..." + fi done # Copy documentation echo " ✓ Documentation" for file in "${DOCUMENTATION[@]}"; do - cp "$file" "$TEMP_DIR/" 2>/dev/null || true + if ! cp "$file" "$TEMP_DIR/" 2>/dev/null; then + echo " Warning: $file not found, skipping..." + fi done # Copy configuration files echo " ✓ Configuration files" for file in "${CONFIG_FILES[@]}"; do - cp "$file" "$TEMP_DIR/" 2>/dev/null || true + if ! cp "$file" "$TEMP_DIR/" 2>/dev/null; then + echo " Warning: $file not found, skipping..." + fi done # Copy API directory if it exists diff --git a/connect-api-server.sh b/connect-api-server.sh index 0e0a448..900e7a6 100755 --- a/connect-api-server.sh +++ b/connect-api-server.sh @@ -10,7 +10,7 @@ # Usage: bash connect-api-server.sh [server_url] ############################################################################# -set -e +# Note: Not using set -e to allow explicit error handling for commands that may fail gracefully # Color codes RED='\033[0;31m' @@ -23,6 +23,17 @@ NC='\033[0m' # Default API server URL API_SERVER="${1:-http://localhost:5000}" +# Validate API server URL for basic security +validate_url() { + local url="$1" + # Allow localhost, 127.0.0.1, or any IP for flexibility in deployment scenarios + # In production, consider restricting to specific trusted domains + if [[ ! "$url" =~ ^https?:// ]]; then + print_error "Invalid API server URL. Must start with http:// or https://" + exit 1 + fi +} + print_header() { echo "" echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" @@ -43,6 +54,9 @@ print_info() { echo -e "${BLUE}ℹ${NC} $1" } +# Validate the API server URL +validate_url "$API_SERVER" + print_header "🌐 الاتصال بخادم API | Connecting to API Server" echo -e "${CYAN}API Server:${NC} $API_SERVER" @@ -147,8 +161,8 @@ try: print(f' Provider: {model[\"provider\"]}') print(f' Type: {model[\"type\"]}') print() -except: - print('Error parsing models') +except Exception as e: + print(f'Error parsing models: {e}') " 2>/dev/null) echo "$MODELS" diff --git a/mubsat-deployment.tar.gz b/mubsat-deployment.tar.gz index 56688ce4f0f9d40636fed0b5a64fe6aef9d7bbd9..32c53dfd586494b9dacd90ead7d412a8eae079b6 100644 GIT binary patch delta 46194 zcmV(vK0+1F6rI3upha}5Nkse)tv$He!JvlowDSro_bCWZZ)r-)2X|j5* zI$6CmHGPiEoIPph&UHLra|t=;b}Wm!gW*Q?{~!I7E1F}Ru@0PG{*%+Q7k`oe>-cc_ zd(=IkZrSOc$s8!)OP4MVkpJYx+1crY{HLd8tLI4dOsGkG{-4W#&$ZiR&(yr@#ArKz zw(FD2_+x^&^pg(t{0Z_q&$f)cZZ3jUo3`r(;EU^{6lIw;6V^xY5In35g)h+bO1OT=2E}o zS^-xJH(4XY2a4!-Jf%hyK3!Lth&qvT0MK@zKj389vJVTzvf79lHwnJSF*{7K@7X+dj*$&%S`@Z9srpq%WK)h>91H#UW$;PIsb#z*qPPUt- z*4EO^pBz%Fq`BIz(M)z>D|P*UWOLi_d^bitYt|`sJW8)CVe`(Zr947%j%zom7Z=^e zdLxvb=!ae0ZiAd8A+qlc-c357K}5iCfeOKaI=R$yY|En_8^Qi;a(h8IksPHYT7d{< zyG%{fo**szkZ7>MyLRV2S;nw+e0swN$eRg{qVN&HP-&Z*wcpY9nc`D_D`N9eF8UiR z)pxtK5CHhCf!PptuZ-#$_6h2t8==so6!M}C*qqN7B}hhn0+O`>39mi5j8W4?SMzCyHdv;+@5mE-j6f6$-EuOY(Gu54=a=A-4lUkX+)=O zJJhZaGH6f*Yr&YId7vtSt3hu;kUzoaoCtZ9LGeHv#MHywTnO`L3M&2xG#(|MBD+&(>v~e^#3<;_`k(W!y8!;Iciel?`?mM6f2U0PclrzF>Hr1yRQ4$uO0klqUz@+E;^&u}!N0W%xe zjU%NT5DN3%10uicJ&Mr`-d_OI zL!kFj@Am}e`?~)b(uzR$U=0ZI2tj{0aBp$7^f-c6UHAx2YPxzFn9F^Ss_|G zTnqXF*3hEh!F(IOO$R+$nJj}_YibsD!%hQ-2(192Yu)#TF?p+{S=SjXhL7;=g7@}3 zP@x2aV{~wT2AXve zFa>sz&qG_*A2cHyxAQGz7W$x;!T!=Nenq+*|JDBre=|`&ga1Hk`JG?~X;!xoPH9-d z1}&TRA%yZp#wNKxq@!3%TC-5n+mU2SKmWJFiZmgWx(t*}#yr&j5{*6gy@ zczUp_HLo9Pu8ym6z$@+=rr~!3`!OgI5egBDEkv6Xg#>Yh1T!qC5JHBG>Hwlx)Mbkv ziYSh07BhK?m{I0iDxAz<8ofcA@M|F7M1Mv|TIW5)>v}$INAYL@#O1q2)2DiI6yMHE zfk_a5$?+M{Z-S>ZntUU(a0k`{$p`VE-vyy$rYv$0pe&|PTDDJ&U`p^YUFs{`qfKTo zM}s7%`{`ijh<Q`sna6^b@12GfY#>7pc1mKy=oMd%jXd3I17}`pf>sV( zbLjFBDwbvnXO8WW2gh|9E+gPnEMQo~Tyb50IEmQfV^7Bhp2-eMuT5|qDhH9x3A&Rg zs}5q16C~CH^5(ePV~~bED#K!6SV%#@D;rw~NVWz6!frY+bc%7IvhGl8VI>R7?>Y<} zXQ!#eAdV(ZPINNQPZ665@EVC6PmQ~Z5oWwh$5Ld7 z^mP+r*f4b$HD=bV@{B!5VzbhCIcFb#Z1M+X7QVuT+kmqP}I7yF)Doz8ivsgk?XUpQ9K4=?dUnVCuehivT#6n zc0P^;86B&D?3vG3%j|y;W8nGAJhE#7lDFN?{ydhoitPM{pZ|3n)7JE|({j$@jA{7! zUv;W_DRurgJv;Tw`QPjK{OUardJeV#SiM4ik*5)*EwFDjR43DDvgo#g7G@4JS=Xcf ze8=A_y`3-4g##B@VX%bbUE3^wEtrs|m)2cl->_=rt&xyxJP59_T{3~{K0($uwpP}! zHb#zJW}PrrCLTxS#<*H98F(D1s!J=IV7|&EUn!S`#(S0g92&R68<-5K^agAxuMmwZ z7KO)YU)K#+>X;za*_oLM;^Rh|%N;QjSr}6r_013Jo7?%#`fsn*8(ZpsT77GIeJQ^K zRujx7%W%k>ZxX`;E&}-FmDPGclIWj{I?)sZ0OmjVSYVCYd3**u z0ub~X(*F$&3>x5ycu|gU%ta*tq`z$+P?ZBxo#&eZv)^`9j(tK#9FmM5+HBd(6RFf< zY1?*Q6pZs^{$0kZ2@)26EU+oxdx!Von3 zX|^D(B^PcG30c@FA=~VPhxd+4VIt2splsz#*Fwl78Vt&k!uaFA6A^tzEAIURWcrk_ zqwGhh?rJ(IR|Yjwhgfy50M|h z&F>-vjHtND2>Wc7ml7;tkz2RO%|IM-u%AY$%prg8d@?zQfqiNb=vL5+7<-s9181q< zadPah>Un08~3e8EG4T&?d=8q#DNryvSR#~>1l-p)6CpGbl)hUY7 z@k|yaDbyp036Ay&Ce;@5C1_EDmSLpuz$uHA6ylMjxVCAcC`nUuG=2*t7qktwa{L+< zJPJuYWzOP77D>?rBPa=@J+O%WGhaP?v1iJ~#K zWlG^(k+Vt$7-_&)5ox5c4huQ5*d+o0DeM@4b9nrb!G{wCA{pb(Fe1sA?Wct%1I7Mx z$0%zUA2_bP?`mzZceax|Y++#*i)eF1x7mbpPMo43krLxwNn$(U)ww2eVT?DxVncr} zL5h{kmB`#&q=k?cX9Ptt5XgSR&?D9XS#8>V#~@~82<`~w?n?n?;eq5nNLOVK6YGNn zHEr=@5bqR8$_~c>Fh5ONBmju|fpLLh0yX?xcnnO5AlAWmfk3t*@TtZyzZDJ?vI=%w z?>XBEkIOt6{Q?84d(7a0OL_t_{jz_o1SC*TYvy#@qPd^DsB?->xq{KRWw-5)cUDEf z;q|}i*-NSOzl*cgi@((WUdJb1|9izBFro{gc9DgZ61xvj3hx6fMaHYaUFUfWiJwaa zAMT01!!Q(`3m&}y0PH{5i+5Of`ey-x*S>=v&+!sEL`e^FNW-RW(i%iNkotc~}tH=n1Ay;h8tO*cSUNEW8ZroApz;JDg4P)0u*E*(el-Ag#+Y5ZW2M-t@5EdXH z0o1WQG>hFDIn+GO^x(M!_N$WO$*Y$ErXr+7F?c~Uh}R|A-4OnorO94a)Tx)-tS`;y zKdw$sZ&&B0C)@elmCbtnYSe!;1x+8-S6A0R6m64p)6>xQ{_3@Q1a%QwHm+@MtV(S& z(6;!|f`sc5v|L>bez)^L+f|!WBftI0)47e!_21MNx75w`^{shjtkBd6{Dpvkoq{T3 zH{V}qEUS(6YnzMp?dr~vQdIDa)j8CQN^W)i3OhxeS1NwnNgKNoV8VZN{lfT18(Hr^Q}c|<5}#xB~iQ&Vtnrm6bpEiNC>tAX5_~|Dvh^G<2o5%u8ptN#vA$K4jG$N z$SvYiN=h0CE|3k2w;X@SBYjnz^vAId7!(4OxE6pO9=-gx+y9&YKX&u#;?XIVLx5$c z9rLp<@)fXPkjO(l5r^7wMd3_fX6xwXAMcIeU5JZcuFJp#yY%SgfBgQWcn&o;T{_^H zxZON@`G-IK*N^`?N~j@1cK<5_8`{#Nmv>*B4A(2)_vi82+V6iL8zT)!g_=GlaSP&Q zfHSZ%!RrqWpH%gNNki7irUUCFy~pguw!86DLrekjVhJmoR9Ga?1_#s3ScO!dz&e+B z)dJHIK?Dhj2rC<+nz6)Qj^efDAZInid(!OcBDQ+-1#u<6q7a376ZXW@b@r&+P4*2s z;A*VFbj%KicMO00qBk@QOQ4Bg{=*^;;Kr;ObOdMF{xvwmFjK`3FQTCTl$~m244~5` zl!&!rw-Mzs77?Ocyhhl_aD>RpSq_xuiF`)K7bZ0SZOC{@$C{GXn`20 z%R53>%(Ft#%E>bh@QoP|obf5e_J~QMD8l(9<{iYUy%c||_<&Pziw^)+iIK4pVf|^) zG*jUPgyck2Ro__j;-o<4@?{vqT8$9Ox8 zB?nlAW$%|(l2j&lZ_pv`B=d=q`<7QB#qHX7;U8~B#Y>QJS&5y=2Z;;1D*sh>x@k>` zjC-IW$uWNugx>I7t;w!YC+H1n=5*INpm^(VWyvG#A79z%`Ym>5ffz$@UcXwo+?W?- zDwmjsMPqs&EOeWUVIP_Q7xK^B+cnS8nzXjF^VY}t!nRiWRNc8y{5W5edzct_=uURB zwg-L~o%2D^zFA*e*jilPo`l_(0!;D-V20I_2Azx5F=v)#SRK~ z5&6|AWjpZTe0`&S^~3u6*H+Y(t6TLen+tfCwcOT+>CvDu!!;Q~W0{JRB)T|A5v0e=)r)tcN^kGJo`pyAoqEj@siT$~SK=l90(4*x@!SNr2RlQE zRCw&>`E1Hd^b=AYptT}OCJH3{0=*vY)d|w^_;nsOf86S2B-DI`(+bx~HPpx8{i^6C zCg}|!qBt!BxY9N(BM1wm)h7(emhD4$lA?dKHgNSy7-$6l^a;ip*`P7YEAMK2ze6@y zXXxYkJ36n$$MZ<{#6CW%@Kusjj_~n(qHG^8OgaaNVp+*Dr{d$-km2UI5gc3$m?ql} zvs*9-$u8Y&{XVRp2N9}a_swE3|@@H#I>*HVk%@G<=ww9_V$EjZ3Q+SZ;@}a&g2birrkwYJ>PL7!TSo+74}g(Dm^xd@A8% z()fc=z|za{dV=Kx3_j;drJaKW zI@~#M3eVa()TQH&2D{Pr$|n(5rKE$EfrXv^=kmV~6#QdBl{A$}_W+G7m+Cn30Zz7m zK;e`DYGmGrK!cn?q6QG+i}dt7Y1kdNNqOIH$0uILaoC*%R*)2dxM6`h8ajW=)4Xsn z9_d_&3IRVkuUjbn6U*hqL$&mdy7Sij;3!kv8&(*K;l&AQ=L9;MPOlgXW2-8046z$B z36l^qGrHH3v($IKunDEiL_iM zA!fWB!vTqNI>GON97oPP_3nS0lbN+<_Yemo?y;j<;QcNj$qvW8^4<6nW{t+xz$a zD6T6}7@oiTQ)~o@E}^@11>7-Ygb=nSTofei<8gdMskLB?2?nk5zyaz{tx8KfjfZArjUD?+5aZR-(#y%Hx!mVH%&RC*#$HrykMX%CD z6$X^jrS*;m^saW>u#;m^jD#VT#Vs-Pjn^=q0fjfZHk6KSfN+0QU;>BA8lH4=eEj=6 z)8o@g%Al2|g3J5;-%#us3hb9=?2s6pYawgd- zZ|3>fW18n<bC)AjWcTk4#NXWlyavtELtUKaQD2IFC57+%w
W7Dfw)Y^P2)hfMKfdla_690kZ3 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 delta 45581 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