Files
agentic-mobile-control/agents/config.py
T
2026-07-06 23:23:44 +08:00

42 lines
1.1 KiB
Python

from __future__ import annotations
import os
from collections.abc import Mapping
from dataclasses import dataclass
ENABLED_ENV = "MULTI_AGENT_COLLABORATION_ENABLED"
MAX_RECOVERY_ENV = "MULTI_AGENT_MAX_RECOVERY_ATTEMPTS"
DEFAULT_MAX_RECOVERY_ATTEMPTS = 3
@dataclass(frozen=True)
class CollaborationConfig:
enabled: bool = False
max_recovery_attempts: int = DEFAULT_MAX_RECOVERY_ATTEMPTS
def load_config(env: Mapping[str, str] | None = None) -> CollaborationConfig:
values = env or os.environ
return CollaborationConfig(
enabled=_parse_bool(values.get(ENABLED_ENV), default=False),
max_recovery_attempts=_parse_int(
values.get(MAX_RECOVERY_ENV), default=DEFAULT_MAX_RECOVERY_ATTEMPTS
),
)
def _parse_bool(value: str | None, *, default: bool) -> bool:
if value is None:
return default
return value.strip().lower() in {"1", "true", "yes", "on", "enabled"}
def _parse_int(value: str | None, *, default: int) -> int:
if value is None:
return default
try:
result = int(value)
except ValueError:
return default
return result if result > 0 else default