/*---------------------------------------------------------------------------------------------
* 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-26T18:08:34.014Z
//
// To update these types:
// 1. Update the schema in copilot-agent-runtime
// 2. Run: npm run generate:session-types
using System.Text.Json;
using System.Text.Json.Serialization;
namespace GitHub.Copilot.SDK;
///
/// Base class for all session events with polymorphic JSON serialization.
///
[JsonPolymorphic(
TypeDiscriminatorPropertyName = "type",
UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FailSerialization)]
[JsonDerivedType(typeof(AbortEvent), "abort")]
[JsonDerivedType(typeof(AssistantIntentEvent), "assistant.intent")]
[JsonDerivedType(typeof(AssistantMessageEvent), "assistant.message")]
[JsonDerivedType(typeof(AssistantMessageDeltaEvent), "assistant.message_delta")]
[JsonDerivedType(typeof(AssistantReasoningEvent), "assistant.reasoning")]
[JsonDerivedType(typeof(AssistantReasoningDeltaEvent), "assistant.reasoning_delta")]
[JsonDerivedType(typeof(AssistantTurnEndEvent), "assistant.turn_end")]
[JsonDerivedType(typeof(AssistantTurnStartEvent), "assistant.turn_start")]
[JsonDerivedType(typeof(AssistantUsageEvent), "assistant.usage")]
[JsonDerivedType(typeof(HookEndEvent), "hook.end")]
[JsonDerivedType(typeof(HookStartEvent), "hook.start")]
[JsonDerivedType(typeof(PendingMessagesModifiedEvent), "pending_messages.modified")]
[JsonDerivedType(typeof(SessionCompactionCompleteEvent), "session.compaction_complete")]
[JsonDerivedType(typeof(SessionCompactionStartEvent), "session.compaction_start")]
[JsonDerivedType(typeof(SessionErrorEvent), "session.error")]
[JsonDerivedType(typeof(SessionHandoffEvent), "session.handoff")]
[JsonDerivedType(typeof(SessionIdleEvent), "session.idle")]
[JsonDerivedType(typeof(SessionInfoEvent), "session.info")]
[JsonDerivedType(typeof(SessionModelChangeEvent), "session.model_change")]
[JsonDerivedType(typeof(SessionResumeEvent), "session.resume")]
[JsonDerivedType(typeof(SessionSnapshotRewindEvent), "session.snapshot_rewind")]
[JsonDerivedType(typeof(SessionStartEvent), "session.start")]
[JsonDerivedType(typeof(SessionTruncationEvent), "session.truncation")]
[JsonDerivedType(typeof(SessionUsageInfoEvent), "session.usage_info")]
[JsonDerivedType(typeof(SubagentCompletedEvent), "subagent.completed")]
[JsonDerivedType(typeof(SubagentFailedEvent), "subagent.failed")]
[JsonDerivedType(typeof(SubagentSelectedEvent), "subagent.selected")]
[JsonDerivedType(typeof(SubagentStartedEvent), "subagent.started")]
[JsonDerivedType(typeof(SystemMessageEvent), "system.message")]
[JsonDerivedType(typeof(ToolExecutionCompleteEvent), "tool.execution_complete")]
[JsonDerivedType(typeof(ToolExecutionPartialResultEvent), "tool.execution_partial_result")]
[JsonDerivedType(typeof(ToolExecutionProgressEvent), "tool.execution_progress")]
[JsonDerivedType(typeof(ToolExecutionStartEvent), "tool.execution_start")]
[JsonDerivedType(typeof(ToolUserRequestedEvent), "tool.user_requested")]
[JsonDerivedType(typeof(UserMessageEvent), "user.message")]
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.
///
[JsonIgnore]
public abstract string Type { get; }
public static SessionEvent FromJson(string json) =>
JsonSerializer.Deserialize(json, SessionEventsJsonContext.Default.SessionEvent)!;
public string ToJson() =>
JsonSerializer.Serialize(this, SessionEventsJsonContext.Default.SessionEvent);
}
///
/// Event: session.start
///
public partial class SessionStartEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.start";
[JsonPropertyName("data")]
public required SessionStartData Data { get; set; }
}
///
/// Event: session.resume
///
public partial class SessionResumeEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.resume";
[JsonPropertyName("data")]
public required SessionResumeData Data { get; set; }
}
///
/// Event: session.error
///
public partial class SessionErrorEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.error";
[JsonPropertyName("data")]
public required SessionErrorData Data { get; set; }
}
///
/// Event: session.idle
///
public partial class SessionIdleEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.idle";
[JsonPropertyName("data")]
public required SessionIdleData Data { get; set; }
}
///
/// Event: session.info
///
public partial class SessionInfoEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.info";
[JsonPropertyName("data")]
public required SessionInfoData Data { get; set; }
}
///
/// Event: session.model_change
///
public partial class SessionModelChangeEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.model_change";
[JsonPropertyName("data")]
public required SessionModelChangeData Data { get; set; }
}
///
/// Event: session.handoff
///
public partial class SessionHandoffEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.handoff";
[JsonPropertyName("data")]
public required SessionHandoffData Data { get; set; }
}
///
/// Event: session.truncation
///
public partial class SessionTruncationEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.truncation";
[JsonPropertyName("data")]
public required SessionTruncationData Data { get; set; }
}
///
/// Event: session.snapshot_rewind
///
public partial class SessionSnapshotRewindEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.snapshot_rewind";
[JsonPropertyName("data")]
public required SessionSnapshotRewindData Data { get; set; }
}
///
/// Event: session.usage_info
///
public partial class SessionUsageInfoEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.usage_info";
[JsonPropertyName("data")]
public required SessionUsageInfoData Data { get; set; }
}
///
/// Event: session.compaction_start
///
public partial class SessionCompactionStartEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.compaction_start";
[JsonPropertyName("data")]
public required SessionCompactionStartData Data { get; set; }
}
///
/// Event: session.compaction_complete
///
public partial class SessionCompactionCompleteEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "session.compaction_complete";
[JsonPropertyName("data")]
public required SessionCompactionCompleteData Data { get; set; }
}
///
/// Event: user.message
///
public partial class UserMessageEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "user.message";
[JsonPropertyName("data")]
public required UserMessageData Data { get; set; }
}
///
/// Event: pending_messages.modified
///
public partial class PendingMessagesModifiedEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "pending_messages.modified";
[JsonPropertyName("data")]
public required PendingMessagesModifiedData Data { get; set; }
}
///
/// Event: assistant.turn_start
///
public partial class AssistantTurnStartEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "assistant.turn_start";
[JsonPropertyName("data")]
public required AssistantTurnStartData Data { get; set; }
}
///
/// Event: assistant.intent
///
public partial class AssistantIntentEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "assistant.intent";
[JsonPropertyName("data")]
public required AssistantIntentData Data { get; set; }
}
///
/// Event: assistant.reasoning
///
public partial class AssistantReasoningEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "assistant.reasoning";
[JsonPropertyName("data")]
public required AssistantReasoningData Data { get; set; }
}
///
/// Event: assistant.reasoning_delta
///
public partial class AssistantReasoningDeltaEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "assistant.reasoning_delta";
[JsonPropertyName("data")]
public required AssistantReasoningDeltaData Data { get; set; }
}
///
/// Event: assistant.message
///
public partial class AssistantMessageEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "assistant.message";
[JsonPropertyName("data")]
public required AssistantMessageData Data { get; set; }
}
///
/// Event: assistant.message_delta
///
public partial class AssistantMessageDeltaEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "assistant.message_delta";
[JsonPropertyName("data")]
public required AssistantMessageDeltaData Data { get; set; }
}
///
/// Event: assistant.turn_end
///
public partial class AssistantTurnEndEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "assistant.turn_end";
[JsonPropertyName("data")]
public required AssistantTurnEndData Data { get; set; }
}
///
/// Event: assistant.usage
///
public partial class AssistantUsageEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "assistant.usage";
[JsonPropertyName("data")]
public required AssistantUsageData Data { get; set; }
}
///
/// Event: abort
///
public partial class AbortEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "abort";
[JsonPropertyName("data")]
public required AbortData Data { get; set; }
}
///
/// Event: tool.user_requested
///
public partial class ToolUserRequestedEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "tool.user_requested";
[JsonPropertyName("data")]
public required ToolUserRequestedData Data { get; set; }
}
///
/// Event: tool.execution_start
///
public partial class ToolExecutionStartEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "tool.execution_start";
[JsonPropertyName("data")]
public required ToolExecutionStartData Data { get; set; }
}
///
/// Event: tool.execution_partial_result
///
public partial class ToolExecutionPartialResultEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "tool.execution_partial_result";
[JsonPropertyName("data")]
public required ToolExecutionPartialResultData Data { get; set; }
}
///
/// Event: tool.execution_progress
///
public partial class ToolExecutionProgressEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "tool.execution_progress";
[JsonPropertyName("data")]
public required ToolExecutionProgressData Data { get; set; }
}
///
/// Event: tool.execution_complete
///
public partial class ToolExecutionCompleteEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "tool.execution_complete";
[JsonPropertyName("data")]
public required ToolExecutionCompleteData Data { get; set; }
}
///
/// Event: subagent.started
///
public partial class SubagentStartedEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "subagent.started";
[JsonPropertyName("data")]
public required SubagentStartedData Data { get; set; }
}
///
/// Event: subagent.completed
///
public partial class SubagentCompletedEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "subagent.completed";
[JsonPropertyName("data")]
public required SubagentCompletedData Data { get; set; }
}
///
/// Event: subagent.failed
///
public partial class SubagentFailedEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "subagent.failed";
[JsonPropertyName("data")]
public required SubagentFailedData Data { get; set; }
}
///
/// Event: subagent.selected
///
public partial class SubagentSelectedEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "subagent.selected";
[JsonPropertyName("data")]
public required SubagentSelectedData Data { get; set; }
}
///
/// Event: hook.start
///
public partial class HookStartEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "hook.start";
[JsonPropertyName("data")]
public required HookStartData Data { get; set; }
}
///
/// Event: hook.end
///
public partial class HookEndEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "hook.end";
[JsonPropertyName("data")]
public required HookEndData Data { get; set; }
}
///
/// Event: system.message
///
public partial class SystemMessageEvent : SessionEvent
{
[JsonIgnore]
public override string Type => "system.message";
[JsonPropertyName("data")]
public required SystemMessageData Data { get; set; }
}
public partial class SessionStartData
{
[JsonPropertyName("sessionId")]
public required string SessionId { get; set; }
[JsonPropertyName("version")]
public required double Version { get; set; }
[JsonPropertyName("producer")]
public required string Producer { get; set; }
[JsonPropertyName("copilotVersion")]
public required string CopilotVersion { get; set; }
[JsonPropertyName("startTime")]
public required DateTimeOffset StartTime { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("selectedModel")]
public string? SelectedModel { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("context")]
public SessionStartDataContext? Context { get; set; }
}
public partial class SessionResumeData
{
[JsonPropertyName("resumeTime")]
public required DateTimeOffset ResumeTime { get; set; }
[JsonPropertyName("eventCount")]
public required double EventCount { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("context")]
public SessionResumeDataContext? Context { get; set; }
}
public partial class SessionErrorData
{
[JsonPropertyName("errorType")]
public required string ErrorType { get; set; }
[JsonPropertyName("message")]
public required 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 required string InfoType { get; set; }
[JsonPropertyName("message")]
public required string Message { get; set; }
}
public partial class SessionModelChangeData
{
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("previousModel")]
public string? PreviousModel { get; set; }
[JsonPropertyName("newModel")]
public required string NewModel { get; set; }
}
public partial class SessionHandoffData
{
[JsonPropertyName("handoffTime")]
public required DateTimeOffset HandoffTime { get; set; }
[JsonPropertyName("sourceType")]
public required 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 required double TokenLimit { get; set; }
[JsonPropertyName("preTruncationTokensInMessages")]
public required double PreTruncationTokensInMessages { get; set; }
[JsonPropertyName("preTruncationMessagesLength")]
public required double PreTruncationMessagesLength { get; set; }
[JsonPropertyName("postTruncationTokensInMessages")]
public required double PostTruncationTokensInMessages { get; set; }
[JsonPropertyName("postTruncationMessagesLength")]
public required double PostTruncationMessagesLength { get; set; }
[JsonPropertyName("tokensRemovedDuringTruncation")]
public required double TokensRemovedDuringTruncation { get; set; }
[JsonPropertyName("messagesRemovedDuringTruncation")]
public required double MessagesRemovedDuringTruncation { get; set; }
[JsonPropertyName("performedBy")]
public required string PerformedBy { get; set; }
}
public partial class SessionSnapshotRewindData
{
[JsonPropertyName("upToEventId")]
public required string UpToEventId { get; set; }
[JsonPropertyName("eventsRemoved")]
public required double EventsRemoved { get; set; }
}
public partial class SessionUsageInfoData
{
[JsonPropertyName("tokenLimit")]
public required double TokenLimit { get; set; }
[JsonPropertyName("currentTokens")]
public required double CurrentTokens { get; set; }
[JsonPropertyName("messagesLength")]
public required double MessagesLength { get; set; }
}
public partial class SessionCompactionStartData
{
}
public partial class SessionCompactionCompleteData
{
[JsonPropertyName("success")]
public required bool Success { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("error")]
public string? Error { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("preCompactionTokens")]
public double? PreCompactionTokens { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("postCompactionTokens")]
public double? PostCompactionTokens { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("preCompactionMessagesLength")]
public double? PreCompactionMessagesLength { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("messagesRemoved")]
public double? MessagesRemoved { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("tokensRemoved")]
public double? TokensRemoved { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("summaryContent")]
public string? SummaryContent { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("compactionTokensUsed")]
public SessionCompactionCompleteDataCompactionTokensUsed? CompactionTokensUsed { get; set; }
}
public partial class UserMessageData
{
[JsonPropertyName("content")]
public required 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 required string TurnId { get; set; }
}
public partial class AssistantIntentData
{
[JsonPropertyName("intent")]
public required string Intent { get; set; }
}
public partial class AssistantReasoningData
{
[JsonPropertyName("reasoningId")]
public required string ReasoningId { get; set; }
[JsonPropertyName("content")]
public required string Content { get; set; }
}
public partial class AssistantReasoningDeltaData
{
[JsonPropertyName("reasoningId")]
public required string ReasoningId { get; set; }
[JsonPropertyName("deltaContent")]
public required string DeltaContent { get; set; }
}
public partial class AssistantMessageData
{
[JsonPropertyName("messageId")]
public required string MessageId { get; set; }
[JsonPropertyName("content")]
public required string Content { 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 required string MessageId { get; set; }
[JsonPropertyName("deltaContent")]
public required 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 required 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 required string Reason { get; set; }
}
public partial class ToolUserRequestedData
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }
[JsonPropertyName("toolName")]
public required string ToolName { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("arguments")]
public object? Arguments { get; set; }
}
public partial class ToolExecutionStartData
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }
[JsonPropertyName("toolName")]
public required string ToolName { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("arguments")]
public object? Arguments { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("mcpServerName")]
public string? McpServerName { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("mcpToolName")]
public string? McpToolName { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("parentToolCallId")]
public string? ParentToolCallId { get; set; }
}
public partial class ToolExecutionPartialResultData
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }
[JsonPropertyName("partialOutput")]
public required string PartialOutput { get; set; }
}
public partial class ToolExecutionProgressData
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }
[JsonPropertyName("progressMessage")]
public required string ProgressMessage { get; set; }
}
public partial class ToolExecutionCompleteData
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }
[JsonPropertyName("success")]
public required 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 SubagentStartedData
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }
[JsonPropertyName("agentName")]
public required string AgentName { get; set; }
[JsonPropertyName("agentDisplayName")]
public required string AgentDisplayName { get; set; }
[JsonPropertyName("agentDescription")]
public required string AgentDescription { get; set; }
}
public partial class SubagentCompletedData
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }
[JsonPropertyName("agentName")]
public required string AgentName { get; set; }
}
public partial class SubagentFailedData
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }
[JsonPropertyName("agentName")]
public required string AgentName { get; set; }
[JsonPropertyName("error")]
public required string Error { get; set; }
}
public partial class SubagentSelectedData
{
[JsonPropertyName("agentName")]
public required string AgentName { get; set; }
[JsonPropertyName("agentDisplayName")]
public required string AgentDisplayName { get; set; }
[JsonPropertyName("tools")]
public string[]? Tools { get; set; }
}
public partial class HookStartData
{
[JsonPropertyName("hookInvocationId")]
public required string HookInvocationId { get; set; }
[JsonPropertyName("hookType")]
public required string HookType { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("input")]
public object? Input { get; set; }
}
public partial class HookEndData
{
[JsonPropertyName("hookInvocationId")]
public required string HookInvocationId { get; set; }
[JsonPropertyName("hookType")]
public required string HookType { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("output")]
public object? Output { get; set; }
[JsonPropertyName("success")]
public required bool Success { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("error")]
public HookEndDataError? Error { get; set; }
}
public partial class SystemMessageData
{
[JsonPropertyName("content")]
public required string Content { get; set; }
[JsonPropertyName("role")]
public required 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 SessionStartDataContext
{
[JsonPropertyName("cwd")]
public required string Cwd { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("gitRoot")]
public string? GitRoot { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("repository")]
public string? Repository { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("branch")]
public string? Branch { get; set; }
}
public partial class SessionResumeDataContext
{
[JsonPropertyName("cwd")]
public required string Cwd { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("gitRoot")]
public string? GitRoot { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("repository")]
public string? Repository { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("branch")]
public string? Branch { get; set; }
}
public partial class SessionHandoffDataRepository
{
[JsonPropertyName("owner")]
public required string Owner { get; set; }
[JsonPropertyName("name")]
public required string Name { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("branch")]
public string? Branch { get; set; }
}
public partial class SessionCompactionCompleteDataCompactionTokensUsed
{
[JsonPropertyName("input")]
public required double Input { get; set; }
[JsonPropertyName("output")]
public required double Output { get; set; }
[JsonPropertyName("cachedInput")]
public required double CachedInput { get; set; }
}
public partial class UserMessageDataAttachmentsItemFile : UserMessageDataAttachmentsItem
{
[JsonIgnore]
public override string Type => "file";
[JsonPropertyName("path")]
public required string Path { get; set; }
[JsonPropertyName("displayName")]
public required string DisplayName { get; set; }
}
public partial class UserMessageDataAttachmentsItemDirectory : UserMessageDataAttachmentsItem
{
[JsonIgnore]
public override string Type => "directory";
[JsonPropertyName("path")]
public required string Path { get; set; }
[JsonPropertyName("displayName")]
public required string DisplayName { get; set; }
}
public partial class UserMessageDataAttachmentsItemSelectionSelectionStart
{
[JsonPropertyName("line")]
public required double Line { get; set; }
[JsonPropertyName("character")]
public required double Character { get; set; }
}
public partial class UserMessageDataAttachmentsItemSelectionSelectionEnd
{
[JsonPropertyName("line")]
public required double Line { get; set; }
[JsonPropertyName("character")]
public required double Character { get; set; }
}
public partial class UserMessageDataAttachmentsItemSelectionSelection
{
[JsonPropertyName("start")]
public required UserMessageDataAttachmentsItemSelectionSelectionStart Start { get; set; }
[JsonPropertyName("end")]
public required UserMessageDataAttachmentsItemSelectionSelectionEnd End { get; set; }
}
public partial class UserMessageDataAttachmentsItemSelection : UserMessageDataAttachmentsItem
{
[JsonIgnore]
public override string Type => "selection";
[JsonPropertyName("filePath")]
public required string FilePath { get; set; }
[JsonPropertyName("displayName")]
public required string DisplayName { get; set; }
[JsonPropertyName("text")]
public required string Text { get; set; }
[JsonPropertyName("selection")]
public required UserMessageDataAttachmentsItemSelectionSelection Selection { get; set; }
}
[JsonPolymorphic(
TypeDiscriminatorPropertyName = "type",
UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FallBackToBaseType)]
[JsonDerivedType(typeof(UserMessageDataAttachmentsItemFile), "file")]
[JsonDerivedType(typeof(UserMessageDataAttachmentsItemDirectory), "directory")]
[JsonDerivedType(typeof(UserMessageDataAttachmentsItemSelection), "selection")]
public partial class UserMessageDataAttachmentsItem
{
[JsonPropertyName("type")]
public virtual string Type { get; set; } = string.Empty;
}
public partial class AssistantMessageDataToolRequestsItem
{
[JsonPropertyName("toolCallId")]
public required string ToolCallId { get; set; }
[JsonPropertyName("name")]
public required string Name { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("arguments")]
public object? Arguments { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("type")]
public AssistantMessageDataToolRequestsItemType? Type { get; set; }
}
public partial class ToolExecutionCompleteDataResult
{
[JsonPropertyName("content")]
public required string Content { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("detailedContent")]
public string? DetailedContent { get; set; }
}
public partial class ToolExecutionCompleteDataError
{
[JsonPropertyName("message")]
public required string Message { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("code")]
public string? Code { get; set; }
}
public partial class HookEndDataError
{
[JsonPropertyName("message")]
public required 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; }
}
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum SessionHandoffDataSourceType
{
[JsonStringEnumMemberName("remote")]
Remote,
[JsonStringEnumMemberName("local")]
Local,
}
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum AssistantMessageDataToolRequestsItemType
{
[JsonStringEnumMemberName("function")]
Function,
[JsonStringEnumMemberName("custom")]
Custom,
}
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum SystemMessageDataRole
{
[JsonStringEnumMemberName("system")]
System,
[JsonStringEnumMemberName("developer")]
Developer,
}
[JsonSourceGenerationOptions(
JsonSerializerDefaults.Web,
AllowOutOfOrderMetadataProperties = true,
NumberHandling = JsonNumberHandling.AllowReadingFromString,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
[JsonSerializable(typeof(AbortData))]
[JsonSerializable(typeof(AbortEvent))]
[JsonSerializable(typeof(AssistantIntentData))]
[JsonSerializable(typeof(AssistantIntentEvent))]
[JsonSerializable(typeof(AssistantMessageData))]
[JsonSerializable(typeof(AssistantMessageDataToolRequestsItem))]
[JsonSerializable(typeof(AssistantMessageDeltaData))]
[JsonSerializable(typeof(AssistantMessageDeltaEvent))]
[JsonSerializable(typeof(AssistantMessageEvent))]
[JsonSerializable(typeof(AssistantReasoningData))]
[JsonSerializable(typeof(AssistantReasoningDeltaData))]
[JsonSerializable(typeof(AssistantReasoningDeltaEvent))]
[JsonSerializable(typeof(AssistantReasoningEvent))]
[JsonSerializable(typeof(AssistantTurnEndData))]
[JsonSerializable(typeof(AssistantTurnEndEvent))]
[JsonSerializable(typeof(AssistantTurnStartData))]
[JsonSerializable(typeof(AssistantTurnStartEvent))]
[JsonSerializable(typeof(AssistantUsageData))]
[JsonSerializable(typeof(AssistantUsageEvent))]
[JsonSerializable(typeof(HookEndData))]
[JsonSerializable(typeof(HookEndDataError))]
[JsonSerializable(typeof(HookEndEvent))]
[JsonSerializable(typeof(HookStartData))]
[JsonSerializable(typeof(HookStartEvent))]
[JsonSerializable(typeof(PendingMessagesModifiedData))]
[JsonSerializable(typeof(PendingMessagesModifiedEvent))]
[JsonSerializable(typeof(SessionCompactionCompleteData))]
[JsonSerializable(typeof(SessionCompactionCompleteDataCompactionTokensUsed))]
[JsonSerializable(typeof(SessionCompactionCompleteEvent))]
[JsonSerializable(typeof(SessionCompactionStartData))]
[JsonSerializable(typeof(SessionCompactionStartEvent))]
[JsonSerializable(typeof(SessionErrorData))]
[JsonSerializable(typeof(SessionErrorEvent))]
[JsonSerializable(typeof(SessionEvent))]
[JsonSerializable(typeof(SessionHandoffData))]
[JsonSerializable(typeof(SessionHandoffDataRepository))]
[JsonSerializable(typeof(SessionHandoffEvent))]
[JsonSerializable(typeof(SessionIdleData))]
[JsonSerializable(typeof(SessionIdleEvent))]
[JsonSerializable(typeof(SessionInfoData))]
[JsonSerializable(typeof(SessionInfoEvent))]
[JsonSerializable(typeof(SessionModelChangeData))]
[JsonSerializable(typeof(SessionModelChangeEvent))]
[JsonSerializable(typeof(SessionResumeData))]
[JsonSerializable(typeof(SessionResumeDataContext))]
[JsonSerializable(typeof(SessionResumeEvent))]
[JsonSerializable(typeof(SessionSnapshotRewindData))]
[JsonSerializable(typeof(SessionSnapshotRewindEvent))]
[JsonSerializable(typeof(SessionStartData))]
[JsonSerializable(typeof(SessionStartDataContext))]
[JsonSerializable(typeof(SessionStartEvent))]
[JsonSerializable(typeof(SessionTruncationData))]
[JsonSerializable(typeof(SessionTruncationEvent))]
[JsonSerializable(typeof(SessionUsageInfoData))]
[JsonSerializable(typeof(SessionUsageInfoEvent))]
[JsonSerializable(typeof(SubagentCompletedData))]
[JsonSerializable(typeof(SubagentCompletedEvent))]
[JsonSerializable(typeof(SubagentFailedData))]
[JsonSerializable(typeof(SubagentFailedEvent))]
[JsonSerializable(typeof(SubagentSelectedData))]
[JsonSerializable(typeof(SubagentSelectedEvent))]
[JsonSerializable(typeof(SubagentStartedData))]
[JsonSerializable(typeof(SubagentStartedEvent))]
[JsonSerializable(typeof(SystemMessageData))]
[JsonSerializable(typeof(SystemMessageDataMetadata))]
[JsonSerializable(typeof(SystemMessageEvent))]
[JsonSerializable(typeof(ToolExecutionCompleteData))]
[JsonSerializable(typeof(ToolExecutionCompleteDataError))]
[JsonSerializable(typeof(ToolExecutionCompleteDataResult))]
[JsonSerializable(typeof(ToolExecutionCompleteEvent))]
[JsonSerializable(typeof(ToolExecutionPartialResultData))]
[JsonSerializable(typeof(ToolExecutionPartialResultEvent))]
[JsonSerializable(typeof(ToolExecutionProgressData))]
[JsonSerializable(typeof(ToolExecutionProgressEvent))]
[JsonSerializable(typeof(ToolExecutionStartData))]
[JsonSerializable(typeof(ToolExecutionStartEvent))]
[JsonSerializable(typeof(ToolUserRequestedData))]
[JsonSerializable(typeof(ToolUserRequestedEvent))]
[JsonSerializable(typeof(UserMessageData))]
[JsonSerializable(typeof(UserMessageDataAttachmentsItem))]
[JsonSerializable(typeof(UserMessageDataAttachmentsItemDirectory))]
[JsonSerializable(typeof(UserMessageDataAttachmentsItemFile))]
[JsonSerializable(typeof(UserMessageDataAttachmentsItemSelection))]
[JsonSerializable(typeof(UserMessageDataAttachmentsItemSelectionSelection))]
[JsonSerializable(typeof(UserMessageDataAttachmentsItemSelectionSelectionEnd))]
[JsonSerializable(typeof(UserMessageDataAttachmentsItemSelectionSelectionStart))]
[JsonSerializable(typeof(UserMessageEvent))]
internal partial class SessionEventsJsonContext : JsonSerializerContext;