Backend
Configuration
Configuration Manager

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

  1. 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
  2. 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
  3. 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

  1. Singleton Access

    • Always access through the singleton instance
    • Never create new instances manually
    • Use dependency injection in FastAPI endpoints
  2. Error Management

    • Handle configuration loading errors gracefully
    • Provide meaningful error messages
    • Log configuration access issues
  3. Configuration Updates

    • Validate configuration changes before applying
    • Maintain backward compatibility
    • Document configuration structure changes