"""Convert browser-cli SDK models into MCP structured-output values.""" from __future__ import annotations from dataclasses import fields, is_dataclass from typing import Any def structured(value: Any) -> Any: """Return JSON-compatible data without private SDK binding fields.""" if is_dataclass(value) and not isinstance(value, type): return { field.name: structured(getattr(value, field.name)) for field in fields(value) if not field.name.startswith("_") } if isinstance(value, dict): return {str(key): structured(item) for key, item in value.items()} if isinstance(value, (list, tuple, set)): return [structured(item) for item in value] return value