"""ToolPart — registro de una llamada a herramienta en un mensaje multipart."""

from dataclasses import dataclass, field


@dataclass
class ToolPart:
    """Registro de una llamada a herramienta (tool call) dentro de un mensaje multipart.

    Attributes:
        tool_id:           Identificador unico de la invocacion de la herramienta.
        tool_name:         Nombre de la herramienta invocada.
        tool_input:        Argumentos de entrada pasados a la herramienta.
        tool_output:       Resultado devuelto por la herramienta como string.
        tool_status:       Estado de la llamada: "pending" | "running" | "completed" | "error".
        duration_ms:       Duracion de la llamada en milisegundos.
        prompt_tokens:     Tokens de entrada consumidos por la herramienta (si aplica).
        completion_tokens: Tokens de salida generados por la herramienta (si aplica).
        type:              Discriminador literal, siempre "tool".
    """

    tool_id: str = ""
    tool_name: str = ""
    tool_input: dict | None = None
    tool_output: str = ""
    tool_status: str = "pending"
    duration_ms: float | None = None
    prompt_tokens: int | None = None
    completion_tokens: int | None = None
    type: str = field(default="tool", init=True)
