| import os | |
| from fastapi import HTTPException | |
| from openhands.core.logger import openhands_logger as logger | |
| from openhands.server.types import AppMode, OpenhandsConfigInterface | |
| from openhands.utils.import_utils import get_impl | |
| class OpenhandsConfig(OpenhandsConfigInterface): | |
| config_cls = os.environ.get('OPENHANDS_CONFIG_CLS', None) | |
| app_mode = AppMode.OSS | |
| posthog_client_key = 'phc_3ESMmY9SgqEAGBB6sMGK5ayYHkeUuknH2vP6FmWH9RA' | |
| github_client_id = os.environ.get('GITHUB_APP_CLIENT_ID', '') | |
| attach_conversation_middleware_path = ( | |
| 'openhands.server.middleware.AttachConversationMiddleware' | |
| ) | |
| settings_store_class: str = ( | |
| 'openhands.storage.settings.file_settings_store.FileSettingsStore' | |
| ) | |
| conversation_store_class: str = ( | |
| 'openhands.storage.conversation.file_conversation_store.FileConversationStore' | |
| ) | |
| def verify_config(self): | |
| if self.config_cls: | |
| raise ValueError('Unexpected config path provided') | |
| def verify_github_repo_list(self, installation_id: int | None): | |
| if self.app_mode == AppMode.OSS and installation_id: | |
| raise HTTPException( | |
| status_code=400, | |
| detail='Unexpected installation ID', | |
| ) | |
| def get_config(self): | |
| config = { | |
| 'APP_MODE': self.app_mode, | |
| 'GITHUB_CLIENT_ID': self.github_client_id, | |
| 'POSTHOG_CLIENT_KEY': self.posthog_client_key, | |
| } | |
| return config | |
| def load_openhands_config(): | |
| config_cls = os.environ.get('OPENHANDS_CONFIG_CLS', None) | |
| logger.info(f'Using config class {config_cls}') | |
| openhands_config_cls = get_impl(OpenhandsConfig, config_cls) | |
| openhands_config = openhands_config_cls() | |
| openhands_config.verify_config() | |
| return openhands_config | |