From 53e5fc752aefaaa8ae5410879f6a48a972d1577f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Sep 2026 00:48:38 +0000 Subject: [PATCH] Update Copilot CLI to 1.0.86-1 - Updated the shared CLI release pin - Re-ran code generators - Formatted generated code --- dotnet/src/Generated/Rpc.cs | 1 + dotnet/src/Generated/SessionEvents.cs | 33 ++++++++++++++ go/rpc/zsession_encoding.go | 8 +++- go/rpc/zsession_events.go | 16 +++++++ go/zsession_events.go | 1 + .../copilot/generated/ResponsesReasoning.java | 31 +++++++++++++ .../SessionCompactionCompleteEvent.java | 2 + .../generated/SystemNotificationEvent.java | 4 +- .../copilot/generated/UserMessageEvent.java | 2 + nodejs/package.json | 2 +- nodejs/src/cliVersion.ts | 2 +- nodejs/src/generated/session-events.ts | 20 +++++++++ python/copilot/generated/session_events.py | 43 +++++++++++++++++++ rust/src/generated/session_events.rs | 21 +++++++++ 14 files changed, 181 insertions(+), 5 deletions(-) create mode 100644 java/sdk/src/generated/java/com/github/copilot/generated/ResponsesReasoning.java diff --git a/dotnet/src/Generated/Rpc.cs b/dotnet/src/Generated/Rpc.cs index 81cd4e6da8..fbc51b608f 100644 --- a/dotnet/src/Generated/Rpc.cs +++ b/dotnet/src/Generated/Rpc.cs @@ -39623,6 +39623,7 @@ public static void RegisterClientGlobalApiHandlers(JsonRpc rpc, ClientGlobalApiH [JsonSerializable(typeof(GitHub.Copilot.ReasoningSummary), TypeInfoPropertyName = "SessionEventsReasoningSummary")] [JsonSerializable(typeof(GitHub.Copilot.RecommendedAutoTier), TypeInfoPropertyName = "SessionEventsRecommendedAutoTier")] [JsonSerializable(typeof(GitHub.Copilot.RemediationAction), TypeInfoPropertyName = "SessionEventsRemediationAction")] +[JsonSerializable(typeof(GitHub.Copilot.ResponsesReasoning), TypeInfoPropertyName = "SessionEventsResponsesReasoning")] [JsonSerializable(typeof(GitHub.Copilot.SamplingCompletedData), TypeInfoPropertyName = "SessionEventsSamplingCompletedData")] [JsonSerializable(typeof(GitHub.Copilot.SamplingCompletedEvent), TypeInfoPropertyName = "SessionEventsSamplingCompletedEvent")] [JsonSerializable(typeof(GitHub.Copilot.SamplingRequestedData), TypeInfoPropertyName = "SessionEventsSamplingRequestedData")] diff --git a/dotnet/src/Generated/SessionEvents.cs b/dotnet/src/Generated/SessionEvents.cs index f643dc002c..004b563489 100644 --- a/dotnet/src/Generated/SessionEvents.cs +++ b/dotnet/src/Generated/SessionEvents.cs @@ -3095,6 +3095,11 @@ public sealed partial class SessionCompactionCompleteData [JsonPropertyName("requestId")] public string? RequestId { get; set; } + /// Reasoning baseline on the replacement summary, preserved when replay skips the compacted history. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("responsesReasoning")] + public ResponsesReasoning? ResponsesReasoning { get; set; } + /// Copilot service request ID (x-copilot-service-request-id header) for the compaction LLM call. [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("serviceRequestId")] @@ -3491,6 +3496,11 @@ public sealed partial class UserMessageData [JsonPropertyName("parentAgentTaskId")] public string? ParentAgentTaskId { get; set; } + /// Responses reasoning settings anchored before this model-facing message, for cache-stable history replay. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("responsesReasoning")] + public ResponsesReasoning? ResponsesReasoning { get; set; } + /// Origin of this message, used for timeline filtering and attribution (e.g., `skill-pdf` for hidden skill injection or `agent-<agent-id>` for an inter-agent prompt). [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("source")] @@ -5428,6 +5438,11 @@ public sealed partial class SystemNotificationData /// Structured metadata identifying what triggered this notification. [JsonPropertyName("kind")] public required SystemNotification Kind { get; set; } + + /// Responses reasoning settings anchored before this model-facing message, for cache-stable history replay. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("responsesReasoning")] + public ResponsesReasoning? ResponsesReasoning { get; set; } } /// Permission request notification requiring client approval with request details. @@ -6963,6 +6978,23 @@ public sealed partial class CompactionCompleteCompactionTokensUsed public long? OutputTokens { get; set; } } +/// Original request-level and effective conversation reasoning effort for a Responses history boundary. +/// Nested data type for ResponsesReasoning. +public sealed partial class ResponsesReasoning +{ + /// Effective effort selected before this message, independent of the response-level reasoning field. + [JsonPropertyName("effort")] + public required string Effort { get; set; } + + /// Original request-level effort, retained while replaying this conversation prefix. + [JsonPropertyName("initialEffort")] + public required string InitialEffort { get; set; } + + /// Provider model whose reasoning settings this boundary records. + [JsonPropertyName("model")] + public required string Model { get; set; } +} + /// Inclusive durable event range summarized by a completion receipt. /// Nested data type for CompletionReceiptEventRange. public sealed partial class CompletionReceiptEventRange @@ -17531,6 +17563,7 @@ public override void Write(Utf8JsonWriter writer, ExtensionsLoadedExtensionStatu [JsonSerializable(typeof(PersistedBinaryResult))] [JsonSerializable(typeof(PromptCacheBreakData))] [JsonSerializable(typeof(PromptCacheBreakEvent))] +[JsonSerializable(typeof(ResponsesReasoning))] [JsonSerializable(typeof(SamplingCompletedData))] [JsonSerializable(typeof(SamplingCompletedEvent))] [JsonSerializable(typeof(SamplingRequestedData))] diff --git a/go/rpc/zsession_encoding.go b/go/rpc/zsession_encoding.go index 847ed8869d..866bebceef 100644 --- a/go/rpc/zsession_encoding.go +++ b/go/rpc/zsession_encoding.go @@ -957,6 +957,7 @@ func (r *UserMessageData) UnmarshalJSON(data []byte) error { MessageID *string `json:"messageId,omitempty"` NativeDocumentPathFallbackPaths []string `json:"nativeDocumentPathFallbackPaths,omitzero"` ParentAgentTaskID *string `json:"parentAgentTaskId,omitempty"` + ResponsesReasoning *ResponsesReasoning `json:"responsesReasoning,omitempty"` Source *string `json:"source,omitempty"` SupportedNativeDocumentMIMETypes []string `json:"supportedNativeDocumentMimeTypes,omitzero"` TransformedContent *string `json:"transformedContent,omitempty"` @@ -984,6 +985,7 @@ func (r *UserMessageData) UnmarshalJSON(data []byte) error { r.MessageID = raw.MessageID r.NativeDocumentPathFallbackPaths = raw.NativeDocumentPathFallbackPaths r.ParentAgentTaskID = raw.ParentAgentTaskID + r.ResponsesReasoning = raw.ResponsesReasoning r.Source = raw.Source r.SupportedNativeDocumentMIMETypes = raw.SupportedNativeDocumentMIMETypes r.TransformedContent = raw.TransformedContent @@ -1791,8 +1793,9 @@ func (r SystemNotificationUnclassified) MarshalJSON() ([]byte, error) { func (r *SystemNotificationData) UnmarshalJSON(data []byte) error { type rawSystemNotificationData struct { - Content string `json:"content"` - Kind json.RawMessage `json:"kind"` + Content string `json:"content"` + Kind json.RawMessage `json:"kind"` + ResponsesReasoning *ResponsesReasoning `json:"responsesReasoning,omitempty"` } var raw rawSystemNotificationData if err := json.Unmarshal(data, &raw); err != nil { @@ -1806,6 +1809,7 @@ func (r *SystemNotificationData) UnmarshalJSON(data []byte) error { } r.Kind = value } + r.ResponsesReasoning = raw.ResponsesReasoning return nil } diff --git a/go/rpc/zsession_events.go b/go/rpc/zsession_events.go index 534eca386e..ae69aa98e0 100644 --- a/go/rpc/zsession_events.go +++ b/go/rpc/zsession_events.go @@ -642,6 +642,8 @@ type SessionCompactionCompleteData struct { PreCompactionTokens *int64 `json:"preCompactionTokens,omitempty"` // GitHub request tracing ID (x-github-request-id header) for the compaction LLM call RequestID *string `json:"requestId,omitempty"` + // Reasoning baseline on the replacement summary, preserved when replay skips the compacted history + ResponsesReasoning *ResponsesReasoning `json:"responsesReasoning,omitempty"` // Copilot service request ID (x-copilot-service-request-id header) for the compaction LLM call ServiceRequestID *string `json:"serviceRequestId,omitempty"` // For failed compaction only: the HTTP status code of the compaction LLM call failure, when it carried one. Absent for successful compaction and for failures without an HTTP status (e.g. an empty model response or a transport error). @@ -2109,6 +2111,8 @@ type UserMessageData struct { NativeDocumentPathFallbackPaths []string `json:"nativeDocumentPathFallbackPaths,omitzero"` // Parent agent task ID for background telemetry correlated to this user turn ParentAgentTaskID *string `json:"parentAgentTaskId,omitempty"` + // Responses reasoning settings anchored before this model-facing message, for cache-stable history replay + ResponsesReasoning *ResponsesReasoning `json:"responsesReasoning,omitempty"` // Origin of this message, used for timeline filtering and attribution (e.g., `skill-pdf` for hidden skill injection or `agent-` for an inter-agent prompt) Source *string `json:"source,omitempty"` // Normalized document MIME types that were sent natively instead of through tagged_files XML @@ -2910,6 +2914,8 @@ type SystemNotificationData struct { Content string `json:"content"` // Structured metadata identifying what triggered this notification Kind SystemNotification `json:"kind"` + // Responses reasoning settings anchored before this model-facing message, for cache-stable history replay + ResponsesReasoning *ResponsesReasoning `json:"responsesReasoning,omitempty"` } func (*SystemNotificationData) sessionEventData() {} @@ -4721,6 +4727,16 @@ func (r PersistedBinaryImage) Type() PersistedBinaryResultType { return PersistedBinaryResultType(r.Discriminator) } +// Original request-level and effective conversation reasoning effort for a Responses history boundary +type ResponsesReasoning struct { + // Effective effort selected before this message, independent of the response-level reasoning field + Effort string `json:"effort"` + // Original request-level effort, retained while replaying this conversation prefix + InitialEffort string `json:"initialEffort"` + // Provider model whose reasoning settings this boundary records + Model string `json:"model"` +} + // The user's selected action for an exhausted session limit. type SessionLimitsExhaustedResponse struct { // Action selected by the user. diff --git a/go/zsession_events.go b/go/zsession_events.go index c668f90601..fa86a16b56 100644 --- a/go/zsession_events.go +++ b/go/zsession_events.go @@ -269,6 +269,7 @@ type ( ReasoningSummary = rpc.ReasoningSummary RecommendedAutoTier = rpc.RecommendedAutoTier RemediationAction = rpc.RemediationAction + ResponsesReasoning = rpc.ResponsesReasoning SamplingCompletedData = rpc.SamplingCompletedData SamplingRequestedData = rpc.SamplingRequestedData SandboxDecisionData = rpc.SandboxDecisionData diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/ResponsesReasoning.java b/java/sdk/src/generated/java/com/github/copilot/generated/ResponsesReasoning.java new file mode 100644 index 0000000000..764284ac2c --- /dev/null +++ b/java/sdk/src/generated/java/com/github/copilot/generated/ResponsesReasoning.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: session-events.schema.json + +package com.github.copilot.generated; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Original request-level and effective conversation reasoning effort for a Responses history boundary + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record ResponsesReasoning( + /** Provider model whose reasoning settings this boundary records */ + @JsonProperty("model") String model, + /** Original request-level effort, retained while replaying this conversation prefix */ + @JsonProperty("initialEffort") String initialEffort, + /** Effective effort selected before this message, independent of the response-level reasoning field */ + @JsonProperty("effort") String effort +) { +} diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/SessionCompactionCompleteEvent.java b/java/sdk/src/generated/java/com/github/copilot/generated/SessionCompactionCompleteEvent.java index 70861fb977..6b21976b0c 100644 --- a/java/sdk/src/generated/java/com/github/copilot/generated/SessionCompactionCompleteEvent.java +++ b/java/sdk/src/generated/java/com/github/copilot/generated/SessionCompactionCompleteEvent.java @@ -52,6 +52,8 @@ public record SessionCompactionCompleteEventData( @JsonProperty("customInstructions") String customInstructions, /** LLM-generated summary of the compacted conversation history */ @JsonProperty("summaryContent") String summaryContent, + /** Reasoning baseline on the replacement summary, preserved when replay skips the compacted history */ + @JsonProperty("responsesReasoning") ResponsesReasoning responsesReasoning, /** Authoritative active-factory reminder appended to the compacted context */ @JsonProperty("activeFactorySummary") String activeFactorySummary, /** Canonical model identifier used for model-specific behavior when replaying compaction */ diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/SystemNotificationEvent.java b/java/sdk/src/generated/java/com/github/copilot/generated/SystemNotificationEvent.java index 784a3a8bc1..c2e1e55706 100644 --- a/java/sdk/src/generated/java/com/github/copilot/generated/SystemNotificationEvent.java +++ b/java/sdk/src/generated/java/com/github/copilot/generated/SystemNotificationEvent.java @@ -37,7 +37,9 @@ public record SystemNotificationEventData( /** The notification text, typically wrapped in XML tags */ @JsonProperty("content") String content, /** Structured metadata identifying what triggered this notification */ - @JsonProperty("kind") Object kind + @JsonProperty("kind") Object kind, + /** Responses reasoning settings anchored before this model-facing message, for cache-stable history replay */ + @JsonProperty("responsesReasoning") ResponsesReasoning responsesReasoning ) { } } diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/UserMessageEvent.java b/java/sdk/src/generated/java/com/github/copilot/generated/UserMessageEvent.java index 43a886ea01..aca76d26d8 100644 --- a/java/sdk/src/generated/java/com/github/copilot/generated/UserMessageEvent.java +++ b/java/sdk/src/generated/java/com/github/copilot/generated/UserMessageEvent.java @@ -37,6 +37,8 @@ public final class UserMessageEvent extends SessionEvent { public record UserMessageEventData( /** The user's message text as displayed in the timeline */ @JsonProperty("content") String content, + /** Responses reasoning settings anchored before this model-facing message, for cache-stable history replay */ + @JsonProperty("responsesReasoning") ResponsesReasoning responsesReasoning, /** Stable identity of the logical user message, matching the ID returned by send and retained by pending queue snapshots */ @JsonProperty("messageId") String messageId, /** Transformed version of the message sent to the model, with XML wrapping, timestamps, and other augmentations for prompt caching */ diff --git a/nodejs/package.json b/nodejs/package.json index 1c255f7e09..3eee29b487 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -5,7 +5,7 @@ "url": "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/github/copilot-sdk.git" }, "version": "0.0.0-dev", - "copilotCliVersion": "1.0.86-0", + "copilotCliVersion": "1.0.86-1", "description": "TypeScript SDK for programmatic control of GitHub Copilot CLI via JSON-RPC", "main": "./dist/cjs/index.js", "types": "./dist/index.d.ts", diff --git a/nodejs/src/cliVersion.ts b/nodejs/src/cliVersion.ts index 3eb4b744ab..384cae642d 100644 --- a/nodejs/src/cliVersion.ts +++ b/nodejs/src/cliVersion.ts @@ -1,3 +1,3 @@ -export const COPILOT_CLI_VERSION = "1.0.86-0"; +export const COPILOT_CLI_VERSION = "1.0.86-1"; export const COPILOT_CLI_USE_NPM_PACKAGE = false; diff --git a/nodejs/src/generated/session-events.ts b/nodejs/src/generated/session-events.ts index acaf485146..7166d40083 100644 --- a/nodejs/src/generated/session-events.ts +++ b/nodejs/src/generated/session-events.ts @@ -3178,6 +3178,7 @@ export interface CompactionCompleteData { * GitHub request tracing ID (x-github-request-id header) for the compaction LLM call */ requestId?: string; + responsesReasoning?: ResponsesReasoning; /** * Copilot service request ID (x-copilot-service-request-id header) for the compaction LLM call */ @@ -3294,6 +3295,23 @@ export interface CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail { */ tokenType: string; } +/** + * Original request-level and effective conversation reasoning effort for a Responses history boundary + */ +export interface ResponsesReasoning { + /** + * Effective effort selected before this message, independent of the response-level reasoning field + */ + effort: string; + /** + * Original request-level effort, retained while replaying this conversation prefix + */ + initialEffort: string; + /** + * Provider model whose reasoning settings this boundary records + */ + model: string; +} /** * Session event "session.task_complete". Task completion notification with summary from the agent */ @@ -3882,6 +3900,7 @@ export interface UserMessageData { * Parent agent task ID for background telemetry correlated to this user turn */ parentAgentTaskId?: string; + responsesReasoning?: ResponsesReasoning; /** * Origin of this message, used for timeline filtering and attribution (e.g., `skill-pdf` for hidden skill injection or `agent-` for an inter-agent prompt) */ @@ -7859,6 +7878,7 @@ export interface SystemNotificationData { */ content: string; kind: SystemNotification; + responsesReasoning?: ResponsesReasoning; } /** * System notification metadata for a background agent that completed or failed, including agent ID, type, status, description, and prompt. diff --git a/python/copilot/generated/session_events.py b/python/copilot/generated/session_events.py index f9cb382aab..fae312de85 100644 --- a/python/copilot/generated/session_events.py +++ b/python/copilot/generated/session_events.py @@ -7935,6 +7935,33 @@ def to_dict(self) -> dict: return result +@dataclass +class ResponsesReasoning: + "Original request-level and effective conversation reasoning effort for a Responses history boundary" + effort: str + initial_effort: str + model: str + + @staticmethod + def from_dict(obj: Any) -> "ResponsesReasoning": + assert isinstance(obj, dict) + effort = from_str(obj.get("effort")) + initial_effort = from_str(obj.get("initialEffort")) + model = from_str(obj.get("model")) + return ResponsesReasoning( + effort=effort, + initial_effort=initial_effort, + model=model, + ) + + def to_dict(self) -> dict: + result: dict = {} + result["effort"] = from_str(self.effort) + result["initialEffort"] = from_str(self.initial_effort) + result["model"] = from_str(self.model) + return result + + @dataclass class SamplingCompletedData: "Sampling request completion notification signaling UI dismissal" @@ -8125,6 +8152,7 @@ class SessionCompactionCompleteData: pre_compaction_messages_length: int | None = None pre_compaction_tokens: int | None = None request_id: str | None = None + responses_reasoning: ResponsesReasoning | None = None service_request_id: str | None = None status_code: int | None = None summary_content: str | None = None @@ -8151,6 +8179,7 @@ def from_dict(obj: Any) -> "SessionCompactionCompleteData": pre_compaction_messages_length = from_union([from_none, from_int], obj.get("preCompactionMessagesLength")) pre_compaction_tokens = from_union([from_none, from_int], obj.get("preCompactionTokens")) request_id = from_union([from_none, from_str], obj.get("requestId")) + responses_reasoning = from_union([from_none, ResponsesReasoning.from_dict], obj.get("responsesReasoning")) service_request_id = from_union([from_none, from_str], obj.get("serviceRequestId")) status_code = from_union([from_none, from_int], obj.get("statusCode")) summary_content = from_union([from_none, from_str], obj.get("summaryContent")) @@ -8174,6 +8203,7 @@ def from_dict(obj: Any) -> "SessionCompactionCompleteData": pre_compaction_messages_length=pre_compaction_messages_length, pre_compaction_tokens=pre_compaction_tokens, request_id=request_id, + responses_reasoning=responses_reasoning, service_request_id=service_request_id, status_code=status_code, summary_content=summary_content, @@ -8213,6 +8243,8 @@ def to_dict(self) -> dict: result["preCompactionTokens"] = from_union([from_none, to_int], self.pre_compaction_tokens) if self.request_id is not None: result["requestId"] = from_union([from_none, from_str], self.request_id) + if self.responses_reasoning is not None: + result["responsesReasoning"] = from_union([from_none, lambda x: to_class(ResponsesReasoning, x)], self.responses_reasoning) if self.service_request_id is not None: result["serviceRequestId"] = from_union([from_none, from_str], self.service_request_id) if self.status_code is not None: @@ -10618,21 +10650,26 @@ class SystemNotificationData: "System-generated notification for runtime events like background task completion" content: str kind: SystemNotification + responses_reasoning: ResponsesReasoning | None = None @staticmethod def from_dict(obj: Any) -> "SystemNotificationData": assert isinstance(obj, dict) content = from_str(obj.get("content")) kind = _load_SystemNotification(obj.get("kind")) + responses_reasoning = from_union([from_none, ResponsesReasoning.from_dict], obj.get("responsesReasoning")) return SystemNotificationData( content=content, kind=kind, + responses_reasoning=responses_reasoning, ) def to_dict(self) -> dict: result: dict = {} result["content"] = from_str(self.content) result["kind"] = self.kind.to_dict() + if self.responses_reasoning is not None: + result["responsesReasoning"] = from_union([from_none, lambda x: to_class(ResponsesReasoning, x)], self.responses_reasoning) return result @@ -11962,6 +11999,7 @@ class UserMessageData: message_id: str | None = None native_document_path_fallback_paths: list[str] | None = None parent_agent_task_id: str | None = None + responses_reasoning: ResponsesReasoning | None = None source: str | None = None supported_native_document_mime_types: list[str] | None = None transformed_content: str | None = None @@ -11979,6 +12017,7 @@ def from_dict(obj: Any) -> "UserMessageData": message_id = from_union([from_none, from_str], obj.get("messageId")) native_document_path_fallback_paths = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("nativeDocumentPathFallbackPaths")) parent_agent_task_id = from_union([from_none, from_str], obj.get("parentAgentTaskId")) + responses_reasoning = from_union([from_none, ResponsesReasoning.from_dict], obj.get("responsesReasoning")) source = from_union([from_none, from_str], obj.get("source")) supported_native_document_mime_types = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("supportedNativeDocumentMimeTypes")) transformed_content = from_union([from_none, from_str], obj.get("transformedContent")) @@ -11993,6 +12032,7 @@ def from_dict(obj: Any) -> "UserMessageData": message_id=message_id, native_document_path_fallback_paths=native_document_path_fallback_paths, parent_agent_task_id=parent_agent_task_id, + responses_reasoning=responses_reasoning, source=source, supported_native_document_mime_types=supported_native_document_mime_types, transformed_content=transformed_content, @@ -12018,6 +12058,8 @@ def to_dict(self) -> dict: result["nativeDocumentPathFallbackPaths"] = from_union([from_none, lambda x: from_list(from_str, x)], self.native_document_path_fallback_paths) if self.parent_agent_task_id is not None: result["parentAgentTaskId"] = from_union([from_none, from_str], self.parent_agent_task_id) + if self.responses_reasoning is not None: + result["responsesReasoning"] = from_union([from_none, lambda x: to_class(ResponsesReasoning, x)], self.responses_reasoning) if self.source is not None: result["source"] = from_union([from_none, from_str], self.source) if self.supported_native_document_mime_types is not None: @@ -13917,6 +13959,7 @@ def session_event_to_dict(x: SessionEvent) -> Any: "ReasoningSummary", "RecommendedAutoTier", "RemediationAction", + "ResponsesReasoning", "SamplingCompletedData", "SamplingRequestedData", "SandboxDecisionData", diff --git a/rust/src/generated/session_events.rs b/rust/src/generated/session_events.rs index f34ee19e7b..7adbfa7d0d 100644 --- a/rust/src/generated/session_events.rs +++ b/rust/src/generated/session_events.rs @@ -1999,6 +1999,18 @@ pub struct CompactionCompleteCompactionTokensUsed { pub output_tokens: Option, } +/// Original request-level and effective conversation reasoning effort for a Responses history boundary +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ResponsesReasoning { + /// Effective effort selected before this message, independent of the response-level reasoning field + pub effort: String, + /// Original request-level effort, retained while replaying this conversation prefix + pub initial_effort: String, + /// Provider model whose reasoning settings this boundary records + pub model: String, +} + /// Session event "session.compaction_complete". Conversation compaction results including success status, metrics, and optional error details #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -2043,6 +2055,9 @@ pub struct SessionCompactionCompleteData { /// GitHub request tracing ID (x-github-request-id header) for the compaction LLM call #[serde(skip_serializing_if = "Option::is_none")] pub request_id: Option, + /// Reasoning baseline on the replacement summary, preserved when replay skips the compacted history + #[serde(skip_serializing_if = "Option::is_none")] + pub responses_reasoning: Option, /// Copilot service request ID (x-copilot-service-request-id header) for the compaction LLM call #[serde(skip_serializing_if = "Option::is_none")] pub service_request_id: Option, @@ -2412,6 +2427,9 @@ pub struct UserMessageData { /// Parent agent task ID for background telemetry correlated to this user turn #[serde(skip_serializing_if = "Option::is_none")] pub parent_agent_task_id: Option, + /// Responses reasoning settings anchored before this model-facing message, for cache-stable history replay + #[serde(skip_serializing_if = "Option::is_none")] + pub responses_reasoning: Option, /// Origin of this message, used for timeline filtering and attribution (e.g., `skill-pdf` for hidden skill injection or `agent-` for an inter-agent prompt) #[serde(skip_serializing_if = "Option::is_none")] pub source: Option, @@ -4692,6 +4710,9 @@ pub struct SystemNotificationData { pub content: String, /// Structured metadata identifying what triggered this notification pub kind: serde_json::Value, + /// Responses reasoning settings anchored before this model-facing message, for cache-stable history replay + #[serde(skip_serializing_if = "Option::is_none")] + pub responses_reasoning: Option, } /// A parsed command identifier in a shell permission request, including whether it is read-only.