openhands_config.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import os
  2. from fastapi import HTTPException
  3. from openhands.core.logger import openhands_logger as logger
  4. from openhands.server.types import AppMode, OpenhandsConfigInterface
  5. from openhands.utils.import_utils import get_impl
  6. class OpenhandsConfig(OpenhandsConfigInterface):
  7. config_cls = os.environ.get('OPENHANDS_CONFIG_CLS', None)
  8. app_mode = AppMode.OSS
  9. posthog_client_key = 'phc_3ESMmY9SgqEAGBB6sMGK5ayYHkeUuknH2vP6FmWH9RA'
  10. github_client_id = os.environ.get('GITHUB_APP_CLIENT_ID', '')
  11. attach_session_middleware_path = (
  12. 'openhands.server.middleware.AttachSessionMiddleware'
  13. )
  14. def verify_config(self):
  15. if self.config_cls:
  16. raise ValueError('Unexpected config path provided')
  17. def verify_github_repo_list(self, installation_id: int | None):
  18. if self.app_mode == AppMode.OSS and installation_id:
  19. raise HTTPException(
  20. status_code=400,
  21. detail='Unexpected installation ID',
  22. )
  23. def get_config(self):
  24. config = {
  25. 'APP_MODE': self.app_mode,
  26. 'GITHUB_CLIENT_ID': self.github_client_id,
  27. 'POSTHOG_CLIENT_KEY': self.posthog_client_key,
  28. }
  29. return config
  30. async def github_auth(self, data: dict):
  31. """
  32. Skip Github Auth for AppMode OSS
  33. """
  34. pass
  35. def load_openhands_config():
  36. config_cls = os.environ.get('OPENHANDS_CONFIG_CLS', None)
  37. logger.info(f'Using config class {config_cls}')
  38. if config_cls:
  39. openhands_config_cls = get_impl(OpenhandsConfig, config_cls)
  40. else:
  41. openhands_config_cls = OpenhandsConfig
  42. openhands_config = openhands_config_cls()
  43. openhands_config.verify_config()
  44. return openhands_config