feat: opax-mcp modul-struktur, acceptance-test og preflight-check scripts

This commit is contained in:
Chris Christiansen 2026-05-26 13:36:59 +00:00
parent 449edf37b8
commit 25ee2d495a
26 changed files with 160 additions and 1 deletions

0
agents/core-logic/deploy_agent.py Executable file → Normal file
View File

0
agents/eval/run_eval.py Executable file → Normal file
View File

0
agents/tests/test_local.sh Executable file → Normal file
View File

View File

@ -7,7 +7,7 @@
## NOW ## NOW
- [x] **⚠️ HASTER** — Roter OAuth client secret `Vauco OS Web App` i [Google Auth Platform](https://console.cloud.google.com/auth/clients/357036551735-ka7t2fv9ue2jp01bs826hpdctlvispuo.apps.googleusercontent.com?project=propane-will-491900-m5) — eksponert i chat 2026-05-25. (Løst) - [x] **⚠️ HASTER** — Roter OAuth client secret `Vauco OS Web App` i [Google Auth Platform](https://console.cloud.google.com/auth/clients/357036551735-ka7t2fv9ue2jp01bs826hpdctlvispuo.apps.googleusercontent.com?project=propane-will-491900-m5) — eksponert i chat 2026-05-25. (Løst)
- [ ] Vurder om `jason.vauger@vauco.no` skal beholde `roles/run.invoker``osvauco-agent`. - [x] Vurder om `jason.vauger@vauco.no` skal beholde `roles/run.invoker``osvauco-agent`. (Konklusjon: Ja, nødvendig for feedback_loop.py)
- [x] Kjør `git update-index --chmod=+x` på alle scripts + commit — hindrer Permission denied etter GitHub web-edit. - [x] Kjør `git update-index --chmod=+x` på alle scripts + commit — hindrer Permission denied etter GitHub web-edit.
- [ ] Verifiser første nattlige GDrive backup — kl 03:00 UTC (Actions-logg). - [ ] Verifiser første nattlige GDrive backup — kl 03:00 UTC (Actions-logg).

0
infrastructure/01-setupenv.sh Executable file → Normal file
View File

0
infrastructure/02-deploy.sh Executable file → Normal file
View File

0
infrastructure/03-teardown.sh Executable file → Normal file
View File

0
infrastructure/04-observability-setup.sh Executable file → Normal file
View File

0
infrastructure/05-cloudrun-deploy.sh Executable file → Normal file
View File

0
infrastructure/06-cicd-setup.sh Executable file → Normal file
View File

0
infrastructure/07-rag-setup.sh Executable file → Normal file
View File

0
infrastructure/08-memorybank-setup.sh Executable file → Normal file
View File

0
infrastructure/09-cost-check.sh Executable file → Normal file
View File

0
infrastructure/10-cost-guard.sh Executable file → Normal file
View File

0
infrastructure/11-billing-iam-hardening.sh Executable file → Normal file
View File

0
infrastructure/12-rag-integration.sh Executable file → Normal file
View File

0
infrastructure/99-region-guard.sh Executable file → Normal file
View File

0
infrastructure/terraform/cost-guard-fn/main.py Executable file → Normal file
View File

0
main.py Executable file → Normal file
View File

1
opax-mcp/README.md Normal file
View File

@ -0,0 +1 @@
OPAX MCP-modul for OSVauco

0
opax-mcp/__init__.py Normal file
View File

8
opax-mcp/pyproject.toml Normal file
View File

@ -0,0 +1,8 @@
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "opax-mcp"
version = "0.0.1"
description = "OPAX MCP module for OSVauco"

View File

@ -0,0 +1,77 @@
#!/usr/bin/env bash
# acceptance-test.sh — Full boot cycle acceptance test for OSVauco OPAX
set -euo pipefail
# --- Configuration & Helpers ---
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/.."
# Default to no cleanup
CLEANUP=false
# Parse command-line arguments
for arg in "$@"
do
case $arg in
--cleanup)
CLEANUP=true
shift # Remove --cleanup from processing
;;
esac
done
echo_step() {
echo ""
echo "=================================================================="
echo "=> $1"
echo "=================================================================="
}
# --- Main Test Flow ---
# Step 1: Source environment variables if .env file exists
echo_step "Loading environment..."
if [ -f "$ROOT_DIR/.env" ]; then
source "$ROOT_DIR/.env"
echo ".env file loaded."
else
echo "WARNING: .env file not found. Script may fail if required variables are not set."
fi
# Step 2: Run setup scripts
echo_step "Phase 1: Infrastructure Setup"
bash "$ROOT_DIR/infrastructure/00-authcheck.sh"
bash "$ROOT_DIR/infrastructure/01-setupenv.sh"
bash "$ROOT_DIR/infrastructure/07-rag-setup.sh"
bash "$ROOT_DIR/infrastructure/08-memorybank-setup.sh"
bash "$ROOT_DIR/infrastructure/04-observability-setup.sh"
bash "$ROOT_DIR/infrastructure/11-billing-iam-hardening.sh"
# Step 3: Deploy the Cloud Run service
# Note: This assumes RAG_CORPUS_NAME and MEMORY_ENGINE_NAME are correctly set in .env
echo_step "Phase 2: Cloud Run Deployment"
gcloud run deploy osvauco-agent
--source . --region europe-west1
--project "${GCLOUD_PROJECT_ID?GCLOUD_PROJECT_ID not set}"
--set-secrets "RAG_CORPUS=${RAG_CORPUS_NAME?RAG_CORPUS_NAME not set}:latest"
--set-env-vars "GOOGLE_GENAI_USE_VERTEXAI=1,GOOGLE_CLOUD_PROJECT=${GCLOUD_PROJECT_ID},GOOGLE_CLOUD_LOCATION=global,MEMORY_ENGINE_NAME=${MEMORY_ENGINE_NAME?MEMORY_ENGINE_NAME not set}"
--no-allow-unauthenticated
# Step 4: Run the smoke test to verify the deployment
echo_step "Phase 3: API Smoke Test"
bash "$ROOT_DIR/scripts/smoke-test.sh"
# Step 5: Optional Teardown
if [ "$CLEANUP" = true ]; then
echo_step "Phase 4: Tearing down Cloud Run service..."
bash "$ROOT_DIR/infrastructure/03-teardown.sh"
echo "Teardown complete."
else
echo_step "Skipping teardown. Run 'bash infrastructure/03-teardown.sh' manually to clean up."
fi
echo ""
echo "=================================================================="
echo "✅✅✅ Acceptance Test Completed Successfully ✅✅✅"
echo "=================================================================="

