import os import json from pathlib import Path class Config: _instance = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) cls._instance._load_config() return cls._instance def _load_config(self): self.config = { "API_KEYS": { "OPENAI": os.getenv("OPENAI_API_KEY", ""), "ANTHROPIC": os.getenv("ANTHROPIC_API_KEY", ""), "BING": os.getenv("BING_API_KEY", ""), "GOOGLE_SEARCH": os.getenv("GOOGLE_API_KEY", ""), "GOOGLE_SEARCH_ENGINE_ID": os.getenv("GOOGLE_SEARCH_ENGINE_ID", ""), "PERPLEXITY": os.getenv("PERPLEXITY_API_KEY", ""), }, "API_ENDPOINTS": { "BING": "https://api.bing.microsoft.com/v7.0/search", "GOOGLE": "https://www.googleapis.com/customsearch/v1", "PERPLEXITY": "https://api.perplexity.ai", } } # Create necessary directories base_dir = Path("/code") for dir_name in ["db", "logs", "projects", "screenshots", "pdfs"]: (base_dir / dir_name).mkdir(exist_ok=True) def get_config(self): return self.config def get_bing_api_key(self): return self.config["API_KEYS"]["BING"] def get_google_search_api_key(self): return self.config["API_KEYS"]["GOOGLE_SEARCH"] def get_google_search_engine_id(self): return self.config["API_KEYS"]["GOOGLE_SEARCH_ENGINE_ID"] def get_perplexity_api_key(self): return self.config["API_KEYS"]["PERPLEXITY"]