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"); }