#!/data/data/com.termux/files/usr/bin/bash # ============================================================================== # Google Antigravity CLI Setup & Unlock Script for Termux (CyberVoid Style) # Run: curl -fsSL https://agy.pages.dev/sh | bash # ============================================================================== set -e # ── 1. ANSI Color & UI Helpers (CyberVoid Style) ───────────────────────────── ESC="\033" CLR_RESET="${ESC}[0m" CLR_BOLD="${ESC}[1m" CLR_CYAN="${ESC}[96m" CLR_GREEN="${ESC}[92m" CLR_YELLOW="${ESC}[93m" CLR_RED="${ESC}[91m" CLR_BLUE="${ESC}[94m" CLR_GRAY="${ESC}[90m" ui_box() { local text="$1" local width=44 local pad=$(( (width - ${#text}) / 2 )) echo -e "" echo -e " ${CLR_CYAN}╭$(printf '─%.0s' $(seq 1 $width))╮${CLR_RESET}" echo -e " ${CLR_CYAN}│${CLR_RESET}${CLR_BOLD}$(printf '%*s%s%*s' $pad '' "$text" $(( width - pad - ${#text} )) '')${CLR_RESET}${CLR_CYAN}│${CLR_RESET}" echo -e " ${CLR_CYAN}╰$(printf '─%.0s' $(seq 1 $width))╯${CLR_RESET}" } ui_status() { local msg="$1" local type="${2:-info}" case "$type" in ok|success) echo -e " ${CLR_GREEN}[✓] ${msg}${CLR_RESET}" ;; warn) echo -e " ${CLR_CYAN}[!] ${msg}${CLR_RESET}" ;; err|error) echo -e " ${CLR_RED}[✗] ${msg}${CLR_RESET}" ;; proc|load) echo -e " ${CLR_BLUE}[*] ${msg}${CLR_RESET}" ;; *) echo -e " ${CLR_CYAN}[+] ${msg}${CLR_RESET}" ;; esac } # ── 2. Environment & Termux Setup ──────────────────────────────────────────── ui_box "Google Antigravity CLI (Termux)" ui_status "Updating Termux packages & repositories..." "proc" pkg update -y >/dev/null 2>&1 || true pkg upgrade -y >/dev/null 2>&1 || true # ── 3. Verify & Install Prerequisites (Git, Node.js, Python) ───────────────── ui_status "Verifying Core Prerequisites (Git, Node.js, Python)..." "proc" for tool in git node python; do if ! command -v "$tool" >/dev/null 2>&1; then ui_status "Installing $tool..." "proc" case "$tool" in node) pkg install -y nodejs-lts >/dev/null 2>&1 || pkg install -y nodejs >/dev/null 2>&1 ;; git) pkg install -y git >/dev/null 2>&1 ;; python) pkg install -y python >/dev/null 2>&1 ;; esac else ui_status "$tool is ready" "ok" fi done # ── 4. Install Google Antigravity CLI ─────────────────────────────────────── ui_status "Installing Google Antigravity CLI (agy)..." "proc" if command -v agy >/dev/null 2>&1; then ui_status "agy is already installed" "ok" else if command -v npm >/dev/null 2>&1; then npm install -g @google/antigravity-cli --silent >/dev/null 2>&1 || true fi # Ensure npm global bin path is in PATH NPM_BIN="$(npm bin -g 2>/dev/null || echo "$PREFIX/bin")" if [[ ":$PATH:" != *":$NPM_BIN:"* ]]; then export PATH="$NPM_BIN:$PATH" fi if command -v agy >/dev/null 2>&1; then ui_status "agy installed successfully" "ok" else ui_status "agy environment prepared" "ok" fi fi # ── 5. Apply Universal Settings & Onboarding Bypass ───────────────────────── ui_status "Writing Universal Full-Access Settings (UTF-8)..." "proc" if [ -z "$EDITOR" ]; then export EDITOR="nano" if [ -f "$HOME/.bashrc" ]; then grep -q "export EDITOR=" "$HOME/.bashrc" || echo 'export EDITOR="nano"' >> "$HOME/.bashrc" fi fi CONFIG_DIRS=( "$HOME/.gemini/antigravity-cli" "$HOME/.gemini/antigravity" ) for CONFIG_DIR in "${CONFIG_DIRS[@]}"; do mkdir -p "$CONFIG_DIR" mkdir -p "$CONFIG_DIR/cache" cat << 'EOF' > "$CONFIG_DIR/settings.json" { "agentMode": "accept-edits", "allowNonWorkspaceAccess": true, "animationSpeed": "medium", "artifactReviewPolicy": "always-proceed", "autoApproveWorkspaceTrust": true, "colorScheme": "tokyo night", "theme": "tokyo night", "editor": "nano", "enableTelemetry": true, "model": "Gemini 3.6 Flash (High)", "nonWorkspaceAccess": true, "notifications": true, "renderingMode": "native terminal (inline)", "sandboxMode": false, "showActiveTasks": true, "showFeedbackSurvey": false, "showTips": true, "toolPermission": "always-proceed", "trustAllWorkspaces": true, "useAICredits": false, "verbosity": "high", "workspaceTrustPolicy": "always-trust", "trustedWorkspaces": [ "*", "/data/data/com.termux/files/home/*", "/sdcard/*" ] } EOF cat << 'EOF' > "$CONFIG_DIR/cache/onboarding.json" { "consumerOnboardingComplete": true, "enterpriseOnboardingComplete": true, "onboardingComplete": true, "themeSelected": true, "hasSeenThemePicker": true } EOF cat << 'EOF' > "$CONFIG_DIR/jetski_state.pbtxt" post_onboarding: { completed_steps: POST_ONBOARDING_STEP_TYPE_MANAGER_WELCOME completed_steps: POST_ONBOARDING_STEP_TYPE_USAGE_MODE completed_steps: POST_ONBOARDING_STEP_TYPE_AGENT_CONFIGURATION completed_steps: POST_ONBOARDING_STEP_TYPE_ADD_WORKSPACE } agent_onboarding_completed: AGENT_ONBOARDING_STATE_COMPLETED migrations: { key: 3 value: MIGRATION_STATUS_COMPLETED } EOF cp "$CONFIG_DIR/jetski_state.pbtxt" "$CONFIG_DIR/antigravity_state.pbtxt" 2>/dev/null || true done ui_status "Universal Full-Access & Onboarding Bypass configured" "ok" # ── 6. Launch Session ──────────────────────────────────────────────────────── clear if command -v agy >/dev/null 2>&1; then exec agy --dangerously-skip-permissions else ui_status "Termux setup completed. Type 'agy' to launch." "ok" fi