|
from abc import ABC, abstractmethod
|
|
from enum import Enum
|
|
from typing import ClassVar, Protocol
|
|
|
|
|
|
class AppMode(Enum):
|
|
OSS = 'oss'
|
|
SAAS = 'saas'
|
|
|
|
|
|
class SessionMiddlewareInterface(Protocol):
|
|
"""Protocol for session middleware classes."""
|
|
|
|
pass
|
|
|
|
|
|
class OpenhandsConfigInterface(ABC):
|
|
CONFIG_PATH: ClassVar[str | None]
|
|
APP_MODE: ClassVar[AppMode]
|
|
POSTHOG_CLIENT_KEY: ClassVar[str]
|
|
GITHUB_CLIENT_ID: ClassVar[str]
|
|
ATTACH_SESSION_MIDDLEWARE_PATH: ClassVar[str]
|
|
|
|
@abstractmethod
|
|
def verify_config(self) -> None:
|
|
"""Verify configuration settings."""
|
|
raise NotImplementedError
|
|
|
|
@abstractmethod
|
|
async def verify_github_repo_list(self, installation_id: int | None) -> None:
|
|
"""Verify that repo list is being called via user's profile or Github App installations."""
|
|
raise NotImplementedError
|
|
|
|
@abstractmethod
|
|
async def get_config(self) -> dict[str, str]:
|
|
"""Configure attributes for frontend"""
|
|
raise NotImplementedError
|
|
|
|
|
|
class MissingSettingsError(ValueError):
|
|
"""Raised when settings are missing or not found."""
|
|
|
|
pass
|
|
|
|
|
|
class LLMAuthenticationError(ValueError):
|
|
"""Raised when there is an issue with LLM authentication."""
|
|
|
|
pass
|
|
|