from pydantic_settings import BaseSettings, SettingsConfigDict class AgentSettings(BaseSettings): """Agent / browser / storage settings — loaded from .env or environment.""" model_config = SettingsConfigDict(env_file=".env", extra="ignore") # AWS / Bedrock aws_region: str = "us-east-1" aws_access_key_id: str = "" aws_secret_access_key: str = "" bedrock_model_id: str = "us.anthropic.claude-sonnet-4-6" bedrock_watch_model_id: str = "us.anthropic.claude-haiku-4-5-20251001-v1:0" # API server api_host: str = "0.0.0.0" api_port: int = 8080 # MCP server (agent side) mcp_host: str = "0.0.0.0" mcp_port: int = 8001 mcp_server_url: str = ( "" # empty = in-process; set for HTTP / separate MCP container ) # Agent backend agent_backend: str = "anthropic" # anthropic | bedrock anthropic_api_key: str = "" anthropic_model_id: str = "claude-sonnet-4-6" anthropic_watch_model_id: str = "claude-haiku-4-5-20251001" # Browser browser_headless: bool = True browser_engine: str = "camoufox" # camoufox | nodriver | drissionpage | playwright browser_profile: str = "desktop" # desktop | mobile_ios | mobile_android browser_human_behavior: bool = True # Proxy proxy_list: list[str] = [] proxy_provider: str = "decodo" proxy_lambda_name: str = "" # TikTok tiktok_session_id: str = "" # Observability sentry_dsn: str = "" dd_service: str = "marketing-data-intelligence" dd_env: str = "prod" # Logging log_level: str = "INFO" log_format: str = "console" # console | json # Storage output_dir: str = "output" storage_backend: str = "local" # local | s3 s3_bucket: str = "" campaigns_file: str = "data/campaigns.json" campaign_config_file: str = "output/campaign_config.json" settings = AgentSettings()