From fbd509441b90359dad4430407e4329aa96a9e668 Mon Sep 17 00:00:00 2001
From: Copilot <223556219+Copilot@users.noreply.github.com>
Date: Mon, 18 May 2026 22:21:35 -0400
Subject: [PATCH] Seal generated session event types
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
dotnet/src/Generated/SessionEvents.cs | 510 +++++++++++++-------------
scripts/codegen/csharp.ts | 38 +-
2 files changed, 278 insertions(+), 270 deletions(-)
diff --git a/dotnet/src/Generated/SessionEvents.cs b/dotnet/src/Generated/SessionEvents.cs
index c4b15ac0f..29587276b 100644
--- a/dotnet/src/Generated/SessionEvents.cs
+++ b/dotnet/src/Generated/SessionEvents.cs
@@ -149,7 +149,7 @@ public string ToJson() =>
/// Session initialization metadata including context and configuration.
/// Represents the session.start event.
-public partial class SessionStartEvent : SessionEvent
+public sealed partial class SessionStartEvent : SessionEvent
{
///
[JsonIgnore]
@@ -162,7 +162,7 @@ public partial class SessionStartEvent : SessionEvent
/// Session resume metadata including current context and event count.
/// Represents the session.resume event.
-public partial class SessionResumeEvent : SessionEvent
+public sealed partial class SessionResumeEvent : SessionEvent
{
///
[JsonIgnore]
@@ -175,7 +175,7 @@ public partial class SessionResumeEvent : SessionEvent
/// Notifies that the session's remote steering capability has changed.
/// Represents the session.remote_steerable_changed event.
-public partial class SessionRemoteSteerableChangedEvent : SessionEvent
+public sealed partial class SessionRemoteSteerableChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -188,7 +188,7 @@ public partial class SessionRemoteSteerableChangedEvent : SessionEvent
/// Error details for timeline display including message and optional diagnostic information.
/// Represents the session.error event.
-public partial class SessionErrorEvent : SessionEvent
+public sealed partial class SessionErrorEvent : SessionEvent
{
///
[JsonIgnore]
@@ -201,7 +201,7 @@ public partial class SessionErrorEvent : SessionEvent
/// Payload indicating the session is idle with no background agents in flight.
/// Represents the session.idle event.
-public partial class SessionIdleEvent : SessionEvent
+public sealed partial class SessionIdleEvent : SessionEvent
{
///
[JsonIgnore]
@@ -214,7 +214,7 @@ public partial class SessionIdleEvent : SessionEvent
/// Session title change payload containing the new display title.
/// Represents the session.title_changed event.
-public partial class SessionTitleChangedEvent : SessionEvent
+public sealed partial class SessionTitleChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -227,7 +227,7 @@ public partial class SessionTitleChangedEvent : SessionEvent
/// Scheduled prompt registered via /every or /after.
/// Represents the session.schedule_created event.
-public partial class SessionScheduleCreatedEvent : SessionEvent
+public sealed partial class SessionScheduleCreatedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -240,7 +240,7 @@ public partial class SessionScheduleCreatedEvent : SessionEvent
/// Scheduled prompt cancelled from the schedule manager dialog.
/// Represents the session.schedule_cancelled event.
-public partial class SessionScheduleCancelledEvent : SessionEvent
+public sealed partial class SessionScheduleCancelledEvent : SessionEvent
{
///
[JsonIgnore]
@@ -253,7 +253,7 @@ public partial class SessionScheduleCancelledEvent : SessionEvent
/// Informational message for timeline display with categorization.
/// Represents the session.info event.
-public partial class SessionInfoEvent : SessionEvent
+public sealed partial class SessionInfoEvent : SessionEvent
{
///
[JsonIgnore]
@@ -266,7 +266,7 @@ public partial class SessionInfoEvent : SessionEvent
/// Warning message for timeline display with categorization.
/// Represents the session.warning event.
-public partial class SessionWarningEvent : SessionEvent
+public sealed partial class SessionWarningEvent : SessionEvent
{
///
[JsonIgnore]
@@ -279,7 +279,7 @@ public partial class SessionWarningEvent : SessionEvent
/// Model change details including previous and new model identifiers.
/// Represents the session.model_change event.
-public partial class SessionModelChangeEvent : SessionEvent
+public sealed partial class SessionModelChangeEvent : SessionEvent
{
///
[JsonIgnore]
@@ -292,7 +292,7 @@ public partial class SessionModelChangeEvent : SessionEvent
/// Agent mode change details including previous and new modes.
/// Represents the session.mode_changed event.
-public partial class SessionModeChangedEvent : SessionEvent
+public sealed partial class SessionModeChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -305,7 +305,7 @@ public partial class SessionModeChangedEvent : SessionEvent
/// Plan file operation details indicating what changed.
/// Represents the session.plan_changed event.
-public partial class SessionPlanChangedEvent : SessionEvent
+public sealed partial class SessionPlanChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -318,7 +318,7 @@ public partial class SessionPlanChangedEvent : SessionEvent
/// Workspace file change details including path and operation type.
/// Represents the session.workspace_file_changed event.
-public partial class SessionWorkspaceFileChangedEvent : SessionEvent
+public sealed partial class SessionWorkspaceFileChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -331,7 +331,7 @@ public partial class SessionWorkspaceFileChangedEvent : SessionEvent
/// Session handoff metadata including source, context, and repository information.
/// Represents the session.handoff event.
-public partial class SessionHandoffEvent : SessionEvent
+public sealed partial class SessionHandoffEvent : SessionEvent
{
///
[JsonIgnore]
@@ -344,7 +344,7 @@ public partial class SessionHandoffEvent : SessionEvent
/// Conversation truncation statistics including token counts and removed content metrics.
/// Represents the session.truncation event.
-public partial class SessionTruncationEvent : SessionEvent
+public sealed partial class SessionTruncationEvent : SessionEvent
{
///
[JsonIgnore]
@@ -357,7 +357,7 @@ public partial class SessionTruncationEvent : SessionEvent
/// Session rewind details including target event and count of removed events.
/// Represents the session.snapshot_rewind event.
-public partial class SessionSnapshotRewindEvent : SessionEvent
+public sealed partial class SessionSnapshotRewindEvent : SessionEvent
{
///
[JsonIgnore]
@@ -370,7 +370,7 @@ public partial class SessionSnapshotRewindEvent : SessionEvent
/// Session termination metrics including usage statistics, code changes, and shutdown reason.
/// Represents the session.shutdown event.
-public partial class SessionShutdownEvent : SessionEvent
+public sealed partial class SessionShutdownEvent : SessionEvent
{
///
[JsonIgnore]
@@ -383,7 +383,7 @@ public partial class SessionShutdownEvent : SessionEvent
/// Working directory and git context at session start.
/// Represents the session.context_changed event.
-public partial class SessionContextChangedEvent : SessionEvent
+public sealed partial class SessionContextChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -396,7 +396,7 @@ public partial class SessionContextChangedEvent : SessionEvent
/// Current context window usage statistics including token and message counts.
/// Represents the session.usage_info event.
-public partial class SessionUsageInfoEvent : SessionEvent
+public sealed partial class SessionUsageInfoEvent : SessionEvent
{
///
[JsonIgnore]
@@ -409,7 +409,7 @@ public partial class SessionUsageInfoEvent : SessionEvent
/// Context window breakdown at the start of LLM-powered conversation compaction.
/// Represents the session.compaction_start event.
-public partial class SessionCompactionStartEvent : SessionEvent
+public sealed partial class SessionCompactionStartEvent : SessionEvent
{
///
[JsonIgnore]
@@ -422,7 +422,7 @@ public partial class SessionCompactionStartEvent : SessionEvent
/// Conversation compaction results including success status, metrics, and optional error details.
/// Represents the session.compaction_complete event.
-public partial class SessionCompactionCompleteEvent : SessionEvent
+public sealed partial class SessionCompactionCompleteEvent : SessionEvent
{
///
[JsonIgnore]
@@ -435,7 +435,7 @@ public partial class SessionCompactionCompleteEvent : SessionEvent
/// Task completion notification with summary from the agent.
/// Represents the session.task_complete event.
-public partial class SessionTaskCompleteEvent : SessionEvent
+public sealed partial class SessionTaskCompleteEvent : SessionEvent
{
///
[JsonIgnore]
@@ -448,7 +448,7 @@ public partial class SessionTaskCompleteEvent : SessionEvent
/// Schema for the `UserMessageData` type.
/// Represents the user.message event.
-public partial class UserMessageEvent : SessionEvent
+public sealed partial class UserMessageEvent : SessionEvent
{
///
[JsonIgnore]
@@ -461,7 +461,7 @@ public partial class UserMessageEvent : SessionEvent
/// Empty payload; the event signals that the pending message queue has changed.
/// Represents the pending_messages.modified event.
-public partial class PendingMessagesModifiedEvent : SessionEvent
+public sealed partial class PendingMessagesModifiedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -474,7 +474,7 @@ public partial class PendingMessagesModifiedEvent : SessionEvent
/// Turn initialization metadata including identifier and interaction tracking.
/// Represents the assistant.turn_start event.
-public partial class AssistantTurnStartEvent : SessionEvent
+public sealed partial class AssistantTurnStartEvent : SessionEvent
{
///
[JsonIgnore]
@@ -487,7 +487,7 @@ public partial class AssistantTurnStartEvent : SessionEvent
/// Agent intent description for current activity or plan.
/// Represents the assistant.intent event.
-public partial class AssistantIntentEvent : SessionEvent
+public sealed partial class AssistantIntentEvent : SessionEvent
{
///
[JsonIgnore]
@@ -500,7 +500,7 @@ public partial class AssistantIntentEvent : SessionEvent
/// Assistant reasoning content for timeline display with complete thinking text.
/// Represents the assistant.reasoning event.
-public partial class AssistantReasoningEvent : SessionEvent
+public sealed partial class AssistantReasoningEvent : SessionEvent
{
///
[JsonIgnore]
@@ -513,7 +513,7 @@ public partial class AssistantReasoningEvent : SessionEvent
/// Streaming reasoning delta for incremental extended thinking updates.
/// Represents the assistant.reasoning_delta event.
-public partial class AssistantReasoningDeltaEvent : SessionEvent
+public sealed partial class AssistantReasoningDeltaEvent : SessionEvent
{
///
[JsonIgnore]
@@ -526,7 +526,7 @@ public partial class AssistantReasoningDeltaEvent : SessionEvent
/// Streaming response progress with cumulative byte count.
/// Represents the assistant.streaming_delta event.
-public partial class AssistantStreamingDeltaEvent : SessionEvent
+public sealed partial class AssistantStreamingDeltaEvent : SessionEvent
{
///
[JsonIgnore]
@@ -539,7 +539,7 @@ public partial class AssistantStreamingDeltaEvent : SessionEvent
/// Assistant response containing text content, optional tool requests, and interaction metadata.
/// Represents the assistant.message event.
-public partial class AssistantMessageEvent : SessionEvent
+public sealed partial class AssistantMessageEvent : SessionEvent
{
///
[JsonIgnore]
@@ -552,7 +552,7 @@ public partial class AssistantMessageEvent : SessionEvent
/// Streaming assistant message start metadata.
/// Represents the assistant.message_start event.
-public partial class AssistantMessageStartEvent : SessionEvent
+public sealed partial class AssistantMessageStartEvent : SessionEvent
{
///
[JsonIgnore]
@@ -565,7 +565,7 @@ public partial class AssistantMessageStartEvent : SessionEvent
/// Streaming assistant message delta for incremental response updates.
/// Represents the assistant.message_delta event.
-public partial class AssistantMessageDeltaEvent : SessionEvent
+public sealed partial class AssistantMessageDeltaEvent : SessionEvent
{
///
[JsonIgnore]
@@ -578,7 +578,7 @@ public partial class AssistantMessageDeltaEvent : SessionEvent
/// Turn completion metadata including the turn identifier.
/// Represents the assistant.turn_end event.
-public partial class AssistantTurnEndEvent : SessionEvent
+public sealed partial class AssistantTurnEndEvent : SessionEvent
{
///
[JsonIgnore]
@@ -591,7 +591,7 @@ public partial class AssistantTurnEndEvent : SessionEvent
/// LLM API call usage metrics including tokens, costs, quotas, and billing information.
/// Represents the assistant.usage event.
-public partial class AssistantUsageEvent : SessionEvent
+public sealed partial class AssistantUsageEvent : SessionEvent
{
///
[JsonIgnore]
@@ -604,7 +604,7 @@ public partial class AssistantUsageEvent : SessionEvent
/// Failed LLM API call metadata for telemetry.
/// Represents the model.call_failure event.
-public partial class ModelCallFailureEvent : SessionEvent
+public sealed partial class ModelCallFailureEvent : SessionEvent
{
///
[JsonIgnore]
@@ -617,7 +617,7 @@ public partial class ModelCallFailureEvent : SessionEvent
/// Turn abort information including the reason for termination.
/// Represents the abort event.
-public partial class AbortEvent : SessionEvent
+public sealed partial class AbortEvent : SessionEvent
{
///
[JsonIgnore]
@@ -630,7 +630,7 @@ public partial class AbortEvent : SessionEvent
/// User-initiated tool invocation request with tool name and arguments.
/// Represents the tool.user_requested event.
-public partial class ToolUserRequestedEvent : SessionEvent
+public sealed partial class ToolUserRequestedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -643,7 +643,7 @@ public partial class ToolUserRequestedEvent : SessionEvent
/// Tool execution startup details including MCP server information when applicable.
/// Represents the tool.execution_start event.
-public partial class ToolExecutionStartEvent : SessionEvent
+public sealed partial class ToolExecutionStartEvent : SessionEvent
{
///
[JsonIgnore]
@@ -656,7 +656,7 @@ public partial class ToolExecutionStartEvent : SessionEvent
/// Streaming tool execution output for incremental result display.
/// Represents the tool.execution_partial_result event.
-public partial class ToolExecutionPartialResultEvent : SessionEvent
+public sealed partial class ToolExecutionPartialResultEvent : SessionEvent
{
///
[JsonIgnore]
@@ -669,7 +669,7 @@ public partial class ToolExecutionPartialResultEvent : SessionEvent
/// Tool execution progress notification with status message.
/// Represents the tool.execution_progress event.
-public partial class ToolExecutionProgressEvent : SessionEvent
+public sealed partial class ToolExecutionProgressEvent : SessionEvent
{
///
[JsonIgnore]
@@ -682,7 +682,7 @@ public partial class ToolExecutionProgressEvent : SessionEvent
/// Tool execution completion results including success status, detailed output, and error information.
/// Represents the tool.execution_complete event.
-public partial class ToolExecutionCompleteEvent : SessionEvent
+public sealed partial class ToolExecutionCompleteEvent : SessionEvent
{
///
[JsonIgnore]
@@ -695,7 +695,7 @@ public partial class ToolExecutionCompleteEvent : SessionEvent
/// Skill invocation details including content, allowed tools, and plugin metadata.
/// Represents the skill.invoked event.
-public partial class SkillInvokedEvent : SessionEvent
+public sealed partial class SkillInvokedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -708,7 +708,7 @@ public partial class SkillInvokedEvent : SessionEvent
/// Sub-agent startup details including parent tool call and agent information.
/// Represents the subagent.started event.
-public partial class SubagentStartedEvent : SessionEvent
+public sealed partial class SubagentStartedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -721,7 +721,7 @@ public partial class SubagentStartedEvent : SessionEvent
/// Sub-agent completion details for successful execution.
/// Represents the subagent.completed event.
-public partial class SubagentCompletedEvent : SessionEvent
+public sealed partial class SubagentCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -734,7 +734,7 @@ public partial class SubagentCompletedEvent : SessionEvent
/// Sub-agent failure details including error message and agent information.
/// Represents the subagent.failed event.
-public partial class SubagentFailedEvent : SessionEvent
+public sealed partial class SubagentFailedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -747,7 +747,7 @@ public partial class SubagentFailedEvent : SessionEvent
/// Custom agent selection details including name and available tools.
/// Represents the subagent.selected event.
-public partial class SubagentSelectedEvent : SessionEvent
+public sealed partial class SubagentSelectedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -760,7 +760,7 @@ public partial class SubagentSelectedEvent : SessionEvent
/// Empty payload; the event signals that the custom agent was deselected, returning to the default agent.
/// Represents the subagent.deselected event.
-public partial class SubagentDeselectedEvent : SessionEvent
+public sealed partial class SubagentDeselectedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -773,7 +773,7 @@ public partial class SubagentDeselectedEvent : SessionEvent
/// Hook invocation start details including type and input data.
/// Represents the hook.start event.
-public partial class HookStartEvent : SessionEvent
+public sealed partial class HookStartEvent : SessionEvent
{
///
[JsonIgnore]
@@ -786,7 +786,7 @@ public partial class HookStartEvent : SessionEvent
/// Hook invocation completion details including output, success status, and error information.
/// Represents the hook.end event.
-public partial class HookEndEvent : SessionEvent
+public sealed partial class HookEndEvent : SessionEvent
{
///
[JsonIgnore]
@@ -799,7 +799,7 @@ public partial class HookEndEvent : SessionEvent
/// System/developer instruction content with role and optional template metadata.
/// Represents the system.message event.
-public partial class SystemMessageEvent : SessionEvent
+public sealed partial class SystemMessageEvent : SessionEvent
{
///
[JsonIgnore]
@@ -812,7 +812,7 @@ public partial class SystemMessageEvent : SessionEvent
/// System-generated notification for runtime events like background task completion.
/// Represents the system.notification event.
-public partial class SystemNotificationEvent : SessionEvent
+public sealed partial class SystemNotificationEvent : SessionEvent
{
///
[JsonIgnore]
@@ -825,7 +825,7 @@ public partial class SystemNotificationEvent : SessionEvent
/// Permission request notification requiring client approval with request details.
/// Represents the permission.requested event.
-public partial class PermissionRequestedEvent : SessionEvent
+public sealed partial class PermissionRequestedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -838,7 +838,7 @@ public partial class PermissionRequestedEvent : SessionEvent
/// Permission request completion notification signaling UI dismissal.
/// Represents the permission.completed event.
-public partial class PermissionCompletedEvent : SessionEvent
+public sealed partial class PermissionCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -851,7 +851,7 @@ public partial class PermissionCompletedEvent : SessionEvent
/// User input request notification with question and optional predefined choices.
/// Represents the user_input.requested event.
-public partial class UserInputRequestedEvent : SessionEvent
+public sealed partial class UserInputRequestedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -864,7 +864,7 @@ public partial class UserInputRequestedEvent : SessionEvent
/// User input request completion with the user's response.
/// Represents the user_input.completed event.
-public partial class UserInputCompletedEvent : SessionEvent
+public sealed partial class UserInputCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -877,7 +877,7 @@ public partial class UserInputCompletedEvent : SessionEvent
/// Elicitation request; may be form-based (structured input) or URL-based (browser redirect).
/// Represents the elicitation.requested event.
-public partial class ElicitationRequestedEvent : SessionEvent
+public sealed partial class ElicitationRequestedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -890,7 +890,7 @@ public partial class ElicitationRequestedEvent : SessionEvent
/// Elicitation request completion with the user's response.
/// Represents the elicitation.completed event.
-public partial class ElicitationCompletedEvent : SessionEvent
+public sealed partial class ElicitationCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -903,7 +903,7 @@ public partial class ElicitationCompletedEvent : SessionEvent
/// Sampling request from an MCP server; contains the server name and a requestId for correlation.
/// Represents the sampling.requested event.
-public partial class SamplingRequestedEvent : SessionEvent
+public sealed partial class SamplingRequestedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -916,7 +916,7 @@ public partial class SamplingRequestedEvent : SessionEvent
/// Sampling request completion notification signaling UI dismissal.
/// Represents the sampling.completed event.
-public partial class SamplingCompletedEvent : SessionEvent
+public sealed partial class SamplingCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -929,7 +929,7 @@ public partial class SamplingCompletedEvent : SessionEvent
/// OAuth authentication request for an MCP server.
/// Represents the mcp.oauth_required event.
-public partial class McpOauthRequiredEvent : SessionEvent
+public sealed partial class McpOauthRequiredEvent : SessionEvent
{
///
[JsonIgnore]
@@ -942,7 +942,7 @@ public partial class McpOauthRequiredEvent : SessionEvent
/// MCP OAuth request completion notification.
/// Represents the mcp.oauth_completed event.
-public partial class McpOauthCompletedEvent : SessionEvent
+public sealed partial class McpOauthCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -955,7 +955,7 @@ public partial class McpOauthCompletedEvent : SessionEvent
/// Opaque custom notification data. Consumers may branch on source and name, but payload semantics are source-defined.
/// Represents the session.custom_notification event.
-public partial class SessionCustomNotificationEvent : SessionEvent
+public sealed partial class SessionCustomNotificationEvent : SessionEvent
{
///
[JsonIgnore]
@@ -968,7 +968,7 @@ public partial class SessionCustomNotificationEvent : SessionEvent
/// External tool invocation request for client-side tool execution.
/// Represents the external_tool.requested event.
-public partial class ExternalToolRequestedEvent : SessionEvent
+public sealed partial class ExternalToolRequestedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -981,7 +981,7 @@ public partial class ExternalToolRequestedEvent : SessionEvent
/// External tool completion notification signaling UI dismissal.
/// Represents the external_tool.completed event.
-public partial class ExternalToolCompletedEvent : SessionEvent
+public sealed partial class ExternalToolCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -994,7 +994,7 @@ public partial class ExternalToolCompletedEvent : SessionEvent
/// Queued slash command dispatch request for client execution.
/// Represents the command.queued event.
-public partial class CommandQueuedEvent : SessionEvent
+public sealed partial class CommandQueuedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1007,7 +1007,7 @@ public partial class CommandQueuedEvent : SessionEvent
/// Registered command dispatch request routed to the owning client.
/// Represents the command.execute event.
-public partial class CommandExecuteEvent : SessionEvent
+public sealed partial class CommandExecuteEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1020,7 +1020,7 @@ public partial class CommandExecuteEvent : SessionEvent
/// Queued command completion notification signaling UI dismissal.
/// Represents the command.completed event.
-public partial class CommandCompletedEvent : SessionEvent
+public sealed partial class CommandCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1033,7 +1033,7 @@ public partial class CommandCompletedEvent : SessionEvent
/// Auto mode switch request notification requiring user approval.
/// Represents the auto_mode_switch.requested event.
-public partial class AutoModeSwitchRequestedEvent : SessionEvent
+public sealed partial class AutoModeSwitchRequestedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1046,7 +1046,7 @@ public partial class AutoModeSwitchRequestedEvent : SessionEvent
/// Auto mode switch completion notification.
/// Represents the auto_mode_switch.completed event.
-public partial class AutoModeSwitchCompletedEvent : SessionEvent
+public sealed partial class AutoModeSwitchCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1059,7 +1059,7 @@ public partial class AutoModeSwitchCompletedEvent : SessionEvent
/// SDK command registration change notification.
/// Represents the commands.changed event.
-public partial class CommandsChangedEvent : SessionEvent
+public sealed partial class CommandsChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1072,7 +1072,7 @@ public partial class CommandsChangedEvent : SessionEvent
/// Session capability change notification.
/// Represents the capabilities.changed event.
-public partial class CapabilitiesChangedEvent : SessionEvent
+public sealed partial class CapabilitiesChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1085,7 +1085,7 @@ public partial class CapabilitiesChangedEvent : SessionEvent
/// Plan approval request with plan content and available user actions.
/// Represents the exit_plan_mode.requested event.
-public partial class ExitPlanModeRequestedEvent : SessionEvent
+public sealed partial class ExitPlanModeRequestedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1098,7 +1098,7 @@ public partial class ExitPlanModeRequestedEvent : SessionEvent
/// Plan mode exit completion with the user's approval decision and optional feedback.
/// Represents the exit_plan_mode.completed event.
-public partial class ExitPlanModeCompletedEvent : SessionEvent
+public sealed partial class ExitPlanModeCompletedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1111,7 +1111,7 @@ public partial class ExitPlanModeCompletedEvent : SessionEvent
/// Schema for the `ToolsUpdatedData` type.
/// Represents the session.tools_updated event.
-public partial class SessionToolsUpdatedEvent : SessionEvent
+public sealed partial class SessionToolsUpdatedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1124,7 +1124,7 @@ public partial class SessionToolsUpdatedEvent : SessionEvent
/// Schema for the `BackgroundTasksChangedData` type.
/// Represents the session.background_tasks_changed event.
-public partial class SessionBackgroundTasksChangedEvent : SessionEvent
+public sealed partial class SessionBackgroundTasksChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1137,7 +1137,7 @@ public partial class SessionBackgroundTasksChangedEvent : SessionEvent
/// Schema for the `SkillsLoadedData` type.
/// Represents the session.skills_loaded event.
-public partial class SessionSkillsLoadedEvent : SessionEvent
+public sealed partial class SessionSkillsLoadedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1150,7 +1150,7 @@ public partial class SessionSkillsLoadedEvent : SessionEvent
/// Schema for the `CustomAgentsUpdatedData` type.
/// Represents the session.custom_agents_updated event.
-public partial class SessionCustomAgentsUpdatedEvent : SessionEvent
+public sealed partial class SessionCustomAgentsUpdatedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1163,7 +1163,7 @@ public partial class SessionCustomAgentsUpdatedEvent : SessionEvent
/// Schema for the `McpServersLoadedData` type.
/// Represents the session.mcp_servers_loaded event.
-public partial class SessionMcpServersLoadedEvent : SessionEvent
+public sealed partial class SessionMcpServersLoadedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1176,7 +1176,7 @@ public partial class SessionMcpServersLoadedEvent : SessionEvent
/// Schema for the `McpServerStatusChangedData` type.
/// Represents the session.mcp_server_status_changed event.
-public partial class SessionMcpServerStatusChangedEvent : SessionEvent
+public sealed partial class SessionMcpServerStatusChangedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1189,7 +1189,7 @@ public partial class SessionMcpServerStatusChangedEvent : SessionEvent
/// Schema for the `ExtensionsLoadedData` type.
/// Represents the session.extensions_loaded event.
-public partial class SessionExtensionsLoadedEvent : SessionEvent
+public sealed partial class SessionExtensionsLoadedEvent : SessionEvent
{
///
[JsonIgnore]
@@ -1201,7 +1201,7 @@ public partial class SessionExtensionsLoadedEvent : SessionEvent
}
/// Session initialization metadata including context and configuration.
-public partial class SessionStartData
+public sealed partial class SessionStartData
{
/// Whether the session was already in use by another client at start time.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1260,7 +1260,7 @@ public partial class SessionStartData
}
/// Session resume metadata including current context and event count.
-public partial class SessionResumeData
+public sealed partial class SessionResumeData
{
/// Whether the session was already in use by another client at resume time.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1312,7 +1312,7 @@ public partial class SessionResumeData
}
/// Notifies that the session's remote steering capability has changed.
-public partial class SessionRemoteSteerableChangedData
+public sealed partial class SessionRemoteSteerableChangedData
{
/// Whether this session now supports remote steering via GitHub.
[JsonPropertyName("remoteSteerable")]
@@ -1320,7 +1320,7 @@ public partial class SessionRemoteSteerableChangedData
}
/// Error details for timeline display including message and optional diagnostic information.
-public partial class SessionErrorData
+public sealed partial class SessionErrorData
{
/// Only set on `errorType: "rate_limit"`. When `true`, the runtime will follow this error with an `auto_mode_switch.requested` event (or silently switch if `continueOnAutoMode` is enabled). UI clients can use this flag to suppress duplicate rendering of the rate-limit error when they show their own auto-mode-switch prompt.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1364,7 +1364,7 @@ public partial class SessionErrorData
}
/// Payload indicating the session is idle with no background agents in flight.
-public partial class SessionIdleData
+public sealed partial class SessionIdleData
{
/// True when the preceding agentic loop was cancelled via abort signal.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1373,7 +1373,7 @@ public partial class SessionIdleData
}
/// Session title change payload containing the new display title.
-public partial class SessionTitleChangedData
+public sealed partial class SessionTitleChangedData
{
/// The new display title for the session.
[JsonPropertyName("title")]
@@ -1381,7 +1381,7 @@ public partial class SessionTitleChangedData
}
/// Scheduled prompt registered via /every or /after.
-public partial class SessionScheduleCreatedData
+public sealed partial class SessionScheduleCreatedData
{
/// Optional user-facing label shown in the timeline instead of the actual prompt (e.g. `/skill-name args` when the prompt is a skill invocation expansion).
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1407,7 +1407,7 @@ public partial class SessionScheduleCreatedData
}
/// Scheduled prompt cancelled from the schedule manager dialog.
-public partial class SessionScheduleCancelledData
+public sealed partial class SessionScheduleCancelledData
{
/// Id of the scheduled prompt that was cancelled.
[JsonPropertyName("id")]
@@ -1415,7 +1415,7 @@ public partial class SessionScheduleCancelledData
}
/// Informational message for timeline display with categorization.
-public partial class SessionInfoData
+public sealed partial class SessionInfoData
{
/// Category of informational message (e.g., "notification", "timing", "context_window", "mcp", "snapshot", "configuration", "authentication", "model").
[JsonPropertyName("infoType")]
@@ -1439,7 +1439,7 @@ public partial class SessionInfoData
}
/// Warning message for timeline display with categorization.
-public partial class SessionWarningData
+public sealed partial class SessionWarningData
{
/// Human-readable warning message for display in the timeline.
[JsonPropertyName("message")]
@@ -1458,7 +1458,7 @@ public partial class SessionWarningData
}
/// Model change details including previous and new model identifiers.
-public partial class SessionModelChangeData
+public sealed partial class SessionModelChangeData
{
/// Reason the change happened, when not user-initiated. Currently `"rate_limit_auto_switch"` for changes triggered by the auto-mode-switch rate-limit recovery path. UI clients can use this to render contextual copy.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1496,7 +1496,7 @@ public partial class SessionModelChangeData
}
/// Agent mode change details including previous and new modes.
-public partial class SessionModeChangedData
+public sealed partial class SessionModeChangedData
{
/// Agent mode after the change (e.g., "interactive", "plan", "autopilot").
[JsonPropertyName("newMode")]
@@ -1508,7 +1508,7 @@ public partial class SessionModeChangedData
}
/// Plan file operation details indicating what changed.
-public partial class SessionPlanChangedData
+public sealed partial class SessionPlanChangedData
{
/// The type of operation performed on the plan file.
[JsonPropertyName("operation")]
@@ -1516,7 +1516,7 @@ public partial class SessionPlanChangedData
}
/// Workspace file change details including path and operation type.
-public partial class SessionWorkspaceFileChangedData
+public sealed partial class SessionWorkspaceFileChangedData
{
/// Whether the file was newly created or updated.
[JsonPropertyName("operation")]
@@ -1528,7 +1528,7 @@ public partial class SessionWorkspaceFileChangedData
}
/// Session handoff metadata including source, context, and repository information.
-public partial class SessionHandoffData
+public sealed partial class SessionHandoffData
{
/// Additional context information for the handoff.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1565,7 +1565,7 @@ public partial class SessionHandoffData
}
/// Conversation truncation statistics including token counts and removed content metrics.
-public partial class SessionTruncationData
+public sealed partial class SessionTruncationData
{
/// Number of messages removed by truncation.
[JsonPropertyName("messagesRemovedDuringTruncation")]
@@ -1601,7 +1601,7 @@ public partial class SessionTruncationData
}
/// Session rewind details including target event and count of removed events.
-public partial class SessionSnapshotRewindData
+public sealed partial class SessionSnapshotRewindData
{
/// Number of events that were removed by the rewind.
[JsonPropertyName("eventsRemoved")]
@@ -1613,7 +1613,7 @@ public partial class SessionSnapshotRewindData
}
/// Session termination metrics including usage statistics, code changes, and shutdown reason.
-public partial class SessionShutdownData
+public sealed partial class SessionShutdownData
{
/// Aggregate code change metrics for the session.
[JsonPropertyName("codeChanges")]
@@ -1681,7 +1681,7 @@ public partial class SessionShutdownData
}
/// Working directory and git context at session start.
-public partial class SessionContextChangedData
+public sealed partial class SessionContextChangedData
{
/// Base commit of current git branch at session start time.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1724,7 +1724,7 @@ public partial class SessionContextChangedData
}
/// Current context window usage statistics including token and message counts.
-public partial class SessionUsageInfoData
+public sealed partial class SessionUsageInfoData
{
/// Token count from non-system messages (user, assistant, tool).
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1760,7 +1760,7 @@ public partial class SessionUsageInfoData
}
/// Context window breakdown at the start of LLM-powered conversation compaction.
-public partial class SessionCompactionStartData
+public sealed partial class SessionCompactionStartData
{
/// Token count from non-system messages (user, assistant, tool) at compaction start.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1779,7 +1779,7 @@ public partial class SessionCompactionStartData
}
/// Conversation compaction results including success status, metrics, and optional error details.
-public partial class SessionCompactionCompleteData
+public sealed partial class SessionCompactionCompleteData
{
/// Checkpoint snapshot number created for recovery.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1857,7 +1857,7 @@ public partial class SessionCompactionCompleteData
}
/// Task completion notification with summary from the agent.
-public partial class SessionTaskCompleteData
+public sealed partial class SessionTaskCompleteData
{
/// Whether the tool call succeeded. False when validation failed (e.g., invalid arguments).
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1871,7 +1871,7 @@ public partial class SessionTaskCompleteData
}
/// Schema for the `UserMessageData` type.
-public partial class UserMessageData
+public sealed partial class UserMessageData
{
/// The agent mode that was active when this message was sent.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1924,12 +1924,12 @@ public partial class UserMessageData
}
/// Empty payload; the event signals that the pending message queue has changed.
-public partial class PendingMessagesModifiedData
+public sealed partial class PendingMessagesModifiedData
{
}
/// Turn initialization metadata including identifier and interaction tracking.
-public partial class AssistantTurnStartData
+public sealed partial class AssistantTurnStartData
{
/// CAPI interaction ID for correlating this turn with upstream telemetry.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -1942,7 +1942,7 @@ public partial class AssistantTurnStartData
}
/// Agent intent description for current activity or plan.
-public partial class AssistantIntentData
+public sealed partial class AssistantIntentData
{
/// Short description of what the agent is currently doing or planning to do.
[JsonPropertyName("intent")]
@@ -1950,7 +1950,7 @@ public partial class AssistantIntentData
}
/// Assistant reasoning content for timeline display with complete thinking text.
-public partial class AssistantReasoningData
+public sealed partial class AssistantReasoningData
{
/// The complete extended thinking text from the model.
[JsonPropertyName("content")]
@@ -1962,7 +1962,7 @@ public partial class AssistantReasoningData
}
/// Streaming reasoning delta for incremental extended thinking updates.
-public partial class AssistantReasoningDeltaData
+public sealed partial class AssistantReasoningDeltaData
{
/// Incremental text chunk to append to the reasoning content.
[JsonPropertyName("deltaContent")]
@@ -1974,7 +1974,7 @@ public partial class AssistantReasoningDeltaData
}
/// Streaming response progress with cumulative byte count.
-public partial class AssistantStreamingDeltaData
+public sealed partial class AssistantStreamingDeltaData
{
/// Cumulative total bytes received from the streaming response so far.
[JsonPropertyName("totalResponseSizeBytes")]
@@ -1982,7 +1982,7 @@ public partial class AssistantStreamingDeltaData
}
/// Assistant response containing text content, optional tool requests, and interaction metadata.
-public partial class AssistantMessageData
+public sealed partial class AssistantMessageData
{
/// Raw Anthropic content array with advisor blocks (server_tool_use, advisor_tool_result) for verbatim round-tripping.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2061,7 +2061,7 @@ public partial class AssistantMessageData
}
/// Streaming assistant message start metadata.
-public partial class AssistantMessageStartData
+public sealed partial class AssistantMessageStartData
{
/// Message ID this start event belongs to, matching subsequent deltas and assistant.message.
[JsonPropertyName("messageId")]
@@ -2074,7 +2074,7 @@ public partial class AssistantMessageStartData
}
/// Streaming assistant message delta for incremental response updates.
-public partial class AssistantMessageDeltaData
+public sealed partial class AssistantMessageDeltaData
{
/// Incremental text chunk to append to the message content.
[JsonPropertyName("deltaContent")]
@@ -2093,7 +2093,7 @@ public partial class AssistantMessageDeltaData
}
/// Turn completion metadata including the turn identifier.
-public partial class AssistantTurnEndData
+public sealed partial class AssistantTurnEndData
{
/// Identifier of the turn that has ended, matching the corresponding assistant.turn_start event.
[JsonPropertyName("turnId")]
@@ -2101,7 +2101,7 @@ public partial class AssistantTurnEndData
}
/// LLM API call usage metrics including tokens, costs, quotas, and billing information.
-public partial class AssistantUsageData
+public sealed partial class AssistantUsageData
{
/// Completion ID from the model provider (e.g., chatcmpl-abc123).
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2196,7 +2196,7 @@ public partial class AssistantUsageData
}
/// Failed LLM API call metadata for telemetry.
-public partial class ModelCallFailureData
+public sealed partial class ModelCallFailureData
{
/// Completion ID from the model provider (e.g., chatcmpl-abc123).
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2239,7 +2239,7 @@ public partial class ModelCallFailureData
}
/// Turn abort information including the reason for termination.
-public partial class AbortData
+public sealed partial class AbortData
{
/// Finite reason code describing why the current turn was aborted.
[JsonPropertyName("reason")]
@@ -2247,7 +2247,7 @@ public partial class AbortData
}
/// User-initiated tool invocation request with tool name and arguments.
-public partial class ToolUserRequestedData
+public sealed partial class ToolUserRequestedData
{
/// Arguments for the tool invocation.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2264,7 +2264,7 @@ public partial class ToolUserRequestedData
}
/// Tool execution startup details including MCP server information when applicable.
-public partial class ToolExecutionStartData
+public sealed partial class ToolExecutionStartData
{
/// Arguments passed to the tool.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2303,7 +2303,7 @@ public partial class ToolExecutionStartData
}
/// Streaming tool execution output for incremental result display.
-public partial class ToolExecutionPartialResultData
+public sealed partial class ToolExecutionPartialResultData
{
/// Incremental output chunk from the running tool.
[JsonPropertyName("partialOutput")]
@@ -2315,7 +2315,7 @@ public partial class ToolExecutionPartialResultData
}
/// Tool execution progress notification with status message.
-public partial class ToolExecutionProgressData
+public sealed partial class ToolExecutionProgressData
{
/// Human-readable progress status message (e.g., from an MCP server).
[JsonPropertyName("progressMessage")]
@@ -2327,7 +2327,7 @@ public partial class ToolExecutionProgressData
}
/// Tool execution completion results including success status, detailed output, and error information.
-public partial class ToolExecutionCompleteData
+public sealed partial class ToolExecutionCompleteData
{
/// Error details when the tool execution failed.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2381,7 +2381,7 @@ public partial class ToolExecutionCompleteData
}
/// Skill invocation details including content, allowed tools, and plugin metadata.
-public partial class SkillInvokedData
+public sealed partial class SkillInvokedData
{
/// Tool names that should be auto-approved when this skill is active.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2417,7 +2417,7 @@ public partial class SkillInvokedData
}
/// Sub-agent startup details including parent tool call and agent information.
-public partial class SubagentStartedData
+public sealed partial class SubagentStartedData
{
/// Description of what the sub-agent does.
[JsonPropertyName("agentDescription")]
@@ -2442,7 +2442,7 @@ public partial class SubagentStartedData
}
/// Sub-agent completion details for successful execution.
-public partial class SubagentCompletedData
+public sealed partial class SubagentCompletedData
{
/// Human-readable display name of the sub-agent.
[JsonPropertyName("agentDisplayName")]
@@ -2478,7 +2478,7 @@ public partial class SubagentCompletedData
}
/// Sub-agent failure details including error message and agent information.
-public partial class SubagentFailedData
+public sealed partial class SubagentFailedData
{
/// Human-readable display name of the sub-agent.
[JsonPropertyName("agentDisplayName")]
@@ -2518,7 +2518,7 @@ public partial class SubagentFailedData
}
/// Custom agent selection details including name and available tools.
-public partial class SubagentSelectedData
+public sealed partial class SubagentSelectedData
{
/// Human-readable display name of the selected custom agent.
[JsonPropertyName("agentDisplayName")]
@@ -2534,12 +2534,12 @@ public partial class SubagentSelectedData
}
/// Empty payload; the event signals that the custom agent was deselected, returning to the default agent.
-public partial class SubagentDeselectedData
+public sealed partial class SubagentDeselectedData
{
}
/// Hook invocation start details including type and input data.
-public partial class HookStartData
+public sealed partial class HookStartData
{
/// Unique identifier for this hook invocation.
[JsonPropertyName("hookInvocationId")]
@@ -2556,7 +2556,7 @@ public partial class HookStartData
}
/// Hook invocation completion details including output, success status, and error information.
-public partial class HookEndData
+public sealed partial class HookEndData
{
/// Error details when the hook failed.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2582,7 +2582,7 @@ public partial class HookEndData
}
/// System/developer instruction content with role and optional template metadata.
-public partial class SystemMessageData
+public sealed partial class SystemMessageData
{
/// The system or developer prompt text sent as model input.
[JsonPropertyName("content")]
@@ -2604,7 +2604,7 @@ public partial class SystemMessageData
}
/// System-generated notification for runtime events like background task completion.
-public partial class SystemNotificationData
+public sealed partial class SystemNotificationData
{
/// The notification text, typically wrapped in <system_notification> XML tags.
[JsonPropertyName("content")]
@@ -2616,7 +2616,7 @@ public partial class SystemNotificationData
}
/// Permission request notification requiring client approval with request details.
-public partial class PermissionRequestedData
+public sealed partial class PermissionRequestedData
{
/// Details of the permission being requested.
[JsonPropertyName("permissionRequest")]
@@ -2638,7 +2638,7 @@ public partial class PermissionRequestedData
}
/// Permission request completion notification signaling UI dismissal.
-public partial class PermissionCompletedData
+public sealed partial class PermissionCompletedData
{
/// Request ID of the resolved permission request; clients should dismiss any UI for this request.
[JsonPropertyName("requestId")]
@@ -2655,7 +2655,7 @@ public partial class PermissionCompletedData
}
/// User input request notification with question and optional predefined choices.
-public partial class UserInputRequestedData
+public sealed partial class UserInputRequestedData
{
/// Whether the user can provide a free-form text response in addition to predefined choices.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2682,7 +2682,7 @@ public partial class UserInputRequestedData
}
/// User input request completion with the user's response.
-public partial class UserInputCompletedData
+public sealed partial class UserInputCompletedData
{
/// The user's answer to the input request.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2700,7 +2700,7 @@ public partial class UserInputCompletedData
}
/// Elicitation request; may be form-based (structured input) or URL-based (browser redirect).
-public partial class ElicitationRequestedData
+public sealed partial class ElicitationRequestedData
{
/// The source that initiated the request (MCP server name, or absent for agent-initiated).
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2737,7 +2737,7 @@ public partial class ElicitationRequestedData
}
/// Elicitation request completion with the user's response.
-public partial class ElicitationCompletedData
+public sealed partial class ElicitationCompletedData
{
/// The user action: "accept" (submitted form), "decline" (explicitly refused), or "cancel" (dismissed).
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2755,7 +2755,7 @@ public partial class ElicitationCompletedData
}
/// Sampling request from an MCP server; contains the server name and a requestId for correlation.
-public partial class SamplingRequestedData
+public sealed partial class SamplingRequestedData
{
/// The JSON-RPC request ID from the MCP protocol.
[JsonPropertyName("mcpRequestId")]
@@ -2771,7 +2771,7 @@ public partial class SamplingRequestedData
}
/// Sampling request completion notification signaling UI dismissal.
-public partial class SamplingCompletedData
+public sealed partial class SamplingCompletedData
{
/// Request ID of the resolved sampling request; clients should dismiss any UI for this request.
[JsonPropertyName("requestId")]
@@ -2779,7 +2779,7 @@ public partial class SamplingCompletedData
}
/// OAuth authentication request for an MCP server.
-public partial class McpOauthRequiredData
+public sealed partial class McpOauthRequiredData
{
/// Unique identifier for this OAuth request; used to respond via session.respondToMcpOAuth().
[JsonPropertyName("requestId")]
@@ -2800,7 +2800,7 @@ public partial class McpOauthRequiredData
}
/// MCP OAuth request completion notification.
-public partial class McpOauthCompletedData
+public sealed partial class McpOauthCompletedData
{
/// Request ID of the resolved OAuth request.
[JsonPropertyName("requestId")]
@@ -2808,7 +2808,7 @@ public partial class McpOauthCompletedData
}
/// Opaque custom notification data. Consumers may branch on source and name, but payload semantics are source-defined.
-public partial class SessionCustomNotificationData
+public sealed partial class SessionCustomNotificationData
{
/// Source-defined custom notification name.
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Safe for generated string properties: JSON Schema minLength/maxLength map to string length validation, not reflection over trimmed Count members")]
@@ -2838,7 +2838,7 @@ public partial class SessionCustomNotificationData
}
/// External tool invocation request for client-side tool execution.
-public partial class ExternalToolRequestedData
+public sealed partial class ExternalToolRequestedData
{
/// Arguments to pass to the external tool.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2873,7 +2873,7 @@ public partial class ExternalToolRequestedData
}
/// External tool completion notification signaling UI dismissal.
-public partial class ExternalToolCompletedData
+public sealed partial class ExternalToolCompletedData
{
/// Request ID of the resolved external tool request; clients should dismiss any UI for this request.
[JsonPropertyName("requestId")]
@@ -2881,7 +2881,7 @@ public partial class ExternalToolCompletedData
}
/// Queued slash command dispatch request for client execution.
-public partial class CommandQueuedData
+public sealed partial class CommandQueuedData
{
/// The slash command text to be executed (e.g., /help, /clear).
[JsonPropertyName("command")]
@@ -2893,7 +2893,7 @@ public partial class CommandQueuedData
}
/// Registered command dispatch request routed to the owning client.
-public partial class CommandExecuteData
+public sealed partial class CommandExecuteData
{
/// Raw argument string after the command name.
[JsonPropertyName("args")]
@@ -2913,7 +2913,7 @@ public partial class CommandExecuteData
}
/// Queued command completion notification signaling UI dismissal.
-public partial class CommandCompletedData
+public sealed partial class CommandCompletedData
{
/// Request ID of the resolved command request; clients should dismiss any UI for this request.
[JsonPropertyName("requestId")]
@@ -2921,7 +2921,7 @@ public partial class CommandCompletedData
}
/// Auto mode switch request notification requiring user approval.
-public partial class AutoModeSwitchRequestedData
+public sealed partial class AutoModeSwitchRequestedData
{
/// The rate limit error code that triggered this request.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2939,7 +2939,7 @@ public partial class AutoModeSwitchRequestedData
}
/// Auto mode switch completion notification.
-public partial class AutoModeSwitchCompletedData
+public sealed partial class AutoModeSwitchCompletedData
{
/// Request ID of the resolved request; clients should dismiss any UI for this request.
[JsonPropertyName("requestId")]
@@ -2951,7 +2951,7 @@ public partial class AutoModeSwitchCompletedData
}
/// SDK command registration change notification.
-public partial class CommandsChangedData
+public sealed partial class CommandsChangedData
{
/// Current list of registered SDK commands.
[JsonPropertyName("commands")]
@@ -2959,7 +2959,7 @@ public partial class CommandsChangedData
}
/// Session capability change notification.
-public partial class CapabilitiesChangedData
+public sealed partial class CapabilitiesChangedData
{
/// UI capability changes.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -2968,7 +2968,7 @@ public partial class CapabilitiesChangedData
}
/// Plan approval request with plan content and available user actions.
-public partial class ExitPlanModeRequestedData
+public sealed partial class ExitPlanModeRequestedData
{
/// Available actions the user can take (e.g., approve, edit, reject).
[JsonPropertyName("actions")]
@@ -2992,7 +2992,7 @@ public partial class ExitPlanModeRequestedData
}
/// Plan mode exit completion with the user's approval decision and optional feedback.
-public partial class ExitPlanModeCompletedData
+public sealed partial class ExitPlanModeCompletedData
{
/// Whether the plan was approved by the user.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -3020,7 +3020,7 @@ public partial class ExitPlanModeCompletedData
}
/// Schema for the `ToolsUpdatedData` type.
-public partial class SessionToolsUpdatedData
+public sealed partial class SessionToolsUpdatedData
{
/// Identifier of the model the resolved tools apply to.
[JsonPropertyName("model")]
@@ -3028,12 +3028,12 @@ public partial class SessionToolsUpdatedData
}
/// Schema for the `BackgroundTasksChangedData` type.
-public partial class SessionBackgroundTasksChangedData
+public sealed partial class SessionBackgroundTasksChangedData
{
}
/// Schema for the `SkillsLoadedData` type.
-public partial class SessionSkillsLoadedData
+public sealed partial class SessionSkillsLoadedData
{
/// Array of resolved skill metadata.
[JsonPropertyName("skills")]
@@ -3041,7 +3041,7 @@ public partial class SessionSkillsLoadedData
}
/// Schema for the `CustomAgentsUpdatedData` type.
-public partial class SessionCustomAgentsUpdatedData
+public sealed partial class SessionCustomAgentsUpdatedData
{
/// Array of loaded custom agent metadata.
[JsonPropertyName("agents")]
@@ -3057,7 +3057,7 @@ public partial class SessionCustomAgentsUpdatedData
}
/// Schema for the `McpServersLoadedData` type.
-public partial class SessionMcpServersLoadedData
+public sealed partial class SessionMcpServersLoadedData
{
/// Array of MCP server status summaries.
[JsonPropertyName("servers")]
@@ -3065,7 +3065,7 @@ public partial class SessionMcpServersLoadedData
}
/// Schema for the `McpServerStatusChangedData` type.
-public partial class SessionMcpServerStatusChangedData
+public sealed partial class SessionMcpServerStatusChangedData
{
/// Name of the MCP server whose status changed.
[JsonPropertyName("serverName")]
@@ -3077,7 +3077,7 @@ public partial class SessionMcpServerStatusChangedData
}
/// Schema for the `ExtensionsLoadedData` type.
-public partial class SessionExtensionsLoadedData
+public sealed partial class SessionExtensionsLoadedData
{
/// Array of discovered extensions and their status.
[JsonPropertyName("extensions")]
@@ -3086,7 +3086,7 @@ public partial class SessionExtensionsLoadedData
/// Working directory and git context at session start.
/// Nested data type for WorkingDirectoryContext.
-public partial class WorkingDirectoryContext
+public sealed partial class WorkingDirectoryContext
{
/// Base commit of current git branch at session start time.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -3130,7 +3130,7 @@ public partial class WorkingDirectoryContext
/// Repository context for the handed-off session.
/// Nested data type for HandoffRepository.
-public partial class HandoffRepository
+public sealed partial class HandoffRepository
{
/// Git branch name, if applicable.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -3148,7 +3148,7 @@ public partial class HandoffRepository
/// Aggregate code change metrics for the session.
/// Nested data type for ShutdownCodeChanges.
-public partial class ShutdownCodeChanges
+public sealed partial class ShutdownCodeChanges
{
/// List of file paths that were modified during the session.
[JsonPropertyName("filesModified")]
@@ -3165,7 +3165,7 @@ public partial class ShutdownCodeChanges
/// Request count and cost metrics.
/// Nested data type for ShutdownModelMetricRequests.
-public partial class ShutdownModelMetricRequests
+public sealed partial class ShutdownModelMetricRequests
{
/// Cumulative cost multiplier for requests to this model.
[JsonPropertyName("cost")]
@@ -3178,7 +3178,7 @@ public partial class ShutdownModelMetricRequests
/// Schema for the `ShutdownModelMetricTokenDetail` type.
/// Nested data type for ShutdownModelMetricTokenDetail.
-public partial class ShutdownModelMetricTokenDetail
+public sealed partial class ShutdownModelMetricTokenDetail
{
/// Accumulated token count for this token type.
[JsonPropertyName("tokenCount")]
@@ -3187,7 +3187,7 @@ public partial class ShutdownModelMetricTokenDetail
/// Token usage breakdown.
/// Nested data type for ShutdownModelMetricUsage.
-public partial class ShutdownModelMetricUsage
+public sealed partial class ShutdownModelMetricUsage
{
/// Total tokens read from prompt cache across all requests.
[JsonPropertyName("cacheReadTokens")]
@@ -3213,7 +3213,7 @@ public partial class ShutdownModelMetricUsage
/// Schema for the `ShutdownModelMetric` type.
/// Nested data type for ShutdownModelMetric.
-public partial class ShutdownModelMetric
+public sealed partial class ShutdownModelMetric
{
/// Request count and cost metrics.
[JsonPropertyName("requests")]
@@ -3236,7 +3236,7 @@ public partial class ShutdownModelMetric
/// Schema for the `ShutdownTokenDetail` type.
/// Nested data type for ShutdownTokenDetail.
-public partial class ShutdownTokenDetail
+public sealed partial class ShutdownTokenDetail
{
/// Accumulated token count for this token type.
[JsonPropertyName("tokenCount")]
@@ -3245,7 +3245,7 @@ public partial class ShutdownTokenDetail
/// Token usage detail for a single billing category.
/// Nested data type for CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail.
-public partial class CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail
+public sealed partial class CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail
{
/// Number of tokens in this billing batch.
[JsonPropertyName("batchSize")]
@@ -3266,7 +3266,7 @@ public partial class CompactionCompleteCompactionTokensUsedCopilotUsageTokenDeta
/// Per-request cost and usage data from the CAPI copilot_usage response field.
/// Nested data type for CompactionCompleteCompactionTokensUsedCopilotUsage.
-public partial class CompactionCompleteCompactionTokensUsedCopilotUsage
+public sealed partial class CompactionCompleteCompactionTokensUsedCopilotUsage
{
/// Itemized token usage breakdown.
[JsonPropertyName("tokenDetails")]
@@ -3279,7 +3279,7 @@ public partial class CompactionCompleteCompactionTokensUsedCopilotUsage
/// Token usage breakdown for the compaction LLM call (aligned with assistant.usage format).
/// Nested data type for CompactionCompleteCompactionTokensUsed.
-public partial class CompactionCompleteCompactionTokensUsed
+public sealed partial class CompactionCompleteCompactionTokensUsed
{
/// Cached input tokens reused in the compaction LLM call.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -3319,7 +3319,7 @@ public partial class CompactionCompleteCompactionTokensUsed
/// Optional line range to scope the attachment to a specific section of the file.
/// Nested data type for UserMessageAttachmentFileLineRange.
-public partial class UserMessageAttachmentFileLineRange
+public sealed partial class UserMessageAttachmentFileLineRange
{
/// End line number (1-based, inclusive).
[JsonPropertyName("end")]
@@ -3332,7 +3332,7 @@ public partial class UserMessageAttachmentFileLineRange
/// File attachment.
/// The file variant of .
-public partial class UserMessageAttachmentFile : UserMessageAttachment
+public sealed partial class UserMessageAttachmentFile : UserMessageAttachment
{
///
[JsonIgnore]
@@ -3354,7 +3354,7 @@ public partial class UserMessageAttachmentFile : UserMessageAttachment
/// Directory attachment.
/// The directory variant of .
-public partial class UserMessageAttachmentDirectory : UserMessageAttachment
+public sealed partial class UserMessageAttachmentDirectory : UserMessageAttachment
{
///
[JsonIgnore]
@@ -3371,7 +3371,7 @@ public partial class UserMessageAttachmentDirectory : UserMessageAttachment
/// End position of the selection.
/// Nested data type for UserMessageAttachmentSelectionDetailsEnd.
-public partial class UserMessageAttachmentSelectionDetailsEnd
+public sealed partial class UserMessageAttachmentSelectionDetailsEnd
{
/// End character offset within the line (0-based).
[JsonPropertyName("character")]
@@ -3384,7 +3384,7 @@ public partial class UserMessageAttachmentSelectionDetailsEnd
/// Start position of the selection.
/// Nested data type for UserMessageAttachmentSelectionDetailsStart.
-public partial class UserMessageAttachmentSelectionDetailsStart
+public sealed partial class UserMessageAttachmentSelectionDetailsStart
{
/// Start character offset within the line (0-based).
[JsonPropertyName("character")]
@@ -3397,7 +3397,7 @@ public partial class UserMessageAttachmentSelectionDetailsStart
/// Position range of the selection within the file.
/// Nested data type for UserMessageAttachmentSelectionDetails.
-public partial class UserMessageAttachmentSelectionDetails
+public sealed partial class UserMessageAttachmentSelectionDetails
{
/// End position of the selection.
[JsonPropertyName("end")]
@@ -3410,7 +3410,7 @@ public partial class UserMessageAttachmentSelectionDetails
/// Code selection attachment from an editor.
/// The selection variant of .
-public partial class UserMessageAttachmentSelection : UserMessageAttachment
+public sealed partial class UserMessageAttachmentSelection : UserMessageAttachment
{
///
[JsonIgnore]
@@ -3435,7 +3435,7 @@ public partial class UserMessageAttachmentSelection : UserMessageAttachment
/// GitHub issue, pull request, or discussion reference.
/// The github_reference variant of .
-public partial class UserMessageAttachmentGithubReference : UserMessageAttachment
+public sealed partial class UserMessageAttachmentGithubReference : UserMessageAttachment
{
///
[JsonIgnore]
@@ -3464,7 +3464,7 @@ public partial class UserMessageAttachmentGithubReference : UserMessageAttachmen
/// Blob attachment with inline base64-encoded data.
/// The blob variant of .
-public partial class UserMessageAttachmentBlob : UserMessageAttachment
+public sealed partial class UserMessageAttachmentBlob : UserMessageAttachment
{
///
[JsonIgnore]
@@ -3505,7 +3505,7 @@ public partial class UserMessageAttachment
/// A tool invocation request from the assistant.
/// Nested data type for AssistantMessageToolRequest.
-public partial class AssistantMessageToolRequest
+public sealed partial class AssistantMessageToolRequest
{
/// Arguments to pass to the tool, format depends on the tool.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -3548,7 +3548,7 @@ public partial class AssistantMessageToolRequest
/// Token usage detail for a single billing category.
/// Nested data type for AssistantUsageCopilotUsageTokenDetail.
-public partial class AssistantUsageCopilotUsageTokenDetail
+public sealed partial class AssistantUsageCopilotUsageTokenDetail
{
/// Number of tokens in this billing batch.
[JsonPropertyName("batchSize")]
@@ -3569,7 +3569,7 @@ public partial class AssistantUsageCopilotUsageTokenDetail
/// Per-request cost and usage data from the CAPI copilot_usage response field.
/// Nested data type for AssistantUsageCopilotUsage.
-public partial class AssistantUsageCopilotUsage
+public sealed partial class AssistantUsageCopilotUsage
{
/// Itemized token usage breakdown.
[JsonPropertyName("tokenDetails")]
@@ -3582,7 +3582,7 @@ public partial class AssistantUsageCopilotUsage
/// Schema for the `AssistantUsageQuotaSnapshot` type.
/// Nested data type for AssistantUsageQuotaSnapshot.
-public partial class AssistantUsageQuotaSnapshot
+public sealed partial class AssistantUsageQuotaSnapshot
{
/// Total requests allowed by the entitlement.
[JsonPropertyName("entitlementRequests")]
@@ -3620,7 +3620,7 @@ public partial class AssistantUsageQuotaSnapshot
/// Error details when the tool execution failed.
/// Nested data type for ToolExecutionCompleteError.
-public partial class ToolExecutionCompleteError
+public sealed partial class ToolExecutionCompleteError
{
/// Machine-readable error code.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -3634,7 +3634,7 @@ public partial class ToolExecutionCompleteError
/// Plain text content block.
/// The text variant of .
-public partial class ToolExecutionCompleteContentText : ToolExecutionCompleteContent
+public sealed partial class ToolExecutionCompleteContentText : ToolExecutionCompleteContent
{
///
[JsonIgnore]
@@ -3647,7 +3647,7 @@ public partial class ToolExecutionCompleteContentText : ToolExecutionCompleteCon
/// Terminal/shell output content block with optional exit code and working directory.
/// The terminal variant of .
-public partial class ToolExecutionCompleteContentTerminal : ToolExecutionCompleteContent
+public sealed partial class ToolExecutionCompleteContentTerminal : ToolExecutionCompleteContent
{
///
[JsonIgnore]
@@ -3670,7 +3670,7 @@ public partial class ToolExecutionCompleteContentTerminal : ToolExecutionComplet
/// Image content block with base64-encoded data.
/// The image variant of .
-public partial class ToolExecutionCompleteContentImage : ToolExecutionCompleteContent
+public sealed partial class ToolExecutionCompleteContentImage : ToolExecutionCompleteContent
{
///
[JsonIgnore]
@@ -3688,7 +3688,7 @@ public partial class ToolExecutionCompleteContentImage : ToolExecutionCompleteCo
/// Audio content block with base64-encoded data.
/// The audio variant of .
-public partial class ToolExecutionCompleteContentAudio : ToolExecutionCompleteContent
+public sealed partial class ToolExecutionCompleteContentAudio : ToolExecutionCompleteContent
{
///
[JsonIgnore]
@@ -3706,7 +3706,7 @@ public partial class ToolExecutionCompleteContentAudio : ToolExecutionCompleteCo
/// Icon image for a resource.
/// Nested data type for ToolExecutionCompleteContentResourceLinkIcon.
-public partial class ToolExecutionCompleteContentResourceLinkIcon
+public sealed partial class ToolExecutionCompleteContentResourceLinkIcon
{
/// MIME type of the icon image.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -3730,7 +3730,7 @@ public partial class ToolExecutionCompleteContentResourceLinkIcon
/// Resource link content block referencing an external resource.
/// The resource_link variant of .
-public partial class ToolExecutionCompleteContentResourceLink : ToolExecutionCompleteContent
+public sealed partial class ToolExecutionCompleteContentResourceLink : ToolExecutionCompleteContent
{
///
[JsonIgnore]
@@ -3772,7 +3772,7 @@ public partial class ToolExecutionCompleteContentResourceLink : ToolExecutionCom
/// Schema for the `EmbeddedTextResourceContents` type.
/// Nested data type for EmbeddedTextResourceContents.
-public partial class EmbeddedTextResourceContents
+public sealed partial class EmbeddedTextResourceContents
{
/// MIME type of the text content.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -3790,7 +3790,7 @@ public partial class EmbeddedTextResourceContents
/// Schema for the `EmbeddedBlobResourceContents` type.
/// Nested data type for EmbeddedBlobResourceContents.
-public partial class EmbeddedBlobResourceContents
+public sealed partial class EmbeddedBlobResourceContents
{
/// Base64-encoded binary content of the resource.
[Base64String]
@@ -3887,7 +3887,7 @@ public override void Write(Utf8JsonWriter writer, ToolExecutionCompleteContentRe
/// Embedded resource content block with inline text or binary data.
/// The resource variant of .
-public partial class ToolExecutionCompleteContentResource : ToolExecutionCompleteContent
+public sealed partial class ToolExecutionCompleteContentResource : ToolExecutionCompleteContent
{
///
[JsonIgnore]
@@ -3919,7 +3919,7 @@ public partial class ToolExecutionCompleteContent
/// Tool execution result on success.
/// Nested data type for ToolExecutionCompleteResult.
-public partial class ToolExecutionCompleteResult
+public sealed partial class ToolExecutionCompleteResult
{
/// Concise tool result text sent to the LLM for chat completion, potentially truncated for token efficiency.
[JsonPropertyName("content")]
@@ -3938,7 +3938,7 @@ public partial class ToolExecutionCompleteResult
/// Error details when the hook failed.
/// Nested data type for HookEndError.
-public partial class HookEndError
+public sealed partial class HookEndError
{
/// Human-readable error message.
[JsonPropertyName("message")]
@@ -3952,7 +3952,7 @@ public partial class HookEndError
/// Metadata about the prompt template and its construction.
/// Nested data type for SystemMessageMetadata.
-public partial class SystemMessageMetadata
+public sealed partial class SystemMessageMetadata
{
/// Version identifier of the prompt template used.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -3967,7 +3967,7 @@ public partial class SystemMessageMetadata
/// Schema for the `SystemNotificationAgentCompleted` type.
/// The agent_completed variant of .
-public partial class SystemNotificationAgentCompleted : SystemNotification
+public sealed partial class SystemNotificationAgentCompleted : SystemNotification
{
///
[JsonIgnore]
@@ -3998,7 +3998,7 @@ public partial class SystemNotificationAgentCompleted : SystemNotification
/// Schema for the `SystemNotificationAgentIdle` type.
/// The agent_idle variant of .
-public partial class SystemNotificationAgentIdle : SystemNotification
+public sealed partial class SystemNotificationAgentIdle : SystemNotification
{
///
[JsonIgnore]
@@ -4020,7 +4020,7 @@ public partial class SystemNotificationAgentIdle : SystemNotification
/// Schema for the `SystemNotificationNewInboxMessage` type.
/// The new_inbox_message variant of .
-public partial class SystemNotificationNewInboxMessage : SystemNotification
+public sealed partial class SystemNotificationNewInboxMessage : SystemNotification
{
///
[JsonIgnore]
@@ -4045,7 +4045,7 @@ public partial class SystemNotificationNewInboxMessage : SystemNotification
/// Schema for the `SystemNotificationShellCompleted` type.
/// The shell_completed variant of .
-public partial class SystemNotificationShellCompleted : SystemNotification
+public sealed partial class SystemNotificationShellCompleted : SystemNotification
{
///
[JsonIgnore]
@@ -4068,7 +4068,7 @@ public partial class SystemNotificationShellCompleted : SystemNotification
/// Schema for the `SystemNotificationShellDetachedCompleted` type.
/// The shell_detached_completed variant of .
-public partial class SystemNotificationShellDetachedCompleted : SystemNotification
+public sealed partial class SystemNotificationShellDetachedCompleted : SystemNotification
{
///
[JsonIgnore]
@@ -4086,7 +4086,7 @@ public partial class SystemNotificationShellDetachedCompleted : SystemNotificati
/// Schema for the `SystemNotificationInstructionDiscovered` type.
/// The instruction_discovered variant of .
-public partial class SystemNotificationInstructionDiscovered : SystemNotification
+public sealed partial class SystemNotificationInstructionDiscovered : SystemNotification
{
///
[JsonIgnore]
@@ -4131,7 +4131,7 @@ public partial class SystemNotification
/// Schema for the `PermissionRequestShellCommand` type.
/// Nested data type for PermissionRequestShellCommand.
-public partial class PermissionRequestShellCommand
+public sealed partial class PermissionRequestShellCommand
{
/// Command identifier (e.g., executable name).
[JsonPropertyName("identifier")]
@@ -4144,7 +4144,7 @@ public partial class PermissionRequestShellCommand
/// Schema for the `PermissionRequestShellPossibleUrl` type.
/// Nested data type for PermissionRequestShellPossibleUrl.
-public partial class PermissionRequestShellPossibleUrl
+public sealed partial class PermissionRequestShellPossibleUrl
{
/// URL that may be accessed by the command.
[JsonPropertyName("url")]
@@ -4153,7 +4153,7 @@ public partial class PermissionRequestShellPossibleUrl
/// Shell command permission request.
/// The shell variant of .
-public partial class PermissionRequestShell : PermissionRequest
+public sealed partial class PermissionRequestShell : PermissionRequest
{
///
[JsonIgnore]
@@ -4200,7 +4200,7 @@ public partial class PermissionRequestShell : PermissionRequest
/// File write permission request.
/// The write variant of .
-public partial class PermissionRequestWrite : PermissionRequest
+public sealed partial class PermissionRequestWrite : PermissionRequest
{
///
[JsonIgnore]
@@ -4235,7 +4235,7 @@ public partial class PermissionRequestWrite : PermissionRequest
/// File or directory read permission request.
/// The read variant of .
-public partial class PermissionRequestRead : PermissionRequest
+public sealed partial class PermissionRequestRead : PermissionRequest
{
///
[JsonIgnore]
@@ -4257,7 +4257,7 @@ public partial class PermissionRequestRead : PermissionRequest
/// MCP tool invocation permission request.
/// The mcp variant of .
-public partial class PermissionRequestMcp : PermissionRequest
+public sealed partial class PermissionRequestMcp : PermissionRequest
{
///
[JsonIgnore]
@@ -4292,7 +4292,7 @@ public partial class PermissionRequestMcp : PermissionRequest
/// URL access permission request.
/// The url variant of .
-public partial class PermissionRequestUrl : PermissionRequest
+public sealed partial class PermissionRequestUrl : PermissionRequest
{
///
[JsonIgnore]
@@ -4314,7 +4314,7 @@ public partial class PermissionRequestUrl : PermissionRequest
/// Memory operation permission request.
/// The memory variant of .
-public partial class PermissionRequestMemory : PermissionRequest
+public sealed partial class PermissionRequestMemory : PermissionRequest
{
///
[JsonIgnore]
@@ -4357,7 +4357,7 @@ public partial class PermissionRequestMemory : PermissionRequest
/// Custom tool invocation permission request.
/// The custom-tool variant of .
-public partial class PermissionRequestCustomTool : PermissionRequest
+public sealed partial class PermissionRequestCustomTool : PermissionRequest
{
///
[JsonIgnore]
@@ -4384,7 +4384,7 @@ public partial class PermissionRequestCustomTool : PermissionRequest
/// Hook confirmation permission request.
/// The hook variant of .
-public partial class PermissionRequestHook : PermissionRequest
+public sealed partial class PermissionRequestHook : PermissionRequest
{
///
[JsonIgnore]
@@ -4412,7 +4412,7 @@ public partial class PermissionRequestHook : PermissionRequest
/// Extension management permission request.
/// The extension-management variant of .
-public partial class PermissionRequestExtensionManagement : PermissionRequest
+public sealed partial class PermissionRequestExtensionManagement : PermissionRequest
{
///
[JsonIgnore]
@@ -4435,7 +4435,7 @@ public partial class PermissionRequestExtensionManagement : PermissionRequest
/// Extension permission access request.
/// The extension-permission-access variant of .
-public partial class PermissionRequestExtensionPermissionAccess : PermissionRequest
+public sealed partial class PermissionRequestExtensionPermissionAccess : PermissionRequest
{
///
[JsonIgnore]
@@ -4480,7 +4480,7 @@ public partial class PermissionRequest
/// Shell command permission prompt.
/// The commands variant of .
-public partial class PermissionPromptRequestCommands : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestCommands : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4515,7 +4515,7 @@ public partial class PermissionPromptRequestCommands : PermissionPromptRequest
/// File write permission prompt.
/// The write variant of .
-public partial class PermissionPromptRequestWrite : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestWrite : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4550,7 +4550,7 @@ public partial class PermissionPromptRequestWrite : PermissionPromptRequest
/// File read permission prompt.
/// The read variant of .
-public partial class PermissionPromptRequestRead : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestRead : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4572,7 +4572,7 @@ public partial class PermissionPromptRequestRead : PermissionPromptRequest
/// MCP tool invocation permission prompt.
/// The mcp variant of .
-public partial class PermissionPromptRequestMcp : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestMcp : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4603,7 +4603,7 @@ public partial class PermissionPromptRequestMcp : PermissionPromptRequest
/// URL access permission prompt.
/// The url variant of .
-public partial class PermissionPromptRequestUrl : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestUrl : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4625,7 +4625,7 @@ public partial class PermissionPromptRequestUrl : PermissionPromptRequest
/// Memory operation permission prompt.
/// The memory variant of .
-public partial class PermissionPromptRequestMemory : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestMemory : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4668,7 +4668,7 @@ public partial class PermissionPromptRequestMemory : PermissionPromptRequest
/// Custom tool invocation permission prompt.
/// The custom-tool variant of .
-public partial class PermissionPromptRequestCustomTool : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestCustomTool : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4695,7 +4695,7 @@ public partial class PermissionPromptRequestCustomTool : PermissionPromptRequest
/// Path access permission prompt.
/// The path variant of .
-public partial class PermissionPromptRequestPath : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestPath : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4717,7 +4717,7 @@ public partial class PermissionPromptRequestPath : PermissionPromptRequest
/// Hook confirmation permission prompt.
/// The hook variant of .
-public partial class PermissionPromptRequestHook : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestHook : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4745,7 +4745,7 @@ public partial class PermissionPromptRequestHook : PermissionPromptRequest
/// Extension management permission prompt.
/// The extension-management variant of .
-public partial class PermissionPromptRequestExtensionManagement : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestExtensionManagement : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4768,7 +4768,7 @@ public partial class PermissionPromptRequestExtensionManagement : PermissionProm
/// Extension permission access prompt.
/// The extension-permission-access variant of .
-public partial class PermissionPromptRequestExtensionPermissionAccess : PermissionPromptRequest
+public sealed partial class PermissionPromptRequestExtensionPermissionAccess : PermissionPromptRequest
{
///
[JsonIgnore]
@@ -4814,7 +4814,7 @@ public partial class PermissionPromptRequest
/// Schema for the `PermissionApproved` type.
/// The approved variant of .
-public partial class PermissionResultApproved : PermissionResult
+public sealed partial class PermissionResultApproved : PermissionResult
{
///
[JsonIgnore]
@@ -4823,7 +4823,7 @@ public partial class PermissionResultApproved : PermissionResult
/// Schema for the `UserToolSessionApprovalCommands` type.
/// The commands variant of .
-public partial class UserToolSessionApprovalCommands : UserToolSessionApproval
+public sealed partial class UserToolSessionApprovalCommands : UserToolSessionApproval
{
///
[JsonIgnore]
@@ -4836,7 +4836,7 @@ public partial class UserToolSessionApprovalCommands : UserToolSessionApproval
/// Schema for the `UserToolSessionApprovalRead` type.
/// The read variant of .
-public partial class UserToolSessionApprovalRead : UserToolSessionApproval
+public sealed partial class UserToolSessionApprovalRead : UserToolSessionApproval
{
///
[JsonIgnore]
@@ -4845,7 +4845,7 @@ public partial class UserToolSessionApprovalRead : UserToolSessionApproval
/// Schema for the `UserToolSessionApprovalWrite` type.
/// The write variant of .
-public partial class UserToolSessionApprovalWrite : UserToolSessionApproval
+public sealed partial class UserToolSessionApprovalWrite : UserToolSessionApproval
{
///
[JsonIgnore]
@@ -4854,7 +4854,7 @@ public partial class UserToolSessionApprovalWrite : UserToolSessionApproval
/// Schema for the `UserToolSessionApprovalMcp` type.
/// The mcp variant of .
-public partial class UserToolSessionApprovalMcp : UserToolSessionApproval
+public sealed partial class UserToolSessionApprovalMcp : UserToolSessionApproval
{
///
[JsonIgnore]
@@ -4871,7 +4871,7 @@ public partial class UserToolSessionApprovalMcp : UserToolSessionApproval
/// Schema for the `UserToolSessionApprovalMemory` type.
/// The memory variant of .
-public partial class UserToolSessionApprovalMemory : UserToolSessionApproval
+public sealed partial class UserToolSessionApprovalMemory : UserToolSessionApproval
{
///
[JsonIgnore]
@@ -4880,7 +4880,7 @@ public partial class UserToolSessionApprovalMemory : UserToolSessionApproval
/// Schema for the `UserToolSessionApprovalCustomTool` type.
/// The custom-tool variant of .
-public partial class UserToolSessionApprovalCustomTool : UserToolSessionApproval
+public sealed partial class UserToolSessionApprovalCustomTool : UserToolSessionApproval
{
///
[JsonIgnore]
@@ -4893,7 +4893,7 @@ public partial class UserToolSessionApprovalCustomTool : UserToolSessionApproval
/// Schema for the `UserToolSessionApprovalExtensionManagement` type.
/// The extension-management variant of .
-public partial class UserToolSessionApprovalExtensionManagement : UserToolSessionApproval
+public sealed partial class UserToolSessionApprovalExtensionManagement : UserToolSessionApproval
{
///
[JsonIgnore]
@@ -4907,7 +4907,7 @@ public partial class UserToolSessionApprovalExtensionManagement : UserToolSessio
/// Schema for the `UserToolSessionApprovalExtensionPermissionAccess` type.
/// The extension-permission-access variant of .
-public partial class UserToolSessionApprovalExtensionPermissionAccess : UserToolSessionApproval
+public sealed partial class UserToolSessionApprovalExtensionPermissionAccess : UserToolSessionApproval
{
///
[JsonIgnore]
@@ -4941,7 +4941,7 @@ public partial class UserToolSessionApproval
/// Schema for the `PermissionApprovedForSession` type.
/// The approved-for-session variant of .
-public partial class PermissionResultApprovedForSession : PermissionResult
+public sealed partial class PermissionResultApprovedForSession : PermissionResult
{
///
[JsonIgnore]
@@ -4954,7 +4954,7 @@ public partial class PermissionResultApprovedForSession : PermissionResult
/// Schema for the `PermissionApprovedForLocation` type.
/// The approved-for-location variant of .
-public partial class PermissionResultApprovedForLocation : PermissionResult
+public sealed partial class PermissionResultApprovedForLocation : PermissionResult
{
///
[JsonIgnore]
@@ -4971,7 +4971,7 @@ public partial class PermissionResultApprovedForLocation : PermissionResult
/// Schema for the `PermissionCancelled` type.
/// The cancelled variant of .
-public partial class PermissionResultCancelled : PermissionResult
+public sealed partial class PermissionResultCancelled : PermissionResult
{
///
[JsonIgnore]
@@ -4985,7 +4985,7 @@ public partial class PermissionResultCancelled : PermissionResult
/// Schema for the `PermissionRule` type.
/// Nested data type for PermissionRule.
-public partial class PermissionRule
+public sealed partial class PermissionRule
{
/// Optional rule argument matched against the request.
[JsonPropertyName("argument")]
@@ -4998,7 +4998,7 @@ public partial class PermissionRule
/// Schema for the `PermissionDeniedByRules` type.
/// The denied-by-rules variant of .
-public partial class PermissionResultDeniedByRules : PermissionResult
+public sealed partial class PermissionResultDeniedByRules : PermissionResult
{
///
[JsonIgnore]
@@ -5011,7 +5011,7 @@ public partial class PermissionResultDeniedByRules : PermissionResult
/// Schema for the `PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser` type.
/// The denied-no-approval-rule-and-could-not-request-from-user variant of .
-public partial class PermissionResultDeniedNoApprovalRuleAndCouldNotRequestFromUser : PermissionResult
+public sealed partial class PermissionResultDeniedNoApprovalRuleAndCouldNotRequestFromUser : PermissionResult
{
///
[JsonIgnore]
@@ -5020,7 +5020,7 @@ public partial class PermissionResultDeniedNoApprovalRuleAndCouldNotRequestFromU
/// Schema for the `PermissionDeniedInteractivelyByUser` type.
/// The denied-interactively-by-user variant of .
-public partial class PermissionResultDeniedInteractivelyByUser : PermissionResult
+public sealed partial class PermissionResultDeniedInteractivelyByUser : PermissionResult
{
///
[JsonIgnore]
@@ -5039,7 +5039,7 @@ public partial class PermissionResultDeniedInteractivelyByUser : PermissionResul
/// Schema for the `PermissionDeniedByContentExclusionPolicy` type.
/// The denied-by-content-exclusion-policy variant of .
-public partial class PermissionResultDeniedByContentExclusionPolicy : PermissionResult
+public sealed partial class PermissionResultDeniedByContentExclusionPolicy : PermissionResult
{
///
[JsonIgnore]
@@ -5056,7 +5056,7 @@ public partial class PermissionResultDeniedByContentExclusionPolicy : Permission
/// Schema for the `PermissionDeniedByPermissionRequestHook` type.
/// The denied-by-permission-request-hook variant of .
-public partial class PermissionResultDeniedByPermissionRequestHook : PermissionResult
+public sealed partial class PermissionResultDeniedByPermissionRequestHook : PermissionResult
{
///
[JsonIgnore]
@@ -5097,7 +5097,7 @@ public partial class PermissionResult
/// JSON Schema describing the form fields to present to the user (form mode only).
/// Nested data type for ElicitationRequestedSchema.
-public partial class ElicitationRequestedSchema
+public sealed partial class ElicitationRequestedSchema
{
/// Form field definitions, keyed by field name.
[JsonPropertyName("properties")]
@@ -5115,7 +5115,7 @@ public partial class ElicitationRequestedSchema
/// Static OAuth client configuration, if the server specifies one.
/// Nested data type for McpOauthRequiredStaticClientConfig.
-public partial class McpOauthRequiredStaticClientConfig
+public sealed partial class McpOauthRequiredStaticClientConfig
{
/// OAuth client ID for the server.
[JsonPropertyName("clientId")]
@@ -5134,7 +5134,7 @@ public partial class McpOauthRequiredStaticClientConfig
/// Schema for the `CommandsChangedCommand` type.
/// Nested data type for CommandsChangedCommand.
-public partial class CommandsChangedCommand
+public sealed partial class CommandsChangedCommand
{
/// Optional human-readable command description.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -5148,7 +5148,7 @@ public partial class CommandsChangedCommand
/// UI capability changes.
/// Nested data type for CapabilitiesChangedUI.
-public partial class CapabilitiesChangedUI
+public sealed partial class CapabilitiesChangedUI
{
/// Whether elicitation is now supported.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -5158,7 +5158,7 @@ public partial class CapabilitiesChangedUI
/// Schema for the `SkillsLoadedSkill` type.
/// Nested data type for SkillsLoadedSkill.
-public partial class SkillsLoadedSkill
+public sealed partial class SkillsLoadedSkill
{
/// Description of what the skill does.
[JsonPropertyName("description")]
@@ -5188,7 +5188,7 @@ public partial class SkillsLoadedSkill
/// Schema for the `CustomAgentsUpdatedAgent` type.
/// Nested data type for CustomAgentsUpdatedAgent.
-public partial class CustomAgentsUpdatedAgent
+public sealed partial class CustomAgentsUpdatedAgent
{
/// Description of what the agent does.
[JsonPropertyName("description")]
@@ -5226,7 +5226,7 @@ public partial class CustomAgentsUpdatedAgent
/// Schema for the `McpServersLoadedServer` type.
/// Nested data type for McpServersLoadedServer.
-public partial class McpServersLoadedServer
+public sealed partial class McpServersLoadedServer
{
/// Error message if the server failed to connect.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
@@ -5249,7 +5249,7 @@ public partial class McpServersLoadedServer
/// Schema for the `ExtensionsLoadedExtension` type.
/// Nested data type for ExtensionsLoadedExtension.
-public partial class ExtensionsLoadedExtension
+public sealed partial class ExtensionsLoadedExtension
{
/// Source-qualified extension ID (e.g., 'project:my-ext', 'user:auth-helper').
[JsonPropertyName("id")]
@@ -7186,4 +7186,4 @@ public override void Write(Utf8JsonWriter writer, ExtensionsLoadedExtensionStatu
[JsonSerializable(typeof(UserToolSessionApprovalWrite))]
[JsonSerializable(typeof(WorkingDirectoryContext))]
[JsonSerializable(typeof(JsonElement))]
-internal partial class SessionEventsJsonContext : JsonSerializerContext;
\ No newline at end of file
+internal sealed partial class SessionEventsJsonContext : JsonSerializerContext;
\ No newline at end of file
diff --git a/scripts/codegen/csharp.ts b/scripts/codegen/csharp.ts
index 969146871..1e54dea2d 100644
--- a/scripts/codegen/csharp.ts
+++ b/scripts/codegen/csharp.ts
@@ -631,6 +631,10 @@ type PropertyTypeResolver = (
enumOutput: string[]
) => string;
+interface DiscriminatedUnionGenerationOptions {
+ sealLeafTypes?: boolean;
+}
+
function isBooleanDiscriminator(discriminatorInfo: DiscriminatorInfo): boolean {
return Array.from(discriminatorInfo.mapping.values()).every((variant) => typeof variant.value === "boolean");
}
@@ -648,13 +652,14 @@ function generateDiscriminatedUnionClass(
enumOutput: string[],
description?: string,
propertyResolver?: PropertyTypeResolver,
- experimental = false
+ experimental = false,
+ options: DiscriminatedUnionGenerationOptions = {}
): string {
if (isBooleanDiscriminator(discriminatorInfo)) {
- return generateFlattenedBooleanDiscriminatedClass(baseClassName, discriminatorInfo, knownTypes, nestedClasses, enumOutput, description, propertyResolver, experimental);
+ return generateFlattenedBooleanDiscriminatedClass(baseClassName, discriminatorInfo, knownTypes, nestedClasses, enumOutput, description, propertyResolver, experimental, options);
}
- return generatePolymorphicClasses(baseClassName, discriminatorInfo.property, variants, knownTypes, nestedClasses, enumOutput, description, propertyResolver, experimental);
+ return generatePolymorphicClasses(baseClassName, discriminatorInfo.property, variants, knownTypes, nestedClasses, enumOutput, description, propertyResolver, experimental, options);
}
function generateFlattenedBooleanDiscriminatedClass(
@@ -665,7 +670,8 @@ function generateFlattenedBooleanDiscriminatedClass(
enumOutput: string[],
description?: string,
propertyResolver?: PropertyTypeResolver,
- experimental = false
+ experimental = false,
+ options: DiscriminatedUnionGenerationOptions = {}
): string {
const resolver = propertyResolver ?? resolveSessionPropertyType;
const renamedBase = applyTypeRename(baseClassName);
@@ -695,7 +701,7 @@ function generateFlattenedBooleanDiscriminatedClass(
lines.push(...xmlDocCommentWithFallback(description, `Data type discriminated by ${escapeXml(discriminatorInfo.property)}.`, ""));
if (experimental) pushExperimentalAttribute(lines);
- lines.push(`public partial class ${renamedBase}`);
+ lines.push(`public ${options.sealLeafTypes ? "sealed " : ""}partial class ${renamedBase}`);
lines.push(`{`);
lines.push(` /// The boolean discriminator.`);
lines.push(` [JsonPropertyName("${discriminatorInfo.property}")]`);
@@ -734,7 +740,8 @@ function generatePolymorphicClasses(
enumOutput: string[],
description?: string,
propertyResolver?: PropertyTypeResolver,
- experimental = false
+ experimental = false,
+ options: DiscriminatedUnionGenerationOptions = {}
): string {
const resolver = propertyResolver ?? resolveSessionPropertyType;
const lines: string[] = [];
@@ -764,7 +771,7 @@ function generatePolymorphicClasses(
for (const { value, schema } of discriminatorInfo.mapping.values()) {
const constValue = String(value);
const derivedClassName = applyTypeRename(`${baseClassName}${toPascalCase(constValue)}`);
- const derivedCode = generateDerivedClass(derivedClassName, renamedBase, discriminatorProperty, constValue, schema, knownTypes, nestedClasses, enumOutput, resolver);
+ const derivedCode = generateDerivedClass(derivedClassName, renamedBase, discriminatorProperty, constValue, schema, knownTypes, nestedClasses, enumOutput, resolver, options);
nestedClasses.set(derivedClassName, derivedCode);
}
@@ -783,7 +790,8 @@ function generateDerivedClass(
knownTypes: Map,
nestedClasses: Map,
enumOutput: string[],
- propertyResolver: PropertyTypeResolver
+ propertyResolver: PropertyTypeResolver,
+ options: DiscriminatedUnionGenerationOptions = {}
): string {
const lines: string[] = [];
const required = new Set(schema.required || []);
@@ -791,7 +799,7 @@ function generateDerivedClass(
lines.push(...xmlDocCommentWithFallback(schema.description, `The ${escapeXml(discriminatorValue)} variant of .`, ""));
if (isSchemaExperimental(schema)) pushExperimentalAttribute(lines);
if (isSchemaDeprecated(schema)) pushObsoleteAttributes(lines);
- lines.push(`public partial class ${className} : ${baseClassName}`);
+ lines.push(`public ${options.sealLeafTypes ? "sealed " : ""}partial class ${className} : ${baseClassName}`);
lines.push(`{`);
lines.push(` /// `);
lines.push(` [JsonIgnore]`);
@@ -1023,7 +1031,7 @@ function generateNestedClass(
lines.push(...xmlDocCommentWithFallback(schema.description, `Nested data type for ${className}.`, ""));
if (isSchemaExperimental(schema)) pushExperimentalAttribute(lines);
if (isSchemaDeprecated(schema)) pushObsoleteAttributes(lines);
- lines.push(`public partial class ${className}`, `{`);
+ lines.push(`public sealed partial class ${className}`, `{`);
for (const [propName, propSchema] of Object.entries(schema.properties || {}).sort(([a], [b]) => a.localeCompare(b))) {
if (typeof propSchema !== "object") continue;
@@ -1098,7 +1106,7 @@ function resolveSessionPropertyType(
const hasNull = propSchema.anyOf.length > nonNull.length;
const baseClassName = (propSchema.title as string) ?? `${parentClassName}${propName}`;
const renamedBase = applyTypeRename(baseClassName);
- const polymorphicCode = generateDiscriminatedUnionClass(baseClassName, discriminatorInfo, variants, knownTypes, nestedClasses, enumOutput, propSchema.description, undefined, isSchemaExperimental(propSchema));
+ const polymorphicCode = generateDiscriminatedUnionClass(baseClassName, discriminatorInfo, variants, knownTypes, nestedClasses, enumOutput, propSchema.description, undefined, isSchemaExperimental(propSchema), { sealLeafTypes: true });
nestedClasses.set(renamedBase, polymorphicCode);
return isRequired && !hasNull ? renamedBase : `${renamedBase}?`;
}
@@ -1151,7 +1159,7 @@ function resolveSessionPropertyType(
}
function generateDataClass(variant: EventVariant, knownTypes: Map, nestedClasses: Map, enumOutput: string[]): string {
- if (!variant.dataSchema?.properties) return `public partial class ${variant.dataClassName} { }`;
+ if (!variant.dataSchema?.properties) return `public sealed partial class ${variant.dataClassName} { }`;
const required = new Set(variant.dataSchema.required || []);
const lines: string[] = [];
@@ -1166,7 +1174,7 @@ function generateDataClass(variant: EventVariant, knownTypes: Map a.localeCompare(b))) {
if (typeof propSchema !== "object") continue;
@@ -1279,7 +1287,7 @@ namespace GitHub.Copilot.SDK;
if (variant.eventExperimental) {
pushExperimentalAttribute(lines);
}
- lines.push(`public partial class ${variant.className} : SessionEvent`, `{`);
+ lines.push(`public sealed partial class ${variant.className} : SessionEvent`, `{`);
lines.push(` /// `);
lines.push(` [JsonIgnore]`, ` public override string Type => "${variant.typeName}";`, "");
lines.push(` /// The ${escapeXml(variant.typeName)} event payload.`);
@@ -1302,7 +1310,7 @@ namespace GitHub.Copilot.SDK;
lines.push(`[JsonSourceGenerationOptions(`, ` JsonSerializerDefaults.Web,`, ` AllowOutOfOrderMetadataProperties = true,`, ` NumberHandling = JsonNumberHandling.AllowReadingFromString,`, ` DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]`);
for (const t of types) lines.push(`[JsonSerializable(typeof(${t}))]`);
lines.push(`[JsonSerializable(typeof(JsonElement))]`);
- lines.push(`internal partial class SessionEventsJsonContext : JsonSerializerContext;`);
+ lines.push(`internal sealed partial class SessionEventsJsonContext : JsonSerializerContext;`);
return lines.join("\n");
}