"""Gemini generateContent yanıtını ayrıştır → text + tool_calls. Saf dönüşüm."""
from dataclasses import dataclass, field


@dataclass
class ParsedResponse:
    text: str = ""
    tool_calls: list[dict] = field(default_factory=list)


class ResponseParser:
    def parse(self, raw: dict) -> ParsedResponse:
        result = ParsedResponse()
        candidates = (raw or {}).get("candidates") or []
        if not candidates:
            return result
        parts = (candidates[0].get("content") or {}).get("parts") or []
        texts: list[str] = []
        for part in parts:
            if "text" in part and part["text"]:
                texts.append(part["text"])
            fn = part.get("functionCall")
            if fn:
                result.tool_calls.append(
                    {"name": fn.get("name"), "args": fn.get("args") or {}}
                )
        result.text = "\n".join(texts).strip()
        return result
