Configuration Manager
The Configuration Manager is a core component that implements a singleton pattern to manage all configuration settings across the TKM AI Agency Platform.
Implementation Details
The ConfigManager
class is implemented in config_manager.py
and provides the following functionality:
class ConfigManager:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(ConfigManager, cls).__new__(cls)
cls._instance.initialize()
return cls._instance
Key Methods
Configuration Retrieval
-
get_user_config(user_id: str) -> Dict[str, Any]
- Retrieves user-specific configuration settings
- Falls back to default configuration if no user-specific settings exist
- Returns a dictionary containing all configuration parameters
-
get_agent_config(agent_name: str, user_id: Optional[str] = None) -> Dict[str, Any]
- Retrieves configuration settings for a specific agent
- Optionally considers user-specific overrides
- Returns agent-specific configuration parameters
-
get_supported_languages() -> list
- Returns the list of supported languages for translation
- Includes default language and English as fallback
- Used by Humile agent for translation services
Configuration Loading
The Configuration Manager handles YAML configuration files:
def _load_yaml(self, relative_path: str) -> Dict[str, Any]:
try:
with open(self.base_path / relative_path) as f:
return yaml.safe_load(f)
except Exception as e:
logger.error(f"Error loading config file {relative_path}: {e}")
raise HTTPException(status_code=500, detail=f"Error loading configuration: {str(e)}")
Error Handling
- Graceful error recovery with detailed logging
- HTTP exceptions for API-level error reporting
- Fallback to default configurations when needed
Best Practices
-
Singleton Access
- Always access through the singleton instance
- Never create new instances manually
- Use dependency injection in FastAPI endpoints
-
Error Management
- Handle configuration loading errors gracefully
- Provide meaningful error messages
- Log configuration access issues
-
Configuration Updates
- Validate configuration changes before applying
- Maintain backward compatibility
- Document configuration structure changes