"""Domain value objects for provider selection and model resolution."""

import importlib
import sys


_provider_module_name = f"{__name__}.provider"
if __name__.startswith("scripts."):
    _alternate_provider_module_name = f"{__name__.removeprefix('scripts.')}.provider"
else:
    _alternate_provider_module_name = f"scripts.{__name__}.provider"

# Repository tests support both import paths. Sharing one module preserves the
# exact class identity that the adapter factory contract validates.
if _alternate_provider_module_name in sys.modules:
    sys.modules[_provider_module_name] = sys.modules[_alternate_provider_module_name]

_provider = importlib.import_module(_provider_module_name)

LeadLaunchSpec = _provider.LeadLaunchSpec
ModelAssignment = _provider.ModelAssignment
ModelSpec = _provider.ModelSpec
ProviderSpec = _provider.ProviderSpec
UnknownModelError = _provider.UnknownModelError
UnknownProviderError = _provider.UnknownProviderError

__all__ = (
    "LeadLaunchSpec",
    "ModelAssignment",
    "ModelSpec",
    "ProviderSpec",
    "UnknownModelError",
    "UnknownProviderError",
)
