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 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 @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