/*--------------------------------------------------------------------------------------------- * 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;