From 36195a21350507f91c82061b8b16a2f479248edc Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Sat, 23 May 2026 07:44:21 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20osvauco-opax-boot.sh=20=E2=80=94=20roadm?= =?UTF-8?q?ap=20NESTE,=20gh=20i=20AUTH,=20enkel=20OPAX-ping,=20session-log?= =?UTF-8?q?g=20med=20gjort/ul=C3=B8st?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/osvauco-opax-boot.sh | 289 ++++++++++++++++++++--------------- 1 file changed, 162 insertions(+), 127 deletions(-) diff --git a/scripts/osvauco-opax-boot.sh b/scripts/osvauco-opax-boot.sh index c600fa0..b1ef77f 100644 --- a/scripts/osvauco-opax-boot.sh +++ b/scripts/osvauco-opax-boot.sh @@ -1,167 +1,202 @@ #!/usr/bin/env bash -# OSVauco OPAX boot — med session-logg, GitHub-sjekk og fargekodet statuslinje +# ============================================================================= +# 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 +# ============================================================================= -set -euo pipefail - -PROJECT_ID="propane-will-491900-m5" -REGION="us-central1" -ACCOUNT="chris.christiansen@vauco.no" -REPO="OSVauco" -BRANCH="main" -# Phase 2 LIVE: pinger produksjonsdomene, ikke intern Cloud Run-URL -PING_URL="https://opax.vauco.no/ping" - -LOG_FILE="$HOME/OSVauco/docs/OSVAUCO_OPAX_SESSION_LOG.md" -DOCS_DIR="$HOME/OSVauco/docs" +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)" -BLUE="$(tput setaf 4 || true)" +CYAN="$(tput setaf 6 || true)" BOLD="$(tput bold || true)" -RESET="$(tput sgr0 || 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')" -step() { - local label="$1" - printf " ${BLUE}›${RESET} %-45s" "$label" -} +clear -done_ok() { - echo " ${GREEN}[OK]${RESET}" -} +cat << 'BANNER' -done_info() { - echo " ${BLUE}[INFO]${RESET}" -} + ============================================================ + 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" -done_fail() { - echo " ${RED}[FAIL]${RESET}" -} -# Fjern Cloud Shell-velkomst ved å rydde skjermen før banneret -clear || true +# ============================================================================= +# SECTION 1: AUTH +# ============================================================================= +printf "${BOLD}${CYAN} [ AUTH ]${NC}\n" -echo "============================================================" -echo " ${BOLD}O S V A U C O · O P A X${RESET}" -echo "============================================================" -echo - -echo "Boot-script for OPAX-MCP (Cloud Run)" -echo - -echo " Project : $PROJECT_ID" -echo " Region : $REGION" -echo " Account : $ACCOUNT" -echo " Repo : $REPO ($BRANCH)" -echo " Session : $SESSION_ID" -echo " HUB_URL : $PING_URL" -echo - -# Vis siste NESTE OPPGAVE fra session-logg -if [ -f "$LOG_FILE" ]; then - LAST_LINE=$(tail -n 1 "$LOG_FILE" || true) - # Prøv å finne siste NESTE OPPGAVE-blokk - NESTE=$(awk '/^## NESTE OPPGAVE/{found=1; next} found && /^## /{found=0} found{print}' "$LOG_FILE" | tail -5 || true) +# .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 - LAST_LINE="(ingen tidligere sesjoner logget ennå)" - NESTE="" + printf " $FAIL .env MISSING ${YELLOW}cp .env.example .env${NC}\n" fi -echo " Forrige : $LAST_LINE" -if [ -n "$NESTE" ]; then - echo - echo " ${GREEN}${BOLD}▶ NESTE OPPGAVE:${RESET}" - echo "$NESTE" | while IFS= read -r line; do - echo " ${GREEN}$line${RESET}" - done +# 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 - echo " ${YELLOW}⚠️ Ingen NESTE OPPGAVE funnet — sjekk docs/VAUCO_OS_ROADMAP.md${RESET}" -fi -echo - -# Vis enkel changelog-oversikt for docs/ -step "Siste endringer i docs/ (git log)" -if command -v git >/dev/null 2>&1 && [ -d "$DOCS_DIR" ]; then - git -C "$HOME/OSVauco" log -5 --pretty='format:%C(yellow)%h%Creset %Cgreen%cd%Creset %C(bold)%s%Creset' --date=short -- docs 2>/dev/null || true - echo - done_info -else - echo " (git eller docs/-mappe ikke tilgjengelig)" - done_info + printf " $FAIL gcloud ${YELLOW}gcloud auth login --no-launch-browser${NC}\n" fi -echo - -OPAX_OK=0 -GH_OK=0 - -# 1) Healthcheck mot OPAX-MCP produksjonsdomene -step "Tester OPAX-MCP på: $PING_URL" -if curl -fsS "$PING_URL" >/dev/null 2>&1; then - OPAX_OK=1 - done_ok - echo " ${GREEN}✅ OPAX-MCP: OK — https://opax.vauco.no${RESET}" +# 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 - done_fail - echo " ${RED}❌ OPAX-MCP: FEIL – sjekk Cloud Run / DNS${RESET}" + printf " $WARN ADC ${YELLOW}gcloud auth application-default login${NC}\n" fi -echo +# 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 -# 2) GitHub CLI-status -step "Sjekker GitHub-innlogging (gh auth status)" -if command -v gh >/dev/null 2>&1; then - if gh auth status >/dev/null 2>&1; then - GH_OK=1 - done_ok +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 - done_info - echo " ${YELLOW}ℹ️ gh ikke logget inn — kjør 'gh auth login' senere hvis du trenger GitHub-CLI.${RESET}" + printf " ${DIM}(ingen åpne punkt under ## NEXT i ROADMAP)${NC}\n" fi else - done_info - echo " ${YELLOW}ℹ️ 'gh' ikke installert i denne shellen.${RESET}" + printf " ${WARN} ROADMAP ikke funnet: %s\n" "$ROADMAP" fi -echo - -mkdir -p "$(dirname "$LOG_FILE")" - -# 3) Session-logg -step "Logger sesjon til OSVAUCO_OPAX_SESSION_LOG.md" -SESSION_DESC="${OSV_OPAX_SESSION_DESC:-"(ingen beskrivelse)"}" - -echo "$SESSION_ID | $PROJECT_ID | $REGION | $ACCOUNT | OPAX=$OPAX_OK | GH=$GH_OK | $SESSION_DESC" >> "$LOG_FILE" && done_ok || done_fail - -echo " Logg : ${GREEN}oppdatert${RESET} → $LOG_FILE" - -echo - -# 4) Oppsummering -if [ "$OPAX_OK" -eq 1 ] && [ "$GH_OK" -eq 1 ]; then - echo " ${GREEN}▶ OSVAUCO/OPAX READY — opax.vauco.no + GitHub verifisert.${RESET}" -elif [ "$OPAX_OK" -eq 1 ]; then - echo " ${GREEN}▶ OSVAUCO/OPAX READY — opax.vauco.no OK. GitHub CLI ikke aktiv.${RESET}" -else - echo " ${RED}▶ OSVAUCO/OPAX PARTIAL — sjekk status over før du jobber videre.${RESET}" +# 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 -echo +printf "\n" -# 5) Valgfri Gemini-oppstart -step "Starte Gemini-CLI i ~/OSVauco?" -read -r -p " [y/N]: " ANSWER + +# ============================================================================= +# 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) - done_ok - echo "[OSVauco/OPAX] Starter Gemini-CLI..." - cd "$HOME/OSVauco" + echo + echo " [OSVauco] Starter Gemini-CLI fra ~/OSVauco..." + cd "$OSVAUCO_DIR" gemini ;; *) - done_info - echo "[OSVauco/OPAX] OK, holder deg i shell. Kjør 'gemini' når du vil inn i TUI." + echo + echo " [OSVauco] OK — kjør 'gemini' når du vil. God session! 🚀" ;; esac