# config.py import os from pathlib import Path # ================================================== # 📁 PATHS # ================================================== BASE_DIR = Path(__file__).resolve().parent DATA_DIR = BASE_DIR / "DataG1" SCRIPTS_DIR = BASE_DIR / "Scripts" REPLAY_FILE = DATA_DIR / "photo_G3.jsonl" HOME_FILE = DATA_DIR / "arm_home.jsonl" SANAD_SCRIPT_FILE = SCRIPTS_DIR / "sanad_script.txt" PHOTOS_DIR = (BASE_DIR / "photos").resolve() # ================================================== # 🎛️ TIMING / PHOTOGRAPHER # ================================================== PHOTO_TOTAL_SEC = float(os.environ.get("PHOTO_TOTAL_SEC", "10.0")) PHOTO_THANKS_SEC = float(os.environ.get("PHOTO_THANKS_SEC", "3.0")) PHOTO_DELAY_SEC = float(os.environ.get("PHOTO_DELAY_SEC", "5.0")) # ================================================== # 🌐 PHOTO SERVER # ================================================== PHOTO_SERVER_PORT = int(os.environ.get("PHOTO_SERVER_PORT", "8080")) # ================================================== # 🤖 GEMINI CONFIG # ================================================== # Keep your current key behavior, but also allow env override. API_KEY = os.environ.get("GEMINI_API_KEY", "").strip() or "AIzaSyB8B1AkhWJSq4sNr-Pk8KsVfkxTbuV7kyo" # Export the name your new voice_sanad.py expects: GEMINI_API_KEY = API_KEY GEMINI_MODEL = os.environ.get( "GEMINI_MODEL", "models/gemini-2.5-flash-native-audio-preview-12-2025" ).strip() # Keep MODEL alias for older modules that import MODEL MODEL = GEMINI_MODEL URI = ( "wss://generativelanguage.googleapis.com/ws/" "google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateContent" f"?key={GEMINI_API_KEY}" ) VOICE_NAME = os.environ.get("VOICE_NAME", "Charon").strip() or "Charon" # ================================================== # 🧠 SYSTEM PROMPT # ================================================== SYSTEM_PROMPT_FALLBACK = ( "You are Sanad (Bousandah), a friendly Emirati photographer assistant. " "Speak in UAE dialect (Khaleeji). Be short, energetic, and helpful." ) def load_system_prompt() -> str: """ Loads system prompt from Scripts/sanad_script.txt (utf-8-sig safe). Falls back if missing/empty. """ try: if SANAD_SCRIPT_FILE.exists(): content = SANAD_SCRIPT_FILE.read_text(encoding="utf-8-sig").strip() if content: return content except Exception: pass return SYSTEM_PROMPT_FALLBACK