from pathlib import Path from typing import Literal from pydantic import Field, SecretStr from pydantic_settings import BaseSettings, SettingsConfigDict class AgentSettings(BaseSettings): model_config = SettingsConfigDict( env_prefix="MODELFORGE_AGENT_", env_file=".env", extra="ignore" ) control_plane_url: str = "http://api:8000" enrollment_token: SecretStr | None = None identity: str | None = None identity_mode: str = "auto" accelerator_mode: Literal["auto", "nvidia", "cpu"] = "auto" identity_file: Path = Path("/data/state/node-id") credential_file: Path = Path("/data/state/node-credential") state_file: Path = Path("/data/state/agent-state.json") display_name: str | None = None heartbeat_interval_seconds: int = Field(default=10, ge=1) inventory_interval_seconds: int = Field(default=300, ge=5) telemetry_interval_seconds: int = Field(default=30, ge=5) request_timeout_seconds: float = Field(default=10, gt=0) max_backoff_seconds: int = Field(default=60, ge=1) tls_verify: bool = True model_cache_path: Path = Path("/data/hf-cache") artifact_path: Path = Path("/data/artifacts") quarantine_path: Path = Path("/data/quarantine") hf_token: SecretStr | None = None artifact_job_poll_interval_seconds: int = Field(default=5, ge=1, le=60) artifact_download_timeout_seconds: float = Field(default=120, gt=0, le=600)