#!/usr/bin/env bash # ============================================================================= # osvauco-opax-boot.sh — OSVauco OPAX session-starter # Manuell bruk: bash ~/OSVauco/scripts/osvauco-opax-boot.sh # IKKE i ~/.bashrc — det er boot.sh sin jobb # ============================================================================= OSVAUCO_DIR="$HOME/OSVauco" ROADMAP="$OSVAUCO_DIR/docs/VAUCO_OS_ROADMAP.md" TODO="$OSVAUCO_DIR/docs/TODO.md" SESSION_LOG="$OSVAUCO_DIR/docs/OSVAUCO_OPAX_SESSION_LOG.md" GREEN="$(tput setaf 2 || true)" RED="$(tput setaf 1 || true)" YELLOW="$(tput setaf 3 || true)" CYAN="$(tput setaf 6 || true)" BOLD="$(tput bold || true)" DIM="\033[2m" NC="$(tput sgr0 || true)" OK="${GREEN}[OK]${NC}" WARN="${YELLOW}[!!]${NC}" FAIL="${RED}[XX]${NC}" SESSION_ID="$(date '+%Y%m%d-%H%M%S')" clear cat << 'BANNER' ============================================================ O S V A U C O · O P A X S E S S I O N ============================================================ BANNER printf " Session : ${CYAN}${BOLD}%s${NC}\n" "$SESSION_ID" printf " Project : %s\n" "${PROJECT_ID:-propane-will-491900-m5}" printf " $(date '+%Y-%m-%d %H:%M %Z')\n" printf " ----------------------------------------------------\n\n" # ============================================================================= # SECTION 1: AUTH # ============================================================================= printf "${BOLD}${CYAN} [ AUTH ]${NC}\n" # .env if [[ -f "$OSVAUCO_DIR/.env" ]]; then set -o allexport; source "$OSVAUCO_DIR/.env"; set +o allexport printf " $OK .env ${DIM}PROJECT_ID=${PROJECT_ID}${NC}\n" else printf " $FAIL .env MISSING ${YELLOW}cp .env.example .env${NC}\n" fi # gcloud if gcloud auth print-access-token >/dev/null 2>&1; then ACCOUNT=$(gcloud auth list --filter=status:ACTIVE --format="value(account)" 2>/dev/null) printf " $OK gcloud ${DIM}%s${NC}\n" "$ACCOUNT" else printf " $FAIL gcloud ${YELLOW}gcloud auth login --no-launch-browser${NC}\n" fi # ADC if gcloud auth application-default print-access-token >/dev/null 2>&1; then printf " $OK ADC ${DIM}Application Default Credentials OK${NC}\n" else printf " $WARN ADC ${YELLOW}gcloud auth application-default login${NC}\n" fi # GitHub CLI if command -v gh >/dev/null 2>&1 && gh auth status >/dev/null 2>&1; then GH_USER=$(gh api user --jq .login 2>/dev/null || echo "ukjent") printf " $OK GitHub CLI ${DIM}gh → %s${NC}\n" "$GH_USER" else printf " $WARN GitHub CLI ${YELLOW}gh auth login (valgfritt)${NC}\n" fi printf "\n" # ============================================================================= # SECTION 2: OPAX HEALTH # ============================================================================= printf "${BOLD}${CYAN} [ OPAX HEALTH ]${NC}\n" PING_URL="https://opax.vauco.no/ping" if curl -fsS --max-time 5 "$PING_URL" >/dev/null 2>&1; then printf " $OK opax.vauco.no ${DIM}%s${NC}\n" "$PING_URL" else printf " $FAIL opax.vauco.no ${RED}NEDE — sjekk Cloud Run / DNS${NC}\n" fi printf "\n" # ============================================================================= # SECTION 3: NESTE OPPGAVE (fra ROADMAP + TODO) # ============================================================================= printf "${BOLD}${CYAN} [ NESTE OPPGAVE ]${NC}\n" # Hent første ugjorte oppgave under ## NEXT fra ROADMAP if [[ -f "$ROADMAP" ]]; then NEXT_ROADMAP=$(awk '/^## NEXT/{f=1;next} f && /^## /{f=0} f && /^- \[ \]/{print;exit}' "$ROADMAP") if [[ -n "$NEXT_ROADMAP" ]]; then printf " ${GREEN}${BOLD}▶ ROADMAP NEXT:${NC}\n" printf " ${GREEN}%s${NC}\n" "$NEXT_ROADMAP" else printf " ${DIM}(ingen åpne punkt under ## NEXT i ROADMAP)${NC}\n" fi else printf " ${WARN} ROADMAP ikke funnet: %s\n" "$ROADMAP" fi # Hent åpne punkter fra TODO.md (maks 3) if [[ -f "$TODO" ]]; then TODO_ITEMS=$(grep -m3 '^- \[ \]' "$TODO" 2>/dev/null || true) if [[ -n "$TODO_ITEMS" ]]; then printf " ${YELLOW}${BOLD}▶ TODO:${NC}\n" while IFS= read -r line; do printf " ${YELLOW}%s${NC}\n" "$line" done <<< "$TODO_ITEMS" fi fi printf "\n" # ============================================================================= # SECTION 4: SESSION-LOGG # Ber deg beskrive hva du skal gjøre — logger ved start og spør ved slutt # ============================================================================= mkdir -p "$(dirname "$SESSION_LOG")" printf "${BOLD}${CYAN} [ SESSION ]${NC}\n" printf " Hva skal du jobbe med i dag?\n" printf " ${DIM}(skriv kort beskrivelse, trykk Enter)${NC}\n > " read -r SESSION_DESC [[ -z "$SESSION_DESC" ]] && SESSION_DESC="(ingen beskrivelse)" # Skriv session-header til logg cat >> "$SESSION_LOG" << EOF --- ## Session: $SESSION_ID - Tid : $(date '+%Y-%m-%d %H:%M %Z') - Bruker : ${ACCOUNT:-ukjent} - OPAX : $(curl -fsS --max-time 3 "https://opax.vauco.no/ping" >/dev/null 2>&1 && echo OK || echo NEDE) - Mål : $SESSION_DESC EOF printf " $OK Logg startet ${DIM}→ docs/OSVAUCO_OPAX_SESSION_LOG.md${NC}\n\n" # ============================================================================= # QUICK REFERENCE # ============================================================================= printf "${DIM} ---------------------------------------------------${NC}\n" printf " ${CYAN}${BOLD}HURTIGKOMMANDOER${NC}\n" printf " ${DIM}gemini${NC} → Gemini TUI (OPAX-MCP)\n" printf " ${DIM}cost-audit${NC} → bash scripts/cost-audit.sh\n" printf " ${DIM}roadmap${NC} → cat docs/VAUCO_OS_ROADMAP.md\n" printf " ${DIM}session-log${NC} → cat docs/OSVAUCO_OPAX_SESSION_LOG.md\n" printf "${DIM} ---------------------------------------------------${NC}\n\n" # ============================================================================= # AVSLUTT-HOOK (kjøres når du er ferdig — skriv: opax-logg-slutt) # ============================================================================= opax-logg-slutt() { printf "\n ${BOLD}${CYAN}Sesjonslogg — avslutt${NC}\n" printf " Hva ble gjort? (LØST / ULØST)\n > " read -r DONE_DESC [[ -z "$DONE_DESC" ]] && DONE_DESC="(ingen notat)" printf " Uløste problemer? (Enter for ingen)\n > " read -r UNSOLVED [[ -z "$UNSOLVED" ]] && UNSOLVED="ingen" cat >> "$SESSION_LOG" << EOF - Gjort : $DONE_DESC - Uløst : $UNSOLVED - Slutt : $(date '+%Y-%m-%d %H:%M %Z') EOF printf " ${GREEN}[OK]${NC} Logg oppdatert → docs/OSVAUCO_OPAX_SESSION_LOG.md\n\n" } export -f opax-logg-slutt 2>/dev/null || true printf " ${DIM}Når du er ferdig → skriv: ${NC}${BOLD}opax-logg-slutt${NC}\n\n" # ============================================================================= # VALGFRI GEMINI-START # ============================================================================= read -r -p " Starte Gemini-CLI nå? [y/N]: " ANSWER case "$ANSWER" in y|Y) echo echo " [OSVauco] Starter Gemini-CLI fra ~/OSVauco..." cd "$OSVAUCO_DIR" gemini ;; *) echo echo " [OSVauco] OK — kjør 'gemini' når du vil. God session! 🚀" ;; esac