db620d33df
dotnet-build-and-test / dotnet-test-functions (push) Has been cancelled
dotnet-build-and-test / paths-filter (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Debug, windows-latest, net9.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net8.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-foundry-hosted-it (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test-check (push) Has been cancelled
dotnet-build-and-test / Integration Test Report (push) Has been cancelled
CodeQL / Analyze (csharp) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
51 lines
2.0 KiB
C#
51 lines
2.0 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using System.Text.Encodings.Web;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace Microsoft.Agents.AI.GitHub.Copilot;
|
|
|
|
/// <summary>
|
|
/// Provides utility methods and configurations for JSON serialization operations within the GitHub Copilot agent implementation.
|
|
/// </summary>
|
|
internal static partial class GitHubCopilotJsonUtilities
|
|
{
|
|
/// <summary>
|
|
/// Gets the default <see cref="JsonSerializerOptions"/> instance used for JSON serialization operations.
|
|
/// </summary>
|
|
public static JsonSerializerOptions DefaultOptions { get; } = CreateDefaultOptions();
|
|
|
|
/// <summary>
|
|
/// Creates and configures the default JSON serialization options.
|
|
/// </summary>
|
|
/// <returns>The configured options.</returns>
|
|
private static JsonSerializerOptions CreateDefaultOptions()
|
|
{
|
|
// Copy the configuration from the source generated context.
|
|
JsonSerializerOptions options = new(JsonContext.Default.Options)
|
|
{
|
|
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
|
|
};
|
|
|
|
// Chain in the resolvers from both AgentAbstractionsJsonUtilities and our source generated context.
|
|
options.TypeInfoResolverChain.Clear();
|
|
options.TypeInfoResolverChain.Add(AgentAbstractionsJsonUtilities.DefaultOptions.TypeInfoResolver!);
|
|
options.TypeInfoResolverChain.Add(JsonContext.Default.Options.TypeInfoResolver!);
|
|
|
|
options.MakeReadOnly();
|
|
return options;
|
|
}
|
|
|
|
[JsonSourceGenerationOptions(JsonSerializerDefaults.Web,
|
|
UseStringEnumConverter = true,
|
|
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
|
NumberHandling = JsonNumberHandling.AllowReadingFromString)]
|
|
[JsonSerializable(typeof(GitHubCopilotAgentSession))]
|
|
[JsonSerializable(typeof(Dictionary<string, object?>))]
|
|
[ExcludeFromCodeCoverage]
|
|
private sealed partial class JsonContext : JsonSerializerContext;
|
|
}
|