/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------------------------------------------*/
// AUTO-GENERATED FILE - DO NOT EDIT
//
// Generated from: @github/copilot/session-events.schema.json
// Generated by: scripts/generate-session-types.ts
// Generated at: 2026-01-13T00:08:21.149Z
//
// To update these types:
// 1. Update the schema in copilot-agent-runtime
// 2. Run: npm run generate:session-types
//
#nullable enable
#pragma warning disable CS8618
namespace GitHub.Copilot.SDK
{
using System;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
///
/// Custom JSON converter for SessionEvent that handles discriminator appearing anywhere in JSON.
///
internal class SessionEventConverter : JsonConverter
{
private static readonly Dictionary TypeMap = new()
{
["session.start"] = typeof(SessionStartEvent),
["session.resume"] = typeof(SessionResumeEvent),
["session.error"] = typeof(SessionErrorEvent),
["session.idle"] = typeof(SessionIdleEvent),
["session.info"] = typeof(SessionInfoEvent),
["session.model_change"] = typeof(SessionModelChangeEvent),
["session.handoff"] = typeof(SessionHandoffEvent),
["session.truncation"] = typeof(SessionTruncationEvent),
["user.message"] = typeof(UserMessageEvent),
["pending_messages.modified"] = typeof(PendingMessagesModifiedEvent),
["assistant.turn_start"] = typeof(AssistantTurnStartEvent),
["assistant.intent"] = typeof(AssistantIntentEvent),
["assistant.reasoning"] = typeof(AssistantReasoningEvent),
["assistant.reasoning_delta"] = typeof(AssistantReasoningDeltaEvent),
["assistant.message"] = typeof(AssistantMessageEvent),
["assistant.message_delta"] = typeof(AssistantMessageDeltaEvent),
["assistant.turn_end"] = typeof(AssistantTurnEndEvent),
["assistant.usage"] = typeof(AssistantUsageEvent),
["abort"] = typeof(AbortEvent),
["tool.user_requested"] = typeof(ToolUserRequestedEvent),
["tool.execution_start"] = typeof(ToolExecutionStartEvent),
["tool.execution_partial_result"] = typeof(ToolExecutionPartialResultEvent),
["tool.execution_complete"] = typeof(ToolExecutionCompleteEvent),
["custom_agent.started"] = typeof(CustomAgentStartedEvent),
["custom_agent.completed"] = typeof(CustomAgentCompletedEvent),
["custom_agent.failed"] = typeof(CustomAgentFailedEvent),
["custom_agent.selected"] = typeof(CustomAgentSelectedEvent),
["hook.start"] = typeof(HookStartEvent),
["hook.end"] = typeof(HookEndEvent),
["system.message"] = typeof(SystemMessageEvent),
};
public override SessionEvent? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
// Parse as JsonNode to find the discriminator regardless of property order
var node = JsonNode.Parse(ref reader);
if (node is not JsonObject obj)
throw new JsonException("Expected JSON object");
var typeProp = obj["type"]?.GetValue();
if (string.IsNullOrEmpty(typeProp))
throw new JsonException("Missing 'type' discriminator property");
if (!TypeMap.TryGetValue(typeProp, out var targetType))
throw new JsonException($"Unknown event type: {typeProp}");
// Deserialize to the concrete type without using this converter (to avoid recursion)
return (SessionEvent?)obj.Deserialize(targetType, SerializerOptions.WithoutConverter);
}
public override void Write(Utf8JsonWriter writer, SessionEvent value, JsonSerializerOptions options)
{
JsonSerializer.Serialize(writer, value, value.GetType(), SerializerOptions.WithoutConverter);
}
}
///
/// Base class for all session events with polymorphic JSON serialization.
///
[JsonConverter(typeof(SessionEventConverter))]
public abstract partial class SessionEvent
{
[JsonPropertyName("id")]
public Guid Id { get; set; }
[JsonPropertyName("timestamp")]
public DateTimeOffset Timestamp { get; set; }
[JsonPropertyName("parentId")]
public Guid? ParentId { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("ephemeral")]
public bool? Ephemeral { get; set; }
///
/// The event type discriminator.
///
[JsonPropertyName("type")]
public abstract string Type { get; }
public static SessionEvent FromJson(string json) =>
JsonSerializer.Deserialize(json, SerializerOptions.Default)!;
public string ToJson() =>
JsonSerializer.Serialize(this, GetType(), SerializerOptions.Default);
}
///
/// Event: session.start
///
public partial class SessionStartEvent : SessionEvent
{
public override string Type => "session.start";
[JsonPropertyName("data")]
public SessionStartData Data { get; set; }
}
///
/// Event: session.resume
///
public partial class SessionResumeEvent : SessionEvent
{
public override string Type => "session.resume";
[JsonPropertyName("data")]
public SessionResumeData Data { get; set; }
}
///
/// Event: session.error
///
public partial class SessionErrorEvent : SessionEvent
{
public override string Type => "session.error";
[JsonPropertyName("data")]
public SessionErrorData Data { get; set; }
}
///
/// Event: session.idle
///
public partial class SessionIdleEvent : SessionEvent
{
public override string Type => "session.idle";
[JsonPropertyName("data")]
public SessionIdleData Data { get; set; }
}
///
/// Event: session.info
///
public partial class SessionInfoEvent : SessionEvent
{
public override string Type => "session.info";
[JsonPropertyName("data")]
public SessionInfoData Data { get; set; }
}
///
/// Event: session.model_change
///
public partial class SessionModelChangeEvent : SessionEvent
{
public override string Type => "session.model_change";
[JsonPropertyName("data")]
public SessionModelChangeData Data { get; set; }
}
///
/// Event: session.handoff
///
public partial class SessionHandoffEvent : SessionEvent
{
public override string Type => "session.handoff";
[JsonPropertyName("data")]
public SessionHandoffData Data { get; set; }
}
///
/// Event: session.truncation
///
public partial class SessionTruncationEvent : SessionEvent
{
public override string Type => "session.truncation";
[JsonPropertyName("data")]
public SessionTruncationData Data { get; set; }
}
///
/// Event: user.message
///
public partial class UserMessageEvent : SessionEvent
{
public override string Type => "user.message";
[JsonPropertyName("data")]
public UserMessageData Data { get; set; }
}
///
/// Event: pending_messages.modified
///
public partial class PendingMessagesModifiedEvent : SessionEvent
{
public override string Type => "pending_messages.modified";
[JsonPropertyName("data")]
public PendingMessagesModifiedData Data { get; set; }
}
///
/// Event: assistant.turn_start
///
public partial class AssistantTurnStartEvent : SessionEvent
{
public override string Type => "assistant.turn_start";
[JsonPropertyName("data")]
public AssistantTurnStartData Data { get; set; }
}
///
/// Event: assistant.intent
///
public partial class AssistantIntentEvent : SessionEvent
{
public override string Type => "assistant.intent";
[JsonPropertyName("data")]
public AssistantIntentData Data { get; set; }
}
///
/// Event: assistant.reasoning
///
public partial class AssistantReasoningEvent : SessionEvent
{
public override string Type => "assistant.reasoning";
[JsonPropertyName("data")]
public AssistantReasoningData Data { get; set; }
}
///
/// Event: assistant.reasoning_delta
///
public partial class AssistantReasoningDeltaEvent : SessionEvent
{
public override string Type => "assistant.reasoning_delta";
[JsonPropertyName("data")]
public AssistantReasoningDeltaData Data { get; set; }
}
///
/// Event: assistant.message
///
public partial class AssistantMessageEvent : SessionEvent
{
public override string Type => "assistant.message";
[JsonPropertyName("data")]
public AssistantMessageData Data { get; set; }
}
///
/// Event: assistant.message_delta
///
public partial class AssistantMessageDeltaEvent : SessionEvent
{
public override string Type => "assistant.message_delta";
[JsonPropertyName("data")]
public AssistantMessageDeltaData Data { get; set; }
}
///
/// Event: assistant.turn_end
///
public partial class AssistantTurnEndEvent : SessionEvent
{
public override string Type => "assistant.turn_end";
[JsonPropertyName("data")]
public AssistantTurnEndData Data { get; set; }
}
///
/// Event: assistant.usage
///
public partial class AssistantUsageEvent : SessionEvent
{
public override string Type => "assistant.usage";
[JsonPropertyName("data")]
public AssistantUsageData Data { get; set; }
}
///
/// Event: abort
///
public partial class AbortEvent : SessionEvent
{
public override string Type => "abort";
[JsonPropertyName("data")]
public AbortData Data { get; set; }
}
///
/// Event: tool.user_requested
///
public partial class ToolUserRequestedEvent : SessionEvent
{
public override string Type => "tool.user_requested";
[JsonPropertyName("data")]
public ToolUserRequestedData Data { get; set; }
}
///
/// Event: tool.execution_start
///
public partial class ToolExecutionStartEvent : SessionEvent
{
public override string Type => "tool.execution_start";
[JsonPropertyName("data")]
public ToolExecutionStartData Data { get; set; }
}
///
/// Event: tool.execution_partial_result
///
public partial class ToolExecutionPartialResultEvent : SessionEvent
{
public override string Type => "tool.execution_partial_result";
[JsonPropertyName("data")]
public ToolExecutionPartialResultData Data { get; set; }
}
///
/// Event: tool.execution_complete
///
public partial class ToolExecutionCompleteEvent : SessionEvent
{
public override string Type => "tool.execution_complete";
[JsonPropertyName("data")]
public ToolExecutionCompleteData Data { get; set; }
}
///
/// Event: custom_agent.started
///
public partial class CustomAgentStartedEvent : SessionEvent
{
public override string Type => "custom_agent.started";
[JsonPropertyName("data")]
public CustomAgentStartedData Data { get; set; }
}
///
/// Event: custom_agent.completed
///
public partial class CustomAgentCompletedEvent : SessionEvent
{
public override string Type => "custom_agent.completed";
[JsonPropertyName("data")]
public CustomAgentCompletedData Data { get; set; }
}
///
/// Event: custom_agent.failed
///
public partial class CustomAgentFailedEvent : SessionEvent
{
public override string Type => "custom_agent.failed";
[JsonPropertyName("data")]
public CustomAgentFailedData Data { get; set; }
}
///
/// Event: custom_agent.selected
///
public partial class CustomAgentSelectedEvent : SessionEvent
{
public override string Type => "custom_agent.selected";
[JsonPropertyName("data")]
public CustomAgentSelectedData Data { get; set; }
}
///
/// Event: hook.start
///
public partial class HookStartEvent : SessionEvent
{
public override string Type => "hook.start";
[JsonPropertyName("data")]
public HookStartData Data { get; set; }
}
///
/// Event: hook.end
///
public partial class HookEndEvent : SessionEvent
{
public override string Type => "hook.end";
[JsonPropertyName("data")]
public HookEndData Data { get; set; }
}
///
/// Event: system.message
///
public partial class SystemMessageEvent : SessionEvent
{
public override string Type => "system.message";
[JsonPropertyName("data")]
public SystemMessageData Data { get; set; }
}
public partial class SessionStartData
{
[JsonPropertyName("sessionId")]
public string SessionId { get; set; }
[JsonPropertyName("version")]
public double Version { get; set; }
[JsonPropertyName("producer")]
public string Producer { get; set; }
[JsonPropertyName("copilotVersion")]
public string CopilotVersion { get; set; }
[JsonPropertyName("startTime")]
public DateTimeOffset StartTime { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("selectedModel")]
public string SelectedModel { get; set; }
}
public partial class SessionResumeData
{
[JsonPropertyName("resumeTime")]
public DateTimeOffset ResumeTime { get; set; }
[JsonPropertyName("eventCount")]
public double EventCount { get; set; }
}
public partial class SessionErrorData
{
[JsonPropertyName("errorType")]
public string ErrorType { get; set; }
[JsonPropertyName("message")]
public string Message { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("stack")]
public string Stack { get; set; }
}
public partial class SessionIdleData
{
}
public partial class SessionInfoData
{
[JsonPropertyName("infoType")]
public string InfoType { get; set; }
[JsonPropertyName("message")]
public string Message { get; set; }
}
public partial class SessionModelChangeData
{
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("previousModel")]
public string PreviousModel { get; set; }
[JsonPropertyName("newModel")]
public string NewModel { get; set; }
}
public partial class SessionHandoffData
{
[JsonPropertyName("handoffTime")]
public DateTimeOffset HandoffTime { get; set; }
[JsonPropertyName("sourceType")]
public SessionHandoffDataSourceType SourceType { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("repository")]
public SessionHandoffDataRepository? Repository { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("context")]
public string Context { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("summary")]
public string Summary { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("remoteSessionId")]
public string RemoteSessionId { get; set; }
}
public partial class SessionTruncationData
{
[JsonPropertyName("tokenLimit")]
public double TokenLimit { get; set; }
[JsonPropertyName("preTruncationTokensInMessages")]
public double PreTruncationTokensInMessages { get; set; }
[JsonPropertyName("preTruncationMessagesLength")]
public double PreTruncationMessagesLength { get; set; }
[JsonPropertyName("postTruncationTokensInMessages")]
public double PostTruncationTokensInMessages { get; set; }
[JsonPropertyName("postTruncationMessagesLength")]
public double PostTruncationMessagesLength { get; set; }
[JsonPropertyName("tokensRemovedDuringTruncation")]
public double TokensRemovedDuringTruncation { get; set; }
[JsonPropertyName("messagesRemovedDuringTruncation")]
public double MessagesRemovedDuringTruncation { get; set; }
[JsonPropertyName("performedBy")]
public string PerformedBy { get; set; }
}
public partial class UserMessageData
{
[JsonPropertyName("content")]
public string Content { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("transformedContent")]
public string TransformedContent { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("attachments")]
public UserMessageDataAttachmentsItem[] Attachments { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("source")]
public string Source { get; set; }
}
public partial class PendingMessagesModifiedData
{
}
public partial class AssistantTurnStartData
{
[JsonPropertyName("turnId")]
public string TurnId { get; set; }
}
public partial class AssistantIntentData
{
[JsonPropertyName("intent")]
public string Intent { get; set; }
}
public partial class AssistantReasoningData
{
[JsonPropertyName("reasoningId")]
public string ReasoningId { get; set; }
[JsonPropertyName("content")]
public string Content { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("chunkContent")]
public string ChunkContent { get; set; }
}
public partial class AssistantReasoningDeltaData
{
[JsonPropertyName("reasoningId")]
public string ReasoningId { get; set; }
[JsonPropertyName("deltaContent")]
public string DeltaContent { get; set; }
}
public partial class AssistantMessageData
{
[JsonPropertyName("messageId")]
public string MessageId { get; set; }
[JsonPropertyName("content")]
public string Content { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("chunkContent")]
public string ChunkContent { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("totalResponseSizeBytes")]
public double? TotalResponseSizeBytes { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("toolRequests")]
public AssistantMessageDataToolRequestsItem[] ToolRequests { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("parentToolCallId")]
public string ParentToolCallId { get; set; }
}
public partial class AssistantMessageDeltaData
{
[JsonPropertyName("messageId")]
public string MessageId { get; set; }
[JsonPropertyName("deltaContent")]
public string DeltaContent { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("totalResponseSizeBytes")]
public double? TotalResponseSizeBytes { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("parentToolCallId")]
public string ParentToolCallId { get; set; }
}
public partial class AssistantTurnEndData
{
[JsonPropertyName("turnId")]
public string TurnId { get; set; }
}
public partial class AssistantUsageData
{
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("model")]
public string Model { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("inputTokens")]
public double? InputTokens { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("outputTokens")]
public double? OutputTokens { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("cacheReadTokens")]
public double? CacheReadTokens { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("cacheWriteTokens")]
public double? CacheWriteTokens { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("cost")]
public double? Cost { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("duration")]
public double? Duration { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("initiator")]
public string Initiator { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("apiCallId")]
public string ApiCallId { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("providerCallId")]
public string ProviderCallId { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("quotaSnapshots")]
public Dictionary QuotaSnapshots { get; set; }
}
public partial class AbortData
{
[JsonPropertyName("reason")]
public string Reason { get; set; }
}
public partial class ToolUserRequestedData
{
[JsonPropertyName("toolCallId")]
public string ToolCallId { get; set; }
[JsonPropertyName("toolName")]
public string ToolName { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("arguments")]
public object Arguments { get; set; }
}
public partial class ToolExecutionStartData
{
[JsonPropertyName("toolCallId")]
public string ToolCallId { get; set; }
[JsonPropertyName("toolName")]
public string ToolName { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("arguments")]
public object Arguments { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("parentToolCallId")]
public string ParentToolCallId { get; set; }
}
public partial class ToolExecutionPartialResultData
{
[JsonPropertyName("toolCallId")]
public string ToolCallId { get; set; }
[JsonPropertyName("partialOutput")]
public string PartialOutput { get; set; }
}
public partial class ToolExecutionCompleteData
{
[JsonPropertyName("toolCallId")]
public string ToolCallId { get; set; }
[JsonPropertyName("success")]
public bool Success { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("isUserRequested")]
public bool? IsUserRequested { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("result")]
public ToolExecutionCompleteDataResult? Result { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("error")]
public ToolExecutionCompleteDataError? Error { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("toolTelemetry")]
public Dictionary ToolTelemetry { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("parentToolCallId")]
public string ParentToolCallId { get; set; }
}
public partial class CustomAgentStartedData
{
[JsonPropertyName("toolCallId")]
public string ToolCallId { get; set; }
[JsonPropertyName("agentName")]
public string AgentName { get; set; }
[JsonPropertyName("agentDisplayName")]
public string AgentDisplayName { get; set; }
[JsonPropertyName("agentDescription")]
public string AgentDescription { get; set; }
}
public partial class CustomAgentCompletedData
{
[JsonPropertyName("toolCallId")]
public string ToolCallId { get; set; }
[JsonPropertyName("agentName")]
public string AgentName { get; set; }
}
public partial class CustomAgentFailedData
{
[JsonPropertyName("toolCallId")]
public string ToolCallId { get; set; }
[JsonPropertyName("agentName")]
public string AgentName { get; set; }
[JsonPropertyName("error")]
public string Error { get; set; }
}
public partial class CustomAgentSelectedData
{
[JsonPropertyName("agentName")]
public string AgentName { get; set; }
[JsonPropertyName("agentDisplayName")]
public string AgentDisplayName { get; set; }
[JsonPropertyName("tools")]
public string[] Tools { get; set; }
}
public partial class HookStartData
{
[JsonPropertyName("hookInvocationId")]
public string HookInvocationId { get; set; }
[JsonPropertyName("hookType")]
public string HookType { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("input")]
public object Input { get; set; }
}
public partial class HookEndData
{
[JsonPropertyName("hookInvocationId")]
public string HookInvocationId { get; set; }
[JsonPropertyName("hookType")]
public string HookType { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("output")]
public object Output { get; set; }
[JsonPropertyName("success")]
public bool Success { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("error")]
public HookEndDataError? Error { get; set; }
}
public partial class SystemMessageData
{
[JsonPropertyName("content")]
public string Content { get; set; }
[JsonPropertyName("role")]
public SystemMessageDataRole Role { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("metadata")]
public SystemMessageDataMetadata? Metadata { get; set; }
}
public partial class SessionHandoffDataRepository
{
[JsonPropertyName("owner")]
public string Owner { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("branch")]
public string Branch { get; set; }
}
public partial class UserMessageDataAttachmentsItem
{
[JsonPropertyName("type")]
public UserMessageDataAttachmentsItemType Type { get; set; }
[JsonPropertyName("path")]
public string Path { get; set; }
[JsonPropertyName("displayName")]
public string DisplayName { get; set; }
}
public partial class AssistantMessageDataToolRequestsItem
{
[JsonPropertyName("toolCallId")]
public string ToolCallId { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("arguments")]
public object Arguments { get; set; }
}
public partial class ToolExecutionCompleteDataResult
{
[JsonPropertyName("content")]
public string Content { get; set; }
}
public partial class ToolExecutionCompleteDataError
{
[JsonPropertyName("message")]
public string Message { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("code")]
public string Code { get; set; }
}
public partial class HookEndDataError
{
[JsonPropertyName("message")]
public string Message { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("stack")]
public string Stack { get; set; }
}
public partial class SystemMessageDataMetadata
{
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("promptVersion")]
public string PromptVersion { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("variables")]
public Dictionary Variables { get; set; }
}
public enum SessionHandoffDataSourceType
{
Remote,
Local,
}
public enum UserMessageDataAttachmentsItemType
{
File,
Directory,
}
public enum SystemMessageDataRole
{
System,
Developer,
}
internal static class SerializerOptions
{
///
/// Default options with SessionEventConverter for polymorphic deserialization.
///
public static readonly JsonSerializerOptions Default = new()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) }
};
///
/// Options without SessionEventConverter, used internally by the converter to avoid recursion.
///
internal static readonly JsonSerializerOptions WithoutConverter = new()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) }
};
}
}
#pragma warning restore CS8618