#!/usr/bin/env bash set -euo pipefail branch="${1:-main}" remote_dir="${BOSS_REMOTE_DIR:-/home/ubuntu/boss}" remote_repo="${BOSS_REMOTE_REPO:-https://git.hyzq.site/krisolo/boss.git}" deploy_mode="${BOSS_CLOUD_DEPLOY_MODE:-auto}" export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}" export AG_SERVER_SKILL="${AG_SERVER_SKILL:-$CODEX_HOME/skills/ai-glasses-server-debug}" export AG_SERVER="${AG_SERVER:-$AG_SERVER_SKILL/scripts/server_ssh.sh}" if [[ ! -x "$AG_SERVER" ]]; then echo "AI Glasses server wrapper not found: $AG_SERVER" >&2 exit 1 fi remote_script=$(cat </dev/null 2>&1 || ! command -v npm >/dev/null 2>&1; then sudo apt-get update sudo apt-get install -y nodejs npm fi npm install npm run build PORT=43210 BOSS_DATA_FILE=.boss-data/cloud-store.json BOSS_BASE_PATH=/boss ./scripts/server_start.sh sudo python3 - <<'PY' from pathlib import Path path = Path("/etc/nginx/sites-enabled/hybrid_updates.conf") text = path.read_text() if "location /boss/" not in text: block = """ location = /boss { return 302 /boss/; } location /boss/ { proxy_pass http://127.0.0.1:43210; proxy_http_version 1.1; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto \$scheme; proxy_read_timeout 3600s; proxy_send_timeout 3600s; proxy_buffering off; } """ marker = " location / {\n" text = text.replace(marker, block + marker, 1) path.write_text(text) PY sudo nginx -t sudo systemctl reload nginx echo "__BOSS_DEPLOY_OK__" echo "mode=node" BOSS_BASE_PATH=/boss ./scripts/server_status.sh EOF ) payload="$(printf '%s' "$remote_script" | base64 | tr -d '\n')" "$AG_SERVER" exec "set -euo pipefail; printf '%s' '$payload' | base64 -d | bash"