using System;
using System.Collections.Generic;
using System.Text.Json;
using ModelContextProtocol;
using ModelContextProtocol.Protocol;
namespace Sozsoft.Mcp.Tools;
///
/// Servis sonucunu arac sonucuna cevirir. Deger SDK'nin donus degerini yazdigi bicimde
/// () JSON metnidir. hata
/// sonucudur (IsError): istisna atilmadan modele ulasir, model nedeni okuyup girdiyi duzeltir.
///
internal static class McpToolResult
{
/// Degeri olmayan araclarin (not ekleme, silme) basari cevabi.
private const string Done = "ok";
public static CallToolResult From(McpOutcome outcome)
=> outcome.TryGetValue(out var value, out var problem)
? Text(JsonSerializer.Serialize(value, McpJsonUtilities.DefaultOptions))
: Error(problem.Message);
public static CallToolResult From(McpProblem? problem)
=> problem is null ? Text(Done) : Error(problem.Message);
/// Degeri metin disinda icerik (resim) tasiyan araclar icin.
public static CallToolResult From(McpOutcome outcome, Func> toContent)
=> outcome.TryGetValue(out var value, out var problem)
? new CallToolResult { Content = toContent(value) }
: Error(problem.Message);
public static CallToolResult Error(string message)
=> new() { IsError = true, Content = [new TextContentBlock { Text = message }] };
private static CallToolResult Text(string text)
=> new() { Content = [new TextContentBlock { Text = text }] };
}