config.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from __future__ import annotations
  2. import os
  3. from dataclasses import dataclass
  4. @dataclass(frozen=True)
  5. class McpConfig:
  6. url: str
  7. token: str
  8. @dataclass(frozen=True)
  9. class RuntimeConfig:
  10. host: str
  11. port: int
  12. environment_name: str
  13. base_url: str
  14. max_steps: int
  15. mcp: McpConfig
  16. def load_runtime_config() -> RuntimeConfig:
  17. return RuntimeConfig(
  18. host=os.getenv("WEB_AGENT_HOST", "0.0.0.0"),
  19. port=_number_env("WEB_AGENT_PORT", 5188),
  20. environment_name=os.getenv("SMQJH_ENVIRONMENT_NAME", "test-gateway"),
  21. base_url=os.getenv("SMQJH_BASE_URL", "http://192.168.1.242:8080"),
  22. max_steps=_number_env("SMQJH_AGENT_MAX_STEPS", 6),
  23. mcp=McpConfig(
  24. url=_normalize_url(os.getenv("SMQJH_MCP_URL") or os.getenv("MCP_URL") or "http://127.0.0.1:8765/mcp"),
  25. token=os.getenv("SMQJH_MCP_TOKEN") or os.getenv("MCP_TOKEN") or "",
  26. ),
  27. )
  28. def _number_env(key: str, fallback: int) -> int:
  29. raw = os.getenv(key)
  30. if not raw:
  31. return fallback
  32. try:
  33. value = int(raw)
  34. except ValueError:
  35. return fallback
  36. return value if value > 0 else fallback
  37. def _normalize_url(value: str) -> str:
  38. return value.strip().rstrip("/")