From bcee0cbd30ffc0a69fe7d6f0a27072fb76a81dca Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Thu, 21 May 2026 01:49:12 +0200 Subject: [PATCH] Add OSVauco startup and health-check scripts plus .gemini/GEMINI.md tuned to current OPAX-MCP project --- .gemini/GEMINI.md | 13 +++++ scripts/osvauco-health-check.sh | 73 ++++++++++++++++++++++++++++ scripts/osvauco-startup.sh | 86 +++++++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+) create mode 100644 .gemini/GEMINI.md create mode 100644 scripts/osvauco-health-check.sh create mode 100644 scripts/osvauco-startup.sh diff --git a/.gemini/GEMINI.md b/.gemini/GEMINI.md new file mode 100644 index 0000000..19475b4 --- /dev/null +++ b/.gemini/GEMINI.md @@ -0,0 +1,13 @@ +--- +TITLE OSVauco · Gemini bootstrap +--- + +Du kjører nå OSVauco‑flow for OPAX‑MCP i prosjekt `propane-will-491900-m5` (region `us-central1`). + +Ved oppstart: +- Bekreft kort prosjekt, region og account. +- Les `docs/AGENT_RULEBOOK.md` og `docs/LEARNINGS.md` og oppsummer de viktigste reglene for denne økten. +- Finn neste konkrete oppgave i `TODO.md` eller `docs/PLANBOARD.md` hvis de finnes. +- Skriv en kort plan (3–5 setninger) for hva du skal gjøre i denne sesjonen, hvilke filer som røres, og hvordan vi verifiserer resultatet. + +Ikke foreslå shell‑kommandoer eller endre filer direkte før Chris eksplisitt ber om det. Rapportér først funn og plan. diff --git a/scripts/osvauco-health-check.sh b/scripts/osvauco-health-check.sh new file mode 100644 index 0000000..a09b5ca --- /dev/null +++ b/scripts/osvauco-health-check.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +# OSVauco — Periodisk health check for lokal arbeidsflate +# Kjør manuelt fra ~/OSVauco eller via cron/systemd + +set -u + +LOG=/tmp/osvauco-health.log +TS=$(date -Iseconds) +REPO=~/OSVauco +ALERT=0 +ALERT_MSGS=() + +echo "[$TS] === HEALTH CHECK START ===" >> "$LOG" + +# --- 1. Git working tree --- +cd "$REPO" 2>/dev/null || { echo "[$TS] ❌ REPO not found: $REPO" >> "$LOG"; exit 1; } +DIRTY=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ') +BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown") +LAST_SHA=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown") +AHEAD=$(git rev-list --count "@{u}..HEAD" 2>/dev/null || echo "0") +echo "[$TS] git: branch=$BRANCH dirty=$DIRTY ahead=$AHEAD last=$LAST_SHA" >> "$LOG" + +if [ "$DIRTY" -gt 50 ]; then + ALERT=1 + ALERT_MSGS+=("$DIRTY uncommitted changes (>50, mulig merge gone wrong)") +fi + +# --- 2. Disk --- +FREE=$(df -h "$REPO" 2>/dev/null | awk 'NR==2 {print $4}') +FREE_BYTES=$(df -B1 "$REPO" 2>/dev/null | awk 'NR==2 {print $4}') +echo "[$TS] disk: free=$FREE" >> "$LOG" + +# Mindre enn 500MB → alert +if [ -n "$FREE_BYTES" ] && [ "$FREE_BYTES" -lt 524288000 ]; then + ALERT=1 + ALERT_MSGS+=("Disk lav: kun $FREE ledig") +fi + +# --- 3. ADC reachability --- +TOKEN_LEN=$(gcloud auth application-default print-access-token 2>/dev/null | wc -c | tr -d ' ') +echo "[$TS] adc: token_len=$TOKEN_LEN" >> "$LOG" +if [ "$TOKEN_LEN" -lt 100 ]; then + ALERT=1 + ALERT_MSGS+=("ADC token mangler eller for kort ($TOKEN_LEN tegn)") +fi + +# --- 4. gcloud auth account + project --- +ACCOUNT=$(gcloud config get-value account 2>/dev/null || echo "") +PROJECT=$(gcloud config get-value project 2>/dev/null || echo "") +echo "[$TS] gcloud: account=$ACCOUNT project=$PROJECT" >> "$LOG" + +if [ "$ACCOUNT" != "chris.christiansen@vauco.no" ]; then + ALERT=1 + ALERT_MSGS+=("WRONG GCLOUD ACCOUNT: $ACCOUNT (forvent chris.christiansen@vauco.no)") +fi + +if [ "$PROJECT" != "propane-will-491900-m5" ]; then + ALERT=1 + ALERT_MSGS+=("WRONG PROJECT: $PROJECT (forvent propane-will-491900-m5)") +fi + +# --- 5. Alert summary --- +if [ "$ALERT" -eq 1 ]; then + echo "[$TS] ⚠️ ALERT (${#ALERT_MSGS[@]} issues):" >> "$LOG" + for msg in "${ALERT_MSGS[@]}"; do + echo "[$TS] - $msg" >> "$LOG" + done +fi + +echo "[$TS] === HEALTH CHECK END ===" >> "$LOG" +echo "" >> "$LOG" + +exit "$ALERT" diff --git a/scripts/osvauco-startup.sh b/scripts/osvauco-startup.sh new file mode 100644 index 0000000..73dd6aa --- /dev/null +++ b/scripts/osvauco-startup.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +# OSVauco startup — auth + Gemini bootstrap for OPAX-MCP work + +set -euo pipefail + +clear + +# Guard: stopp hvis gcloud auth er utløpt +if ! gcloud auth print-access-token >/dev/null 2>&1; then + echo "⚠️ gcloud auth utløpt — kjør: gcloud auth login --no-launch-browser" + exit 1 +fi + +cat << 'BANNER' +============================================================ +O S V A U C O +============================================================ + +O S V A U C O O P E R A T O R H U B + +Prosjekt: propane-will-491900-m5 · Region: us-central1 +============================================================ + +BANNER + +echo +echo "=== OSVauco Auth Setup ===" +echo + +# Lås til riktig prosjekt og region +gcloud config set project propane-will-491900-m5 >/dev/null 2>&1 || true +gcloud config set compute/region us-central1 >/dev/null 2>&1 || true + +PROJECT=$(gcloud config get-value project 2>/dev/null) +REGION=$(gcloud config get-value compute/region 2>/dev/null) +ACCOUNT=$(gcloud auth list --filter=status:ACTIVE --format="value(account)" 2>/dev/null) + +echo " Project : ${PROJECT}" +echo " Region : ${REGION}" +echo " Account : ${ACCOUNT}" + +# Sjekk ADC (Application Default Credentials) +ADC_OK=0 +if gcloud auth application-default print-access-token >/dev/null 2>&1; then + ADC_OK=1 +fi + +echo +if [ "$ADC_OK" -eq 1 ]; then + echo " ADC : OK" +else + echo " ADC : MISSES TOKEN (kjør: gcloud auth application-default login)" +fi + +# Sync til .env i prosjektet +ENV_FILE="$HOME/OSVauco/.env" +mkdir -p "$(dirname "$ENV_FILE")" +touch "$ENV_FILE" +grep -q '^GOOGLE_CLOUD_PROJECT=' "$ENV_FILE" || echo "GOOGLE_CLOUD_PROJECT=${PROJECT}" >> "$ENV_FILE" +grep -q '^GOOGLE_CLOUD_LOCATION=' "$ENV_FILE" || echo "GOOGLE_CLOUD_LOCATION=${REGION}" >> "$ENV_FILE" + +echo " .env : oppdatert" +echo + +echo "=== Auth complete ===" +echo " Project : ${PROJECT}" +echo " Region : ${REGION}" +echo " Account : ${ACCOUNT}" +echo + +read -r -p "[OSVauco] Starte Gemini-CLI nå med oppstartsrapport? (y/N): " ANSWER +case "$ANSWER" in + y|Y) + echo + echo "[OSVauco] Starter Gemini-CLI fra ~/OSVauco ..." + echo "[OSVauco] Første melding som sendes inn er @.gemini/GEMINI.md" + echo + cd "$HOME/OSVauco" + ( printf '@.gemini/GEMINI.md +'; cat ) | gemini + ;; + *) + echo + echo "[OSVauco] OK, holder deg i vanlig shell. Kjør 'gemini' når du vil inn i TUI." + ;; +esac