master/adapter/config/model.py

81 lines
1.5 KiB
Python

from dataclasses import dataclass
@dataclass(frozen=True, slots=True)
class AppSectionConfig:
name: str
env: str
@dataclass(frozen=True, slots=True)
class HttpConfig:
host: str
port: int
@dataclass(frozen=True, slots=True)
class LoggingConfig:
level: str
output: str
format: str
file_path: str | None
@dataclass(frozen=True, slots=True)
class MetricsConfig:
enabled: bool
@dataclass(frozen=True, slots=True)
class TracingConfig:
enabled: bool
@dataclass(frozen=True, slots=True)
class OtelConfig:
service_name: str
logs_endpoint: str
metrics_endpoint: str
traces_endpoint: str
metric_export_interval: int
@dataclass(frozen=True, slots=True)
class DockerConfig:
base_url: str
@dataclass(frozen=True, slots=True)
class SandboxConfig:
image: str
network_name: str
agent_service_port: int
ttl_seconds: int
cleanup_interval_seconds: int
chats_root: str
dependencies_host_path: str
lambda_tools_host_path: str
chat_mount_path: str
dependencies_mount_path: str
lambda_tools_mount_path: str
volume_mount_path: str
@dataclass(frozen=True, slots=True)
class SecurityConfig:
token_header: str
api_token: str
signing_key: str
@dataclass(frozen=True, slots=True)
class AppConfig:
app: AppSectionConfig
http: HttpConfig
logging: LoggingConfig
metrics: MetricsConfig
tracing: TracingConfig
otel: OtelConfig
docker: DockerConfig
sandbox: SandboxConfig
security: SecurityConfig