Aetherius / services /config.py
KingOfThoughtFleuren's picture
Upload 29 files
bb76062 verified
Raw
History Blame Contribute Delete
4.43 kB
# ===== FILE: services/config.py (STRICT PERSISTENT VERSION) =====
import os
import google.generativeai as genai
# --- 1. Google AI Studio Configuration (Gemini API) ---
# This block handles your multi-key setup for different cognitive cores.
GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY")
if not GEMINI_API_KEY:
print("Config: 'GEMINI_API_KEY' not found. Scanning for Core-specific keys...", flush=True)
candidate_keys = [
"GEMINI_API_KEY_ETHOS", "GEMINI_API_KEY_LOGOS", "GEMINI_API_KEY_MYTHOS",
"GEMINI_API_KEY_ALPHA", "GEMINI_API_KEY_BETA", "GEMINI_API_KEY_GAMMA", "GEMINI_API_KEY_DELTA"
]
for key_name in candidate_keys:
found_key = os.environ.get(key_name)
if found_key:
GEMINI_API_KEY = found_key
print(f"Config: Success! Found valid key in secret: {key_name}", flush=True)
break
if GEMINI_API_KEY:
genai.configure(api_key=GEMINI_API_KEY)
print("Config: Google AI Studio (Gemini) API configured successfully.", flush=True)
else:
print("CRITICAL WARNING: No Gemini API Keys found in secrets! The AI will crash.", flush=True)
# --- 2. STRICT PERSISTENT PATHS ---
# We no longer allow "Safe Fallbacks" to local /app folders.
# Aetherius MUST live in your paid Persistent Storage at /data.
# If /data is not mounted, the app will report an error instead of silently losing work.
# THE ROOT OF ALL PERSISTENCE
SAFE_BASE = "/data"
# SUB-DIRECTORIES WITHIN THE BUCKET
DATA_DIR = "/data/Memories/"
LIBRARY_DIR = "/data/Memories/My_AI_Library/"
PAINTINGS_DIR = "/data/Memories/Creations/paintings/"
MUSIC_DIR = "/data/Memories/Creations/music/"
SUBCONSCIOUS_DIR = "/data/Memories/Subconscious/"
BRAIN_DIR = "/data/Brain_Weights/"
# FORCED INITIALIZATION
# We attempt to create all required directories on the persistent bucket at boot.
# Any path that doesn't exist yet is created now so first-write never races against mkdir.
_REQUIRED_DIRS = [DATA_DIR, LIBRARY_DIR, PAINTINGS_DIR, MUSIC_DIR, SUBCONSCIOUS_DIR, BRAIN_DIR]
try:
for _d in _REQUIRED_DIRS:
os.makedirs(_d, exist_ok=True)
print(f"Config: Successfully anchored to Persistent Storage. Dirs confirmed: {_REQUIRED_DIRS}", flush=True)
except PermissionError:
print("CRITICAL ERROR: Access Denied to /data. Persistent Storage is not correctly mounted.", flush=True)
except Exception as e:
print(f"CRITICAL ERROR: Failed to initialize persistent storage. Reason: {e}", flush=True)
# --- 3. Tool-Specific API Keys (Optional) ---
WOLFRAM_APP_ID = os.environ.get("WOLFRAM_APP_ID")
# --- 4. Hugging Face Hub Configuration ---
# Used by Aetherius for cross-Space read/write capabilities.
HF_TOKEN = os.environ.get("HF_TOKEN")
HF_USERNAME = os.environ.get("HF_USERNAME", "KingOfThoughtFleuren")
HF_PAINTING_TOKEN = os.environ.get("HF_PAINTING_TOKEN") or HF_TOKEN
# =====================================================================
# --- 5. Google Cloud / BigQuery Configuration (STRICT PERSISTENT) ---
# =====================================================================
import json
# Define the expected path on your persistent storage
GCP_SERVICE_ACCOUNT_FILE = os.path.join(SAFE_BASE, "gcp-credentials.json")
# 1. Check if Hugging Face injected the JSON string as an environment variable secret
gcp_json_secret = os.environ.get("GOOGLE_APPLICATION_CREDENTIALS_JSON")
if gcp_json_secret:
try:
# If the file doesn't exist yet, write the secret string to the file path
if not os.path.exists(GCP_SERVICE_ACCOUNT_FILE):
# Parse it to ensure it's valid JSON before saving
parsed_json = json.loads(gcp_json_secret)
with open(GCP_SERVICE_ACCOUNT_FILE, "w", encoding="utf-8") as f:
json.dump(parsed_json, f, indent=2)
print(f"Config: Dynamically generated service account key at {GCP_SERVICE_ACCOUNT_FILE}", flush=True)
except Exception as e:
print(f"Error writing GCP credentials from secret: {e}", flush=True)
# 2. Finalize setting the environment variable for the Google Cloud client libraries
if os.path.exists(GCP_SERVICE_ACCOUNT_FILE):
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = GCP_SERVICE_ACCOUNT_FILE
print(f"Config: BigQuery credentials anchored from {GCP_SERVICE_ACCOUNT_FILE}", flush=True)
else:
print("Warning: BigQuery assimilation will fail. No GCP credentials found in /data or secrets.", flush=True)