import json import os import ccxt import openai SESSION_FILE = ".session.json" class SessionManager: def __init__(self): self.openai_key = None self.kucoin_key = None self.kucoin_secret = None self.kucoin_passphrase = None self.provider = "OpenAI" self.hf_token = None self._load() def _load(self): if os.path.exists(SESSION_FILE): with open(SESSION_FILE, "r") as f: data = json.load(f) self.__dict__.update(data) def set_keys( self, openai_key, kucoin_key, kucoin_secret, kucoin_pass, provider, hf_token ): self.openai_key = openai_key self.kucoin_key = kucoin_key self.kucoin_secret = kucoin_secret self.kucoin_passphrase = kucoin_pass self.provider = provider self.hf_token = hf_token with open(SESSION_FILE, "w") as f: json.dump(self.__dict__, f) def clear(self): if os.path.exists(SESSION_FILE): os.remove(SESSION_FILE) self.__init__() def is_ready(self): return all([self.kucoin_key, self.kucoin_secret, self.kucoin_passphrase]) and ( self.openai_key if self.provider == "OpenAI" else self.hf_token ) def validate_all_keys(session: SessionManager): try: kucoin = ccxt.kucoinfutures( { "apiKey": session.kucoin_key, "secret": session.kucoin_secret, "password": session.kucoin_passphrase, } ) _ = kucoin.fetch_balance() except Exception as e: return False, f"❌ KuCoin error: {e}" if session.provider == "OpenAI": try: openai.api_key = session.openai_key _ = openai.models.list() except Exception as e: return False, f"❌ OpenAI error: {e}" return True, "✅ API keys valid and ready"