summaryrefslogtreecommitdiff
path: root/src/Agent.Core/Runtime/StructuredJson.cs
blob: e0c1650b587fa91fd05137c379651f54061d391a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
namespace Agent.Core.Runtime;

internal static class StructuredJson
{
    public static string Unwrap(string content)
    {
        string value = content.Trim();
        int fenceStart = value.IndexOf("```", StringComparison.Ordinal);
        if (fenceStart < 0) return value;
        int firstLineEnd = value.IndexOf('\n', fenceStart);
        if (firstLineEnd < 0) return value;
        string opening = value[fenceStart..firstLineEnd].TrimEnd('\r');
        if (!string.Equals(opening, "```", StringComparison.Ordinal) &&
            !string.Equals(opening, "```json", StringComparison.OrdinalIgnoreCase))
            return value;

        int fenceEnd = value.IndexOf("```", firstLineEnd + 1, StringComparison.Ordinal);
        if (fenceEnd < 0 || value.IndexOf("```", fenceEnd + 3, StringComparison.Ordinal) >= 0)
            return value;
        return value[(firstLineEnd + 1)..fenceEnd].Trim();
    }
}