#!/usr/bin/env bash # ============================================================================= # boot.sh — OSVauco OPAX Terminal Boot Protocol v3 # Auto-runs on Cloud Shell startup via ~/.bashrc # Manual: source ~/OSVauco/scripts/boot.sh # ============================================================================= OSVAUCO_DIR="${HOME}/OSVauco" [[ $- != *i* ]] && return [[ ! -d "$OSVAUCO_DIR" ]] && return cd "$OSVAUCO_DIR" || return # Colors CYAN='\033[0;36m' GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' WHITE='\033[1;37m' DIM='\033[2m' BOLD='\033[1m' NC='\033[0m' OK="${GREEN}[OK]${NC}" WARN="${YELLOW}[!!]${NC}" FAIL="${RED}[XX]${NC}" INFO="${CYAN}[>>]${NC}" DOT="${DIM}[--]${NC}" clear printf "${CYAN}" echo " ___ _____ _ _ ___ _ _ ___ _____ " echo " / _ \| ___| | | | |/ _ \| | | |/ __|| _ | " echo " | | | | |___ | | | / /_\ \ | | | | | | | | " echo " | | | |___ | | | | | _ | | | | | | | | | " echo " | |_| |___| | \ \_/ / | | | |_| | |__ \ \_/ / " echo " \___/\____/ \___/\_| |_/\___/ \___| \___/ " printf "${NC}" printf "${DIM} -------------------------------------------------${NC}\n" printf " ${CYAN}OPAX${NC} ${DIM}Operator Platform // propane-will-491900-m5${NC}\n" printf "${DIM} -------------------------------------------------${NC}\n" printf " ${WHITE}BOOT${NC} ${DIM}$(date '+%Y-%m-%d %H:%M %Z')${NC}\n" printf "${DIM} -------------------------------------------------${NC}\n" echo "" # ============================================================================= # SECTION 1: AUTH # ============================================================================= printf "${BOLD}${CYAN} [ AUTH ]${NC}\n" if [[ -f "$OSVAUCO_DIR/.env" ]]; then source "$OSVAUCO_DIR/.env" printf " ${OK} .env loaded ${DIM}PROJECT_ID=${PROJECT_ID}${NC}\n" else printf " ${FAIL} .env MISSING ${YELLOW}Run: cp .env.example .env${NC}\n" return fi gcloud config set project "$PROJECT_ID" --quiet 2>/dev/null ACTIVE_PROJ=$(gcloud config get-value project 2>/dev/null) if [[ "$ACTIVE_PROJ" == "$PROJECT_ID" ]]; then printf " ${OK} gcloud project ${DIM}${ACTIVE_PROJ}${NC}\n" else printf " ${FAIL} project MISMATCH ${RED}got: ${ACTIVE_PROJ}${NC}\n" fi ACTIVE_ACCOUNT=$(gcloud config get-value account 2>/dev/null) if [[ -n "$ACTIVE_ACCOUNT" ]]; then printf " ${OK} gcloud account ${DIM}${ACTIVE_ACCOUNT}${NC}\n" else printf " ${FAIL} NO ACCOUNT ${YELLOW}Run: gcloud auth login${NC}\n" fi if gcloud auth application-default print-access-token >/dev/null 2>&1; then printf " ${OK} ADC token ${DIM}valid${NC}\n" else printf " ${WARN} ADC missing ${YELLOW}Run: gcloud auth application-default login${NC}\n" fi echo "" # ============================================================================= # SECTION 2: CLOUD RUN # ============================================================================= printf "${BOLD}${CYAN} [ CLOUD RUN ]${NC}\n" CR_LIST=$(gcloud run services list \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --format="value(name,status.url)" 2>/dev/null || echo "") if [[ -z "$CR_LIST" ]]; then printf " ${DOT} No services deployed ${DIM}(no cost)${NC}\n" else while IFS=$'\t' read -r NAME URL; do printf " ${OK} %-26s ${DIM}%s${NC}\n" "$NAME" "$URL" done <<< "$CR_LIST" fi echo "" # ============================================================================= # SECTION 3: MEMORY BANK # ============================================================================= printf "${BOLD}${CYAN} [ MEMORY BANK ]${NC} ${DIM}(\$0.0994/vCPU-hr -- continuous billing)${NC}\n" ENGINES=$(gcloud ai reasoning-engines list \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --format="value(name,displayName)" 2>/dev/null || echo "") if [[ -z "$ENGINES" ]]; then printf " ${OK} No active instances ${DIM}(no cost)${NC}\n" else ENGINE_COUNT=$(echo "$ENGINES" | grep -c . || true) printf " ${FAIL} ${RED}${BOLD}${ENGINE_COUNT} INSTANCE(S) RUNNING -- COSTS MONEY CONTINUOUSLY${NC}\n" while IFS=$'\t' read -r ENAME EDISPLAY; do SHORT=$(echo "$ENAME" | awk -F'/' '{print $NF}') printf " ${WARN} %-22s ${DIM}id: %s${NC}\n" "${EDISPLAY:-unnamed}" "$SHORT" done <<< "$ENGINES" printf " ${INFO} ${DIM}gcloud ai reasoning-engines delete ID --project=$PROJECT_ID --region=$REGION --quiet${NC}\n" fi echo "" # ============================================================================= # SECTION 4: AGENT RUNTIMES # ============================================================================= printf "${BOLD}${CYAN} [ AGENT RUNTIMES ]${NC}\n" AGENT_RUNTIMES=$(gcloud ai agent-engines list \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --format="value(name,displayName,state)" 2>/dev/null || echo "") if [[ -z "$AGENT_RUNTIMES" ]]; then printf " ${DOT} No agent runtimes ${DIM}(no cost)${NC}\n" else while IFS=$'\t' read -r ANAME ADISPLAY ASTATE; do SHORT=$(echo "$ANAME" | awk -F'/' '{print $NF}') if [[ "$ASTATE" == "ACTIVE" ]]; then printf " ${OK} %-24s ${GREEN}%-8s${NC} ${DIM}id: %s${NC}\n" "${ADISPLAY:-unnamed}" "$ASTATE" "$SHORT" else printf " ${WARN} %-24s ${YELLOW}%-8s${NC} ${DIM}id: %s${NC}\n" "${ADISPLAY:-unnamed}" "$ASTATE" "$SHORT" fi done <<< "$AGENT_RUNTIMES" fi echo "" # ============================================================================= # SECTION 5: RAG CORPORA # ============================================================================= printf "${BOLD}${CYAN} [ RAG CORPORA ]${NC} ${DIM}(not deleted by teardown)${NC}\n" RAG_LIST=$(gcloud ai rag-corpora list \ --project="${PROJECT_ID}" \ --region="${REGION}" \ --format="value(name,displayName)" 2>/dev/null || echo "") if [[ -z "$RAG_LIST" ]]; then printf " ${DOT} No RAG corpora found\n" else while IFS=$'\t' read -r RNAME RDISPLAY; do SHORT=$(echo "$RNAME" | awk -F'/' '{print $NF}') printf " ${OK} %-28s ${DIM}id: %s${NC}\n" "${RDISPLAY:-unnamed}" "$SHORT" done <<< "$RAG_LIST" fi echo "" # ============================================================================= # SECTION 6: GIT # ============================================================================= printf "${BOLD}${CYAN} [ GIT ]${NC}\n" git pull --quiet 2>/dev/null GIT_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") LAST_COMMIT=$(git log --oneline -1 2>/dev/null || echo "unknown") printf " ${OK} branch: ${WHITE}%-18s${NC} ${DIM}%s${NC}\n" "$GIT_BRANCH" "$LAST_COMMIT" echo "" # ============================================================================= # QUICK COMMANDS # ============================================================================= printf "${DIM} -------------------------------------------------${NC}\n" printf "${BOLD}${CYAN} QUICK COMMANDS${NC}\n" printf " ${DIM}authcheck${NC} bash infrastructure/00-authcheck.sh\n" printf " ${DIM}deploy ${NC} bash infrastructure/05-cloudrun-deploy.sh\n" printf " ${DIM}rag ${NC} bash infrastructure/07-rag-setup.sh\n" printf " ${DIM}memory ${NC} bash infrastructure/08-memorybank-setup.sh\n" printf " ${DIM}cost ${NC} bash infrastructure/09-cost-check.sh\n" printf " ${DIM}teardown ${NC} bash infrastructure/03-teardown.sh\n" printf " ${DIM}gemini ${NC} gemini ${DIM}# OPAX-MCP TUI${NC}\n" printf "${DIM} -------------------------------------------------${NC}\n" echo ""