package com.easyagents.agent.runtime.mcp;

import com.easyagents.agent.runtime.AgentRuntimeException;

import java.util.Locale;

/**
 * MCP 连接方式。
 */
public enum McpTransportType {

    /**
     * 标准输入输出进程通信。
     */
    STDIO,

    /**
     * HTTP Server-Sent Events 通信。
     */
    SSE,

    /**
     * Streamable HTTP 通信。
     */
    HTTP;

    /**
     * 解析 MCP 连接方式。
     *
     * @param value 连接方式文本
     * @return MCP 连接方式
     */
    public static McpTransportType from(String value) {
        if (value == null || value.isBlank()) {
            return STDIO;
        }
        String normalized = value.trim().toLowerCase(Locale.ROOT);
        return switch (normalized) {
            case "stdio" -> STDIO;
            case "sse", "http-sse" -> SSE;
            case "http", "streamable-http", "http-stream" -> HTTP;
            default -> throw new AgentRuntimeException("Unsupported MCP transport type: " + value);
        };
    }

    /**
     * 转换为 Easy MCP 配置兼容值。
     *
     * @return transport 配置值
     */
    public String configValue() {
        return switch (this) {
            case STDIO -> "stdio";
            case SSE -> "http-sse";
            case HTTP -> "http-stream";
        };
    }
}
