package cn.nianxx.thhotel.integrations.mcp.superagent.common.result;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.Map;

/**
 * SuperAgent MCP JSON-RPC 响应。成功时返回 result，失败时返回 error。
 *
 * @param jsonrpc JSON-RPC 版本
 * @param id 请求 ID
 * @param result 成功结果
 * @param error 错误结果
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public record SuperAgentMcpJsonRpcResponse(
        String jsonrpc,
        JsonNode id,
        Object result,
        SuperAgentMcpJsonRpcError error
) {

    /**
     * 构造 JSON-RPC 成功响应。
     */
    public static SuperAgentMcpJsonRpcResponse success(JsonNode id, Object result) {
        return new SuperAgentMcpJsonRpcResponse("2.0", id, result, null);
    }

    /**
     * 构造 JSON-RPC 错误响应。
     */
    public static SuperAgentMcpJsonRpcResponse error(JsonNode id, int rpcCode, String errorCode, String message) {
        return new SuperAgentMcpJsonRpcResponse(
                "2.0",
                id,
                null,
                new SuperAgentMcpJsonRpcError(rpcCode, message, Map.of("code", errorCode)));
    }
}
