package com.gzzm.lobster.llm;

/**
 * ToolCall —— 模型发起的工具调用 / A tool call emitted by the model.
 */
public final class ToolCall {
    private final String id;
    private final String name;
    private final String argumentsJson;

    public ToolCall(String id, String name, String argumentsJson) {
        this.id = id;
        this.name = name;
        this.argumentsJson = argumentsJson;
    }

    public String getId() { return id; }
    public String getName() { return name; }
    public String getArgumentsJson() { return argumentsJson; }

    /** 相同工具相同参数 / Identical tool + identical arguments. */
    public boolean equalsInvocation(ToolCall other) {
        if (other == null) return false;
        boolean sameName = (name == null ? other.name == null : name.equals(other.name));
        boolean sameArgs = (argumentsJson == null ? other.argumentsJson == null : argumentsJson.equals(other.argumentsJson));
        return sameName && sameArgs;
    }

    @Override public String toString() {
        return "ToolCall{" + id + ":" + name + "(" + argumentsJson + ")}";
    }
}
