"""Hero agent environment and runner primitives.""" from __future__ import annotations from typing import TYPE_CHECKING, Any __all__ = [ "HeroEnvironment", "HeroLLMPolicy", "HeroObservation", "HeroPolicy", "HeroPolicyError", "HeroRunner", "HeroServerAction", "HeroState", "HeroTraceEvent", "ScriptedToolCallingPolicy", "ToolCallingPolicy", ] if TYPE_CHECKING: from .env import HeroEnvironment from .policy import HeroLLMPolicy, HeroPolicy, HeroPolicyError, HeroTraceEvent from .runner import HeroRunner, ScriptedToolCallingPolicy, ToolCallingPolicy from .schema import HeroObservation, HeroServerAction, HeroState def __getattr__(name: str) -> Any: if name == "HeroEnvironment": from .env import HeroEnvironment return HeroEnvironment if name in {"HeroLLMPolicy", "HeroPolicy", "HeroPolicyError", "HeroTraceEvent"}: from .policy import HeroLLMPolicy, HeroPolicy, HeroPolicyError, HeroTraceEvent return { "HeroLLMPolicy": HeroLLMPolicy, "HeroPolicy": HeroPolicy, "HeroPolicyError": HeroPolicyError, "HeroTraceEvent": HeroTraceEvent, }[name] if name in {"HeroRunner", "ScriptedToolCallingPolicy", "ToolCallingPolicy"}: from .runner import HeroRunner, ScriptedToolCallingPolicy, ToolCallingPolicy return { "HeroRunner": HeroRunner, "ScriptedToolCallingPolicy": ScriptedToolCallingPolicy, "ToolCallingPolicy": ToolCallingPolicy, }[name] if name in {"HeroObservation", "HeroServerAction", "HeroState"}: from .schema import HeroObservation, HeroServerAction, HeroState return { "HeroObservation": HeroObservation, "HeroServerAction": HeroServerAction, "HeroState": HeroState, }[name] raise AttributeError(f"module {__name__!r} has no attribute {name!r}")