"""Shared Hindsight client resolution logic.""" from __future__ import annotations from typing import Any from hindsight_client import Hindsight from .config import get_config from .errors import HindsightError def resolve_client( client: Hindsight | None, hindsight_api_url: str | None, api_key: str | None, ) -> Hindsight: """Resolve a Hindsight client from explicit args or global config.""" if client is not None: return client config = get_config() url = hindsight_api_url or (config.hindsight_api_url if config else None) key = api_key or (config.api_key if config else None) if url is None: raise HindsightError( "No Hindsight API URL configured. Pass client= or hindsight_api_url=, or call configure() first." ) kwargs: dict[str, Any] = {"base_url": url, "timeout": 30.0} if key: kwargs["api_key"] = key return Hindsight(**kwargs)