#!/bin/bash # AUTONOMOUS DEPLOYMENT RECOVERY SCRIPT # This script will be executed if GitHub Actions fails set -e echo "🔧 AUTONOMOUS RECOVERY MODE" echo "This script deploys directly without GitHub Actions" # Configuration HF_SPACE="Kraft102/widgetdc-cortex" DEPLOY_DIR="hf-deploy-manual" echo "📋 Configuration:" echo " Space: $HF_SPACE" echo " Deploy Dir: $DEPLOY_DIR" # Step 1: Check HF CLI echo "" echo "1️⃣ Checking HuggingFace CLI..." if ! command -v huggingface-cli &> /dev/null; then echo "Installing HuggingFace CLI..." pip install -U "huggingface_hub[cli]" fi echo "✅ HF CLI ready" # Step 2: Login (requires HF_TOKEN env var) echo "" echo "2️⃣ Logging in to HuggingFace..." if [ -z "$HF_TOKEN" ]; then echo "❌ ERROR: HF_TOKEN environment variable not set" echo "Set it with: export HF_TOKEN='your_token_here'" exit 1 fi huggingface-cli login --token "$HF_TOKEN" echo "✅ Logged in" # Step 3: Prepare files echo "" echo "3️⃣ Preparing deployment files..." rm -rf "$DEPLOY_DIR" mkdir -p "$DEPLOY_DIR" # Copy backend mkdir -p "$DEPLOY_DIR/apps/backend" cp -r apps/backend/src "$DEPLOY_DIR/apps/backend/" cp -r apps/backend/prisma "$DEPLOY_DIR/apps/backend/" cp apps/backend/package.json "$DEPLOY_DIR/apps/backend/" cp apps/backend/tsconfig.json "$DEPLOY_DIR/apps/backend/" [ -f apps/backend/package-lock.json ] && cp apps/backend/package-lock.json "$DEPLOY_DIR/apps/backend/" # Copy packages mkdir -p "$DEPLOY_DIR/packages/domain-types" cp -r packages/domain-types/src "$DEPLOY_DIR/packages/domain-types/" cp packages/domain-types/package.json "$DEPLOY_DIR/packages/domain-types/" cp packages/domain-types/tsconfig.json "$DEPLOY_DIR/packages/domain-types/" mkdir -p "$DEPLOY_DIR/packages/mcp-types" cp -r packages/mcp-types/src "$DEPLOY_DIR/packages/mcp-types/" cp packages/mcp-types/package.json "$DEPLOY_DIR/packages/mcp-types/" cp packages/mcp-types/tsconfig.json "$DEPLOY_DIR/packages/mcp-types/" # Copy root config cp package.json "$DEPLOY_DIR/" [ -f package-lock.json ] && cp package-lock.json "$DEPLOY_DIR/" [ -f tsconfig.json ] && cp tsconfig.json "$DEPLOY_DIR/" # Copy Dockerfile if [ -f scripts/hf-backend.dockerfile ]; then cp scripts/hf-backend.dockerfile "$DEPLOY_DIR/Dockerfile" elif [ -f Dockerfile ]; then cp Dockerfile "$DEPLOY_DIR/" fi # Clean unwanted files find "$DEPLOY_DIR" -name "*.pdf" -delete 2>/dev/null || true find "$DEPLOY_DIR" -name "*.db*" -delete 2>/dev/null || true find "$DEPLOY_DIR" -name "*.sqlite" -delete 2>/dev/null || true find "$DEPLOY_DIR" -name "*.log" -delete 2>/dev/null || true find "$DEPLOY_DIR" -name "node_modules" -type d -exec rm -rf {} + 2>/dev/null || true find "$DEPLOY_DIR" -name "dist" -type d -exec rm -rf {} + 2>/dev/null || true # Create README cat > "$DEPLOY_DIR/README.md" <<'EOF' --- title: WidgeTDC Cortex emoji: 🧠 colorFrom: blue colorTo: purple sdk: docker app_port: 7860 hardware: t4-small --- # WidgeTDC Cortex - Neural Backend Enterprise AI backend with GPU-accelerated embeddings and MCP agents. ## Features - GPU-accelerated embeddings via sentence-transformers - MCP (Model Context Protocol) tool execution - Real-time WebSocket communication - Health monitoring at /health endpoint EOF echo "✅ Files prepared" # Step 4: Create Space (if not exists) echo "" echo "4️⃣ Creating Space (if needed)..." huggingface-cli repo create "$HF_SPACE" --type space --space_sdk docker || echo "Space already exists" echo "✅ Space ready" # Step 5: Upload echo "" echo "5️⃣ Uploading to HuggingFace..." huggingface-cli upload \ "$HF_SPACE" \ "$DEPLOY_DIR" \ . \ --repo-type=space \ --commit-message="Manual deployment from recovery script - $(date +%Y-%m-%d_%H-%M-%S)" echo "" echo "✅ ✅ ✅ DEPLOYMENT SUCCESSFUL! ✅ ✅ ✅" echo "" echo "📍 Space URL: https://huggingface.co/spaces/$HF_SPACE" echo "🔗 API Endpoint: https://$(echo $HF_SPACE | tr '/' '-').hf.space/" echo "" echo "⏳ Space is now building Docker image (5-10 minutes)" echo "🔑 Don't forget to add environment variables in Space settings!" echo "" echo "🎉 Deployment complete!"