""" Global configuration and constants. All settings in one place. """ import os import secrets # ─── Flask ─── SECRET_KEY = os.environ.get("SECRET_KEY", secrets.token_hex(16)) DEBUG = os.environ.get("DEBUG", "true").lower() == "true" HOST = os.environ.get("HOST", "0.0.0.0") PORT = int(os.environ.get("PORT", 5000)) # ─── Database files ─── USERS_DB_FILE = "users.json" TELEGRAM_DB_FILE = "users_db.json" CARDS_DB_FILE = "cards.json" CHAT_HISTORY_DB_FILE = "chat_history_db.json" # ─── AI endpoints ─── GPT_URL = "https://corvo-ai-gpt-5-4.hf.space/chat" TTS_URL = "https://corvo-ai-tts.hf.space" TRANSCRIPT_URL = "https://corvo-ai-transcript.hf.space" # ─── Cloudinary ─── CLOUDINARY_URL = "https://api.cloudinary.com/v1_1/dwsoob1wh/image/upload" CLOUDINARY_PRESET = "Cloud-storage" # ─── Icons8 ─── ICONS8_SEARCH_URL = ( "https://search-app.icons8.com/api/iconsets/v7/search" "?isAnimated=false&language=en&analytics=true" "&spellcheck=false&saveAnalytics=true" "&amount=10&isOuch=true" "&replaceNameWithSynonyms=true" "&offset=0&term={term}" ) ICONS8_IMAGE_URL = "https://img.icons8.com/?size=100&id={icon_id}&format=png" # ─── Audio ─── AUDIO_OUTPUT_DIR = "static/audio" MAX_AUDIO_FILES = 200 # ─── Chat history ─── SUMMARY_TRIGGER_COUNT = 10 MAX_CHAT_HISTORY = 20 # ─── Directories to create on startup ─── REQUIRED_DIRS = [ "static/audio", "templates", "FINAL", ] # ─── Mistral cookie (for streaming) ─── MISTRAL_COOKIE = os.environ.get("MISTRAL_COOKIE", ( '''__cf_bm=JrqUGrlLa1VNznB_gcRKdDY.AyPLIvyRVUuKMV0avmc-1771531995-1.0.1.1-gJPuKUhLOcJ6hccPtwfCq6jJOAkQ8xABZJi_RwovhSQrsUTbUv1MCh1IPLvZ3ldPzqHLrPmcWUwLE_q_iVrP.W9PCYLnRq4HMMbVeyuDwlE; _cfuvid=oL4ochUsTJrLY6FlPpKTfocKdvOyum8GRuUBbqS9l8U-1771531995497-0.0.1.1-604800000; csrf_token_1d61ec8f0158ec4868343239ec73dbe1bfebad9908ad860e62f470c767573d0d=6ybeYU0W24tff63a5O/h0wbG6pYuc4w4iKv6SOKnYFc=; ory_session_coolcurranf83m3srkfl=MTc3MTUzMjA2OXxZU1dnRmd5SzNZM3o5VERSMGN5OFBWaHZ4bmdzd2RLOXNTUHNqMVVQbUdqUVFyZXpFN1ZCa0stYmJOR1lmbFNHVWphdWE4UWZ4S2FESjVROVJVYkw3a0MxN01TVVRZSUFGcWdZRHBCSjA2WEFJcFowcERmTWdrTmxuZ01zLWtubWxtd3lELVBBSVhOSzRkS1RRTWlxUHo1WmJwRWZzNlBXOFZWbUQyY2xkRVlOdXczb19kMlA4enc2ZGdVbkhaOUtXNDhEcEtxTVVBUTFYVk5YUXUtbDhjNVBOaG04WDRncmVNeXV4WWZXNC05TTlZRml3Y2hmR1F3QUR4Wk1aS0wwVUFfWGFyb2YxUlUtZXJkMGVhc3B8ITaivuTKOyk2pkoOhT6SPvP7zk-_NWF074pMm1HUl-k=; intercom-device-id-xel0jpx9=16cbae05-b305-4216-9967-e1622600c85c; csrftoken=KevqOi51yhx99LPY2i96wpMb2BxPlbpA; __cflb=0H28vBt3Asif1pksrBB47e5ijRcsvN4rdm4JmqYW3k8; intercom-session-xel0jpx9=K0lUK3E1QkhQemZuN256UXRtUVIxQWRoTVNQVXA2OVhXbDd1UHlGb3hxVmFVN0tJTG5LdFEvelpJck5aR0FjV3VWY0NjR1piMUxUdkZUc09kLzVDMTIrRGZiU3BtRElIQ0FvZUVZdHZyNU5sZU9EU0E3cHFCK1FzdE9kUTFKaG5PclZJTGRxN1c2WUt1NEVLNXBqZUwySStMQ2JHWHo3Z3Vyc2xLSWh2YkVDbWJBOWJWeHpHNFJIUzltZWUvQXVXLS1jdGVHOFVGRTJNS3I2Qm1tWlk3UEVBPT0=--d3764aa89dd7c5400eb27bf4e34ad8c85402eb72''' ))