0
scripts/bootstrap.sh Executable file → Normal file
View File

View File

@ -0,0 +1,73 @@
#!/usr/bin/env bash
# preflight-check.sh — Verifies the local development environment for OSVauco OPAX.
set -euo pipefail
# --- Configuration & Helpers ---
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/.."
FAIL_COUNT=0
step_info() { echo "[INFO] $1"; }
step_ok() { echo "$1"; }
step_fail() {
echo "$1"
FAIL_COUNT=$((FAIL_COUNT + 1))
}
# --- Preflight Checks ---
echo "=================================================================="
echo "=> Running OSVauco Preflight Checks"
echo "=================================================================="
# Check 1: gcloud authentication and project config
step_info "Checking GCP authentication..."
if bash "$ROOT_DIR/infrastructure/00-authcheck.sh" &>/dev/null; then
step_ok "gcloud is authenticated and project is set."
else
step_fail "gcloud authentication or project is not configured. Run 'gcloud auth login' and 'gcloud config set project <project_id>'."
fi
# Check 2: .env file existence
step_info "Checking for .env file..."
if [ -f "$ROOT_DIR/.env" ]; then
step_ok ".env file found."
# Source it for the next check
source "$ROOT_DIR/.env"
else
step_fail ".env file not found. Please copy .env.example to .env and fill in the required values."
fi
# Check 3: Critical Environment Variables
step_info "Checking critical environment variables..."
if [ -n "${GCLOUD_PROJECT_ID-}" ] && [ -n "${BILLING_ACCOUNT_ID-}" ]; then
step_ok "Required environment variables (GCLOUD_PROJECT_ID, BILLING_ACCOUNT_ID) are set."
else
step_fail "One or more required variables (GCLOUD_PROJECT_ID, BILLING_ACCOUNT_ID) are not set in your .env file."
fi
# Check 4: Python dependencies hint
step_info "Checking for Python dependencies..."
if [ -f "$ROOT_DIR/requirements.txt" ]; then
step_ok "requirements.txt found. Ensure dependencies are installed with 'pip install -r requirements.txt'."
else
step_fail "requirements.txt not found."
fi
# Check 5: Git working directory status
step_info "Checking Git status..."
if git -C "$ROOT_DIR" diff --quiet && git -C "$ROOT_DIR" diff --cached --quiet; then
step_ok "Git working directory is clean."
else
step_fail "Git working directory has uncommitted changes. Please commit or stash them."
fi
# --- Summary ---
echo "=================================================================="
if [ $FAIL_COUNT -eq 0 ]; then
echo "✅✅✅ Preflight checks passed successfully! ✅✅✅"
exit 0
else
echo "❌❌❌ Preflight checks failed with $FAIL_COUNT error(s). Please resolve them and re-run. ❌❌❌"
exit 1
fi

0
scripts/smoke-test.sh Executable file → Normal file
View File