set(PluginsBuiltinSetParams params) {
+ return caller.invoke("plugins.builtin.set", params, Void.class);
+ }
+
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionAuthStatus.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionAuthStatus.java
new file mode 100644
index 000000000..6f9d876dd
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionAuthStatus.java
@@ -0,0 +1,37 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import javax.annotation.processing.Generated;
+
+/**
+ * Authentication status and account metadata for the session.
+ *
+ * @since 1.0.0
+ */
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionAuthStatus(
+ /** Whether the session has resolved authentication */
+ @JsonProperty("isAuthenticated") Boolean isAuthenticated,
+ /** Authentication type */
+ @JsonProperty("authType") AuthInfoType authType,
+ /** Authentication host URL */
+ @JsonProperty("host") String host,
+ /** Authenticated login/username, if available */
+ @JsonProperty("login") String login,
+ /** Human-readable authentication status description */
+ @JsonProperty("statusMessage") String statusMessage,
+ /** Copilot plan tier (e.g., individual_pro, business) */
+ @JsonProperty("copilotPlan") String copilotPlan
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasApi.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasApi.java
index 88a320e0b..e7cfc4be2 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasApi.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasApi.java
@@ -26,12 +26,15 @@ public final class SessionCanvasApi {
/** API methods for the {@code canvas.action} sub-namespace. */
public final SessionCanvasActionApi action;
+ /** API methods for the {@code canvas.provider} sub-namespace. */
+ public final SessionCanvasProviderApi provider;
/** @param caller the RPC transport function */
SessionCanvasApi(RpcCaller caller, String sessionId) {
this.caller = caller;
this.sessionId = sessionId;
this.action = new SessionCanvasActionApi(caller, sessionId);
+ this.provider = new SessionCanvasProviderApi(caller, sessionId);
}
/**
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasProviderApi.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasProviderApi.java
new file mode 100644
index 000000000..95fc7ca66
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasProviderApi.java
@@ -0,0 +1,65 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.github.copilot.CopilotExperimental;
+import java.util.concurrent.CompletableFuture;
+import javax.annotation.processing.Generated;
+
+/**
+ * API methods for the {@code canvas.provider} namespace.
+ *
+ * @since 1.0.0
+ */
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+public final class SessionCanvasProviderApi {
+
+ private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE;
+
+ private final RpcCaller caller;
+ private final String sessionId;
+
+ /** @param caller the RPC transport function */
+ SessionCanvasProviderApi(RpcCaller caller, String sessionId) {
+ this.caller = caller;
+ this.sessionId = sessionId;
+ }
+
+ /**
+ * Internal canvas provider registration parameters.
+ *
+ * Note: the {@code sessionId} field in the params record is overridden
+ * by the session-scoped wrapper; any value provided is ignored.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture register(SessionCanvasProviderRegisterParams params) {
+ com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params);
+ _p.put("sessionId", this.sessionId);
+ return caller.invoke("session.canvas.provider.register", _p, Void.class);
+ }
+
+ /**
+ * Internal canvas provider unregistration parameters.
+ *
+ * Note: the {@code sessionId} field in the params record is overridden
+ * by the session-scoped wrapper; any value provided is ignored.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture unregister(SessionCanvasProviderUnregisterParams params) {
+ com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params);
+ _p.put("sessionId", this.sessionId);
+ return caller.invoke("session.canvas.provider.unregister", _p, Void.class);
+ }
+
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasProviderRegisterParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasProviderRegisterParams.java
new file mode 100644
index 000000000..304757667
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasProviderRegisterParams.java
@@ -0,0 +1,37 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import java.util.List;
+import javax.annotation.processing.Generated;
+
+/**
+ * Internal canvas provider registration parameters.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionCanvasProviderRegisterParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId,
+ /** Connection identifier for callback routing */
+ @JsonProperty("connectionId") String connectionId,
+ /** Provider metadata supplied by the host */
+ @JsonProperty("info") Object info,
+ /** Canvas contributions supplied by the provider */
+ @JsonProperty("canvases") List canvases
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasProviderUnregisterParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasProviderUnregisterParams.java
new file mode 100644
index 000000000..f7b637ac6
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasProviderUnregisterParams.java
@@ -0,0 +1,32 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Internal canvas provider unregistration parameters.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionCanvasProviderUnregisterParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId,
+ /** Connection identifier to unregister */
+ @JsonProperty("connectionId") String connectionId
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryGetRunDetailResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryGetRunDetailResult.java
index 5da6f4979..01204cb83 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryGetRunDetailResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryGetRunDetailResult.java
@@ -25,27 +25,49 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionFactoryGetRunDetailResult(
+ /** Factory run identifier. */
@JsonProperty("runId") String runId,
+ /** Registered factory name. */
@JsonProperty("factoryName") String factoryName,
+ /** Human-readable factory description. */
@JsonProperty("description") String description,
+ /** Current factory run status. */
@JsonProperty("status") FactoryRunStatus status,
+ /** Monotonic durable run revision. */
@JsonProperty("revision") Long revision,
+ /** Epoch milliseconds when the run was created. */
@JsonProperty("createdAt") Long createdAt,
+ /** Epoch milliseconds when execution first started, or null before start. */
@JsonProperty("startedAt") Long startedAt,
+ /** Epoch milliseconds when the durable run was last updated. */
@JsonProperty("updatedAt") Long updatedAt,
+ /** Epoch milliseconds when the run completed, or null while nonterminal. */
@JsonProperty("completedAt") Long completedAt,
+ /** Current phase identity, or null before any phase is entered. */
@JsonProperty("currentPhase") FactoryCurrentPhase currentPhase,
+ /** Number of phases declared by the factory. */
@JsonProperty("declaredPhaseCount") Long declaredPhaseCount,
+ /** Number of direct factory agents currently live. */
@JsonProperty("liveAgentCount") Long liveAgentCount,
+ /** Total direct factory agents spawned across all attempts. */
@JsonProperty("totalSpawnedAgentCount") Long totalSpawnedAgentCount,
+ /** Durable resource consumption. */
@JsonProperty("consumed") FactoryRunConsumed consumed,
+ /** Resource ceilings declared by the factory. */
@JsonProperty("declaredLimits") FactoryDeclaredLimits declaredLimits,
+ /** Approved effective resource ceilings, or null until approved. */
@JsonProperty("approved") FactoryDeclaredLimits approved,
+ /** Epoch milliseconds when this live-overlay snapshot was observed. */
@JsonProperty("observedAt") Long observedAt,
+ /** Epoch milliseconds when the current active segment started, or null while inactive. */
@JsonProperty("activeSegmentStartedAt") Long activeSegmentStartedAt,
+ /** Terminal run outcome, or null while nonterminal. */
@JsonProperty("terminal") FactoryRunTerminal terminal,
+ /** Lifecycle and timing observations for each factory phase. */
@JsonProperty("phases") List phases,
+ /** Durable identities and live statuses for direct factory agents. */
@JsonProperty("agents") List agents,
+ /** Bidirectional page of durable factory progress. */
@JsonProperty("progress") FactoryProgressPage progress
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryGetRunProgressResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryGetRunProgressResult.java
index 369fa07c2..2a4cb78cb 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryGetRunProgressResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryGetRunProgressResult.java
@@ -25,10 +25,15 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionFactoryGetRunProgressResult(
+ /** Progress records in sequence order. */
@JsonProperty("records") List records,
+ /** Oldest sequence number in this page, or null when empty. */
@JsonProperty("oldestSeq") Long oldestSeq,
+ /** Newest sequence number in this page, or null when empty. */
@JsonProperty("newestSeq") Long newestSeq,
+ /** Whether progress records older than this page exist. */
@JsonProperty("hasMoreOlder") Boolean hasMoreOlder,
+ /** Whether progress records newer than this page exist. */
@JsonProperty("hasMoreNewer") Boolean hasMoreNewer,
/** Run revision reflected by this page. */
@JsonProperty("revision") Long revision
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryListRunsResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryListRunsResult.java
index 3a23bc369..d081003e4 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryListRunsResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFactoryListRunsResult.java
@@ -25,6 +25,7 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionFactoryListRunsResult(
+ /** Factory run summaries in durable creation order. */
@JsonProperty("runs") List runs,
/** Oldest terminal-run cursor in this page, or null when the terminal window is empty. */
@JsonProperty("oldestSeq") Long oldestSeq,
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionError.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionError.java
index cbe170a29..e25eaed86 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionError.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionError.java
@@ -21,7 +21,9 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionFsSqliteTransactionError(
+ /** Machine-readable classification of the transaction failure. */
@JsonProperty("errorClass") SessionFsSqliteTransactionErrorClass errorClass,
+ /** Human-readable transaction failure message. */
@JsonProperty("message") String message
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionParams.java
index f834d5595..f7699ff8f 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionParams.java
@@ -27,6 +27,7 @@
public record SessionFsSqliteTransactionParams(
/** Target session identifier */
@JsonProperty("sessionId") String sessionId,
+ /** Ordered SQL statements to execute in one transaction. */
@JsonProperty("statements") List statements
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionResult.java
index f9c799b9b..1b662f404 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionFsSqliteTransactionResult.java
@@ -25,7 +25,9 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionFsSqliteTransactionResult(
+ /** Per-statement query results in input order. */
@JsonProperty("results") List results,
+ /** Classified transaction failure, when execution did not succeed. */
@JsonProperty("error") SessionFsSqliteTransactionError error
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthApi.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthApi.java
index 93fb87150..729979b5e 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthApi.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthApi.java
@@ -8,6 +8,7 @@
package com.github.copilot.generated.rpc;
import com.github.copilot.CopilotExperimental;
+import java.util.List;
import java.util.concurrent.CompletableFuture;
import javax.annotation.processing.Generated;
@@ -57,4 +58,107 @@ public CompletableFuture setCredentials(S
return caller.invoke("session.gitHubAuth.setCredentials", _p, SessionGitHubAuthSetCredentialsResult.class);
}
+ /**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture getCurrentAuthInfo() {
+ return caller.invoke("session.gitHubAuth.getCurrentAuthInfo", java.util.Map.of("sessionId", this.sessionId), Void.class);
+ }
+
+ /**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture> getAllAuthAvailable() {
+ return caller.invoke("session.gitHubAuth.getAllAuthAvailable", java.util.Map.of("sessionId", this.sessionId), RpcMapper.INSTANCE.getTypeFactory().constructCollectionType(List.class, SessionAuthStatus.class));
+ }
+
+ /**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture refreshCopilotUser() {
+ return caller.invoke("session.gitHubAuth.refreshCopilotUser", java.util.Map.of("sessionId", this.sessionId), Void.class);
+ }
+
+ /**
+ * Internal GitHub login parameters.
+ *
+ * Note: the {@code sessionId} field in the params record is overridden
+ * by the session-scoped wrapper; any value provided is ignored.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture login(SessionGitHubAuthLoginParams params) {
+ com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params);
+ _p.put("sessionId", this.sessionId);
+ return caller.invoke("session.gitHubAuth.login", _p, AuthInfo.class);
+ }
+
+ /**
+ * Parameters for switching the session's active authentication.
+ *
+ * Note: the {@code sessionId} field in the params record is overridden
+ * by the session-scoped wrapper; any value provided is ignored.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture switchToAuth(SessionGitHubAuthSwitchToAuthParams params) {
+ com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params);
+ _p.put("sessionId", this.sessionId);
+ return caller.invoke("session.gitHubAuth.switchToAuth", _p, Void.class);
+ }
+
+ /**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture logout() {
+ return caller.invoke("session.gitHubAuth.logout", java.util.Map.of("sessionId", this.sessionId), Void.class);
+ }
+
+ /**
+ * Parameters identifying a GitHub authentication to log out.
+ *
+ * Note: the {@code sessionId} field in the params record is overridden
+ * by the session-scoped wrapper; any value provided is ignored.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture logoutUser(SessionGitHubAuthLogoutUserParams params) {
+ com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params);
+ _p.put("sessionId", this.sessionId);
+ return caller.invoke("session.gitHubAuth.logoutUser", _p, Void.class);
+ }
+
+ /**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture> lastAuthErrors() {
+ return caller.invoke("session.gitHubAuth.lastAuthErrors", java.util.Map.of("sessionId", this.sessionId), RpcMapper.INSTANCE.getTypeFactory().constructCollectionType(List.class, AuthValidationError.class));
+ }
+
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthGetAllAuthAvailableParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthGetAllAuthAvailableParams.java
new file mode 100644
index 000000000..446642d74
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthGetAllAuthAvailableParams.java
@@ -0,0 +1,30 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionGitHubAuthGetAllAuthAvailableParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthGetCurrentAuthInfoParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthGetCurrentAuthInfoParams.java
new file mode 100644
index 000000000..88838f951
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthGetCurrentAuthInfoParams.java
@@ -0,0 +1,30 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionGitHubAuthGetCurrentAuthInfoParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLastAuthErrorsParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLastAuthErrorsParams.java
new file mode 100644
index 000000000..d4fc156b2
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLastAuthErrorsParams.java
@@ -0,0 +1,30 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionGitHubAuthLastAuthErrorsParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLoginParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLoginParams.java
new file mode 100644
index 000000000..e0d777956
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLoginParams.java
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Internal GitHub login parameters.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionGitHubAuthLoginParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId,
+ /** GitHub host URL */
+ @JsonProperty("host") String host,
+ /** GitHub login */
+ @JsonProperty("login") String login,
+ /** GitHub authentication token */
+ @JsonProperty("token") String token,
+ /** Whether to persist the token after login */
+ @JsonProperty("persist") Boolean persist
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLogoutParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLogoutParams.java
new file mode 100644
index 000000000..172778d61
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLogoutParams.java
@@ -0,0 +1,30 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionGitHubAuthLogoutParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLogoutUserParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLogoutUserParams.java
new file mode 100644
index 000000000..1aafec781
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthLogoutUserParams.java
@@ -0,0 +1,32 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Parameters identifying a GitHub authentication to log out.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionGitHubAuthLogoutUserParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId,
+ /** Authentication information to log out */
+ @JsonProperty("authInfo") Object authInfo
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthRefreshCopilotUserParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthRefreshCopilotUserParams.java
new file mode 100644
index 000000000..d0b9d33e5
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthRefreshCopilotUserParams.java
@@ -0,0 +1,30 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Identifies the target session.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionGitHubAuthRefreshCopilotUserParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthSwitchToAuthParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthSwitchToAuthParams.java
new file mode 100644
index 000000000..7cd6f72b4
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionGitHubAuthSwitchToAuthParams.java
@@ -0,0 +1,34 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Parameters for switching the session's active authentication.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionGitHubAuthSwitchToAuthParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId,
+ /** Authentication information to activate */
+ @JsonProperty("authInfo") Object authInfo,
+ /** Optional token paired with the authentication information */
+ @JsonProperty("token") String token
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionLimitPredictionTierOption.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionLimitPredictionTierOption.java
index f468e53e0..ad2a6f82c 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionLimitPredictionTierOption.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionLimitPredictionTierOption.java
@@ -21,6 +21,7 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionLimitPredictionTierOption(
+ /** Semantic usage tier. */
@JsonProperty("tier") SessionLimitPredictionTier tier,
/** AI-credit cap for this tier. */
@JsonProperty("cap") Double cap
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionManagedSettings.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionManagedSettings.java
index ddba69d8b..cecaca8c1 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionManagedSettings.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionManagedSettings.java
@@ -21,6 +21,7 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionManagedSettings(
+ /** Managed permission policy injected by the SDK host. */
@JsonProperty("permissions") SessionManagedPermissions permissions
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpOauthApi.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpOauthApi.java
index 1fdb292f8..cf4a3601e 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpOauthApi.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpOauthApi.java
@@ -78,6 +78,22 @@ public CompletableFuture login(SessionMcpOauthLoginP
return caller.invoke("session.mcp.oauth.login", _p, SessionMcpOauthLoginResult.class);
}
+ /**
+ * Remote MCP server name for a passive OAuth status probe.
+ *
+ * Note: the {@code sessionId} field in the params record is overridden
+ * by the session-scoped wrapper; any value provided is ignored.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+ @CopilotExperimental
+ public CompletableFuture probe(SessionMcpOauthProbeParams params) {
+ com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params);
+ _p.put("sessionId", this.sessionId);
+ return caller.invoke("session.mcp.oauth.probe", _p, McpOauthProbeResult.class);
+ }
+
/**
* Pending MCP OAuth request id to respond to.
*
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpOauthProbeParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpOauthProbeParams.java
new file mode 100644
index 000000000..1980398e0
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpOauthProbeParams.java
@@ -0,0 +1,32 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.copilot.CopilotExperimental;
+import javax.annotation.processing.Generated;
+
+/**
+ * Remote MCP server name for a passive OAuth status probe.
+ *
+ * @apiNote This method is experimental and may change in a future version.
+ * @since 1.0.0
+ */
+@CopilotExperimental
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public record SessionMcpOauthProbeParams(
+ /** Target session identifier */
+ @JsonProperty("sessionId") String sessionId,
+ /** Name of the configured remote MCP server to probe. */
+ @JsonProperty("serverName") String serverName
+) {
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpReloadWithConfigResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpReloadWithConfigResult.java
index ba4fcf3b7..eba9a21c1 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpReloadWithConfigResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionMcpReloadWithConfigResult.java
@@ -28,6 +28,8 @@ public record SessionMcpReloadWithConfigResult(
/** Servers filtered out before startup */
@JsonProperty("filteredServers") List filteredServers,
/** Non-default servers allowed by policy */
- @JsonProperty("allowedServers") List allowedServers
+ @JsonProperty("allowedServers") List allowedServers,
+ /** Servers whose connection attempt failed. */
+ @JsonProperty("failedServers") List failedServers
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionModelPriceCategory.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionModelPriceCategory.java
index 295f6a01f..be637e948 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionModelPriceCategory.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionModelPriceCategory.java
@@ -21,7 +21,9 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionModelPriceCategory(
+ /** CAPI model identifier. */
@JsonProperty("id") String id,
+ /** Cost category assigned to the model. */
@JsonProperty("priceCategory") ModelPickerPriceCategory priceCategory
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionModelSwitchToParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionModelSwitchToParams.java
index fe49e2976..86eee836e 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionModelSwitchToParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionModelSwitchToParams.java
@@ -38,6 +38,8 @@ public record SessionModelSwitchToParams(
@JsonProperty("modelCapabilities") ModelCapabilitiesOverride modelCapabilities,
/** Explicit context tier for the selected model. `"default"` / `"long_context"` apply the requested tier; omit this field to use normal model behavior with no explicit tier. */
@JsonProperty("contextTier") ContextTier contextTier,
+ /** Origin to record on the effective `session.model_change` event. Defaults to `sdk` when omitted. */
+ @JsonProperty("source") ModelChangeSource source,
/** When true, defer this switch (enqueue it) if another model change is already queued, even when no turn is active — so it drains last (FIFO) and wins over the already-queued change. Intended for genuine user-initiated model selections; internal restore/reapply switches omit it and apply immediately when no turn is active. When no other model change is queued this has no effect (a switch still applies immediately unless a turn is active). */
@JsonProperty("deferIfModelChangeQueued") Boolean deferIfModelChangeQueued
) {
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicy.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicy.java
index bbc53711a..3ee2252d1 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicy.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicy.java
@@ -22,7 +22,9 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionOpenOptionsAdditionalContentExclusionPolicy(
+ /** Content-exclusion rules to apply. */
@JsonProperty("rules") List rules,
+ /** Opaque policy update timestamp supplied by the host. */
@JsonProperty("last_updated_at") Object lastUpdatedAt,
/** Allowed values for the `SessionOpenOptionsAdditionalContentExclusionPolicyScope` enumeration. */
@JsonProperty("scope") SessionOpenOptionsAdditionalContentExclusionPolicyScope scope
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicyRule.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicyRule.java
index 403550ae2..480235747 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicyRule.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicyRule.java
@@ -22,8 +22,11 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionOpenOptionsAdditionalContentExclusionPolicyRule(
+ /** Path patterns covered by this rule. */
@JsonProperty("paths") List paths,
+ /** Conditions of which at least one must match. */
@JsonProperty("ifAnyMatch") List ifAnyMatch,
+ /** Conditions none of which may match. */
@JsonProperty("ifNoneMatch") List ifNoneMatch,
/** Source descriptor for a `sessions.open` content-exclusion rule, with source name and type. */
@JsonProperty("source") SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource source
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource.java
index 9cfa5894c..a119c9da7 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource.java
@@ -21,7 +21,9 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource(
+ /** Name of the policy source. */
@JsonProperty("name") String name,
+ /** Type of the policy source. */
@JsonProperty("type") String type
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueDuplicateAtParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueDuplicateAtParams.java
index bf16f9d35..0187e814b 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueDuplicateAtParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueDuplicateAtParams.java
@@ -26,6 +26,7 @@
public record SessionQueueDuplicateAtParams(
/** Target session identifier */
@JsonProperty("sessionId") String sessionId,
+ /** Stable opaque ID of the queued item to duplicate. */
@JsonProperty("id") String id
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueInsertAtParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueInsertAtParams.java
index 981aefb5f..11f0f7653 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueInsertAtParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueInsertAtParams.java
@@ -28,6 +28,7 @@ public record SessionQueueInsertAtParams(
@JsonProperty("sessionId") String sessionId,
/** Zero-based position in the public visible queue. Values outside the queue clamp to an end. */
@JsonProperty("position") Long position,
+ /** Queued message contents and delivery metadata. */
@JsonProperty("message") QueueInsertMessage message
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueRemoveAtParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueRemoveAtParams.java
index bc7cd3e12..5e890f85d 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueRemoveAtParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueRemoveAtParams.java
@@ -26,6 +26,7 @@
public record SessionQueueRemoveAtParams(
/** Target session identifier */
@JsonProperty("sessionId") String sessionId,
+ /** Stable opaque ID of the queued item to remove. */
@JsonProperty("id") String id
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueSendNowParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueSendNowParams.java
index 6381636a8..9d23f47eb 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueSendNowParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueSendNowParams.java
@@ -26,6 +26,7 @@
public record SessionQueueSendNowParams(
/** Target session identifier */
@JsonProperty("sessionId") String sessionId,
+ /** Stable opaque ID of the queued item to steer into the live turn. */
@JsonProperty("id") String id
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueSetDrainPausedParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueSetDrainPausedParams.java
index f51e33ea1..4674978d3 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueSetDrainPausedParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueSetDrainPausedParams.java
@@ -26,6 +26,7 @@
public record SessionQueueSetDrainPausedParams(
/** Target session identifier */
@JsonProperty("sessionId") String sessionId,
+ /** Whether queued-lane draining should be paused. */
@JsonProperty("paused") Boolean paused
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueUpdateTextParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueUpdateTextParams.java
index 139a5ba2a..5f315d572 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueUpdateTextParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionQueueUpdateTextParams.java
@@ -26,8 +26,11 @@
public record SessionQueueUpdateTextParams(
/** Target session identifier */
@JsonProperty("sessionId") String sessionId,
+ /** Stable opaque ID of the queued item to edit. */
@JsonProperty("id") String id,
+ /** Replacement prompt sent to the model. */
@JsonProperty("prompt") String prompt,
+ /** Optional replacement prompt displayed to the user. */
@JsonProperty("displayPrompt") String displayPrompt
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsBuiltInToolAvailabilitySnapshot.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsBuiltInToolAvailabilitySnapshot.java
index 98e6df29f..8a714d5cc 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsBuiltInToolAvailabilitySnapshot.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsBuiltInToolAvailabilitySnapshot.java
@@ -21,7 +21,9 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionSettingsBuiltInToolAvailabilitySnapshot(
+ /** Whether the report-progress tool is available. */
@JsonProperty("reportProgress") Boolean reportProgress,
+ /** Whether the create-pull-request tool is available. */
@JsonProperty("createPullRequest") Boolean createPullRequest
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsEvaluatePredicateResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsEvaluatePredicateResult.java
index 1f4a7ed32..3ab56b8ca 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsEvaluatePredicateResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsEvaluatePredicateResult.java
@@ -24,6 +24,7 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionSettingsEvaluatePredicateResult(
+ /** Whether the named settings predicate evaluated to enabled. */
@JsonProperty("enabled") Boolean enabled
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsJobSnapshot.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsJobSnapshot.java
index 463660d8a..8a807e391 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsJobSnapshot.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsJobSnapshot.java
@@ -21,8 +21,11 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionSettingsJobSnapshot(
+ /** GitHub Actions event type for the job. */
@JsonProperty("eventType") String eventType,
+ /** Whether this is the workflow's trigger job. */
@JsonProperty("isTriggerJob") Boolean isTriggerJob,
+ /** Availability of job-specific built-in tools. */
@JsonProperty("builtInToolAvailability") SessionSettingsBuiltInToolAvailabilitySnapshot builtInToolAvailability
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsModelSnapshot.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsModelSnapshot.java
index ce515c74d..e1eb54a25 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsModelSnapshot.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsModelSnapshot.java
@@ -21,9 +21,13 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionSettingsModelSnapshot(
+ /** Selected model identifier. */
@JsonProperty("model") String model,
+ /** Default reasoning effort for the selected model. */
@JsonProperty("defaultReasoningEffort") String defaultReasoningEffort,
+ /** Agent job identifier for the session. */
@JsonProperty("instanceId") String instanceId,
+ /** Agent service callback URL for job and progress updates. */
@JsonProperty("callbackUrl") String callbackUrl
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsOnlineEvaluationSnapshot.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsOnlineEvaluationSnapshot.java
index b1a5be6f3..999e1a2cb 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsOnlineEvaluationSnapshot.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsOnlineEvaluationSnapshot.java
@@ -21,7 +21,9 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionSettingsOnlineEvaluationSnapshot(
+ /** Whether online evaluation is disabled. */
@JsonProperty("disableOnlineEvaluation") Boolean disableOnlineEvaluation,
+ /** Whether online-evaluation output-file generation is enabled. */
@JsonProperty("enableOnlineEvaluationOutputFile") Boolean enableOnlineEvaluationOutputFile
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsRepoSnapshot.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsRepoSnapshot.java
index 960853c52..3651346bd 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsRepoSnapshot.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsRepoSnapshot.java
@@ -21,17 +21,29 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionSettingsRepoSnapshot(
+ /** Repository name. */
@JsonProperty("name") String name,
+ /** GitHub repository database ID. */
@JsonProperty("id") Double id,
+ /** Checked-out repository branch. */
@JsonProperty("branch") String branch,
+ /** Checked-out commit SHA. */
@JsonProperty("commit") String commit,
+ /** Whether the repository is writable. */
@JsonProperty("readWrite") Boolean readWrite,
+ /** Repository owner login. */
@JsonProperty("ownerName") String ownerName,
+ /** GitHub repository owner database ID. */
@JsonProperty("ownerId") Double ownerId,
+ /** GitHub server base URL. */
@JsonProperty("serverUrl") String serverUrl,
+ /** GitHub server host name. */
@JsonProperty("host") String host,
+ /** Protocol used to access the GitHub host. */
@JsonProperty("hostProtocol") String hostProtocol,
+ /** GitHub secret-scanning service URL. */
@JsonProperty("secretScanningUrl") String secretScanningUrl,
+ /** Number of commits in the pull request. */
@JsonProperty("prCommitCount") Double prCommitCount
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsSnapshotResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsSnapshotResult.java
index 0851474d6..1bcfe166f 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsSnapshotResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsSnapshotResult.java
@@ -24,14 +24,23 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionSettingsSnapshotResult(
+ /** Agent runtime version selector copied from the session settings, such as `latest` or a runtime release identifier. */
@JsonProperty("version") String version,
+ /** Name of the SDK client that created the session. */
@JsonProperty("clientName") String clientName,
+ /** Session timeout in milliseconds. */
@JsonProperty("timeoutMs") Double timeoutMs,
+ /** Session start time as Unix epoch milliseconds. */
@JsonProperty("startTimeMs") Double startTimeMs,
+ /** Redacted repository and host settings. */
@JsonProperty("repo") SessionSettingsRepoSnapshot repo,
+ /** Redacted model routing settings. */
@JsonProperty("model") SessionSettingsModelSnapshot model,
+ /** Redacted validation and memory-tool settings. */
@JsonProperty("validation") SessionSettingsValidationSnapshot validation,
+ /** Redacted job settings. */
@JsonProperty("job") SessionSettingsJobSnapshot job,
+ /** Online-evaluation settings safe for SDK consumers. */
@JsonProperty("onlineEvaluation") SessionSettingsOnlineEvaluationSnapshot onlineEvaluation
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsValidationSnapshot.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsValidationSnapshot.java
index 375cfdfec..314cc5b2b 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsValidationSnapshot.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionSettingsValidationSnapshot.java
@@ -21,14 +21,23 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionSettingsValidationSnapshot(
+ /** General validation timeout budget in seconds. */
@JsonProperty("timeout") Double timeout,
+ /** Dependabot validation timeout budget in seconds. */
@JsonProperty("dependabotTimeout") Double dependabotTimeout,
+ /** Whether CodeQL validation is enabled. */
@JsonProperty("codeqlEnabled") Boolean codeqlEnabled,
+ /** Whether code-review validation is enabled. */
@JsonProperty("codeReviewEnabled") Boolean codeReviewEnabled,
+ /** Model used for code-review validation. */
@JsonProperty("codeReviewModel") String codeReviewModel,
+ /** Whether advisory validation is enabled. */
@JsonProperty("advisoryEnabled") Boolean advisoryEnabled,
+ /** Whether secret-scanning validation is enabled. */
@JsonProperty("secretScanningEnabled") Boolean secretScanningEnabled,
+ /** Whether the memory-store tool is enabled. */
@JsonProperty("memoryStoreEnabled") Boolean memoryStoreEnabled,
+ /** Whether the memory-vote tool is enabled. */
@JsonProperty("memoryVoteEnabled") Boolean memoryVoteEnabled
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionTasksStartAgentParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionTasksStartAgentParams.java
index 82daeec5e..87da305a6 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionTasksStartAgentParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionTasksStartAgentParams.java
@@ -30,7 +30,7 @@ public record SessionTasksStartAgentParams(
@JsonProperty("agentType") String agentType,
/** Task prompt for the agent */
@JsonProperty("prompt") String prompt,
- /** Short name for the agent, used to generate a human-readable ID */
+ /** Friendly, non-unique name used when displaying the agent */
@JsonProperty("name") String name,
/** Short description of the task */
@JsonProperty("description") String description,
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionUiElicitationParams.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionUiElicitationParams.java
index ad754767e..72207e55b 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionUiElicitationParams.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionUiElicitationParams.java
@@ -11,6 +11,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.copilot.CopilotExperimental;
+import java.util.Map;
import javax.annotation.processing.Generated;
/**
@@ -26,9 +27,15 @@
public record SessionUiElicitationParams(
/** Target session identifier */
@JsonProperty("sessionId") String sessionId,
+ /** Elicitation mode. Omitted and form are equivalent for structured elicitation. */
+ @JsonProperty("mode") McpElicitationFormMode mode,
/** Message describing what information is needed from the user */
@JsonProperty("message") String message,
/** JSON Schema describing the form fields to present to the user */
- @JsonProperty("requestedSchema") UIElicitationSchema requestedSchema
+ @JsonProperty("requestedSchema") UIElicitationSchema requestedSchema,
+ /** MCP request metadata. */
+ @JsonProperty("_meta") Map> meta,
+ /** MCP task metadata. */
+ @JsonProperty("task") McpTaskMetadata task
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionUiElicitationResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionUiElicitationResult.java
index b290cc7c6..bf250f9d7 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionUiElicitationResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionUiElicitationResult.java
@@ -28,6 +28,8 @@ public record SessionUiElicitationResult(
/** The user's response: accept (submitted), decline (rejected), or cancel (dismissed) */
@JsonProperty("action") UIElicitationResponseAction action,
/** The form values submitted by the user (present when action is 'accept') */
- @JsonProperty("content") Map content
+ @JsonProperty("content") Map content,
+ /** MCP response metadata. */
+ @JsonProperty("_meta") Map> meta
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesAddSummaryResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesAddSummaryResult.java
index a50a0b5f5..6dd474df6 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesAddSummaryResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesAddSummaryResult.java
@@ -25,7 +25,9 @@
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public record SessionWorkspacesAddSummaryResult(
+ /** Metadata for the persisted summary. */
@JsonProperty("summary") Map summary,
+ /** Refreshed metadata for the containing workspace. */
@JsonProperty("workspace") Map workspace
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesEnsureResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesEnsureResult.java
index 4a810fe12..c2d7e9ce3 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesEnsureResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesEnsureResult.java
@@ -34,23 +34,39 @@ public record SessionWorkspacesEnsureResult(
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public record SessionWorkspacesEnsureResultWorkspace(
+ /** Stable workspace identifier. */
@JsonProperty("id") String id,
+ /** Current working directory associated with the workspace. */
@JsonProperty("cwd") String cwd,
+ /** Git repository root associated with the workspace. */
@JsonProperty("git_root") String gitRoot,
+ /** Repository identifier associated with the workspace. */
@JsonProperty("repository") String repository,
/** Allowed values for the `WorkspacesWorkspaceDetailsHostType` enumeration. */
@JsonProperty("host_type") WorkspacesWorkspaceDetailsHostType hostType,
+ /** Current Git branch. */
@JsonProperty("branch") String branch,
+ /** Workspace display name. */
@JsonProperty("name") String name,
+ /** Name of the client that created the workspace. */
@JsonProperty("client_name") String clientName,
+ /** Whether the workspace name was explicitly chosen by the user. */
@JsonProperty("user_named") Boolean userNamed,
+ /** Number of persisted summaries in the workspace. */
@JsonProperty("summary_count") Long summaryCount,
+ /** Timestamp when the workspace was created. */
@JsonProperty("created_at") OffsetDateTime createdAt,
+ /** Timestamp when the workspace was last updated. */
@JsonProperty("updated_at") OffsetDateTime updatedAt,
+ /** Whether the workspace session can be steered remotely. */
@JsonProperty("remote_steerable") Boolean remoteSteerable,
+ /** Mission Control task identifier associated with the workspace. */
@JsonProperty("mc_task_id") String mcTaskId,
+ /** Mission Control session identifier associated with the workspace. */
@JsonProperty("mc_session_id") String mcSessionId,
+ /** Most recent Mission Control event identifier observed for the workspace. */
@JsonProperty("mc_last_event_id") String mcLastEventId,
+ /** Whether the per-session Chronicle upgrade prompt was dismissed for the workspace. */
@JsonProperty("chronicle_sync_dismissed") Boolean chronicleSyncDismissed
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesGetWorkspaceResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesGetWorkspaceResult.java
index 217ac7d44..6f4714a59 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesGetWorkspaceResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesGetWorkspaceResult.java
@@ -34,23 +34,39 @@ public record SessionWorkspacesGetWorkspaceResult(
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public record SessionWorkspacesGetWorkspaceResultWorkspace(
+ /** Stable workspace identifier. */
@JsonProperty("id") String id,
+ /** Current working directory associated with the workspace. */
@JsonProperty("cwd") String cwd,
+ /** Git repository root associated with the workspace. */
@JsonProperty("git_root") String gitRoot,
+ /** Repository identifier associated with the workspace. */
@JsonProperty("repository") String repository,
/** Allowed values for the `WorkspacesWorkspaceDetailsHostType` enumeration. */
@JsonProperty("host_type") WorkspacesWorkspaceDetailsHostType hostType,
+ /** Current Git branch. */
@JsonProperty("branch") String branch,
+ /** Workspace display name. */
@JsonProperty("name") String name,
+ /** Name of the client that created the workspace. */
@JsonProperty("client_name") String clientName,
+ /** Whether the workspace name was explicitly chosen by the user. */
@JsonProperty("user_named") Boolean userNamed,
+ /** Number of persisted summaries in the workspace. */
@JsonProperty("summary_count") Long summaryCount,
+ /** Timestamp when the workspace was created. */
@JsonProperty("created_at") OffsetDateTime createdAt,
+ /** Timestamp when the workspace was last updated. */
@JsonProperty("updated_at") OffsetDateTime updatedAt,
+ /** Whether the workspace session can be steered remotely. */
@JsonProperty("remote_steerable") Boolean remoteSteerable,
+ /** Mission Control task identifier associated with the workspace. */
@JsonProperty("mc_task_id") String mcTaskId,
+ /** Mission Control session identifier associated with the workspace. */
@JsonProperty("mc_session_id") String mcSessionId,
+ /** Most recent Mission Control event identifier observed for the workspace. */
@JsonProperty("mc_last_event_id") String mcLastEventId,
+ /** Whether the per-session Chronicle upgrade prompt was dismissed for the workspace. */
@JsonProperty("chronicle_sync_dismissed") Boolean chronicleSyncDismissed
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesTruncateSummariesResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesTruncateSummariesResult.java
index caa44d0b7..1dc348e67 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesTruncateSummariesResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesTruncateSummariesResult.java
@@ -34,23 +34,39 @@ public record SessionWorkspacesTruncateSummariesResult(
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public record SessionWorkspacesTruncateSummariesResultWorkspace(
+ /** Stable workspace identifier. */
@JsonProperty("id") String id,
+ /** Current working directory associated with the workspace. */
@JsonProperty("cwd") String cwd,
+ /** Git repository root associated with the workspace. */
@JsonProperty("git_root") String gitRoot,
+ /** Repository identifier associated with the workspace. */
@JsonProperty("repository") String repository,
/** Allowed values for the `WorkspacesWorkspaceDetailsHostType` enumeration. */
@JsonProperty("host_type") WorkspacesWorkspaceDetailsHostType hostType,
+ /** Current Git branch. */
@JsonProperty("branch") String branch,
+ /** Workspace display name. */
@JsonProperty("name") String name,
+ /** Name of the client that created the workspace. */
@JsonProperty("client_name") String clientName,
+ /** Whether the workspace name was explicitly chosen by the user. */
@JsonProperty("user_named") Boolean userNamed,
+ /** Number of persisted summaries in the workspace. */
@JsonProperty("summary_count") Long summaryCount,
+ /** Timestamp when the workspace was created. */
@JsonProperty("created_at") OffsetDateTime createdAt,
+ /** Timestamp when the workspace was last updated. */
@JsonProperty("updated_at") OffsetDateTime updatedAt,
+ /** Whether the workspace session can be steered remotely. */
@JsonProperty("remote_steerable") Boolean remoteSteerable,
+ /** Mission Control task identifier associated with the workspace. */
@JsonProperty("mc_task_id") String mcTaskId,
+ /** Mission Control session identifier associated with the workspace. */
@JsonProperty("mc_session_id") String mcSessionId,
+ /** Most recent Mission Control event identifier observed for the workspace. */
@JsonProperty("mc_last_event_id") String mcLastEventId,
+ /** Whether the per-session Chronicle upgrade prompt was dismissed for the workspace. */
@JsonProperty("chronicle_sync_dismissed") Boolean chronicleSyncDismissed
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesUpdateMetadataResult.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesUpdateMetadataResult.java
index 84ec13661..03731650a 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesUpdateMetadataResult.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesUpdateMetadataResult.java
@@ -34,23 +34,39 @@ public record SessionWorkspacesUpdateMetadataResult(
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public record SessionWorkspacesUpdateMetadataResultWorkspace(
+ /** Stable workspace identifier. */
@JsonProperty("id") String id,
+ /** Current working directory associated with the workspace. */
@JsonProperty("cwd") String cwd,
+ /** Git repository root associated with the workspace. */
@JsonProperty("git_root") String gitRoot,
+ /** Repository identifier associated with the workspace. */
@JsonProperty("repository") String repository,
/** Allowed values for the `WorkspacesWorkspaceDetailsHostType` enumeration. */
@JsonProperty("host_type") WorkspacesWorkspaceDetailsHostType hostType,
+ /** Current Git branch. */
@JsonProperty("branch") String branch,
+ /** Workspace display name. */
@JsonProperty("name") String name,
+ /** Name of the client that created the workspace. */
@JsonProperty("client_name") String clientName,
+ /** Whether the workspace name was explicitly chosen by the user. */
@JsonProperty("user_named") Boolean userNamed,
+ /** Number of persisted summaries in the workspace. */
@JsonProperty("summary_count") Long summaryCount,
+ /** Timestamp when the workspace was created. */
@JsonProperty("created_at") OffsetDateTime createdAt,
+ /** Timestamp when the workspace was last updated. */
@JsonProperty("updated_at") OffsetDateTime updatedAt,
+ /** Whether the workspace session can be steered remotely. */
@JsonProperty("remote_steerable") Boolean remoteSteerable,
+ /** Mission Control task identifier associated with the workspace. */
@JsonProperty("mc_task_id") String mcTaskId,
+ /** Mission Control session identifier associated with the workspace. */
@JsonProperty("mc_session_id") String mcSessionId,
+ /** Most recent Mission Control event identifier observed for the workspace. */
@JsonProperty("mc_last_event_id") String mcLastEventId,
+ /** Whether the per-session Chronicle upgrade prompt was dismissed for the workspace. */
@JsonProperty("chronicle_sync_dismissed") Boolean chronicleSyncDismissed
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/TokenAuthInfo.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/TokenAuthInfo.java
new file mode 100644
index 000000000..94e73177e
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/TokenAuthInfo.java
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import javax.annotation.processing.Generated;
+
+/**
+ * Authentication-info variant for SDK-configured token authentication, carrying host and the secret token value.
+ *
+ * @since 1.0.0
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+public final class TokenAuthInfo extends AuthInfo {
+
+ @JsonProperty("type")
+ private final String type = "token";
+
+ @Override
+ public String getType() { return type; }
+
+ /** Authentication host. */
+ @JsonProperty("host")
+ private String host;
+
+ /** The token value itself. Treat as a secret. */
+ @JsonProperty("token")
+ private String token;
+
+ /** Snapshot of the authenticated user's Copilot subscription info, if known. Mirrors the GitHub API `/copilot_internal/v2/token` user response shape — the runtime trusts this verbatim and does not re-fetch when set. */
+ @JsonProperty("copilotUser")
+ private CopilotUserResponse copilotUser;
+
+ public String getHost() { return host; }
+ public void setHost(String host) { this.host = host; }
+
+ public String getToken() { return token; }
+ public void setToken(String token) { this.token = token; }
+
+ public CopilotUserResponse getCopilotUser() { return copilotUser; }
+ public void setCopilotUser(CopilotUserResponse copilotUser) { this.copilotUser = copilotUser; }
+}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/UIElicitationResponse.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/UIElicitationResponse.java
index e157ee727..d611a8b44 100644
--- a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/UIElicitationResponse.java
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/UIElicitationResponse.java
@@ -25,6 +25,8 @@ public record UIElicitationResponse(
/** The user's response: accept (submitted), decline (rejected), or cancel (dismissed) */
@JsonProperty("action") UIElicitationResponseAction action,
/** The form values submitted by the user (present when action is 'accept') */
- @JsonProperty("content") Map content
+ @JsonProperty("content") Map content,
+ /** MCP response metadata. */
+ @JsonProperty("_meta") Map> meta
) {
}
diff --git a/java/sdk/src/generated/java/com/github/copilot/generated/rpc/UserAuthInfo.java b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/UserAuthInfo.java
new file mode 100644
index 000000000..6f136a17c
--- /dev/null
+++ b/java/sdk/src/generated/java/com/github/copilot/generated/rpc/UserAuthInfo.java
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+// AUTO-GENERATED FILE - DO NOT EDIT
+// Generated from: api.schema.json
+
+package com.github.copilot.generated.rpc;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import javax.annotation.processing.Generated;
+
+/**
+ * Authentication-info variant for OAuth user auth, with host and login; the token remains in the runtime secret store.
+ *
+ * @since 1.0.0
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@javax.annotation.processing.Generated("copilot-sdk-codegen")
+public final class UserAuthInfo extends AuthInfo {
+
+ @JsonProperty("type")
+ private final String type = "user";
+
+ @Override
+ public String getType() { return type; }
+
+ /** Authentication host. */
+ @JsonProperty("host")
+ private String host;
+
+ /** OAuth user login. */
+ @JsonProperty("login")
+ private String login;
+
+ /** Snapshot of the authenticated user's Copilot subscription info, if known. Mirrors the GitHub API `/copilot_internal/v2/token` user response shape — the runtime trusts this verbatim and does not re-fetch when set. */
+ @JsonProperty("copilotUser")
+ private CopilotUserResponse copilotUser;
+
+ public String getHost() { return host; }
+ public void setHost(String host) { this.host = host; }
+
+ public String getLogin() { return login; }
+ public void setLogin(String login) { this.login = login; }
+
+ public CopilotUserResponse getCopilotUser() { return copilotUser; }
+ public void setCopilotUser(CopilotUserResponse copilotUser) { this.copilotUser = copilotUser; }
+}
diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json
index 0fe7660f8..147d9d8aa 100644
--- a/nodejs/package-lock.json
+++ b/nodejs/package-lock.json
@@ -9,7 +9,7 @@
"version": "0.0.0-dev",
"license": "MIT",
"dependencies": {
- "@github/copilot": "^1.0.79",
+ "@github/copilot": "^1.0.80-0",
"koffi": "^3.1.0",
"vscode-jsonrpc": "^8.2.1",
"zod": "^4.3.6"
@@ -700,9 +700,9 @@
}
},
"node_modules/@github/copilot": {
- "version": "1.0.79",
- "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.79.tgz",
- "integrity": "sha512-uHBm2BYbKJgyfiKp1WokX7QUNHGvzEX0zaGeb3qM3CybP06rsJrX3JgQe95qwwma6vQz0ah9gV68ERW2JqaKRA==",
+ "version": "1.0.80-0",
+ "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.80-0.tgz",
+ "integrity": "sha512-y2LqQT9JHL5NSfSLWwUbuDCEanCYz8o+GNqpAh3/DG8LCctLVPMdVTyIoDIWDk/8GUjh9FakA/jS+MMV/ugbpQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"detect-libc": "^2.1.2"
@@ -711,20 +711,20 @@
"copilot": "npm-loader.js"
},
"optionalDependencies": {
- "@github/copilot-darwin-arm64": "1.0.79",
- "@github/copilot-darwin-x64": "1.0.79",
- "@github/copilot-linux-arm64": "1.0.79",
- "@github/copilot-linux-x64": "1.0.79",
- "@github/copilot-linuxmusl-arm64": "1.0.79",
- "@github/copilot-linuxmusl-x64": "1.0.79",
- "@github/copilot-win32-arm64": "1.0.79",
- "@github/copilot-win32-x64": "1.0.79"
+ "@github/copilot-darwin-arm64": "1.0.80-0",
+ "@github/copilot-darwin-x64": "1.0.80-0",
+ "@github/copilot-linux-arm64": "1.0.80-0",
+ "@github/copilot-linux-x64": "1.0.80-0",
+ "@github/copilot-linuxmusl-arm64": "1.0.80-0",
+ "@github/copilot-linuxmusl-x64": "1.0.80-0",
+ "@github/copilot-win32-arm64": "1.0.80-0",
+ "@github/copilot-win32-x64": "1.0.80-0"
}
},
"node_modules/@github/copilot-darwin-arm64": {
- "version": "1.0.79",
- "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.79.tgz",
- "integrity": "sha512-rsw7JoMvlcxXb0yx08oIeEc0x2hUEwKSfhX9ESKfdMVt0Ckrzm4OEvNUyzOpOnLJ9+l3h/aI+u1w5g2ZU2K7UA==",
+ "version": "1.0.80-0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.80-0.tgz",
+ "integrity": "sha512-gsRLSyPd4j15zivQLYOyvzb4sGrGS4p6e2Dwv1KIvcJ2IAwANyCcfXAXy0F0xB+B+mQgvCwCdkK1Rmjy+9ftow==",
"cpu": [
"arm64"
],
@@ -738,9 +738,9 @@
}
},
"node_modules/@github/copilot-darwin-x64": {
- "version": "1.0.79",
- "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.79.tgz",
- "integrity": "sha512-D983e2lXYnq+KhjA8mTZXonY1+LGfJN9BM195J73shUvx49nRJmibDHWLvVtGeYc+43evGUOAQrOqOspAhhWPQ==",
+ "version": "1.0.80-0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.80-0.tgz",
+ "integrity": "sha512-D7PrkVmPb91MPa8H5nY9DfxWWR4Je+KZY/gmkJYDryTrWO7CabfE29yKqBwhi+WuBpVYWttDF3C1TeYTdOYpkg==",
"cpu": [
"x64"
],
@@ -754,9 +754,9 @@
}
},
"node_modules/@github/copilot-linux-arm64": {
- "version": "1.0.79",
- "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.79.tgz",
- "integrity": "sha512-qqaNkvi92Wg+4OZk/kTWC2nUG72G0vV6eRAo5+PnKaPmjdX1GsI0a+lPxXPEbzX0zYLi/8yrUyANwyyNEsGgXA==",
+ "version": "1.0.80-0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.80-0.tgz",
+ "integrity": "sha512-b1LAUiv7bY9cNXiilztDZTt5+M29axFWF354eg8VXRGaWXfT77ctgfLb1UiTBABUKlIfHOuodq1cjtSOnYDtPg==",
"cpu": [
"arm64"
],
@@ -770,9 +770,9 @@
}
},
"node_modules/@github/copilot-linux-x64": {
- "version": "1.0.79",
- "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.79.tgz",
- "integrity": "sha512-wzotZfvHkItutciLFMXZT2k9Qiii4Ta8tsVDCMQ7CP8hPxV91FyJ1yf3+FFSSfPvWrfYM6BOAiqIuX+LjgRuiw==",
+ "version": "1.0.80-0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.80-0.tgz",
+ "integrity": "sha512-FvbdftgJzbU7yagRMO9Sitd7UOF8T4Amkbuss+rweZBOJBgsBWDvUJWCf9m06iuHaLYoICiGp94BFMowHyBIoQ==",
"cpu": [
"x64"
],
@@ -786,9 +786,9 @@
}
},
"node_modules/@github/copilot-linuxmusl-arm64": {
- "version": "1.0.79",
- "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.79.tgz",
- "integrity": "sha512-INtRSARl7DdNm2MXnn4GJuK+Y7QD24ANox02uH8htNQwRlNvdvg+YGS1V/mYgLDXFepeUjMjzTNC+i70+kh5uw==",
+ "version": "1.0.80-0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.80-0.tgz",
+ "integrity": "sha512-AwoUp+RVRqAyTiqMnlKx8gIldxghZQxet31sWsLBDE/AS5Dv/ohx0wQ7aouKORUMkh+ZtIK+WmgyR7de1hRDPQ==",
"cpu": [
"arm64"
],
@@ -802,9 +802,9 @@
}
},
"node_modules/@github/copilot-linuxmusl-x64": {
- "version": "1.0.79",
- "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.79.tgz",
- "integrity": "sha512-LxJAIfPP6Ok/9qpXGZuhnAft3W9JVcK9tbO3jWXcGDJT3v+2NtutyjmP/A7/cDXdTruXVQ4MybwAgacN8Gj/sg==",
+ "version": "1.0.80-0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.80-0.tgz",
+ "integrity": "sha512-9RCoTNtaDnC2r68ecHrpORmTjaSaV9hUdRJb9nsh46En9SSkcEl4yvQ14Fl9HJ95BhKHqE6krf7YxCgAKTQ3bA==",
"cpu": [
"x64"
],
@@ -818,9 +818,9 @@
}
},
"node_modules/@github/copilot-win32-arm64": {
- "version": "1.0.79",
- "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.79.tgz",
- "integrity": "sha512-5wg/ayCBTVy4g4FdO/9BJZRVARY0sgjAn9rBkw5BSJMv4u7Mvxg5Sftlift+V5UWxTyCSHAELZ5IHKvox4Yi8w==",
+ "version": "1.0.80-0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.80-0.tgz",
+ "integrity": "sha512-ypxN5LRkXgvEDjSYOQ9lMXrZAC+NVWeIBSd/ywGiA4wg7XtH2VBbaiYMPvX6R6xIrn4LUK+/UlYwwIqf8laXhw==",
"cpu": [
"arm64"
],
@@ -834,9 +834,9 @@
}
},
"node_modules/@github/copilot-win32-x64": {
- "version": "1.0.79",
- "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.79.tgz",
- "integrity": "sha512-FTpThWwwCDYnLdE0pfdo5zpAQLLVg36kmC2IKyVMuCYv9iPe7rE1mz7ng/UITN9M3TAMBrwHSvCV3pITvw4W8Q==",
+ "version": "1.0.80-0",
+ "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.80-0.tgz",
+ "integrity": "sha512-uKrkfKblj+sIthys3a/RYU5muLtMd5Wc5NstbCJHD7DLqGbDK7Fec9REBr4/NHGGI/24FJhCXJNEBPgE5urgew==",
"cpu": [
"x64"
],
diff --git a/nodejs/package.json b/nodejs/package.json
index 437a77a01..4d6ef2d5a 100644
--- a/nodejs/package.json
+++ b/nodejs/package.json
@@ -56,7 +56,7 @@
"author": "GitHub",
"license": "MIT",
"dependencies": {
- "@github/copilot": "^1.0.79",
+ "@github/copilot": "^1.0.80-0",
"koffi": "^3.1.0",
"vscode-jsonrpc": "^8.2.1",
"zod": "^4.3.6"
diff --git a/nodejs/samples/package-lock.json b/nodejs/samples/package-lock.json
index 66b4df470..ec9c5d7b7 100644
--- a/nodejs/samples/package-lock.json
+++ b/nodejs/samples/package-lock.json
@@ -18,7 +18,7 @@
"version": "0.0.0-dev",
"license": "MIT",
"dependencies": {
- "@github/copilot": "^1.0.79",
+ "@github/copilot": "^1.0.80-0",
"koffi": "^3.1.0",
"vscode-jsonrpc": "^8.2.1",
"zod": "^4.3.6"
diff --git a/nodejs/src/generated/rpc.ts b/nodejs/src/generated/rpc.ts
index cefc8ef4d..7c8c99a8b 100644
--- a/nodejs/src/generated/rpc.ts
+++ b/nodejs/src/generated/rpc.ts
@@ -5,7 +5,7 @@
import type { MessageConnection } from "vscode-jsonrpc/node.js";
-import type { AbortReason, Attachment, ContextTier, EmbeddedBlobResourceContents, EmbeddedTextResourceContents, McpServerSource, McpServerStatus, PermissionPromptRequest, PermissionRule, ReasoningSummary, SessionEvent, SessionLimitsConfig, SessionMode, ShutdownType, SkillSource, UserToolSessionApproval, Verbosity } from "./session-events.js";
+import type { AbortReason, Attachment, ContextTier, EmbeddedBlobResourceContents, EmbeddedTextResourceContents, McpOauthHttpResponse, McpOauthWWWAuthenticateParams, McpServerSource, McpServerStatus, ModelChangeSource, PermissionPromptRequest, PermissionRule, ReasoningSummary, SessionEvent, SessionLimitsConfig, SessionMode, ShutdownType, SkillSource, UserToolSessionApproval, Verbosity } from "./session-events.js";
/** A value that can be represented losslessly on the SDK JSON wire. */
export type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };
@@ -269,6 +269,14 @@ export type AuthInfoType =
| "token"
/** Authentication from a Copilot API token. */
| "copilot-api-token";
+/**
+ * Validation errors from the most recent authentication attempt.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "AuthValidationErrors".
+ */
+/** @experimental */
+export type AuthValidationErrors = AuthValidationError[];
/**
* JSON Schema for canvas open input
*
@@ -399,6 +407,9 @@ export type DebugCollectLogsDestination =
* When true, create the archive atomically without overwriting an existing file by appending ` (N)` before the extension as needed. Defaults to false.
*/
noOverwrite?: boolean;
+ /**
+ * Destination variant discriminator.
+ */
kind: "archive";
}
| {
@@ -406,6 +417,9 @@ export type DebugCollectLogsDestination =
* Directory where redacted files should be staged. The directory is created if needed.
*/
outputDirectory: string;
+ /**
+ * Destination variant discriminator.
+ */
kind: "directory";
};
/**
@@ -688,6 +702,9 @@ export type FactoryRunFailure =
* Factory run identifier.
*/
runId: string;
+ /**
+ * Factory failure variant discriminator.
+ */
type: "factory_limit_reached";
}
| {
@@ -699,6 +716,9 @@ export type FactoryRunFailure =
* Human-readable reason the resume did not proceed.
*/
reason: string;
+ /**
+ * Factory failure variant discriminator.
+ */
type: "factory_resume_declined";
}
| {
@@ -711,6 +731,9 @@ export type FactoryRunFailure =
* Factory run identifier.
*/
runId: string;
+ /**
+ * Factory failure variant discriminator.
+ */
type: "factory_durable_failure";
}
| {
@@ -722,6 +745,9 @@ export type FactoryRunFailure =
* Confirmed usage in nano-AIU, representing the floor of what the run spent.
*/
drainedNanoAiu: number;
+ /**
+ * Factory failure variant discriminator.
+ */
type: "factory_accounting_incomplete";
};
/**
@@ -1152,13 +1178,21 @@ export type McpAppsSetHostContextDetailsPlatform =
/** Host runs on a mobile device */
| "mobile";
/**
- * MCP server configuration (stdio process or remote HTTP/SSE)
+ * Serializable MCP server configuration (stdio process or remote HTTP/SSE)
*
* This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
- * via the `definition` "McpServerConfig".
+ * via the `definition` "McpSerializableServerConfig".
+ */
+/** @experimental */
+export type McpSerializableServerConfig = McpServerConfigStdio | McpServerConfigHttp;
+/**
+ * Telemetry-obfuscation policy for an MCP server's tools.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpSafeForTelemetry".
*/
/** @experimental */
-export type McpServerConfig = McpServerConfigStdio | McpServerConfigHttp;
+export type McpSafeForTelemetry = boolean | McpSafeForTelemetryFields;
/**
* Set to `true` to use defaults, or provide an object with additional auth or OIDC settings.
*
@@ -1179,6 +1213,18 @@ export type McpServerConfigDeferTools =
| "auto"
/** Tools are always included in the initial tool list, even when tool search is enabled. */
| "never";
+/**
+ * Local MCP transport type.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpServerConfigStdioType".
+ */
+/** @experimental */
+export type McpServerConfigStdioType =
+ /** Legacy alias for the local stdio transport. */
+ | "local"
+ /** Server communicates over stdio with a local child process. */
+ | "stdio";
/**
* Remote transport type. Defaults to "http" when omitted.
*
@@ -1203,6 +1249,14 @@ export type McpServerConfigHttpOauthGrantType =
| "authorization_code"
/** Headless client credentials flow using the configured OAuth client. */
| "client_credentials";
+/**
+ * Structured MCP elicitation mode.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpElicitationFormMode".
+ */
+/** @experimental */
+export type McpElicitationFormMode = "form";
/**
* Host response: supply dynamic headers or decline this refresh.
*
@@ -1218,9 +1272,15 @@ export type McpHeadersHandlePendingHeadersRefreshRequest =
headers: {
[k: string]: string | undefined;
};
+ /**
+ * Headers-refresh response variant discriminator.
+ */
kind: "headers";
}
| {
+ /**
+ * Headers-refresh response variant discriminator.
+ */
kind: "none";
};
/**
@@ -1256,9 +1316,15 @@ export type McpOauthPendingRequestResponse =
* Token lifetime in seconds, if known.
*/
expiresIn?: number;
+ /**
+ * OAuth response variant discriminator.
+ */
kind: "token";
}
| {
+ /**
+ * OAuth response variant discriminator.
+ */
kind: "cancelled";
};
/**
@@ -1273,6 +1339,70 @@ export type McpOauthLoginGrantType =
| "authorization_code"
/** Headless OAuth flow where a confidential client authenticates directly with a client secret. */
| "client_credentials";
+/**
+ * Why a passive MCP OAuth probe determined authentication is needed.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpOauthProbeNeedsAuthReason".
+ */
+/** @experimental */
+export type McpOauthProbeNeedsAuthReason =
+ /** No token was sent and the server requires authentication. */
+ | "initial"
+ /** A cached token was sent and rejected. */
+ | "refresh"
+ /** The server returned a 403 insufficient_scope challenge, indicating additional scopes or audience are needed. */
+ | "upscope";
+/**
+ * Passive MCP OAuth probe result. `authenticated` means the server accepted the probe request while an OAuth-origin access token was attached; it does not prove the server required or independently validated that token. The probe does not make a second unauthenticated request. Failed is an expected probe-domain outcome; JSON-RPC errors are reserved for API-call failures.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpOauthProbeResult".
+ */
+/** @experimental */
+export type McpOauthProbeResult =
+ | {
+ httpResponse: McpOauthHttpResponse;
+ /**
+ * Probe outcome variant discriminator.
+ */
+ status: "no-auth-required";
+ }
+ | {
+ httpResponse: McpOauthHttpResponse;
+ /**
+ * Probe outcome variant discriminator.
+ */
+ status: "authenticated";
+ }
+ | {
+ httpResponse: McpOauthHttpResponse;
+ reason: McpOauthProbeNeedsAuthReason;
+ wwwAuthenticateParams?: McpOauthWWWAuthenticateParams;
+ /**
+ * Probe outcome variant discriminator.
+ */
+ status: "needs-auth";
+ }
+ | {
+ /**
+ * Human-readable probe failure detail.
+ */
+ error: string;
+ httpResponse?: McpOauthHttpResponse;
+ /**
+ * Probe outcome variant discriminator.
+ */
+ status: "failed";
+ };
+/**
+ * MCP server configuration (stdio, remote HTTP/SSE, or in-process)
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpServerConfig".
+ */
+/** @experimental */
+export type McpServerConfig = (McpServerConfigStdio | McpServerConfigHttp) | undefined;
/**
* Outcome of the sampling inference. 'success' produced a response; 'failure' encountered an error (including agent-side rejection by content filter or criteria); 'cancelled' the caller cancelled this execution via cancelSamplingExecution.
*
@@ -1287,6 +1417,15 @@ export type McpSamplingExecutionAction =
| "failure"
/** The sampling inference was cancelled before completion. */
| "cancelled";
+/**
+ * In-process MCP transport type.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpServerConfigMemoryType".
+ */
+/** @experimental */
+/** @internal */
+export type McpServerConfigMemoryType = "memory";
/**
* How environment-variable values supplied to MCP servers are resolved. "direct" passes literal string values; "indirect" treats values as references (e.g. names of environment variables on the host) that the runtime resolves before launch. Defaults to the runtime's startup mode; clients that intentionally launch MCP servers with literal values (e.g. CLI prompt mode and ACP) set this to "direct".
*
@@ -1697,7 +1836,8 @@ export type PermissionDecisionApproveForSessionApproval =
| PermissionDecisionApproveForSessionApprovalCustomTool
| PermissionDecisionApproveForSessionApprovalExtensionManagement
| PermissionDecisionApproveForSessionApprovalFactory
- | PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess;
+ | PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess
+ | PermissionDecisionApproveForSessionApprovalExtensionEnvAccess;
/**
* Approval to persist for this location
*
@@ -1715,7 +1855,8 @@ export type PermissionDecisionApproveForLocationApproval =
| PermissionDecisionApproveForLocationApprovalCustomTool
| PermissionDecisionApproveForLocationApprovalExtensionManagement
| PermissionDecisionApproveForLocationApprovalFactory
- | PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess;
+ | PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess
+ | PermissionDecisionApproveForLocationApprovalExtensionEnvAccess;
/**
* Disposition of a permission request as observed by the responding client.
*
@@ -1779,7 +1920,8 @@ export type PermissionsLocationsAddToolApprovalDetails =
| PermissionsLocationsAddToolApprovalDetailsCustomTool
| PermissionsLocationsAddToolApprovalDetailsExtensionManagement
| PermissionsLocationsAddToolApprovalDetailsFactory
- | PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess;
+ | PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess
+ | PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess;
/**
* Whether the location is a git repo or directory
*
@@ -2039,6 +2181,22 @@ export type RemoteSessionMode =
| "export"
/** Enable both remote session export and remote steering. */
| "on";
+/**
+ * What a remote host says one of its sessions is doing right now. Deliberately coarse: this is what a host can report for EVERY session in a catalogue listing, without a client subscribing to each one. AHP's `SessionSummary.status` is the source today; `input-needed` covers both a permission prompt and an `ask_user` question, since the summary does not say which.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "RemoteSessionHostStatus".
+ */
+/** @experimental */
+export type RemoteSessionHostStatus =
+ /** No turn is running. */
+ | "idle"
+ /** A turn is running. */
+ | "working"
+ /** The session is blocked on the user: a permission prompt or an `ask_user` question. */
+ | "input-needed"
+ /** The session ended its last turn in an error. */
+ | "error";
/**
* Whether the remote task originated from CCA or CLI `--remote`.
*
@@ -2051,6 +2209,14 @@ export type RemoteSessionMetadataTaskType =
| "cca"
/** CLI remote task. */
| "cli";
+/**
+ * Current authentication information, or null when no authentication is active.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "SessionAuthInfoResult".
+ */
+/** @experimental */
+export type SessionAuthInfoResult = AuthInfo | null;
/**
* Session capability enabled for this session
*
@@ -2227,10 +2393,16 @@ export type SessionLimitPredictionRequest =
export type SessionLimitPredictionResult =
| {
prediction: SessionLimitPredictionDetails;
+ /**
+ * Prediction result variant discriminator.
+ */
kind: "available";
}
| {
reason: SessionLimitPredictionUnavailableReason;
+ /**
+ * Prediction result variant discriminator.
+ */
kind: "unavailable";
};
/**
@@ -2835,6 +3007,30 @@ export type AccountGetAllUsersResult = AccountAllUsers[];
*/
/** @experimental */
export type SessionCancelAllBackgroundAgentsResult = number;
+/**
+ * Authentication accounts available to the internal session host.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "SessionGitHubAuthGetAllAuthAvailableResult".
+ */
+/** @experimental */
+export type SessionGitHubAuthGetAllAuthAvailableResult = SessionAuthStatus[];
+/**
+ * Whether the current authentication was logged out.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "SessionGitHubAuthLogoutResult".
+ */
+/** @experimental */
+export type SessionGitHubAuthLogoutResult = boolean;
+/**
+ * Whether the requested authentication was logged out.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "SessionGitHubAuthLogoutUserResult".
+ */
+/** @experimental */
+export type SessionGitHubAuthLogoutUserResult = boolean;
/**
* Parameters for aborting the current turn
@@ -2960,6 +3156,9 @@ export interface CopilotUserResponse {
[k: string]: unknown | undefined;
}
| ({
+ /**
+ * GitHub login of the organization.
+ */
login?:
| (
| {
@@ -2968,6 +3167,9 @@ export interface CopilotUserResponse {
| string
)
| null;
+ /**
+ * Display name of the organization.
+ */
name?:
| (
| {
@@ -3056,10 +3258,25 @@ export interface CopilotUserResponse {
*/
/** @experimental */
export interface CopilotUserResponseEndpoints {
+ /**
+ * Copilot API endpoint URL.
+ */
api?: string;
+ /**
+ * Origin-tracker endpoint URL.
+ */
"origin-tracker"?: string;
+ /**
+ * Copilot proxy endpoint URL.
+ */
proxy?: string;
+ /**
+ * Copilot telemetry endpoint URL.
+ */
telemetry?: string;
+ /**
+ * Experimental-service endpoint URL.
+ */
exp?: string;
}
/**
@@ -3978,6 +4195,23 @@ export interface AllowAllPermissionState {
enabled: boolean;
mode?: PermissionsAllowAllMode;
}
+/**
+ * Validation error from an authentication attempt.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "AuthValidationError".
+ */
+/** @experimental */
+export interface AuthValidationError {
+ /**
+ * Authentication validation error message
+ */
+ message: string;
+ /**
+ * Optional message returned by GitHub
+ */
+ githubMessage?: string;
+}
/**
* The running runtime's complete catalog of well-known built-in model IDs, including supported models and additional IDs with built-in metadata.
*
@@ -4353,6 +4587,40 @@ export interface CanvasProviderOpenResult {
*/
status?: string;
}
+/**
+ * Internal canvas provider registration parameters.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "CanvasProviderRegisterRequest".
+ */
+/** @experimental */
+export interface CanvasProviderRegisterRequest {
+ /**
+ * Connection identifier for callback routing
+ */
+ connectionId: string;
+ /**
+ * Provider metadata supplied by the host
+ */
+ info: JsonValue;
+ /**
+ * Canvas contributions supplied by the provider
+ */
+ canvases: JsonValue[];
+}
+/**
+ * Internal canvas provider unregistration parameters.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "CanvasProviderUnregisterRequest".
+ */
+/** @experimental */
+export interface CanvasProviderUnregisterRequest {
+ /**
+ * Connection identifier to unregister
+ */
+ connectionId: string;
+}
/**
* Options scoped to the built-in CAPI (Copilot API) provider.
*
@@ -5787,18 +6055,61 @@ export interface FactoryAgentResult {
*/
/** @experimental */
export interface FactoryAgentSummary {
+ /**
+ * Stable direct-agent identifier.
+ */
agentId: string;
+ /**
+ * Tool-call identifier that launched the agent.
+ */
toolCallId: string;
+ /**
+ * Owning factory run identifier.
+ */
runId: string;
+ /**
+ * Phase identifier active when the agent was launched, or null.
+ */
phaseId: string | null;
+ /**
+ * Friendly, non-unique name intended for display
+ */
label: string;
+ /**
+ * Friendly, non-unique name intended for display
+ */
+ displayName?: string;
+ /**
+ * Registered agent type.
+ */
agentType: string;
+ /**
+ * Current durable or live agent status.
+ */
status: string;
+ /**
+ * Model requested when the agent was launched.
+ */
requestedModel?: string;
+ /**
+ * Concrete model resolved for the agent.
+ */
resolvedModel?: string;
+ /**
+ * Epoch milliseconds when the agent started.
+ */
startedAt?: number;
+ /**
+ * Epoch milliseconds when the agent completed.
+ */
completedAt?: number;
+ /**
+ * Accumulated active agent time in milliseconds.
+ */
activeMs: number;
+ /**
+ * Prompt-safe live activity text.
+ */
activity?: string;
}
/**
@@ -5822,7 +6133,13 @@ export interface FactoryCancelRequest {
*/
/** @experimental */
export interface FactoryCurrentPhase {
+ /**
+ * Current phase identifier.
+ */
id: string;
+ /**
+ * Zero-based declared phase ordinal, or null for an undeclared phase.
+ */
ordinal: number | null;
}
/**
@@ -5833,9 +6150,21 @@ export interface FactoryCurrentPhase {
*/
/** @experimental */
export interface FactoryDeclaredLimits {
+ /**
+ * Maximum concurrently active subagents.
+ */
maxConcurrentSubagents?: number;
+ /**
+ * Maximum total subagents spawned by the run.
+ */
maxTotalSubagents?: number;
+ /**
+ * Maximum accumulated active execution time in seconds.
+ */
timeoutSeconds?: number;
+ /**
+ * Maximum AI credits consumed by subagents and descendants.
+ */
maxAiCredits?: number;
}
/**
@@ -6014,6 +6343,9 @@ export interface FactoryListRunsRequest {
*/
/** @experimental */
export interface FactoryListRunsResult {
+ /**
+ * Factory run summaries in durable creation order.
+ */
runs: FactoryRunSummary[];
/**
* Oldest terminal-run cursor in this page, or null when the terminal window is empty.
@@ -6040,24 +6372,72 @@ export interface FactoryListRunsResult {
*/
/** @experimental */
export interface FactoryRunSummary {
+ /**
+ * Factory run identifier.
+ */
runId: string;
+ /**
+ * Registered factory name.
+ */
factoryName: string;
+ /**
+ * Human-readable factory description.
+ */
description: string;
status: FactoryRunStatus;
+ /**
+ * Monotonic durable run revision.
+ */
revision: number;
+ /**
+ * Epoch milliseconds when the run was created.
+ */
createdAt: number;
+ /**
+ * Epoch milliseconds when execution first started, or null before start.
+ */
startedAt: number | null;
+ /**
+ * Epoch milliseconds when the durable run was last updated.
+ */
updatedAt: number;
+ /**
+ * Epoch milliseconds when the run completed, or null while nonterminal.
+ */
completedAt: number | null;
+ /**
+ * Current phase identity, or null before any phase is entered.
+ */
currentPhase: FactoryCurrentPhase | null;
+ /**
+ * Number of phases declared by the factory.
+ */
declaredPhaseCount: number;
+ /**
+ * Number of direct factory agents currently live.
+ */
liveAgentCount: number;
+ /**
+ * Total direct factory agents spawned across all attempts.
+ */
totalSpawnedAgentCount: number;
consumed: FactoryRunConsumed;
declaredLimits: FactoryDeclaredLimits;
+ /**
+ * Approved effective resource ceilings, or null until approved.
+ */
approved: FactoryDeclaredLimits | null;
+ /**
+ * Epoch milliseconds when this live-overlay snapshot was observed.
+ */
observedAt: number;
+ /**
+ * Epoch milliseconds when the current active segment started, or null while inactive.
+ */
activeSegmentStartedAt: number | null;
+ /**
+ * Terminal run outcome, or null while nonterminal.
+ */
terminal: FactoryRunTerminal | null;
}
/**
@@ -6068,8 +6448,17 @@ export interface FactoryRunSummary {
*/
/** @experimental */
export interface FactoryRunConsumed {
+ /**
+ * Accumulated active execution time in milliseconds.
+ */
activeMs: number;
+ /**
+ * Total subagents spawned by the run.
+ */
subagents: number;
+ /**
+ * AI usage consumed by the run in nano-AIU.
+ */
nanoAiu: number;
}
/**
@@ -6080,9 +6469,18 @@ export interface FactoryRunConsumed {
*/
/** @experimental */
export interface FactoryRunTerminal {
+ /**
+ * Human-readable terminal reason.
+ */
reason?: string;
failure?: FactoryRunFailure;
+ /**
+ * Human-readable terminal error.
+ */
error?: string;
+ /**
+ * Prompt-safe preview of the completed result.
+ */
resultPreview?: string;
}
/**
@@ -6132,18 +6530,54 @@ export interface FactoryLogRequest {
*/
/** @experimental */
export interface FactoryPhaseObservation {
+ /**
+ * Phase identifier.
+ */
id: string;
+ /**
+ * Zero-based declared phase ordinal, or null for an undeclared phase.
+ */
ordinal: number | null;
+ /**
+ * Human-readable phase title.
+ */
title: string;
- detail?: string;
+ /**
+ * Optional human-readable phase detail.
+ */
+ detail?: string;
status: FactoryPhaseStatus;
+ /**
+ * Most recent run attempt that entered this phase, or `0` if the phase has never been entered.
+ */
lastEnteredRunAttempt: number;
+ /**
+ * Number of times execution entered this phase.
+ */
entryCount: number;
+ /**
+ * Epoch milliseconds when this phase first started; for a skipped phase, the synthetic skip timestamp (equal to `completedAt`).
+ */
startedAt?: number;
+ /**
+ * Epoch milliseconds when this phase completed; for a skipped phase, the synthetic skip timestamp (equal to `startedAt`).
+ */
completedAt?: number;
+ /**
+ * Completed active time accumulated by this phase in milliseconds.
+ */
accumulatedActiveMs: number;
+ /**
+ * Current live active time for this phase in milliseconds.
+ */
currentActiveMs: number;
+ /**
+ * Total direct agents associated with this phase.
+ */
totalAgentCount: number;
+ /**
+ * Direct agents in this phase that are currently live.
+ */
liveAgentCount: number;
}
/**
@@ -6184,10 +6618,25 @@ export interface FactoryProgressLine {
*/
/** @experimental */
export interface FactoryProgressPage {
+ /**
+ * Progress records in sequence order.
+ */
records: FactoryProgressLine[];
+ /**
+ * Oldest sequence number in this page, or null when empty.
+ */
oldestSeq: number | null;
+ /**
+ * Newest sequence number in this page, or null when empty.
+ */
newestSeq: number | null;
+ /**
+ * Whether progress records older than this page exist.
+ */
hasMoreOlder: boolean;
+ /**
+ * Whether progress records newer than this page exist.
+ */
hasMoreNewer: boolean;
/**
* Run revision reflected by this page.
@@ -6286,26 +6735,80 @@ export interface FactoryRunResult {
*/
/** @experimental */
export interface FactoryRunDetail {
+ /**
+ * Factory run identifier.
+ */
runId: string;
+ /**
+ * Registered factory name.
+ */
factoryName: string;
+ /**
+ * Human-readable factory description.
+ */
description: string;
status: FactoryRunStatus;
+ /**
+ * Monotonic durable run revision.
+ */
revision: number;
+ /**
+ * Epoch milliseconds when the run was created.
+ */
createdAt: number;
+ /**
+ * Epoch milliseconds when execution first started, or null before start.
+ */
startedAt: number | null;
+ /**
+ * Epoch milliseconds when the durable run was last updated.
+ */
updatedAt: number;
+ /**
+ * Epoch milliseconds when the run completed, or null while nonterminal.
+ */
completedAt: number | null;
+ /**
+ * Current phase identity, or null before any phase is entered.
+ */
currentPhase: FactoryCurrentPhase | null;
+ /**
+ * Number of phases declared by the factory.
+ */
declaredPhaseCount: number;
+ /**
+ * Number of direct factory agents currently live.
+ */
liveAgentCount: number;
+ /**
+ * Total direct factory agents spawned across all attempts.
+ */
totalSpawnedAgentCount: number;
consumed: FactoryRunConsumed;
declaredLimits: FactoryDeclaredLimits;
+ /**
+ * Approved effective resource ceilings, or null until approved.
+ */
approved: FactoryDeclaredLimits | null;
+ /**
+ * Epoch milliseconds when this live-overlay snapshot was observed.
+ */
observedAt: number;
+ /**
+ * Epoch milliseconds when the current active segment started, or null while inactive.
+ */
activeSegmentStartedAt: number | null;
+ /**
+ * Terminal run outcome, or null while nonterminal.
+ */
terminal: FactoryRunTerminal | null;
+ /**
+ * Lifecycle and timing observations for each factory phase.
+ */
phases: FactoryPhaseObservation[];
+ /**
+ * Durable identities and live statuses for direct factory agents.
+ */
agents: FactoryAgentSummary[];
progress: FactoryProgressPage;
}
@@ -6962,12 +7465,21 @@ export interface InstalledPluginSourceGitHub {
* Constant value. Always "github".
*/
source: "github";
+ /**
+ * GitHub repository in `owner/repo` form.
+ */
repo: string;
+ /**
+ * Optional Git ref to resolve.
+ */
ref?: string;
/**
* Optional full 40-character hexadecimal commit SHA.
*/
sha?: string;
+ /**
+ * Optional repository-relative path to the plugin.
+ */
path?: string;
}
/**
@@ -6982,12 +7494,21 @@ export interface InstalledPluginSourceUrl {
* Constant value. Always "url".
*/
source: "url";
+ /**
+ * URL of the plugin source.
+ */
url: string;
+ /**
+ * Optional Git ref to resolve.
+ */
ref?: string;
/**
* Optional full 40-character hexadecimal commit SHA.
*/
sha?: string;
+ /**
+ * Optional source-relative path to the plugin.
+ */
path?: string;
}
/**
@@ -7002,6 +7523,9 @@ export interface InstalledPluginSourceLocal {
* Constant value. Always "local".
*/
source: "local";
+ /**
+ * Local filesystem path to the plugin.
+ */
path: string;
}
/**
@@ -7999,7 +8523,7 @@ export interface McpConfigAddRequest {
* Unique name for the MCP server
*/
name: string;
- config: McpServerConfig;
+ config: McpSerializableServerConfig;
}
/**
* Stdio MCP server configuration launched as a child process.
@@ -8009,6 +8533,11 @@ export interface McpConfigAddRequest {
*/
/** @experimental */
export interface McpServerConfigStdio {
+ /**
+ * Optional human-readable server name.
+ */
+ displayName?: string;
+ safeForTelemetry?: McpSafeForTelemetry;
/**
* Tools to include. Defaults to all tools if not specified.
*/
@@ -8019,7 +8548,7 @@ export interface McpServerConfigStdio {
isDefaultServer?: boolean;
filterMapping?: FilterMapping;
/**
- * Timeout in milliseconds for tool calls to this server.
+ * Timeout in milliseconds for tool discovery and tool calls.
*/
timeout?: number;
oidc?: McpServerAuthConfig;
@@ -8029,6 +8558,43 @@ export interface McpServerConfigStdio {
* Set to true to disable persisted MCP tool snapshots for this server. Live tool discovery is unaffected.
*/
disableToolCache?: boolean;
+ /**
+ * Whether secret masking is disabled for calls to this server.
+ */
+ disableSecretMasking?: boolean;
+ /**
+ * Tool names excluded after the include filter is applied.
+ */
+ excludeTools?: string[];
+ /**
+ * Event types this server receives as Copilot notifications.
+ */
+ events?: string[];
+ /**
+ * Copilot notification types this server may send to the host.
+ */
+ notifications?: string[];
+ source?: McpServerSource;
+ /**
+ * Plugin that provided this server.
+ */
+ sourcePlugin?: string;
+ /**
+ * Version of the plugin that provided this server.
+ */
+ sourcePluginVersion?: string;
+ /**
+ * Whether the providing plugin uses the Open Plugin Spec.
+ */
+ sourcePluginSpec?: boolean;
+ /**
+ * Source file path recorded while loading the config.
+ */
+ sourcePath?: string;
+ /**
+ * Configuration warnings recorded while loading the server.
+ */
+ configWarnings?: string[];
/**
* Executable command used to start the Stdio MCP server process.
*/
@@ -8047,6 +8613,24 @@ export interface McpServerConfigStdio {
env?: {
[k: string]: string | undefined;
};
+ type?: McpServerConfigStdioType;
+}
+/**
+ * Per-field MCP telemetry-obfuscation policy.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpSafeForTelemetryFields".
+ */
+/** @experimental */
+export interface McpSafeForTelemetryFields {
+ /**
+ * Whether the MCP tool name may be included in telemetry without obfuscation.
+ */
+ name: boolean;
+ /**
+ * Whether MCP tool input names may be included in telemetry without obfuscation.
+ */
+ inputsNames: boolean;
}
/**
* Authentication settings with optional redirect port configuration.
@@ -8069,6 +8653,11 @@ export interface McpServerAuthConfigRedirectPort {
*/
/** @experimental */
export interface McpServerConfigHttp {
+ /**
+ * Optional human-readable server name.
+ */
+ displayName?: string;
+ safeForTelemetry?: McpSafeForTelemetry;
/**
* Tools to include. Defaults to all tools if not specified.
*/
@@ -8080,7 +8669,7 @@ export interface McpServerConfigHttp {
isDefaultServer?: boolean;
filterMapping?: FilterMapping;
/**
- * Timeout in milliseconds for tool calls to this server.
+ * Timeout in milliseconds for tool discovery and tool calls.
*/
timeout?: number;
oidc?: McpServerAuthConfig;
@@ -8090,6 +8679,43 @@ export interface McpServerConfigHttp {
* Set to true to disable persisted MCP tool snapshots for this server. Live tool discovery is unaffected.
*/
disableToolCache?: boolean;
+ /**
+ * Whether secret masking is disabled for calls to this server.
+ */
+ disableSecretMasking?: boolean;
+ /**
+ * Tool names excluded after the include filter is applied.
+ */
+ excludeTools?: string[];
+ /**
+ * Event types this server receives as Copilot notifications.
+ */
+ events?: string[];
+ /**
+ * Copilot notification types this server may send to the host.
+ */
+ notifications?: string[];
+ source?: McpServerSource;
+ /**
+ * Plugin that provided this server.
+ */
+ sourcePlugin?: string;
+ /**
+ * Version of the plugin that provided this server.
+ */
+ sourcePluginVersion?: string;
+ /**
+ * Whether the providing plugin uses the Open Plugin Spec.
+ */
+ sourcePluginSpec?: boolean;
+ /**
+ * Source file path recorded while loading the config.
+ */
+ sourcePath?: string;
+ /**
+ * Configuration warnings recorded while loading the server.
+ */
+ configWarnings?: string[];
/**
* URL of the remote MCP server endpoint.
*/
@@ -8100,6 +8726,10 @@ export interface McpServerConfigHttp {
headers?: {
[k: string]: string | undefined;
};
+ /**
+ * Dynamic-header refresh cache lifetime in milliseconds.
+ */
+ headersRefreshTtlMs?: number;
/**
* OAuth client ID for a pre-registered remote MCP OAuth client.
*/
@@ -8148,7 +8778,7 @@ export interface McpConfigList {
* All MCP servers from user config, keyed by name
*/
servers: {
- [k: string]: McpServerConfig;
+ [k: string]: McpSerializableServerConfig;
};
}
/**
@@ -8176,7 +8806,7 @@ export interface McpConfigUpdateRequest {
* Name of the MCP server to update
*/
name: string;
- config: McpServerConfig;
+ config: McpSerializableServerConfig;
}
/**
* Opaque auth info used to configure GitHub MCP.
@@ -8301,6 +8931,23 @@ export interface McpExecuteSamplingRequest {
export interface McpExecuteSamplingResult {
[k: string]: unknown | undefined;
}
+/**
+ * MCP server whose connection attempt failed.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpFailedServer".
+ */
+/** @experimental */
+export interface McpFailedServer {
+ /**
+ * The config key of the server that failed to connect.
+ */
+ name: string;
+ /**
+ * The captured connection failure detail.
+ */
+ error?: string;
+}
/**
* MCP server filtered by policy, with name, reason, and optional redacted reason.
*
@@ -8607,6 +9254,19 @@ export interface McpOauthLoginResult {
*/
authorizationUrl?: string;
}
+/**
+ * Remote MCP server name for a passive OAuth status probe.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpOauthProbeRequest".
+ */
+/** @experimental */
+export interface McpOauthProbeRequest {
+ /**
+ * Name of the configured remote MCP server to probe.
+ */
+ serverName: string;
+}
/**
* Pending MCP OAuth request id to respond to.
*
@@ -8665,6 +9325,34 @@ export interface McpRegisterExternalClientRequest {
*/
config: OpaqueInProcessValue;
}
+/**
+ * In-process MCP reload configuration.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpReloadConfig".
+ */
+/** @experimental */
+/** @internal */
+export interface McpReloadConfig {
+ mcpServers: {
+ [k: string]: McpServerConfig | undefined;
+ };
+ disabledServers?: string[];
+ enabledServers?: string[];
+ /**
+ * Server names the CLI enabled for this session via `--enable-mcp-server`.
+ */
+ cliEnabledServers?: string[];
+ mcp3pEnabled?: boolean;
+ includeWorkspaceSources?: boolean;
+ configFilter?: OpaqueInProcessValue;
+ githubMcpToolOptions?: OpaqueInProcessValue;
+ githubMcpUserOverride?: boolean;
+ secretStore?: OpaqueInProcessValue;
+ activeGitHubToken?: string;
+ useCachedToolSnapshots?: boolean;
+ forceRestart?: boolean;
+}
/**
* Opaque MCP reload configuration.
*
@@ -8674,12 +9362,7 @@ export interface McpRegisterExternalClientRequest {
/** @experimental */
/** @internal */
export interface McpReloadWithConfigRequest {
- /**
- * Opaque runtime MCP reload configuration. Marked internal: an in-process runtime shape (reloadMcpServers throws over the wire).
- *
- * @internal
- */
- config: OpaqueInProcessValue;
+ config: unknown;
}
/**
* Indicates whether the auto-managed `github` MCP server was removed (false when nothing to remove).
@@ -8989,7 +9672,7 @@ export interface McpRestartServerRequest {
* Name of the MCP server to restart
*/
serverName: string;
- config?: McpServerConfig;
+ config?: McpSerializableServerConfig;
}
/**
* Outcome of an MCP sampling execution: success result, failure error, or cancellation.
@@ -9033,6 +9716,84 @@ export interface McpServer {
*/
error?: string;
}
+/**
+ * In-process MCP server configuration used by embedded SDK clients.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpServerConfigMemory".
+ */
+/** @experimental */
+/** @internal */
+export interface McpServerConfigMemory {
+ type: McpServerConfigMemoryType;
+ /**
+ * In-process MCP server instance. This value cannot cross a JSON-RPC boundary.
+ *
+ * @internal
+ */
+ serverInstance: OpaqueInProcessValue;
+ /**
+ * Tools to include. Defaults to all tools if not specified.
+ */
+ tools?: string[];
+ /**
+ * Optional human-readable server name.
+ */
+ displayName?: string;
+ /**
+ * Whether this server is a built-in fallback.
+ */
+ isDefaultServer?: boolean;
+ filterMapping?: FilterMapping;
+ safeForTelemetry?: McpSafeForTelemetry;
+ /**
+ * Timeout in milliseconds for tool discovery and tool calls.
+ */
+ timeout?: number;
+ oidc?: McpServerAuthConfig;
+ deferTools?: McpServerConfigDeferTools;
+ /**
+ * Whether persisted tool snapshots are disabled.
+ */
+ disableToolCache?: boolean;
+ /**
+ * Whether secret masking is disabled for calls to this server.
+ */
+ disableSecretMasking?: boolean;
+ /**
+ * Tool names excluded after the include filter is applied.
+ */
+ excludeTools?: string[];
+ /**
+ * Event types this server receives as Copilot notifications.
+ */
+ events?: string[];
+ /**
+ * Copilot notification types this server may send to the host.
+ */
+ notifications?: string[];
+ source?: McpServerSource;
+ /**
+ * Plugin that provided this server.
+ */
+ sourcePlugin?: string;
+ /**
+ * Version of the plugin that provided this server.
+ */
+ sourcePluginVersion?: string;
+ /**
+ * Whether the providing plugin uses the Open Plugin Spec.
+ */
+ sourcePluginSpec?: boolean;
+ /**
+ * Source file path recorded while loading the config.
+ */
+ sourcePath?: string;
+ /**
+ * Configuration warnings recorded while loading the server.
+ */
+ configWarnings?: string[];
+}
/**
* MCP servers configured for the session, with their connection status and host-level state.
*
@@ -9079,7 +9840,7 @@ export interface McpStartServerRequest {
* Name of the MCP server to start
*/
serverName: string;
- config?: McpServerConfig;
+ config?: McpSerializableServerConfig;
}
/**
* MCP server startup filtering result.
@@ -9097,6 +9858,10 @@ export interface McpStartServersResult {
* Non-default servers allowed by policy
*/
allowedServers?: McpAllowedServer[];
+ /**
+ * Servers whose connection attempt failed.
+ */
+ failedServers?: McpFailedServer[];
}
/**
* Server name for an individual MCP server stop.
@@ -9111,6 +9876,19 @@ export interface McpStopServerRequest {
*/
serverName: string;
}
+/**
+ * Metadata controlling an MCP task's lifetime.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "McpTaskMetadata".
+ */
+/** @experimental */
+export interface McpTaskMetadata {
+ /**
+ * Task time-to-live.
+ */
+ ttl?: number;
+}
/**
* Server name identifying the external client to remove.
*
@@ -9407,6 +10185,14 @@ export interface Model {
* Supported reasoning effort levels (only present if model supports reasoning effort)
*/
supportedReasoningEfforts?: string[];
+ /**
+ * Default reasoning effort level (only present if model supports reasoning effort)
+ */
+ defaultReasoningEffort?: string;
+ /**
+ * Context-window tiers this model offers, when the provider advertises them independently of tiered token pricing. Copilot models carry their tiers in `billing.tokenPrices`; a provider that has no pricing to publish (an agent host reached over AHP, for example) declares them here instead, so the model picker can still offer the tier toggle.
+ */
+ supportedContextTiers?: string[];
modelPickerCategory?: ModelPickerCategory;
modelPickerPriceCategory?: ModelPickerPriceCategory;
}
@@ -9762,6 +10548,7 @@ export interface ModelSwitchToRequest {
verbosity?: Verbosity;
modelCapabilities?: ModelCapabilitiesOverride;
contextTier?: ContextTier;
+ source?: ModelChangeSource;
/**
* When true, defer this switch (enqueue it) if another model change is already queued, even when no turn is active — so it drains last (FIFO) and wins over the already-queued change. Intended for genuine user-initiated model selections; internal restore/reapply switches omit it and apply immediately when no turn is active. When no other model change is queued this has no effect (a switch still applies immediately unless a turn is active).
*/
@@ -9906,7 +10693,13 @@ export interface NameSetRequest {
*/
/** @experimental */
export interface OptionsUpdateAdditionalContentExclusionPolicy {
+ /**
+ * Content-exclusion rules to apply.
+ */
rules: OptionsUpdateAdditionalContentExclusionPolicyRule[];
+ /**
+ * Opaque policy update timestamp supplied by the host.
+ */
last_updated_at: JsonValue;
scope: OptionsUpdateAdditionalContentExclusionPolicyScope;
}
@@ -9918,8 +10711,17 @@ export interface OptionsUpdateAdditionalContentExclusionPolicy {
*/
/** @experimental */
export interface OptionsUpdateAdditionalContentExclusionPolicyRule {
+ /**
+ * Path patterns covered by this rule.
+ */
paths: string[];
+ /**
+ * Conditions of which at least one must match.
+ */
ifAnyMatch?: string[];
+ /**
+ * Conditions none of which may match.
+ */
ifNoneMatch?: string[];
source: OptionsUpdateAdditionalContentExclusionPolicyRuleSource;
}
@@ -9931,7 +10733,13 @@ export interface OptionsUpdateAdditionalContentExclusionPolicyRule {
*/
/** @experimental */
export interface OptionsUpdateAdditionalContentExclusionPolicyRuleSource {
+ /**
+ * Name of the policy source.
+ */
name: string;
+ /**
+ * Type of the policy source.
+ */
type: string;
}
/**
@@ -10158,6 +10966,29 @@ export interface PermissionDecisionApproveForSessionApprovalExtensionPermissionA
*/
extensionName: string;
}
+/**
+ * Session-scoped approval details for an extension's access to sensitive environment variables, keyed by extension name and the exact set of variable names.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "PermissionDecisionApproveForSessionApprovalExtensionEnvAccess".
+ */
+/** @experimental */
+export interface PermissionDecisionApproveForSessionApprovalExtensionEnvAccess {
+ /**
+ * Approval covering an extension's request to read sensitive environment variables.
+ */
+ kind: "extension-env-access";
+ /**
+ * Extension name.
+ */
+ extensionName: string;
+ /**
+ * Names of the sensitive environment variables this approval covers. Values are never persisted.
+ *
+ * @minItems 1
+ */
+ environmentVariables: [string, ...string[]];
+}
/**
* Permission-decision request variant to approve and persist a permission for a project location, with approval details and location key.
*
@@ -10338,6 +11169,29 @@ export interface PermissionDecisionApproveForLocationApprovalExtensionPermission
*/
extensionName: string;
}
+/**
+ * Location-scoped approval details for an extension's access to sensitive environment variables, keyed by extension name and the exact set of variable names.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "PermissionDecisionApproveForLocationApprovalExtensionEnvAccess".
+ */
+/** @experimental */
+export interface PermissionDecisionApproveForLocationApprovalExtensionEnvAccess {
+ /**
+ * Approval covering an extension's request to read sensitive environment variables.
+ */
+ kind: "extension-env-access";
+ /**
+ * Extension name.
+ */
+ extensionName: string;
+ /**
+ * Names of the sensitive environment variables this approval covers. Values are never persisted.
+ *
+ * @minItems 1
+ */
+ environmentVariables: [string, ...string[]];
+}
/**
* Permission-decision request variant to permanently approve a URL domain across sessions.
*
@@ -10743,6 +11597,29 @@ export interface PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAc
*/
extensionName: string;
}
+/**
+ * Location-persisted tool approval details for an extension's access to sensitive environment variables, keyed by extension name and the exact set of variable names.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess".
+ */
+/** @experimental */
+export interface PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess {
+ /**
+ * Approval covering an extension's request to read sensitive environment variables.
+ */
+ kind: "extension-env-access";
+ /**
+ * Extension name.
+ */
+ extensionName: string;
+ /**
+ * Names of the sensitive environment variables this approval covers. Values are never persisted.
+ *
+ * @minItems 1
+ */
+ environmentVariables: [string, ...string[]];
+}
/**
* Working directory to load persisted location permissions for.
*
@@ -10984,7 +11861,13 @@ export interface PermissionRulesSet {
*/
/** @experimental */
export interface PermissionsConfigureAdditionalContentExclusionPolicy {
+ /**
+ * Content-exclusion rules to apply.
+ */
rules: PermissionsConfigureAdditionalContentExclusionPolicyRule[];
+ /**
+ * Opaque policy update timestamp supplied by the host.
+ */
last_updated_at: JsonValue;
scope: PermissionsConfigureAdditionalContentExclusionPolicyScope;
}
@@ -10996,8 +11879,17 @@ export interface PermissionsConfigureAdditionalContentExclusionPolicy {
*/
/** @experimental */
export interface PermissionsConfigureAdditionalContentExclusionPolicyRule {
+ /**
+ * Path patterns covered by this rule.
+ */
paths: string[];
+ /**
+ * Conditions of which at least one must match.
+ */
ifAnyMatch?: string[];
+ /**
+ * Conditions none of which may match.
+ */
ifNoneMatch?: string[];
source: PermissionsConfigureAdditionalContentExclusionPolicyRuleSource;
}
@@ -11009,7 +11901,13 @@ export interface PermissionsConfigureAdditionalContentExclusionPolicyRule {
*/
/** @experimental */
export interface PermissionsConfigureAdditionalContentExclusionPolicyRuleSource {
+ /**
+ * Name of the policy source.
+ */
name: string;
+ /**
+ * Type of the policy source.
+ */
type: string;
}
/**
@@ -11527,6 +12425,21 @@ export interface PluginListResult {
*/
plugins: InstalledPluginInfo[];
}
+/**
+ * Trusted built-in plugin directories to use for this runtime process.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "PluginsBuiltinSetRequest".
+ */
+/** @experimental */
+export interface PluginsBuiltinSetRequest {
+ /**
+ * Complete replacement set of trusted built-in plugin directories. Every entry must be an absolute local filesystem path no longer than 4096 characters.
+ *
+ * @maxItems 64
+ */
+ paths: string[];
+}
/**
* Plugin names (or specs) to disable.
*
@@ -12454,6 +13367,9 @@ export interface QueueDeferSessionIdleRequest {
*/
/** @experimental */
export interface QueueDuplicateAtRequest {
+ /**
+ * Stable opaque ID of the queued item to duplicate.
+ */
id: string;
}
/**
@@ -12683,6 +13599,9 @@ export interface QueuePendingItemsResult {
*/
/** @experimental */
export interface QueueRemoveAtRequest {
+ /**
+ * Stable opaque ID of the queued item to remove.
+ */
id: string;
}
/**
@@ -12719,6 +13638,9 @@ export interface QueueRemoveMostRecentResult {
*/
/** @experimental */
export interface QueueSendNowRequest {
+ /**
+ * Stable opaque ID of the queued item to steer into the live turn.
+ */
id: string;
}
/**
@@ -12742,6 +13664,9 @@ export interface QueueSendNowResult {
*/
/** @experimental */
export interface QueueSetDrainPausedRequest {
+ /**
+ * Whether queued-lane draining should be paused.
+ */
paused: boolean;
}
/**
@@ -12777,8 +13702,17 @@ export interface QueueSnapshotResult {
*/
/** @experimental */
export interface QueueUpdateTextRequest {
+ /**
+ * Stable opaque ID of the queued item to edit.
+ */
id: string;
+ /**
+ * Replacement prompt sent to the model.
+ */
prompt: string;
+ /**
+ * Optional replacement prompt displayed to the user.
+ */
displayPrompt?: string;
}
/**
@@ -12991,7 +13925,7 @@ export interface RemoteControlStatusActive {
*/
isSteerable: boolean;
/**
- * In-process prompt-manager handle (CLI-only optimization). Marked internal: this field is excluded from the public SDK surface. When the CLI migrates to a process-separated SDK, the same bidirectional prompt-routing handshake is expressed via dedicated remote-control RPCs (register/resolve) rather than a shared in-process object.
+ * In-process prompt-manager handle (CLI-only optimization). Marked internal: this field is excluded from the public SDK surface. Retained as an optional compatibility field; native remote control does not populate or consume it.
*
* @internal
*/
@@ -13200,6 +14134,11 @@ export interface RemoteSessionMetadataValue {
* Server-side task state returned by GitHub.
*/
state?: string;
+ hostStatus?: RemoteSessionHostStatus;
+ /**
+ * Host-supplied human description of what the session is doing right now ("running tests", "waiting for approval"). Optional in the protocol and absent on hosts that do not publish it, so never rely on it -- it enriches `hostStatus`, it does not replace it.
+ */
+ hostActivity?: string;
}
/**
* Repository context for the remote session.
@@ -13241,7 +14180,7 @@ export interface SandboxConfig {
addCurrentWorkingDirectory?: boolean;
auth?: SandboxConfigAuth;
/**
- * Whether to auto-grant read access to common developer-tool caches, registries, and toolchains in their default home locations (cargo, go, npm, Maven, and more), plus read-write access to (and, on Unix, up-front creation of) the scratch caches builds write on every run (go-build, ccache, sccache, Gradle caches, Cargo lock/tracker files), so builds work without extra configuration; a relocated CARGO_HOME additionally gets its Cargo lock files granted read-write. Default: true (enabled by default; set to false to opt out).
+ * Whether to auto-grant read access to the tool directories discovered on PATH and in toolchain environment variables (GOROOT, CARGO_HOME, JAVA_HOME, VIRTUAL_ENV, and similar), and to common developer-tool caches, registries, and toolchains in their default home locations (cargo, go, npm, Maven, and more), plus read-write access to (and, on Unix, up-front creation of) the scratch caches builds write on every run (go-build, ccache, sccache, Gradle caches, Cargo lock/tracker files), so builds work without extra configuration; a relocated CARGO_HOME additionally gets its Cargo lock files granted read-write. Set to false to disable every grant listed above: user-installed toolchains (rustup, nvm, pyenv, conda, pipx) then need explicit userPolicy.filesystem entries — readonlyPaths to read them, plus readwriteFiles for a relocated CARGO_HOME's .package-cache and .global-cache, which Cargo locks on every build. Only these developer-tool grants are affected: the working directory (see addCurrentWorkingDirectory), temporary storage, session log paths, and system locations follow their own rules and stay granted, so commands still run. Default: true (enabled by default; set to false to opt out).
*/
allowDevToolAccess?: boolean;
}
@@ -13925,6 +14864,41 @@ export interface SessionActivity {
*/
hasActiveWork: boolean;
}
+/**
+ * Internal GitHub login parameters.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "SessionAuthLoginRequest".
+ */
+/** @experimental */
+export interface SessionAuthLoginRequest {
+ /**
+ * GitHub host URL
+ */
+ host: string;
+ /**
+ * GitHub login
+ */
+ login: string;
+ /**
+ * GitHub authentication token
+ */
+ token: string;
+ /**
+ * Whether to persist the token after login
+ */
+ persist?: boolean;
+}
+/**
+ * Parameters identifying a GitHub authentication to log out.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "SessionAuthLogoutUserRequest".
+ */
+/** @experimental */
+export interface SessionAuthLogoutUserRequest {
+ authInfo: AuthInfo;
+}
/**
* Authentication status and account metadata for the session.
*
@@ -13955,6 +14929,20 @@ export interface SessionAuthStatus {
*/
copilotPlan?: string;
}
+/**
+ * Parameters for switching the session's active authentication.
+ *
+ * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema
+ * via the `definition` "SessionAuthSwitchRequest".
+ */
+/** @experimental */
+export interface SessionAuthSwitchRequest {
+ authInfo: AuthInfo;
+ /**
+ * Optional token paired with the authentication information
+ */
+ token?: string;
+}
/**
* Map of sessionId -> bytes freed by removing the session's workspace directory.
*
@@ -14349,6 +15337,9 @@ export interface SessionFsSqliteQueryResult {
/** @experimental */
export interface SessionFsSqliteTransactionError {
errorClass: SessionFsSqliteTransactionErrorClass;
+ /**
+ * Human-readable transaction failure message.
+ */
message: string;
}
/**
@@ -14363,6 +15354,9 @@ export interface SessionFsSqliteTransactionRequest {
* Target session identifier
*/
sessionId: string;
+ /**
+ * Ordered SQL statements to execute in one transaction.
+ */
statements: SessionFsSqliteTransactionStatement[];
}
/**
@@ -14393,6 +15387,9 @@ export interface SessionFsSqliteTransactionStatement {
*/
/** @experimental */
export interface SessionFsSqliteTransactionResult {
+ /**
+ * Per-statement query results in input order.
+ */
results: SessionFsSqliteQueryResult[];
error?: SessionFsSqliteTransactionError;
}
@@ -14518,12 +15515,21 @@ export interface SessionInstalledPluginSourceGitHub {
* Constant value. Always "github".
*/
source: "github";
+ /**
+ * GitHub repository in `owner/repo` form.
+ */
repo: string;
+ /**
+ * Optional Git ref to resolve.
+ */
ref?: string;
/**
* Optional full 40-character hexadecimal commit SHA.
*/
sha?: string;
+ /**
+ * Optional repository-relative path to the plugin.
+ */
path?: string;
}
/**
@@ -14538,12 +15544,21 @@ export interface SessionInstalledPluginSourceUrl {
* Constant value. Always "url".
*/
source: "url";
+ /**
+ * URL of the plugin source.
+ */
url: string;
+ /**
+ * Optional Git ref to resolve.
+ */
ref?: string;
/**
* Optional full 40-character hexadecimal commit SHA.
*/
sha?: string;
+ /**
+ * Optional source-relative path to the plugin.
+ */
path?: string;
}
/**
@@ -14558,6 +15573,9 @@ export interface SessionInstalledPluginSourceLocal {
* Constant value. Always "local".
*/
source: "local";
+ /**
+ * Local filesystem path to the plugin.
+ */
path: string;
}
/**
@@ -14805,6 +15823,9 @@ export interface SessionModelList {
*/
/** @experimental */
export interface SessionModelPriceCategory {
+ /**
+ * CAPI model identifier.
+ */
id: string;
priceCategory: ModelPickerPriceCategory;
}
@@ -15109,7 +16130,13 @@ export interface ShellInitScript {
*/
/** @experimental */
export interface SessionOpenOptionsAdditionalContentExclusionPolicy {
+ /**
+ * Content-exclusion rules to apply.
+ */
rules: SessionOpenOptionsAdditionalContentExclusionPolicyRule[];
+ /**
+ * Opaque policy update timestamp supplied by the host.
+ */
last_updated_at: JsonValue;
scope: SessionOpenOptionsAdditionalContentExclusionPolicyScope;
}
@@ -15121,8 +16148,17 @@ export interface SessionOpenOptionsAdditionalContentExclusionPolicy {
*/
/** @experimental */
export interface SessionOpenOptionsAdditionalContentExclusionPolicyRule {
+ /**
+ * Path patterns covered by this rule.
+ */
paths: string[];
+ /**
+ * Conditions of which at least one must match.
+ */
ifAnyMatch?: string[];
+ /**
+ * Conditions none of which may match.
+ */
ifNoneMatch?: string[];
source: SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource;
}
@@ -15134,7 +16170,13 @@ export interface SessionOpenOptionsAdditionalContentExclusionPolicyRule {
*/
/** @experimental */
export interface SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource {
+ /**
+ * Name of the policy source.
+ */
name: string;
+ /**
+ * Type of the policy source.
+ */
type: string;
}
/**
@@ -15493,7 +16535,13 @@ export interface SessionSetCredentialsResult {
*/
/** @experimental */
export interface SessionSettingsBuiltInToolAvailabilitySnapshot {
+ /**
+ * Whether the report-progress tool is available.
+ */
reportProgress?: boolean;
+ /**
+ * Whether the create-pull-request tool is available.
+ */
createPullRequest?: boolean;
}
/**
@@ -15518,6 +16566,9 @@ export interface SessionSettingsEvaluatePredicateRequest {
*/
/** @experimental */
export interface SessionSettingsEvaluatePredicateResult {
+ /**
+ * Whether the named settings predicate evaluated to enabled.
+ */
enabled: boolean;
}
/**
@@ -15528,7 +16579,13 @@ export interface SessionSettingsEvaluatePredicateResult {
*/
/** @experimental */
export interface SessionSettingsJobSnapshot {
+ /**
+ * GitHub Actions event type for the job.
+ */
eventType?: string;
+ /**
+ * Whether this is the workflow's trigger job.
+ */
isTriggerJob?: boolean;
builtInToolAvailability?: SessionSettingsBuiltInToolAvailabilitySnapshot;
}
@@ -15540,9 +16597,21 @@ export interface SessionSettingsJobSnapshot {
*/
/** @experimental */
export interface SessionSettingsModelSnapshot {
+ /**
+ * Selected model identifier.
+ */
model?: string;
+ /**
+ * Default reasoning effort for the selected model.
+ */
defaultReasoningEffort?: string;
+ /**
+ * Agent job identifier for the session.
+ */
instanceId?: string;
+ /**
+ * Agent service callback URL for job and progress updates.
+ */
callbackUrl?: string;
}
/**
@@ -15553,7 +16622,13 @@ export interface SessionSettingsModelSnapshot {
*/
/** @experimental */
export interface SessionSettingsOnlineEvaluationSnapshot {
+ /**
+ * Whether online evaluation is disabled.
+ */
disableOnlineEvaluation?: boolean;
+ /**
+ * Whether online-evaluation output-file generation is enabled.
+ */
enableOnlineEvaluationOutputFile?: boolean;
}
/**
@@ -15564,17 +16639,53 @@ export interface SessionSettingsOnlineEvaluationSnapshot {
*/
/** @experimental */
export interface SessionSettingsRepoSnapshot {
+ /**
+ * Repository name.
+ */
name?: string;
+ /**
+ * GitHub repository database ID.
+ */
id?: number;
+ /**
+ * Checked-out repository branch.
+ */
branch?: string;
+ /**
+ * Checked-out commit SHA.
+ */
commit?: string;
+ /**
+ * Whether the repository is writable.
+ */
readWrite?: boolean;
+ /**
+ * Repository owner login.
+ */
ownerName?: string;
+ /**
+ * GitHub repository owner database ID.
+ */
ownerId?: number;
+ /**
+ * GitHub server base URL.
+ */
serverUrl?: string;
+ /**
+ * GitHub server host name.
+ */
host?: string;
+ /**
+ * Protocol used to access the GitHub host.
+ */
hostProtocol?: string;
+ /**
+ * GitHub secret-scanning service URL.
+ */
secretScanningUrl?: string;
+ /**
+ * Number of commits in the pull request.
+ */
prCommitCount?: number;
}
/**
@@ -15585,9 +16696,21 @@ export interface SessionSettingsRepoSnapshot {
*/
/** @experimental */
export interface SessionSettingsSnapshot {
+ /**
+ * Agent runtime version selector copied from the session settings, such as `latest` or a runtime release identifier.
+ */
version?: string;
+ /**
+ * Name of the SDK client that created the session.
+ */
clientName?: string;
+ /**
+ * Session timeout in milliseconds.
+ */
timeoutMs?: number;
+ /**
+ * Session start time as Unix epoch milliseconds.
+ */
startTimeMs?: number;
repo: SessionSettingsRepoSnapshot;
model: SessionSettingsModelSnapshot;
@@ -15603,14 +16726,41 @@ export interface SessionSettingsSnapshot {
*/
/** @experimental */
export interface SessionSettingsValidationSnapshot {
+ /**
+ * General validation timeout budget in seconds.
+ */
timeout?: number;
+ /**
+ * Dependabot validation timeout budget in seconds.
+ */
dependabotTimeout?: number;
+ /**
+ * Whether CodeQL validation is enabled.
+ */
codeqlEnabled?: boolean;
+ /**
+ * Whether code-review validation is enabled.
+ */
codeReviewEnabled?: boolean;
+ /**
+ * Model used for code-review validation.
+ */
codeReviewModel?: string;
+ /**
+ * Whether advisory validation is enabled.
+ */
advisoryEnabled?: boolean;
+ /**
+ * Whether secret-scanning validation is enabled.
+ */
secretScanningEnabled?: boolean;
+ /**
+ * Whether the memory-store tool is enabled.
+ */
memoryStoreEnabled?: boolean;
+ /**
+ * Whether the memory-vote tool is enabled.
+ */
memoryVoteEnabled?: boolean;
}
/**
@@ -16814,6 +17964,10 @@ export interface TaskAgentInfo {
* Tool call ID associated with this agent task
*/
toolCallId: string;
+ /**
+ * Friendly, non-unique name intended for display
+ */
+ displayName?: string;
/**
* Short description of the task
*/
@@ -17180,7 +18334,7 @@ export interface TasksStartAgentRequest {
*/
prompt: string;
/**
- * Short name for the agent, used to generate a human-readable ID
+ * Friendly, non-unique name used when displaying the agent
*/
name: string;
/**
@@ -17437,11 +18591,20 @@ export interface UIElicitationArrayEnumFieldItems {
*/
/** @experimental */
export interface UIElicitationRequest {
+ mode?: McpElicitationFormMode;
/**
* Message describing what information is needed from the user
*/
message: string;
requestedSchema: UIElicitationSchema;
+ /**
+ * MCP request metadata.
+ */
+ _meta?: {
+ [k: string]: unknown | undefined;
+ };
+ task?: McpTaskMetadata;
+ [k: string]: unknown | undefined;
}
/**
* JSON Schema describing the form fields to present to the user
@@ -17644,6 +18807,13 @@ export interface UIElicitationSchemaPropertyNumber {
export interface UIElicitationResponse {
action: UIElicitationResponseAction;
content?: UIElicitationResponseContent;
+ /**
+ * MCP response metadata.
+ */
+ _meta?: {
+ [k: string]: unknown | undefined;
+ };
+ [k: string]: unknown | undefined;
}
/**
* The form values submitted by the user (present when action is 'accept')
@@ -18314,7 +19484,13 @@ export interface WorkspacesAddSummaryRequest {
*/
/** @experimental */
export interface WorkspacesAddSummaryResult {
+ /**
+ * Metadata for the persisted summary.
+ */
summary?: {};
+ /**
+ * Refreshed metadata for the containing workspace.
+ */
workspace?: {};
[k: string]: unknown | undefined;
}
@@ -18421,22 +19597,70 @@ export interface WorkspacesGetWorkspaceResult {
* Current workspace metadata, or null if not available
*/
workspace: {
+ /**
+ * Stable workspace identifier.
+ */
id: string;
+ /**
+ * Current working directory associated with the workspace.
+ */
cwd?: string;
+ /**
+ * Git repository root associated with the workspace.
+ */
git_root?: string;
+ /**
+ * Repository identifier associated with the workspace.
+ */
repository?: string;
host_type?: WorkspacesWorkspaceDetailsHostType;
+ /**
+ * Current Git branch.
+ */
branch?: string;
+ /**
+ * Workspace display name.
+ */
name?: string;
+ /**
+ * Name of the client that created the workspace.
+ */
client_name?: string;
+ /**
+ * Whether the workspace name was explicitly chosen by the user.
+ */
user_named?: boolean;
+ /**
+ * Number of persisted summaries in the workspace.
+ */
summary_count?: number;
+ /**
+ * Timestamp when the workspace was created.
+ */
created_at?: string;
+ /**
+ * Timestamp when the workspace was last updated.
+ */
updated_at?: string;
+ /**
+ * Whether the workspace session can be steered remotely.
+ */
remote_steerable?: boolean;
+ /**
+ * Mission Control task identifier associated with the workspace.
+ */
mc_task_id?: string;
+ /**
+ * Mission Control session identifier associated with the workspace.
+ */
mc_session_id?: string;
+ /**
+ * Most recent Mission Control event identifier observed for the workspace.
+ */
mc_last_event_id?: string;
+ /**
+ * Whether the per-session Chronicle upgrade prompt was dismissed for the workspace.
+ */
chronicle_sync_dismissed?: boolean;
} | null;
/**
@@ -19000,6 +20224,16 @@ export function createServerRpc(connection: MessageConnection) {
disable: async (params: PluginsDisableRequest): Promise =>
connection.sendRequest("plugins.disable", params),
/** @experimental */
+ builtin: {
+ /**
+ * Replaces this server's trusted built-in plugin directories while no sessions are active.
+ *
+ * @param params Trusted built-in plugin directories to use for this runtime process.
+ */
+ set: async (params: PluginsBuiltinSetRequest): Promise =>
+ connection.sendRequest("plugins.builtin.set", params),
+ },
+ /** @experimental */
marketplaces: {
/**
* Lists all registered marketplaces (defaults + user-added).
@@ -20380,6 +21614,15 @@ export function createSessionRpc(connection: MessageConnection, sessionId: strin
*/
login: async (params: McpOauthLoginRequest): Promise =>
connection.sendRequest("session.mcp.oauth.login", { sessionId, ...params }),
+ /**
+ * Passively probes a configured remote MCP server to classify whether OAuth is required or a cached/override token is accepted. Does not start OAuth, emit pending OAuth requests, or mutate MCP connection state.
+ *
+ * @param params Remote MCP server name for a passive OAuth status probe.
+ *
+ * @returns Passive MCP OAuth probe result. `authenticated` means the server accepted the probe request while an OAuth-origin access token was attached; it does not prove the server required or independently validated that token. The probe does not make a second unauthenticated request. Failed is an expected probe-domain outcome; JSON-RPC errors are reserved for API-call failures.
+ */
+ probe: async (params: McpOauthProbeRequest): Promise =>
+ connection.sendRequest("session.mcp.oauth.probe", { sessionId, ...params }),
/**
* Responds to a pending MCP OAuth authorization request by its request id.
*
@@ -21420,6 +22663,89 @@ export function createInternalSessionRpc(connection: MessageConnection, sessionI
sendSystemNotification: async (params: SendSystemNotificationRequest): Promise =>
connection.sendRequest("session.sendSystemNotification", { sessionId, ...params }),
/** @experimental */
+ gitHubAuth: {
+ /**
+ * Gets the current authentication information for internal session hosts.
+ *
+ * @returns Current authentication information, or null when no authentication is active.
+ */
+ getCurrentAuthInfo: async (): Promise =>
+ connection.sendRequest("session.gitHubAuth.getCurrentAuthInfo", { sessionId }),
+ /**
+ * Gets all authentication accounts available to the internal session host.
+ *
+ * @returns Authentication accounts available to the internal session host.
+ */
+ getAllAuthAvailable: async (): Promise =>
+ connection.sendRequest("session.gitHubAuth.getAllAuthAvailable", { sessionId }),
+ /**
+ * Refreshes Copilot account metadata for the current authentication.
+ *
+ * @returns Current authentication information, or null when no authentication is active.
+ */
+ refreshCopilotUser: async (): Promise =>
+ connection.sendRequest("session.gitHubAuth.refreshCopilotUser", { sessionId }),
+ /**
+ * Logs in a GitHub user through the internal session host.
+ *
+ * @param params Internal GitHub login parameters.
+ *
+ * @returns Initial authentication info for the session.
+ */
+ login: async (params: SessionAuthLoginRequest): Promise =>
+ connection.sendRequest("session.gitHubAuth.login", { sessionId, ...params }),
+ /**
+ * Switches the session to another available authentication.
+ *
+ * @param params Parameters for switching the session's active authentication.
+ */
+ switchToAuth: async (params: SessionAuthSwitchRequest): Promise =>
+ connection.sendRequest("session.gitHubAuth.switchToAuth", { sessionId, ...params }),
+ /**
+ * Logs out the session's current GitHub authentication.
+ *
+ * @returns Whether the current authentication was logged out.
+ */
+ logout: async (): Promise =>
+ connection.sendRequest("session.gitHubAuth.logout", { sessionId }),
+ /**
+ * Logs out a specific GitHub authentication.
+ *
+ * @param params Parameters identifying a GitHub authentication to log out.
+ *
+ * @returns Whether the requested authentication was logged out.
+ */
+ logoutUser: async (params: SessionAuthLogoutUserRequest): Promise =>
+ connection.sendRequest("session.gitHubAuth.logoutUser", { sessionId, ...params }),
+ /**
+ * Gets validation errors from the most recent authentication attempt.
+ *
+ * @returns Validation errors from the most recent authentication attempt.
+ */
+ lastAuthErrors: async (): Promise =>
+ connection.sendRequest("session.gitHubAuth.lastAuthErrors", { sessionId }),
+ },
+ /** @experimental */
+ canvas: {
+ /** @experimental */
+ provider: {
+ /**
+ * Registers an internal canvas provider connection and its contributions.
+ *
+ * @param params Internal canvas provider registration parameters.
+ */
+ register: async (params: CanvasProviderRegisterRequest): Promise =>
+ connection.sendRequest("session.canvas.provider.register", { sessionId, ...params }),
+ /**
+ * Unregisters an internal canvas provider connection.
+ *
+ * @param params Internal canvas provider unregistration parameters.
+ */
+ unregister: async (params: CanvasProviderUnregisterRequest): Promise =>
+ connection.sendRequest("session.canvas.provider.unregister", { sessionId, ...params }),
+ },
+ },
+ /** @experimental */
mcp: {
/**
* Reloads MCP server connections for the session with an explicit host-provided configuration.
diff --git a/nodejs/src/generated/session-events.ts b/nodejs/src/generated/session-events.ts
index 4bdfa1994..5e8525729 100644
--- a/nodejs/src/generated/session-events.ts
+++ b/nodejs/src/generated/session-events.ts
@@ -189,6 +189,32 @@ export type AutopilotObjectiveChangedStatus =
| "cap_reached"
/** Objective was completed by the agent. */
| "completed";
+/**
+ * Origin of an effective session model change.
+ */
+export type ModelChangeSource =
+ /** The user selected a model directly with `/model `. */
+ | "model_command"
+ /** The user selected the model with `/settings`. */
+ | "settings_command"
+ /** The user selected the model with the `/config` alias. */
+ | "config_command"
+ /** The user selected the model in the model picker, including the picker opened by bare `/model`. */
+ | "model_picker"
+ /** Organization-managed settings selected the model. */
+ | "managed_settings"
+ /** Repository settings selected the model. */
+ | "repo_settings"
+ /** Startup model resolution selected the model. */
+ | "startup"
+ /** Selecting an agent selected its configured model. */
+ | "agent"
+ /** Entering, leaving, or reconfiguring plan mode selected the model. */
+ | "plan_mode"
+ /** The runtime selected the model automatically, such as rate-limit recovery or refusal fallback. */
+ | "automatic"
+ /** An SDK or RPC caller selected the model. */
+ | "sdk";
/**
* The session mode the agent is operating in
*/
@@ -363,6 +389,14 @@ export type AssistantUsageApiEndpoint =
| "/responses"
/** WebSocket Responses API endpoint. */
| "ws:/responses";
+/**
+ * Transport used for a successful model call
+ */
+export type AssistantUsageTransport =
+ /** HTTP transport, including SSE streams. */
+ | "http"
+ /** WebSocket transport. */
+ | "websocket";
/**
* For HTTP 400 failures only: whether the response carried a structured CAPI error envelope (structured_error, a deterministic validation failure) or no error body (bodyless, the transient gateway/proxy signature). Absent for non-400 failures.
*/
@@ -549,7 +583,15 @@ export type PermissionRequest =
| PermissionRequestHook
| PermissionRequestExtensionManagement
| PermissionRequestFactory
- | PermissionRequestExtensionPermissionAccess;
+ | PermissionRequestExtensionPermissionAccess
+ | PermissionRequestExtensionEnvAccess;
+/**
+ * Advisory recommendation the runtime attaches to a permission request whose origin it can vouch for by construction. Unlike the auto-approval judge this does not depend on auto mode and does not evaluate what the tool call does; its absence simply means the runtime has no opinion and the request follows the host's normal approval flow.
+ */
+/** @experimental */
+export type PermissionRecommendation =
+ /** The runtime vouches for the request's origin and recommends approving it without prompting. The host still owns the decision and may deny it; deny rules, managed policy, and the auto-approval safety judge all outrank this recommendation. */
+ "approve";
/**
* Whether this is a store or vote memory operation
*/
@@ -589,7 +631,8 @@ export type PermissionPromptRequest =
| PermissionPromptRequestHook
| PermissionPromptRequestExtensionManagement
| PermissionPromptRequestFactory
- | PermissionPromptRequestExtensionPermissionAccess;
+ | PermissionPromptRequestExtensionPermissionAccess
+ | PermissionPromptRequestExtensionEnvAccess;
/**
* Why the auto-approval judge produced no usable recommendation. Present only alongside an `error` recommendation, where the human-readable reason is a fixed string and therefore cannot distinguish these cases. Intended to make a judge failure reportable by a consumer that has no access to the host's logs.
*/
@@ -653,7 +696,8 @@ export type UserToolSessionApproval =
| UserToolSessionApprovalCustomTool
| UserToolSessionApprovalExtensionManagement
| UserToolSessionApprovalFactory
- | UserToolSessionApprovalExtensionPermissionAccess;
+ | UserToolSessionApprovalExtensionPermissionAccess
+ | UserToolSessionApprovalExtensionEnvAccess;
/**
* Elicitation mode; "form" for structured input, "url" for browser-based. Defaults to "form" when absent.
*/
@@ -1659,6 +1703,7 @@ export interface ModelChangeData {
*/
reasoningEffort?: string | null;
reasoningSummary?: ReasoningSummary;
+ source?: ModelChangeSource;
verbosity?: Verbosity;
}
/**
@@ -3499,6 +3544,9 @@ export interface AssistantReasoningData {
* Unique identifier for this reasoning block
*/
reasoningId: string;
+ /**
+ * Per-request treatment/eligibility signal returned by the Copilot API in the `X-GitHub-Copilot-Request-TE` response header for the associated model call; `false` when the header was absent or unparseable.
+ */
rte?: boolean;
}
/**
@@ -3736,6 +3784,9 @@ export interface AssistantMessageData {
* GitHub request tracing ID (x-github-request-id header) for correlating with server-side logs
*/
requestId?: string;
+ /**
+ * Per-request treatment/eligibility signal returned by the Copilot API in the `X-GitHub-Copilot-Request-TE` response header for the associated model call; `false` when the header was absent or unparseable.
+ */
rte?: boolean;
serverTools?: AssistantMessageServerTools;
/**
@@ -3884,12 +3935,27 @@ export interface CitationLocationBlock {
*/
/** @experimental */
export interface AssistantMessageServerTools {
+ /**
+ * Advisor model identifier associated with the server-tool payload.
+ */
advisorModel?: string;
+ /**
+ * Provider function-call namespaces keyed by function-call identifier.
+ */
functionCallNamespaces?: {
[k: string]: string | undefined;
};
+ /**
+ * Provider-native server-tool call and output items preserved verbatim for replay.
+ */
items?: JsonValue[];
+ /**
+ * Model provider that produced this server-tool payload.
+ */
provider: string;
+ /**
+ * Raw provider content blocks retained for verbatim round-tripping.
+ */
rawContentBlocks?: JsonValue[];
}
/**
@@ -4133,6 +4199,10 @@ export interface AssistantUsageEvent {
* LLM API call usage metrics including tokens, costs, quotas, and billing information
*/
export interface AssistantUsageData {
+ /**
+ * Number of accepted speculative prediction tokens
+ */
+ acceptedPredictionTokens?: number;
/**
* Completion ID from the model provider (e.g., chatcmpl-abc123)
*/
@@ -4191,6 +4261,22 @@ export interface AssistantUsageData {
* Average inter-token latency in milliseconds. Only available for streaming requests
*/
interTokenLatencyMs?: number;
+ /**
+ * Whether Auto mode was selected for this model call
+ */
+ isAuto?: boolean;
+ /**
+ * Whether this model call used a bring-your-own-key provider
+ */
+ isByok?: boolean;
+ /**
+ * Requested maximum output tokens used for this model call
+ */
+ maxOutputTokens?: number;
+ /**
+ * Effective maximum prompt-token limit used for this model call
+ */
+ maxPromptTokens?: number;
/**
* Model identifier used for this API call
*/
@@ -4226,10 +4312,18 @@ export interface AssistantUsageData {
* Reasoning effort level used for model calls, if applicable (e.g. "none", "low", "medium", "high", "xhigh", "max")
*/
reasoningEffort?: string;
+ reasoningSummary?: ReasoningSummary;
/**
* Number of output tokens used for reasoning (e.g., chain-of-thought)
*/
reasoningTokens?: number;
+ /**
+ * Number of rejected speculative prediction tokens
+ */
+ rejectedPredictionTokens?: number;
+ /**
+ * Per-request treatment/eligibility signal returned by the Copilot API in the `X-GitHub-Copilot-Request-TE` response header for the associated model call; `false` when the header was absent or unparseable.
+ */
rte?: boolean;
/**
* Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation
@@ -4253,6 +4347,7 @@ export interface AssistantUsageData {
* @internal
*/
toolTokenCount?: number;
+ transport?: AssistantUsageTransport;
}
/**
* Per-request cost and usage data from the CAPI copilot_usage response field
@@ -4460,6 +4555,9 @@ export interface ModelCallFailureData {
*/
reasoningEffort?: string;
requestFingerprint?: ModelCallFailureRequestFingerprint;
+ /**
+ * Per-request treatment/eligibility signal returned by the Copilot API in the `X-GitHub-Copilot-Request-TE` response header for the associated model call; `false` when the header was absent or unparseable.
+ */
rte?: boolean;
/**
* Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation
@@ -4647,6 +4745,9 @@ export interface ToolExecutionStartData {
* Tool call ID of the parent tool invocation when this event originates from a sub-agent
*/
parentToolCallId?: string;
+ /**
+ * Per-request treatment/eligibility signal returned by the Copilot API in the `X-GitHub-Copilot-Request-TE` response header for the associated model call; `false` when the header was absent or unparseable.
+ */
rte?: boolean;
shellToolInfo?: ToolExecutionStartShellToolInfo;
/**
@@ -4860,6 +4961,9 @@ export interface ToolExecutionCompleteData {
*/
parentToolCallId?: string;
result?: ToolExecutionCompleteResult;
+ /**
+ * Per-request treatment/eligibility signal returned by the Copilot API in the `X-GitHub-Copilot-Request-TE` response header for the associated model call; `false` when the header was absent or unparseable.
+ */
rte?: boolean;
/**
* Whether this tool execution ran inside a sandbox container
@@ -5273,17 +5377,35 @@ export interface ToolExecutionCompleteUIResourceMeta {
*/
export interface ToolExecutionCompleteUIResourceMetaUI {
csp?: ToolExecutionCompleteUIResourceMetaUICsp;
+ /**
+ * Optional dedicated origin for the rendered MCP Apps UI resource.
+ */
domain?: string;
permissions?: ToolExecutionCompleteUIResourceMetaUIPermissions;
+ /**
+ * Whether the host should render a border around the MCP Apps UI resource.
+ */
prefersBorder?: boolean;
}
/**
* CSP domain allowlists for an MCP Apps UI resource, including connect, resource, frame, and base URI domains.
*/
export interface ToolExecutionCompleteUIResourceMetaUICsp {
+ /**
+ * Domains the UI resource may use as document base URIs.
+ */
baseUriDomains?: string[];
+ /**
+ * Domains the UI resource may connect to.
+ */
connectDomains?: string[];
+ /**
+ * Domains the UI resource may embed as nested frames.
+ */
frameDomains?: string[];
+ /**
+ * Domains from which the UI resource may load scripts, styles, images, and other resources.
+ */
resourceDomains?: string[];
}
/**
@@ -6060,7 +6182,7 @@ export interface SystemNotificationData {
*/
export interface SystemNotificationAgentCompleted {
/**
- * Unique identifier of the background agent
+ * Unique task identifier
*/
agentId: string;
/**
@@ -6071,6 +6193,10 @@ export interface SystemNotificationAgentCompleted {
* Human-readable description of the agent task
*/
description?: string;
+ /**
+ * Friendly, non-unique name intended for display
+ */
+ displayName?: string;
/**
* The full prompt given to the background agent
*/
@@ -6086,7 +6212,7 @@ export interface SystemNotificationAgentCompleted {
*/
export interface SystemNotificationAgentIdle {
/**
- * Unique identifier of the background agent
+ * Unique task identifier
*/
agentId: string;
/**
@@ -6097,6 +6223,10 @@ export interface SystemNotificationAgentIdle {
* Human-readable description of the agent task
*/
description?: string;
+ /**
+ * Friendly, non-unique name intended for display
+ */
+ displayName?: string;
/**
* Type discriminator. Always "agent_idle".
*/
@@ -6484,6 +6614,12 @@ export interface PermissionRequestMcp {
* Permission kind discriminator
*/
kind: "mcp";
+ /**
+ * Advisory runtime permission recommendation. The SDK host remains responsible for deciding the request and may reject it.
+ *
+ * @experimental
+ */
+ permissionRecommendation?: PermissionRecommendation;
/**
* Whether this MCP tool is read-only (no side effects)
*/
@@ -6656,9 +6792,21 @@ export interface PermissionRequestFactory {
* Whether this factory is eligible for persistent approval
*/
canPersistApproval: boolean;
+ /**
+ * Factory-declared AI-credit limit before any run/resume caller override is applied.
+ */
declaredMaxAiCredits?: number;
+ /**
+ * Factory-declared concurrent-subagent limit before any run/resume caller override is applied.
+ */
declaredMaxConcurrentSubagents?: number;
+ /**
+ * Factory-declared total-subagent limit before any run/resume caller override is applied.
+ */
declaredMaxTotalSubagents?: number;
+ /**
+ * Factory-declared active-time limit in seconds before any run/resume caller override is applied.
+ */
declaredTimeoutSeconds?: number;
/**
* Factory description
@@ -6732,6 +6880,29 @@ export interface PermissionRequestExtensionPermissionAccess {
*/
toolCallId?: string;
}
+/**
+ * Extension sensitive environment variable access request
+ */
+export interface PermissionRequestExtensionEnvAccess {
+ /**
+ * Names of the sensitive environment variables the extension is requesting. Values never appear here.
+ *
+ * @minItems 1
+ */
+ environmentVariables: [string, ...string[]];
+ /**
+ * Name of the extension requesting environment variable access
+ */
+ extensionName: string;
+ /**
+ * Permission kind discriminator
+ */
+ kind: "extension-env-access";
+ /**
+ * Tool call ID that triggered this permission request
+ */
+ toolCallId?: string;
+}
/**
* Shell command permission prompt
*/
@@ -6883,6 +7054,12 @@ export interface PermissionPromptRequestMcp {
* Prompt kind discriminator
*/
kind: "mcp";
+ /**
+ * Advisory runtime permission recommendation. The host remains responsible for deciding the request and may reject it.
+ *
+ * @experimental
+ */
+ permissionRecommendation?: PermissionRecommendation;
/**
* Name of the MCP server providing the tool
*/
@@ -7111,9 +7288,21 @@ export interface PermissionPromptRequestFactory {
* Whether this factory is eligible for persistent approval
*/
canPersistApproval: boolean;
+ /**
+ * Factory-declared AI-credit limit before any run/resume caller override is applied.
+ */
declaredMaxAiCredits?: number;
+ /**
+ * Factory-declared concurrent-subagent limit before any run/resume caller override is applied.
+ */
declaredMaxConcurrentSubagents?: number;
+ /**
+ * Factory-declared total-subagent limit before any run/resume caller override is applied.
+ */
declaredMaxTotalSubagents?: number;
+ /**
+ * Factory-declared active-time limit in seconds before any run/resume caller override is applied.
+ */
declaredTimeoutSeconds?: number;
/**
* Factory description
@@ -7184,6 +7373,35 @@ export interface PermissionPromptRequestExtensionPermissionAccess {
*/
toolCallId?: string;
}
+/**
+ * Extension sensitive environment variable access prompt
+ */
+export interface PermissionPromptRequestExtensionEnvAccess {
+ /**
+ * Auto-approval judge information for this request; present only when auto mode is enabled.
+ *
+ * @experimental
+ */
+ autoApproval?: PermissionAutoApproval;
+ /**
+ * Names of the sensitive environment variables the extension is requesting. Values never appear here.
+ *
+ * @minItems 1
+ */
+ environmentVariables: [string, ...string[]];
+ /**
+ * Name of the extension requesting environment variable access
+ */
+ extensionName: string;
+ /**
+ * Prompt kind discriminator
+ */
+ kind: "extension-env-access";
+ /**
+ * Tool call ID that triggered this permission request
+ */
+ toolCallId?: string;
+}
/**
* Session event "permission.completed". Permission request completion notification signaling UI dismissal
*/
@@ -7356,6 +7574,25 @@ export interface UserToolSessionApprovalExtensionPermissionAccess {
*/
kind: "extension-permission-access";
}
+/**
+ * Session-scoped tool-approval rule for an extension's access to sensitive environment variables, keyed by extension name and the exact set of variable names.
+ */
+export interface UserToolSessionApprovalExtensionEnvAccess {
+ /**
+ * Names of the sensitive environment variables this approval covers. Values are never persisted.
+ *
+ * @minItems 1
+ */
+ environmentVariables: [string, ...string[]];
+ /**
+ * Extension name
+ */
+ extensionName: string;
+ /**
+ * Extension environment access approval kind
+ */
+ kind: "extension-env-access";
+}
/**
* Permission response variant that approves a request and persists the provided approval to a project location key.
*/
@@ -8872,6 +9109,10 @@ export interface ExitPlanModeRequestedData {
* Available actions the user can take
*/
actions: ExitPlanModeAction[];
+ /**
+ * Model the session had selected when the plan was authored, when one is known
+ */
+ model?: string;
/**
* Full content of the plan file
*/
@@ -9051,6 +9292,9 @@ export interface FactoryRunUpdatedData {
* Monotonic revision now available for the run.
*/
revision: number;
+ /**
+ * Factory run identifier.
+ */
runId: string;
}
/**
diff --git a/python/copilot/generated/rpc.py b/python/copilot/generated/rpc.py
index 103149088..f2a8a91fc 100644
--- a/python/copilot/generated/rpc.py
+++ b/python/copilot/generated/rpc.py
@@ -6,7 +6,7 @@
from typing import ClassVar, TYPE_CHECKING
-from .session_events import AbortReason, Attachment, ContextTier, EmbeddedBlobResourceContents, EmbeddedTextResourceContents, McpServerSource, McpServerStatus, PermissionPromptRequest, PermissionRule, ReasoningSummary, SessionEvent, SessionLimitsConfig, SessionMode, ShutdownType, SkillSource, UserToolSessionApproval, Verbosity
+from .session_events import AbortReason, Attachment, ContextTier, EmbeddedBlobResourceContents, EmbeddedTextResourceContents, McpOauthHttpResponse, McpOauthWWWAuthenticateParams, McpServerSource, McpServerStatus, ModelChangeSource, PermissionPromptRequest, PermissionRule, ReasoningSummary, SessionEvent, SessionLimitsConfig, SessionMode, ShutdownType, SkillSource, UserToolSessionApproval, Verbosity
if TYPE_CHECKING:
from .._jsonrpc import JsonRpcClient
@@ -126,10 +126,19 @@ class CopilotUserResponseEndpoints:
"""Endpoint URLs from the raw Copilot `/copilot_internal/v2/token` user-response passthrough."""
api: str | None = None
+ """Copilot API endpoint URL."""
+
exp: str | None = None
+ """Experimental-service endpoint URL."""
+
origin_tracker: str | None = None
+ """Origin-tracker endpoint URL."""
+
proxy: str | None = None
+ """Copilot proxy endpoint URL."""
+
telemetry: str | None = None
+ """Copilot telemetry endpoint URL."""
@staticmethod
def from_dict(obj: Any) -> 'CopilotUserResponseEndpoints':
@@ -697,6 +706,33 @@ class PermissionsAllowAllMode(Enum):
class APIKeyAuthInfoType(Enum):
API_KEY = "api-key"
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class AuthValidationError:
+ """Validation error from an authentication attempt.
+
+ Validation errors from the most recent authentication attempt.
+ """
+ message: str
+ """Authentication validation error message"""
+
+ github_message: str | None = None
+ """Optional message returned by GitHub"""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'AuthValidationError':
+ assert isinstance(obj, dict)
+ message = from_str(obj.get("message"))
+ github_message = from_union([from_str, from_none], obj.get("githubMessage"))
+ return AuthValidationError(message, github_message)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["message"] = from_str(self.message)
+ if self.github_message is not None:
+ result["githubMessage"] = from_union([from_str, from_none], self.github_message)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class CancelUserRequestedShellCommandResult:
@@ -886,6 +922,54 @@ def to_dict(self) -> dict:
result["url"] = from_union([from_str, from_none], self.url)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class CanvasProviderRegisterRequest:
+ """Internal canvas provider registration parameters."""
+
+ canvases: list[Any]
+ """Canvas contributions supplied by the provider"""
+
+ connection_id: str
+ """Connection identifier for callback routing"""
+
+ info: Any
+ """Provider metadata supplied by the host"""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'CanvasProviderRegisterRequest':
+ assert isinstance(obj, dict)
+ canvases = from_list(lambda x: x, obj.get("canvases"))
+ connection_id = from_str(obj.get("connectionId"))
+ info = obj.get("info")
+ return CanvasProviderRegisterRequest(canvases, connection_id, info)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["canvases"] = from_list(lambda x: x, self.canvases)
+ result["connectionId"] = from_str(self.connection_id)
+ result["info"] = self.info
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class CanvasProviderUnregisterRequest:
+ """Internal canvas provider unregistration parameters."""
+
+ connection_id: str
+ """Connection identifier to unregister"""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'CanvasProviderUnregisterRequest':
+ assert isinstance(obj, dict)
+ connection_id = from_str(obj.get("connectionId"))
+ return CanvasProviderUnregisterRequest(connection_id)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["connectionId"] = from_str(self.connection_id)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class CapiSessionOptions:
@@ -2349,65 +2433,6 @@ def to_dict(self) -> dict:
result["result"] = self.result
return result
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class FactoryAgentSummary:
- """Prompt-safe durable identity and live status for a direct factory agent."""
-
- active_ms: int
- agent_id: str
- agent_type: str
- label: str
- run_id: str
- status: str
- tool_call_id: str
- activity: str | None = None
- completed_at: int | None = None
- phase_id: str | None = None
- requested_model: str | None = None
- resolved_model: str | None = None
- started_at: int | None = None
-
- @staticmethod
- def from_dict(obj: Any) -> 'FactoryAgentSummary':
- assert isinstance(obj, dict)
- active_ms = from_int(obj.get("activeMs"))
- agent_id = from_str(obj.get("agentId"))
- agent_type = from_str(obj.get("agentType"))
- label = from_str(obj.get("label"))
- run_id = from_str(obj.get("runId"))
- status = from_str(obj.get("status"))
- tool_call_id = from_str(obj.get("toolCallId"))
- activity = from_union([from_str, from_none], obj.get("activity"))
- completed_at = from_union([from_int, from_none], obj.get("completedAt"))
- phase_id = from_union([from_none, from_str], obj.get("phaseId"))
- requested_model = from_union([from_str, from_none], obj.get("requestedModel"))
- resolved_model = from_union([from_str, from_none], obj.get("resolvedModel"))
- started_at = from_union([from_int, from_none], obj.get("startedAt"))
- return FactoryAgentSummary(active_ms, agent_id, agent_type, label, run_id, status, tool_call_id, activity, completed_at, phase_id, requested_model, resolved_model, started_at)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["activeMs"] = from_int(self.active_ms)
- result["agentId"] = from_str(self.agent_id)
- result["agentType"] = from_str(self.agent_type)
- result["label"] = from_str(self.label)
- result["runId"] = from_str(self.run_id)
- result["status"] = from_str(self.status)
- result["toolCallId"] = from_str(self.tool_call_id)
- if self.activity is not None:
- result["activity"] = from_union([from_str, from_none], self.activity)
- if self.completed_at is not None:
- result["completedAt"] = from_union([from_int, from_none], self.completed_at)
- result["phaseId"] = from_union([from_none, from_str], self.phase_id)
- if self.requested_model is not None:
- result["requestedModel"] = from_union([from_str, from_none], self.requested_model)
- if self.resolved_model is not None:
- result["resolvedModel"] = from_union([from_str, from_none], self.resolved_model)
- if self.started_at is not None:
- result["startedAt"] = from_union([from_int, from_none], self.started_at)
- return result
-
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class FactoryCancelRequest:
@@ -2433,7 +2458,10 @@ class FactoryCurrentPhase:
"""Current factory phase identity."""
id: str
+ """Current phase identifier."""
+
ordinal: int | None = None
+ """Zero-based declared phase ordinal, or null for an undeclared phase."""
@staticmethod
def from_dict(obj: Any) -> 'FactoryCurrentPhase':
@@ -2451,12 +2479,21 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class FactoryDeclaredLimits:
- """Declared or approved factory resource ceilings."""
+ """Declared or approved factory resource ceilings.
+ Resource ceilings declared by the factory.
+ """
max_ai_credits: float | None = None
+ """Maximum AI credits consumed by subagents and descendants."""
+
max_concurrent_subagents: int | None = None
+ """Maximum concurrently active subagents."""
+
max_total_subagents: int | None = None
+ """Maximum total subagents spawned by the run."""
+
timeout_seconds: float | None = None
+ """Maximum accumulated active execution time in seconds."""
@staticmethod
def from_dict(obj: Any) -> 'FactoryDeclaredLimits':
@@ -2740,11 +2777,18 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class FactoryRunConsumed:
- """Durable factory resource consumption."""
+ """Durable resource consumption.
+ Durable factory resource consumption.
+ """
active_ms: int
+ """Accumulated active execution time in milliseconds."""
+
nano_aiu: int
+ """AI usage consumed by the run in nano-AIU."""
+
subagents: int
+ """Total subagents spawned by the run."""
@staticmethod
def from_dict(obj: Any) -> 'FactoryRunConsumed':
@@ -2763,7 +2807,9 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
class FactoryRunStatus(Enum):
- """Current or terminal state of a factory run.
+ """Current factory run status.
+
+ Current or terminal state of a factory run.
Current or terminal factory run status.
"""
@@ -2803,8 +2849,10 @@ class FactoryLogLineKind(Enum):
# Experimental: this type is part of an experimental API and may change or be removed.
class FactoryPhaseStatus(Enum):
- """Derived lifecycle state of a factory phase."""
+ """Derived lifecycle state of the phase.
+ Derived lifecycle state of a factory phase.
+ """
ACTIVE = "active"
COMPLETED = "completed"
PENDING = "pending"
@@ -3745,6 +3793,8 @@ class LlmInferenceHTTPResponseStartRequest:
"""Response head."""
headers: dict[str, list[str]]
+ """HTTP response headers, preserving multiple values per name."""
+
request_id: str
"""Matches the requestId from the originating httpRequestStart frame."""
@@ -4330,6 +4380,8 @@ def to_dict(self) -> dict:
class MCPServerConfigDeferTools(Enum):
"""Controls if tools provided by this server can be loaded on demand via tool search (auto)
or always included in the initial tool list (never)
+
+ Controls whether tools can be loaded on demand.
"""
AUTO = "auto"
NEVER = "never"
@@ -4347,11 +4399,40 @@ class MCPGrantType(Enum):
CLIENT_CREDENTIALS = "client_credentials"
# Experimental: this type is part of an experimental API and may change or be removed.
-class MCPServerConfigHTTPType(Enum):
- """Remote transport type. Defaults to "http" when omitted."""
+@dataclass
+class MCPSafeForTelemetryFields:
+ """Per-field MCP telemetry-obfuscation policy."""
+
+ inputs_names: bool
+ """Whether MCP tool input names may be included in telemetry without obfuscation."""
+
+ name: bool
+ """Whether the MCP tool name may be included in telemetry without obfuscation."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPSafeForTelemetryFields':
+ assert isinstance(obj, dict)
+ inputs_names = from_bool(obj.get("inputsNames"))
+ name = from_bool(obj.get("name"))
+ return MCPSafeForTelemetryFields(inputs_names, name)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["inputsNames"] = from_bool(self.inputs_names)
+ result["name"] = from_bool(self.name)
+ return result
+
+class MCPSerializableServerConfigType(Enum):
+ """Local transport type. Defaults to stdio when omitted.
+ Local MCP transport type.
+
+ Remote transport type. Defaults to "http" when omitted.
+ """
HTTP = "http"
+ LOCAL = "local"
SSE = "sse"
+ STDIO = "stdio"
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
@@ -4495,6 +4576,14 @@ def to_dict(self) -> dict:
result["workingDirectory"] = from_union([from_str, from_none], self.working_directory)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+class MCPElicitationFormMode(Enum):
+ """Structured MCP elicitation mode.
+
+ Elicitation mode. Omitted and form are equivalent for structured elicitation.
+ """
+ FORM = "form"
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPEnableRequest:
@@ -4514,6 +4603,31 @@ def to_dict(self) -> dict:
result["serverName"] = from_str(self.server_name)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPFailedServer:
+ """MCP server whose connection attempt failed."""
+
+ name: str
+ """The config key of the server that failed to connect."""
+
+ error: str | None = None
+ """The captured connection failure detail."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPFailedServer':
+ assert isinstance(obj, dict)
+ name = from_str(obj.get("name"))
+ error = from_union([from_str, from_none], obj.get("error"))
+ return MCPFailedServer(name, error)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["name"] = from_str(self.name)
+ if self.error is not None:
+ result["error"] = from_union([from_str, from_none], self.error)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPFilteredServer:
@@ -4762,6 +4876,63 @@ def to_dict(self) -> dict:
result["authorizationUrl"] = from_union([from_str, from_none], self.authorization_url)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+class MCPOauthProbeNeedsAuthReason(Enum):
+ """Why a passive MCP OAuth probe determined authentication is needed.
+
+ Why authentication is needed.
+ """
+ INITIAL = "initial"
+ REFRESH = "refresh"
+ UPSCOPE = "upscope"
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPOauthProbeRequest:
+ """Remote MCP server name for a passive OAuth status probe."""
+
+ server_name: str
+ """Name of the configured remote MCP server to probe."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPOauthProbeRequest':
+ assert isinstance(obj, dict)
+ server_name = from_str(obj.get("serverName"))
+ return MCPOauthProbeRequest(server_name)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["serverName"] = from_str(self.server_name)
+ return result
+
+@dataclass
+class ExternalRefMCPOauthHTTPResponse:
+ """HTTP response returned by the server.
+
+ HTTP 401 or 403 response returned by the server.
+
+ HTTP response returned by the server, when the probe reached the server and captured the
+ complete response.
+ """
+ external_ref_marker_external_ref_mcp_oauth_http_response: str
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'ExternalRefMCPOauthHTTPResponse':
+ assert isinstance(obj, dict)
+ external_ref_marker_external_ref_mcp_oauth_http_response = from_str(obj.get("__externalRefMarker___ExternalRef_McpOauthHttpResponse"))
+ return ExternalRefMCPOauthHTTPResponse(external_ref_marker_external_ref_mcp_oauth_http_response)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["__externalRefMarker___ExternalRef_McpOauthHttpResponse"] = from_str(self.external_ref_marker_external_ref_mcp_oauth_http_response)
+ return result
+
+class Status(Enum):
+ AUTHENTICATED = "authenticated"
+ FAILED = "failed"
+ NEEDS_AUTH = "needs-auth"
+ NO_AUTH_REQUIRED = "no-auth-required"
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPOauthRespondRequest:
@@ -4802,6 +4973,21 @@ def to_dict(self) -> dict:
result["success"] = from_bool(self.success)
return result
+class MCPServerConfigType(Enum):
+ """Local transport type. Defaults to stdio when omitted.
+
+ Local MCP transport type.
+
+ Remote transport type. Defaults to "http" when omitted.
+
+ In-process MCP transport type.
+ """
+ HTTP = "http"
+ LOCAL = "local"
+ MEMORY = "memory"
+ SSE = "sse"
+ STDIO = "stdio"
+
# Experimental: this type is part of an experimental API and may change or be removed.
# Internal: this type is an internal SDK API and is not part of the public surface.
@dataclass
@@ -4975,6 +5161,29 @@ class MCPSamplingExecutionAction(Enum):
FAILURE = "failure"
SUCCESS = "success"
+# Experimental: this type is part of an experimental API and may change or be removed.
+class MCPServerConfigHTTPType(Enum):
+ """Remote transport type. Defaults to "http" when omitted."""
+
+ HTTP = "http"
+ SSE = "sse"
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+# Internal: this type is an internal SDK API and is not part of the public surface.
+class MCPServerConfigMemoryType(Enum):
+ """In-process MCP transport type."""
+
+ MEMORY = "memory"
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+class MCPServerConfigStdioType(Enum):
+ """Local transport type. Defaults to stdio when omitted.
+
+ Local MCP transport type.
+ """
+ LOCAL = "local"
+ STDIO = "stdio"
+
# Experimental: this type is part of an experimental API and may change or be removed.
class MCPSetEnvValueModeDetails(Enum):
"""How environment-variable values supplied to MCP servers are resolved. "direct" passes
@@ -5012,6 +5221,28 @@ def to_dict(self) -> dict:
result["serverName"] = from_str(self.server_name)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPTaskMetadata:
+ """Metadata controlling an MCP task's lifetime.
+
+ MCP task metadata.
+ """
+ ttl: int | None = None
+ """Task time-to-live."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPTaskMetadata':
+ assert isinstance(obj, dict)
+ ttl = from_union([from_int, from_none], obj.get("ttl"))
+ return MCPTaskMetadata(ttl)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ if self.ttl is not None:
+ result["ttl"] = from_union([from_int, from_none], self.ttl)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
# Internal: this type is an internal SDK API and is not part of the public surface.
@dataclass
@@ -5590,8 +5821,10 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
class ModelPickerPriceCategory(Enum):
- """Relative cost tier for token-based billing users"""
+ """Relative cost tier for token-based billing users
+ Cost category assigned to the model.
+ """
HIGH = "high"
LOW = "low"
MEDIUM = "medium"
@@ -5866,7 +6099,10 @@ class OptionsUpdateAdditionalContentExclusionPolicyRuleSource:
and type.
"""
name: str
+ """Name of the policy source."""
+
type: str
+ """Type of the policy source."""
@staticmethod
def from_dict(obj: Any) -> 'OptionsUpdateAdditionalContentExclusionPolicyRuleSource':
@@ -5940,6 +6176,7 @@ def to_dict(self) -> dict:
class ApprovalKind(Enum):
COMMANDS = "commands"
CUSTOM_TOOL = "custom-tool"
+ EXTENSION_ENV_ACCESS = "extension-env-access"
EXTENSION_MANAGEMENT = "extension-management"
EXTENSION_PERMISSION_ACCESS = "extension-permission-access"
FACTORY = "factory"
@@ -5975,6 +6212,9 @@ class PermissionDecisionApproveForLocationApprovalCommandsKind(Enum):
class PermissionDecisionApproveForLocationApprovalCustomToolKind(Enum):
CUSTOM_TOOL = "custom-tool"
+class PermissionDecisionApproveForLocationApprovalExtensionEnvAccessKind(Enum):
+ EXTENSION_ENV_ACCESS = "extension-env-access"
+
class PermissionDecisionApproveForLocationApprovalExtensionManagementKind(Enum):
EXTENSION_MANAGEMENT = "extension-management"
@@ -5990,9 +6230,6 @@ class PermissionDecisionApproveForLocationApprovalMCPKind(Enum):
class PermissionDecisionApproveForLocationApprovalMCPSamplingKind(Enum):
MCP_SAMPLING = "mcp-sampling"
-class PermissionDecisionApproveForLocationApprovalMemoryKind(Enum):
- MEMORY = "memory"
-
class PermissionDecisionApproveForLocationApprovalReadKind(Enum):
READ = "read"
@@ -6384,7 +6621,10 @@ class PermissionsConfigureAdditionalContentExclusionPolicyRuleSource:
source name and type.
"""
name: str
+ """Name of the policy source."""
+
type: str
+ """Type of the policy source."""
@staticmethod
def from_dict(obj: Any) -> 'PermissionsConfigureAdditionalContentExclusionPolicyRuleSource':
@@ -6925,6 +7165,27 @@ def to_dict(self) -> dict:
result["previousVersion"] = from_union([from_str, from_none], self.previous_version)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class PluginsBuiltinSetRequest:
+ """Trusted built-in plugin directories to use for this runtime process."""
+
+ paths: list[str]
+ """Complete replacement set of trusted built-in plugin directories. Every entry must be an
+ absolute local filesystem path no longer than 4096 characters.
+ """
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'PluginsBuiltinSetRequest':
+ assert isinstance(obj, dict)
+ paths = from_list(from_str, obj.get("paths"))
+ return PluginsBuiltinSetRequest(paths)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["paths"] = from_list(from_str, self.paths)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class PluginsMarketplacesAddRequest:
@@ -7364,6 +7625,7 @@ class QueueDuplicateAtRequest:
"""Parameters for duplicating a queued item."""
id: str
+ """Stable opaque ID of the queued item to duplicate."""
@staticmethod
def from_dict(obj: Any) -> 'QueueDuplicateAtRequest':
@@ -7592,6 +7854,7 @@ class QueueRemoveAtRequest:
"""Parameters for removing a queued item by stable id."""
id: str
+ """Stable opaque ID of the queued item to remove."""
@staticmethod
def from_dict(obj: Any) -> 'QueueRemoveAtRequest':
@@ -7650,6 +7913,7 @@ class QueueSendNowRequest:
"""Parameters for steering a queued message into a live turn."""
id: str
+ """Stable opaque ID of the queued item to steer into the live turn."""
@staticmethod
def from_dict(obj: Any) -> 'QueueSendNowRequest':
@@ -7692,6 +7956,7 @@ class QueueSetDrainPausedRequest:
one that never acquired it.
"""
paused: bool
+ """Whether queued-lane draining should be paused."""
@staticmethod
def from_dict(obj: Any) -> 'QueueSetDrainPausedRequest':
@@ -7710,8 +7975,13 @@ class QueueUpdateTextRequest:
"""Parameters for editing a single queued message."""
id: str
+ """Stable opaque ID of the queued item to edit."""
+
prompt: str
+ """Replacement prompt sent to the model."""
+
display_prompt: str | None = None
+ """Optional replacement prompt displayed to the user."""
@staticmethod
def from_dict(obj: Any) -> 'QueueUpdateTextRequest':
@@ -8079,6 +8349,23 @@ def to_dict(self) -> dict:
result: dict = {}
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+class RemoteSessionHostStatus(Enum):
+ """What a remote host says one of its sessions is doing right now. Deliberately coarse: this
+ is what a host can report for EVERY session in a catalogue listing, without a client
+ subscribing to each one. AHP's `SessionSummary.status` is the source today;
+ `input-needed` covers both a permission prompt and an `ask_user` question, since the
+ summary does not say which.
+
+ Live status as the owning host reports it in its session listing, so a row for a session
+ running elsewhere can show that it is running. Absent for hosts that publish no such
+ status (the cloud task managers), which read as idle.
+ """
+ ERROR = "error"
+ IDLE = "idle"
+ INPUT_NEEDED = "input-needed"
+ WORKING = "working"
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class RemoteSessionMetadataRepository:
@@ -8868,6 +9155,85 @@ def to_dict(self) -> dict:
result["hasActiveWork"] = from_bool(self.has_active_work)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class SessionAuthLoginRequest:
+ """Internal GitHub login parameters."""
+
+ host: str
+ """GitHub host URL"""
+
+ login: str
+ """GitHub login"""
+
+ token: str
+ """GitHub authentication token"""
+
+ persist: bool | None = None
+ """Whether to persist the token after login"""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'SessionAuthLoginRequest':
+ assert isinstance(obj, dict)
+ host = from_str(obj.get("host"))
+ login = from_str(obj.get("login"))
+ token = from_str(obj.get("token"))
+ persist = from_union([from_bool, from_none], obj.get("persist"))
+ return SessionAuthLoginRequest(host, login, token, persist)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["host"] = from_str(self.host)
+ result["login"] = from_str(self.login)
+ result["token"] = from_str(self.token)
+ if self.persist is not None:
+ result["persist"] = from_union([from_bool, from_none], self.persist)
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class SessionAuthLogoutUserRequest:
+ """Parameters identifying a GitHub authentication to log out."""
+
+ auth_info: AuthInfo
+ """Authentication information to log out"""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'SessionAuthLogoutUserRequest':
+ assert isinstance(obj, dict)
+ auth_info = _load_AuthInfo(obj.get("authInfo"))
+ return SessionAuthLogoutUserRequest(auth_info)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["authInfo"] = (self.auth_info).to_dict()
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class SessionAuthSwitchRequest:
+ """Parameters for switching the session's active authentication."""
+
+ auth_info: AuthInfo
+ """Authentication information to activate"""
+
+ token: str | None = None
+ """Optional token paired with the authentication information"""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'SessionAuthSwitchRequest':
+ assert isinstance(obj, dict)
+ auth_info = _load_AuthInfo(obj.get("authInfo"))
+ token = from_union([from_str, from_none], obj.get("token"))
+ return SessionAuthSwitchRequest(auth_info, token)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["authInfo"] = (self.auth_info).to_dict()
+ if self.token is not None:
+ result["token"] = from_union([from_str, from_none], self.token)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionBulkDeleteResult:
@@ -9298,8 +9664,10 @@ class SessionFSSqliteQueryType(Enum):
# Experimental: this type is part of an experimental API and may change or be removed.
class SessionFSSqliteTransactionErrorClass(Enum):
- """SQLite transaction failure classification."""
+ """Machine-readable classification of the transaction failure.
+ SQLite transaction failure classification.
+ """
BUSY_OR_LOCKED = "busyOrLocked"
FATAL = "fatal"
POST_COMMIT_AMBIGUOUS = "postCommitAmbiguous"
@@ -9413,6 +9781,8 @@ class SessionLimitPredictionTier(Enum):
"""Tier chosen as the recommended cap.
Semantic usage tier used for a recommended cap or additional headroom.
+
+ Semantic usage tier.
"""
ADDITIONAL_HEADROOM = "additional_headroom"
GENEROUS_HEADROOM = "generous_headroom"
@@ -9548,7 +9918,10 @@ class SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource:
"""Source descriptor for a `sessions.open` content-exclusion rule, with source name and type."""
name: str
+ """Name of the policy source."""
+
type: str
+ """Type of the policy source."""
@staticmethod
def from_dict(obj: Any) -> 'SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource':
@@ -9768,10 +10141,15 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionSettingsBuiltInToolAvailabilitySnapshot:
- """Availability of built-in job tools surfaced to boundary consumers."""
+ """Availability of built-in job tools surfaced to boundary consumers.
+ Availability of job-specific built-in tools.
+ """
create_pull_request: bool | None = None
+ """Whether the create-pull-request tool is available."""
+
report_progress: bool | None = None
+ """Whether the report-progress tool is available."""
@staticmethod
def from_dict(obj: Any) -> 'SessionSettingsBuiltInToolAvailabilitySnapshot':
@@ -9821,6 +10199,7 @@ class SessionSettingsEvaluatePredicateResult:
"""Result of evaluating a Rust-owned settings predicate."""
enabled: bool
+ """Whether the named settings predicate evaluated to enabled."""
@staticmethod
def from_dict(obj: Any) -> 'SessionSettingsEvaluatePredicateResult':
@@ -9836,12 +10215,21 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionSettingsModelSnapshot:
- """Redacted model routing settings for a session."""
+ """Redacted model routing settings for a session.
+ Redacted model routing settings.
+ """
callback_url: str | None = None
+ """Agent service callback URL for job and progress updates."""
+
default_reasoning_effort: str | None = None
+ """Default reasoning effort for the selected model."""
+
instance_id: str | None = None
+ """Agent job identifier for the session."""
+
model: str | None = None
+ """Selected model identifier."""
@staticmethod
def from_dict(obj: Any) -> 'SessionSettingsModelSnapshot':
@@ -9867,10 +10255,15 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionSettingsOnlineEvaluationSnapshot:
- """Online-evaluation settings safe to expose across the SDK boundary."""
+ """Online-evaluation settings safe to expose across the SDK boundary.
+ Online-evaluation settings safe for SDK consumers.
+ """
disable_online_evaluation: bool | None = None
+ """Whether online evaluation is disabled."""
+
enable_online_evaluation_output_file: bool | None = None
+ """Whether online-evaluation output-file generation is enabled."""
@staticmethod
def from_dict(obj: Any) -> 'SessionSettingsOnlineEvaluationSnapshot':
@@ -9890,20 +10283,45 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionSettingsRepoSnapshot:
- """Redacted repository and GitHub host settings for a session."""
+ """Redacted repository and GitHub host settings for a session.
+ Redacted repository and host settings.
+ """
branch: str | None = None
+ """Checked-out repository branch."""
+
commit: str | None = None
+ """Checked-out commit SHA."""
+
host: str | None = None
+ """GitHub server host name."""
+
host_protocol: str | None = None
+ """Protocol used to access the GitHub host."""
+
id: float | None = None
+ """GitHub repository database ID."""
+
name: str | None = None
+ """Repository name."""
+
owner_id: float | None = None
+ """GitHub repository owner database ID."""
+
owner_name: str | None = None
+ """Repository owner login."""
+
pr_commit_count: float | None = None
+ """Number of commits in the pull request."""
+
read_write: bool | None = None
+ """Whether the repository is writable."""
+
secret_scanning_url: str | None = None
+ """GitHub secret-scanning service URL."""
+
server_url: str | None = None
+ """GitHub server base URL."""
@staticmethod
def from_dict(obj: Any) -> 'SessionSettingsRepoSnapshot':
@@ -9950,57 +10368,6 @@ def to_dict(self) -> dict:
result["serverUrl"] = from_union([from_str, from_none], self.server_url)
return result
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class SessionSettingsValidationSnapshot:
- """Redacted validation and memory-tool settings for a session."""
-
- advisory_enabled: bool | None = None
- codeql_enabled: bool | None = None
- code_review_enabled: bool | None = None
- code_review_model: str | None = None
- dependabot_timeout: float | None = None
- memory_store_enabled: bool | None = None
- memory_vote_enabled: bool | None = None
- secret_scanning_enabled: bool | None = None
- timeout: float | None = None
-
- @staticmethod
- def from_dict(obj: Any) -> 'SessionSettingsValidationSnapshot':
- assert isinstance(obj, dict)
- advisory_enabled = from_union([from_bool, from_none], obj.get("advisoryEnabled"))
- codeql_enabled = from_union([from_bool, from_none], obj.get("codeqlEnabled"))
- code_review_enabled = from_union([from_bool, from_none], obj.get("codeReviewEnabled"))
- code_review_model = from_union([from_str, from_none], obj.get("codeReviewModel"))
- dependabot_timeout = from_union([from_float, from_none], obj.get("dependabotTimeout"))
- memory_store_enabled = from_union([from_bool, from_none], obj.get("memoryStoreEnabled"))
- memory_vote_enabled = from_union([from_bool, from_none], obj.get("memoryVoteEnabled"))
- secret_scanning_enabled = from_union([from_bool, from_none], obj.get("secretScanningEnabled"))
- timeout = from_union([from_float, from_none], obj.get("timeout"))
- return SessionSettingsValidationSnapshot(advisory_enabled, codeql_enabled, code_review_enabled, code_review_model, dependabot_timeout, memory_store_enabled, memory_vote_enabled, secret_scanning_enabled, timeout)
-
- def to_dict(self) -> dict:
- result: dict = {}
- if self.advisory_enabled is not None:
- result["advisoryEnabled"] = from_union([from_bool, from_none], self.advisory_enabled)
- if self.codeql_enabled is not None:
- result["codeqlEnabled"] = from_union([from_bool, from_none], self.codeql_enabled)
- if self.code_review_enabled is not None:
- result["codeReviewEnabled"] = from_union([from_bool, from_none], self.code_review_enabled)
- if self.code_review_model is not None:
- result["codeReviewModel"] = from_union([from_str, from_none], self.code_review_model)
- if self.dependabot_timeout is not None:
- result["dependabotTimeout"] = from_union([to_float, from_none], self.dependabot_timeout)
- if self.memory_store_enabled is not None:
- result["memoryStoreEnabled"] = from_union([from_bool, from_none], self.memory_store_enabled)
- if self.memory_vote_enabled is not None:
- result["memoryVoteEnabled"] = from_union([from_bool, from_none], self.memory_vote_enabled)
- if self.secret_scanning_enabled is not None:
- result["secretScanningEnabled"] = from_union([from_bool, from_none], self.secret_scanning_enabled)
- if self.timeout is not None:
- result["timeout"] = from_union([to_float, from_none], self.timeout)
- return result
-
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionSizes:
@@ -11567,7 +11934,7 @@ class TasksStartAgentRequest:
"""Type of agent to start (e.g., 'explore', 'task', 'general-purpose')"""
name: str
- """Short name for the agent, used to generate a human-readable ID"""
+ """Friendly, non-unique name used when displaying the agent"""
prompt: str
"""Task prompt for the agent"""
@@ -12327,7 +12694,10 @@ class WorkspacesAddSummaryResult:
"""Persisted summary metadata and refreshed workspace metadata."""
summary: dict[str, Any] | None = None
+ """Metadata for the persisted summary."""
+
workspace: dict[str, Any] | None = None
+ """Refreshed metadata for the containing workspace."""
@staticmethod
def from_dict(obj: Any) -> 'WorkspacesAddSummaryResult':
@@ -12645,8 +13015,10 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionAuthStatus:
- """Authentication status and account metadata for the session."""
+ """Authentication status and account metadata for the session.
+ Authentication accounts available to the internal session host.
+ """
is_authenticated: bool
"""Whether the session has resolved authentication"""
@@ -13374,6 +13746,8 @@ class DebugCollectLogsDestination:
`directory` to stage redacted files for caller-managed upload/post-processing.
"""
kind: DebugCollectLogsResultKind
+ """Destination variant discriminator."""
+
no_overwrite: bool | None = None
"""When true, create the archive atomically without overwriting an existing file by
appending ` (N)` before the extension as needed. Defaults to false.
@@ -13407,8 +13781,11 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionManagedPermissions:
- """Enterprise permission policy expressed with the runtime's managed permission-rule syntax."""
+ """Enterprise permission policy expressed with the runtime's managed permission-rule
+ syntax.
+ Managed permission policy injected by the SDK host.
+ """
allow: list[str] | None = None
"""Permission rules that allow matching operations unless another managed source, deny, or
ask rule restricts them.
@@ -14148,7 +14525,9 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class FactoryRunFailure:
- """Machine-readable factory run failure.
+ """Machine-readable terminal failure.
+
+ Machine-readable factory run failure.
Machine-readable failure details for an errored run.
@@ -14160,6 +14539,8 @@ class FactoryRunFailure:
Factory run identifier whose changed limits were declined.
"""
type: FactoryRunFailureType
+ """Factory failure variant discriminator."""
+
kind: FactoryRunFailureKind | None = None
"""Resource ceiling that stopped the run."""
@@ -14288,18 +14669,47 @@ class FactoryPhaseObservation:
"""Durable lifecycle and timing for one factory phase."""
accumulated_active_ms: int
+ """Completed active time accumulated by this phase in milliseconds."""
+
current_active_ms: int
+ """Current live active time for this phase in milliseconds."""
+
entry_count: int
+ """Number of times execution entered this phase."""
+
id: str
+ """Phase identifier."""
+
last_entered_run_attempt: int
+ """Most recent run attempt that entered this phase, or `0` if the phase has never been
+ entered.
+ """
live_agent_count: int
+ """Direct agents in this phase that are currently live."""
+
status: FactoryPhaseStatus
+ """Derived lifecycle state of the phase."""
+
title: str
+ """Human-readable phase title."""
+
total_agent_count: int
+ """Total direct agents associated with this phase."""
+
completed_at: int | None = None
+ """Epoch milliseconds when this phase completed; for a skipped phase, the synthetic skip
+ timestamp (equal to `startedAt`).
+ """
detail: str | None = None
+ """Optional human-readable phase detail."""
+
ordinal: int | None = None
+ """Zero-based declared phase ordinal, or null for an undeclared phase."""
+
started_at: int | None = None
+ """Epoch milliseconds when this phase first started; for a skipped phase, the synthetic skip
+ timestamp (equal to `completedAt`).
+ """
@staticmethod
def from_dict(obj: Any) -> 'FactoryPhaseObservation':
@@ -14600,12 +15010,23 @@ class InstalledPluginSource:
Constant value. Always "local".
"""
path: str | None = None
+ """Optional repository-relative path to the plugin.
+
+ Optional source-relative path to the plugin.
+
+ Local filesystem path to the plugin.
+ """
ref: str | None = None
+ """Optional Git ref to resolve."""
+
repo: str | None = None
+ """GitHub repository in `owner/repo` form."""
+
sha: str | None = None
"""Optional full 40-character hexadecimal commit SHA."""
url: str | None = None
+ """URL of the plugin source."""
@staticmethod
def from_dict(obj: Any) -> 'InstalledPluginSource':
@@ -14652,12 +15073,23 @@ class SessionInstalledPluginSource:
Constant value. Always "local".
"""
path: str | None = None
+ """Optional repository-relative path to the plugin.
+
+ Optional source-relative path to the plugin.
+
+ Local filesystem path to the plugin.
+ """
ref: str | None = None
+ """Optional Git ref to resolve."""
+
repo: str | None = None
+ """GitHub repository in `owner/repo` form."""
+
sha: str | None = None
"""Optional full 40-character hexadecimal commit SHA."""
url: str | None = None
+ """URL of the plugin source."""
@staticmethod
def from_dict(obj: Any) -> 'SessionInstalledPluginSource':
@@ -14692,11 +15124,17 @@ class InstalledPluginSourceGitHub:
full commit SHA, and optional subpath.
"""
repo: str
+ """GitHub repository in `owner/repo` form."""
+
source: FluffySource
"""Constant value. Always "github"."""
path: str | None = None
+ """Optional repository-relative path to the plugin."""
+
ref: str | None = None
+ """Optional Git ref to resolve."""
+
sha: str | None = None
"""Optional full 40-character hexadecimal commit SHA."""
@@ -14729,11 +15167,17 @@ class SessionInstalledPluginSourceGitHub:
full commit SHA, and optional subpath.
"""
repo: str
+ """GitHub repository in `owner/repo` form."""
+
source: FluffySource
"""Constant value. Always "github"."""
path: str | None = None
+ """Optional repository-relative path to the plugin."""
+
ref: str | None = None
+ """Optional Git ref to resolve."""
+
sha: str | None = None
"""Optional full 40-character hexadecimal commit SHA."""
@@ -14765,6 +15209,8 @@ class InstalledPluginSourceLocal:
"""Source descriptor for a direct local plugin install, with a local filesystem path."""
path: str
+ """Local filesystem path to the plugin."""
+
source: TentacledSource
"""Constant value. Always "local"."""
@@ -14787,6 +15233,8 @@ class SessionInstalledPluginSourceLocal:
"""Source descriptor for a direct local plugin install, with a local filesystem path."""
path: str
+ """Local filesystem path to the plugin."""
+
source: TentacledSource
"""Constant value. Always "local"."""
@@ -14813,8 +15261,14 @@ class InstalledPluginSourceURL:
"""Constant value. Always "url"."""
url: str
+ """URL of the plugin source."""
+
path: str | None = None
+ """Optional source-relative path to the plugin."""
+
ref: str | None = None
+ """Optional Git ref to resolve."""
+
sha: str | None = None
"""Optional full 40-character hexadecimal commit SHA."""
@@ -14850,8 +15304,14 @@ class SessionInstalledPluginSourceURL:
"""Constant value. Always "url"."""
url: str
+ """URL of the plugin source."""
+
path: str | None = None
+ """Optional source-relative path to the plugin."""
+
ref: str | None = None
+ """Optional Git ref to resolve."""
+
sha: str | None = None
"""Optional full 40-character hexadecimal commit SHA."""
@@ -14955,6 +15415,8 @@ class LlmInferenceHTTPRequestStartRequest:
"""The head of an outbound model-layer HTTP request."""
headers: dict[str, list[str]]
+ """HTTP request headers, preserving multiple values per name."""
+
method: str
"""HTTP method, e.g. GET, POST."""
@@ -15207,24 +15669,55 @@ def to_dict(self) -> dict:
@dataclass
class Workspace:
id: str
+ """Stable workspace identifier."""
+
branch: str | None = None
+ """Current Git branch."""
+
chronicle_sync_dismissed: bool | None = None
+ """Whether the per-session Chronicle upgrade prompt was dismissed for the workspace."""
+
client_name: str | None = None
+ """Name of the client that created the workspace."""
+
created_at: datetime | None = None
+ """Timestamp when the workspace was created."""
+
cwd: str | None = None
+ """Current working directory associated with the workspace."""
+
git_root: str | None = None
+ """Git repository root associated with the workspace."""
+
host_type: HostType | None = None
"""Allowed values for the `WorkspacesWorkspaceDetailsHostType` enumeration."""
mc_last_event_id: str | None = None
+ """Most recent Mission Control event identifier observed for the workspace."""
+
mc_session_id: str | None = None
+ """Mission Control session identifier associated with the workspace."""
+
mc_task_id: str | None = None
+ """Mission Control task identifier associated with the workspace."""
+
name: str | None = None
+ """Workspace display name."""
+
remote_steerable: bool | None = None
+ """Whether the workspace session can be steered remotely."""
+
repository: str | None = None
+ """Repository identifier associated with the workspace."""
+
summary_count: int | None = None
+ """Number of persisted summaries in the workspace."""
+
updated_at: datetime | None = None
+ """Timestamp when the workspace was last updated."""
+
user_named: bool | None = None
+ """Whether the workspace name was explicitly chosen by the user."""
@staticmethod
def from_dict(obj: Any) -> 'Workspace':
@@ -15530,95 +16023,6 @@ def to_dict(self) -> dict:
result["contents"] = from_list(lambda x: to_class(MCPAppsResourceContent, x), self.contents)
return result
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class MCPServerConfigStdio:
- """Stdio MCP server configuration launched as a child process."""
-
- command: str
- """Executable command used to start the Stdio MCP server process."""
-
- args: list[str] | None = None
- """Command-line arguments passed to the Stdio MCP server process."""
-
- auth: bool | MCPServerAuthConfigRedirectPort | None = None
- """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
-
- cwd: str | None = None
- """Working directory for the Stdio MCP server process."""
-
- defer_tools: MCPServerConfigDeferTools | None = None
- """Controls if tools provided by this server can be loaded on demand via tool search (auto)
- or always included in the initial tool list (never)
- """
- disable_tool_cache: bool | None = None
- """Set to true to disable persisted MCP tool snapshots for this server. Live tool discovery
- is unaffected.
- """
- env: dict[str, str] | None = None
- """Environment variables to pass to the Stdio MCP server process."""
-
- filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode | None = None
- """Content filtering mode to apply to all tools, or a map of tool name to content filtering
- mode.
- """
- is_default_server: bool | None = None
- """Whether this server is a built-in fallback used when the user has not configured their
- own server.
- """
- oidc: bool | MCPServerAuthConfigRedirectPort | None = None
- """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
-
- timeout: int | None = None
- """Timeout in milliseconds for tool calls to this server."""
-
- tools: list[str] | None = None
- """Tools to include. Defaults to all tools if not specified."""
-
- @staticmethod
- def from_dict(obj: Any) -> 'MCPServerConfigStdio':
- assert isinstance(obj, dict)
- command = from_str(obj.get("command"))
- args = from_union([lambda x: from_list(from_str, x), from_none], obj.get("args"))
- auth = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("auth"))
- cwd = from_union([from_str, from_none], obj.get("cwd"))
- defer_tools = from_union([MCPServerConfigDeferTools, from_none], obj.get("deferTools"))
- disable_tool_cache = from_union([from_bool, from_none], obj.get("disableToolCache"))
- env = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("env"))
- filter_mapping = from_union([lambda x: from_dict(ContentFilterMode, x), ContentFilterMode, from_none], obj.get("filterMapping"))
- is_default_server = from_union([from_bool, from_none], obj.get("isDefaultServer"))
- oidc = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("oidc"))
- timeout = from_union([from_int, from_none], obj.get("timeout"))
- tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("tools"))
- return MCPServerConfigStdio(command, args, auth, cwd, defer_tools, disable_tool_cache, env, filter_mapping, is_default_server, oidc, timeout, tools)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["command"] = from_str(self.command)
- if self.args is not None:
- result["args"] = from_union([lambda x: from_list(from_str, x), from_none], self.args)
- if self.auth is not None:
- result["auth"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.auth)
- if self.cwd is not None:
- result["cwd"] = from_union([from_str, from_none], self.cwd)
- if self.defer_tools is not None:
- result["deferTools"] = from_union([lambda x: to_enum(MCPServerConfigDeferTools, x), from_none], self.defer_tools)
- if self.disable_tool_cache is not None:
- result["disableToolCache"] = from_union([from_bool, from_none], self.disable_tool_cache)
- if self.env is not None:
- result["env"] = from_union([lambda x: from_dict(from_str, x), from_none], self.env)
- if self.filter_mapping is not None:
- result["filterMapping"] = from_union([lambda x: from_dict(lambda x: to_enum(ContentFilterMode, x), x), lambda x: to_enum(ContentFilterMode, x), from_none], self.filter_mapping)
- if self.is_default_server is not None:
- result["isDefaultServer"] = from_union([from_bool, from_none], self.is_default_server)
- if self.oidc is not None:
- result["oidc"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.oidc)
- if self.timeout is not None:
- result["timeout"] = from_union([from_int, from_none], self.timeout)
- if self.tools is not None:
- result["tools"] = from_union([lambda x: from_list(from_str, x), from_none], self.tools)
- return result
-
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPOauthLoginRequest:
@@ -15696,243 +16100,6 @@ def to_dict(self) -> dict:
result["publicClient"] = from_union([from_bool, from_none], self.public_client)
return result
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class MCPServerConfig:
- """MCP server configuration (stdio process or remote HTTP/SSE)
-
- Replacement MCP server configuration (stdio process or remote HTTP/SSE). Omit to restart
- the server with its already-registered configuration (config-free restart-by-name).
-
- MCP server configuration (stdio process or remote HTTP/SSE). Omit to start the server
- with its already-registered configuration (config-free start-by-name).
-
- Stdio MCP server configuration launched as a child process.
-
- Remote MCP server configuration accessed over HTTP or SSE.
- """
- args: list[str] | None = None
- """Command-line arguments passed to the Stdio MCP server process."""
-
- auth: bool | MCPServerAuthConfigRedirectPort | None = None
- """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
-
- command: str | None = None
- """Executable command used to start the Stdio MCP server process."""
-
- cwd: str | None = None
- """Working directory for the Stdio MCP server process."""
-
- defer_tools: MCPServerConfigDeferTools | None = None
- """Controls if tools provided by this server can be loaded on demand via tool search (auto)
- or always included in the initial tool list (never)
- """
- disable_tool_cache: bool | None = None
- """Set to true to disable persisted MCP tool snapshots for this server. Live tool discovery
- is unaffected.
- """
- env: dict[str, str] | None = None
- """Environment variables to pass to the Stdio MCP server process."""
-
- filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode | None = None
- """Content filtering mode to apply to all tools, or a map of tool name to content filtering
- mode.
- """
- is_default_server: bool | None = None
- """Whether this server is a built-in fallback used when the user has not configured their
- own server.
- """
- oidc: bool | MCPServerAuthConfigRedirectPort | None = None
- """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
-
- timeout: int | None = None
- """Timeout in milliseconds for tool calls to this server."""
-
- tools: list[str] | None = None
- """Tools to include. Defaults to all tools if not specified."""
-
- headers: dict[str, str] | None = None
- """HTTP headers to include in requests to the remote MCP server."""
-
- oauth_client_id: str | None = None
- """OAuth client ID for a pre-registered remote MCP OAuth client."""
-
- oauth_grant_type: MCPGrantType | None = None
- """OAuth grant type to use when authenticating to the remote MCP server."""
-
- oauth_public_client: bool | None = None
- """Whether the configured OAuth client is public and does not require a client secret."""
-
- type: MCPServerConfigHTTPType | None = None
- """Remote transport type. Defaults to "http" when omitted."""
-
- url: str | None = None
- """URL of the remote MCP server endpoint."""
-
- @staticmethod
- def from_dict(obj: Any) -> 'MCPServerConfig':
- assert isinstance(obj, dict)
- args = from_union([lambda x: from_list(from_str, x), from_none], obj.get("args"))
- auth = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("auth"))
- command = from_union([from_str, from_none], obj.get("command"))
- cwd = from_union([from_str, from_none], obj.get("cwd"))
- defer_tools = from_union([MCPServerConfigDeferTools, from_none], obj.get("deferTools"))
- disable_tool_cache = from_union([from_bool, from_none], obj.get("disableToolCache"))
- env = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("env"))
- filter_mapping = from_union([lambda x: from_dict(ContentFilterMode, x), ContentFilterMode, from_none], obj.get("filterMapping"))
- is_default_server = from_union([from_bool, from_none], obj.get("isDefaultServer"))
- oidc = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("oidc"))
- timeout = from_union([from_int, from_none], obj.get("timeout"))
- tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("tools"))
- headers = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("headers"))
- oauth_client_id = from_union([from_str, from_none], obj.get("oauthClientId"))
- oauth_grant_type = from_union([MCPGrantType, from_none], obj.get("oauthGrantType"))
- oauth_public_client = from_union([from_bool, from_none], obj.get("oauthPublicClient"))
- type = from_union([MCPServerConfigHTTPType, from_none], obj.get("type"))
- url = from_union([from_str, from_none], obj.get("url"))
- return MCPServerConfig(args, auth, command, cwd, defer_tools, disable_tool_cache, env, filter_mapping, is_default_server, oidc, timeout, tools, headers, oauth_client_id, oauth_grant_type, oauth_public_client, type, url)
-
- def to_dict(self) -> dict:
- result: dict = {}
- if self.args is not None:
- result["args"] = from_union([lambda x: from_list(from_str, x), from_none], self.args)
- if self.auth is not None:
- result["auth"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.auth)
- if self.command is not None:
- result["command"] = from_union([from_str, from_none], self.command)
- if self.cwd is not None:
- result["cwd"] = from_union([from_str, from_none], self.cwd)
- if self.defer_tools is not None:
- result["deferTools"] = from_union([lambda x: to_enum(MCPServerConfigDeferTools, x), from_none], self.defer_tools)
- if self.disable_tool_cache is not None:
- result["disableToolCache"] = from_union([from_bool, from_none], self.disable_tool_cache)
- if self.env is not None:
- result["env"] = from_union([lambda x: from_dict(from_str, x), from_none], self.env)
- if self.filter_mapping is not None:
- result["filterMapping"] = from_union([lambda x: from_dict(lambda x: to_enum(ContentFilterMode, x), x), lambda x: to_enum(ContentFilterMode, x), from_none], self.filter_mapping)
- if self.is_default_server is not None:
- result["isDefaultServer"] = from_union([from_bool, from_none], self.is_default_server)
- if self.oidc is not None:
- result["oidc"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.oidc)
- if self.timeout is not None:
- result["timeout"] = from_union([from_int, from_none], self.timeout)
- if self.tools is not None:
- result["tools"] = from_union([lambda x: from_list(from_str, x), from_none], self.tools)
- if self.headers is not None:
- result["headers"] = from_union([lambda x: from_dict(from_str, x), from_none], self.headers)
- if self.oauth_client_id is not None:
- result["oauthClientId"] = from_union([from_str, from_none], self.oauth_client_id)
- if self.oauth_grant_type is not None:
- result["oauthGrantType"] = from_union([lambda x: to_enum(MCPGrantType, x), from_none], self.oauth_grant_type)
- if self.oauth_public_client is not None:
- result["oauthPublicClient"] = from_union([from_bool, from_none], self.oauth_public_client)
- if self.type is not None:
- result["type"] = from_union([lambda x: to_enum(MCPServerConfigHTTPType, x), from_none], self.type)
- if self.url is not None:
- result["url"] = from_union([from_str, from_none], self.url)
- return result
-
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class MCPServerConfigHTTP:
- """Remote MCP server configuration accessed over HTTP or SSE."""
-
- url: str
- """URL of the remote MCP server endpoint."""
-
- auth: bool | MCPServerAuthConfigRedirectPort | None = None
- """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
-
- defer_tools: MCPServerConfigDeferTools | None = None
- """Controls if tools provided by this server can be loaded on demand via tool search (auto)
- or always included in the initial tool list (never)
- """
- disable_tool_cache: bool | None = None
- """Set to true to disable persisted MCP tool snapshots for this server. Live tool discovery
- is unaffected.
- """
- filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode | None = None
- """Content filtering mode to apply to all tools, or a map of tool name to content filtering
- mode.
- """
- headers: dict[str, str] | None = None
- """HTTP headers to include in requests to the remote MCP server."""
-
- is_default_server: bool | None = None
- """Whether this server is a built-in fallback used when the user has not configured their
- own server.
- """
- oauth_client_id: str | None = None
- """OAuth client ID for a pre-registered remote MCP OAuth client."""
-
- oauth_grant_type: MCPGrantType | None = None
- """OAuth grant type to use when authenticating to the remote MCP server."""
-
- oauth_public_client: bool | None = None
- """Whether the configured OAuth client is public and does not require a client secret."""
-
- oidc: bool | MCPServerAuthConfigRedirectPort | None = None
- """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
-
- timeout: int | None = None
- """Timeout in milliseconds for tool calls to this server."""
-
- tools: list[str] | None = None
- """Tools to include. Defaults to all tools if not specified."""
-
- type: MCPServerConfigHTTPType | None = None
- """Remote transport type. Defaults to "http" when omitted."""
-
- @staticmethod
- def from_dict(obj: Any) -> 'MCPServerConfigHTTP':
- assert isinstance(obj, dict)
- url = from_str(obj.get("url"))
- auth = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("auth"))
- defer_tools = from_union([MCPServerConfigDeferTools, from_none], obj.get("deferTools"))
- disable_tool_cache = from_union([from_bool, from_none], obj.get("disableToolCache"))
- filter_mapping = from_union([lambda x: from_dict(ContentFilterMode, x), ContentFilterMode, from_none], obj.get("filterMapping"))
- headers = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("headers"))
- is_default_server = from_union([from_bool, from_none], obj.get("isDefaultServer"))
- oauth_client_id = from_union([from_str, from_none], obj.get("oauthClientId"))
- oauth_grant_type = from_union([MCPGrantType, from_none], obj.get("oauthGrantType"))
- oauth_public_client = from_union([from_bool, from_none], obj.get("oauthPublicClient"))
- oidc = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("oidc"))
- timeout = from_union([from_int, from_none], obj.get("timeout"))
- tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("tools"))
- type = from_union([MCPServerConfigHTTPType, from_none], obj.get("type"))
- return MCPServerConfigHTTP(url, auth, defer_tools, disable_tool_cache, filter_mapping, headers, is_default_server, oauth_client_id, oauth_grant_type, oauth_public_client, oidc, timeout, tools, type)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["url"] = from_str(self.url)
- if self.auth is not None:
- result["auth"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.auth)
- if self.defer_tools is not None:
- result["deferTools"] = from_union([lambda x: to_enum(MCPServerConfigDeferTools, x), from_none], self.defer_tools)
- if self.disable_tool_cache is not None:
- result["disableToolCache"] = from_union([from_bool, from_none], self.disable_tool_cache)
- if self.filter_mapping is not None:
- result["filterMapping"] = from_union([lambda x: from_dict(lambda x: to_enum(ContentFilterMode, x), x), lambda x: to_enum(ContentFilterMode, x), from_none], self.filter_mapping)
- if self.headers is not None:
- result["headers"] = from_union([lambda x: from_dict(from_str, x), from_none], self.headers)
- if self.is_default_server is not None:
- result["isDefaultServer"] = from_union([from_bool, from_none], self.is_default_server)
- if self.oauth_client_id is not None:
- result["oauthClientId"] = from_union([from_str, from_none], self.oauth_client_id)
- if self.oauth_grant_type is not None:
- result["oauthGrantType"] = from_union([lambda x: to_enum(MCPGrantType, x), from_none], self.oauth_grant_type)
- if self.oauth_public_client is not None:
- result["oauthPublicClient"] = from_union([from_bool, from_none], self.oauth_public_client)
- if self.oidc is not None:
- result["oidc"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.oidc)
- if self.timeout is not None:
- result["timeout"] = from_union([from_int, from_none], self.timeout)
- if self.tools is not None:
- result["tools"] = from_union([lambda x: from_list(from_str, x), from_none], self.tools)
- if self.type is not None:
- result["type"] = from_union([lambda x: to_enum(MCPServerConfigHTTPType, x), from_none], self.type)
- return result
-
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPStartServersResult:
@@ -15944,18 +16111,24 @@ class MCPStartServersResult:
allowed_servers: list[MCPAllowedServer] | None = None
"""Non-default servers allowed by policy"""
+ failed_servers: list[MCPFailedServer] | None = None
+ """Servers whose connection attempt failed."""
+
@staticmethod
def from_dict(obj: Any) -> 'MCPStartServersResult':
assert isinstance(obj, dict)
filtered_servers = from_list(MCPFilteredServer.from_dict, obj.get("filteredServers"))
allowed_servers = from_union([lambda x: from_list(MCPAllowedServer.from_dict, x), from_none], obj.get("allowedServers"))
- return MCPStartServersResult(filtered_servers, allowed_servers)
+ failed_servers = from_union([lambda x: from_list(MCPFailedServer.from_dict, x), from_none], obj.get("failedServers"))
+ return MCPStartServersResult(filtered_servers, allowed_servers, failed_servers)
def to_dict(self) -> dict:
result: dict = {}
result["filteredServers"] = from_list(lambda x: to_class(MCPFilteredServer, x), self.filtered_servers)
if self.allowed_servers is not None:
result["allowedServers"] = from_union([lambda x: from_list(lambda x: to_class(MCPAllowedServer, x), x), from_none], self.allowed_servers)
+ if self.failed_servers is not None:
+ result["failedServers"] = from_union([lambda x: from_list(lambda x: to_class(MCPFailedServer, x), x), from_none], self.failed_servers)
return result
# Experimental: this type is part of an experimental API and may change or be removed.
@@ -15964,6 +16137,8 @@ class MCPHeadersHandlePendingHeadersRefreshRequest:
"""Host response: supply dynamic headers or decline this refresh."""
kind: MCPHeadersHandlePendingHeadersRefreshRequestKind
+ """Headers-refresh response variant discriminator."""
+
headers: dict[str, str] | None = None
"""Headers to overlay onto the MCP request. Dynamic headers override static config headers
but do not replace SDK-managed request headers.
@@ -16038,6 +16213,8 @@ class MCPOauthPendingRequestResponse:
"""Host response to the pending OAuth request."""
kind: MCPOauthPendingRequestResponseKind
+ """OAuth response variant discriminator."""
+
access_token: str | None = None
"""Access token acquired by the SDK host"""
@@ -16122,6 +16299,60 @@ def to_dict(self) -> dict:
result["result"] = from_union([lambda x: from_dict(lambda x: x, x), from_none], self.result)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class PermissionDecisionApproveForLocationApprovalMemory:
+ """Location-scoped approval details for writes to long-term memory."""
+
+ kind: ClassVar[str] = "memory"
+ """Approval covering writes to long-term memory."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'PermissionDecisionApproveForLocationApprovalMemory':
+ assert isinstance(obj, dict)
+ return PermissionDecisionApproveForLocationApprovalMemory()
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["kind"] = self.kind
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class PermissionDecisionApproveForSessionApprovalMemory:
+ """Session-scoped approval details for writes to long-term memory."""
+
+ kind: ClassVar[str] = "memory"
+ """Approval covering writes to long-term memory."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'PermissionDecisionApproveForSessionApprovalMemory':
+ assert isinstance(obj, dict)
+ return PermissionDecisionApproveForSessionApprovalMemory()
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["kind"] = self.kind
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class PermissionsLocationsAddToolApprovalDetailsMemory:
+ """Location-persisted tool approval details for writes to long-term memory."""
+
+ kind: ClassVar[str] = "memory"
+ """Approval covering writes to long-term memory."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'PermissionsLocationsAddToolApprovalDetailsMemory':
+ assert isinstance(obj, dict)
+ return PermissionsLocationsAddToolApprovalDetailsMemory()
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["kind"] = self.kind
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPSetEnvValueModeParams:
@@ -16437,7 +16668,10 @@ class SessionModelPriceCategory:
"""Cost-category metadata for a CAPI model."""
id: str
+ """CAPI model identifier."""
+
price_category: ModelPickerPriceCategory
+ """Cost category assigned to the model."""
@staticmethod
def from_dict(obj: Any) -> 'SessionModelPriceCategory':
@@ -16714,12 +16948,17 @@ class OptionsUpdateAdditionalContentExclusionPolicyRule:
conditions, and source.
"""
paths: list[str]
+ """Path patterns covered by this rule."""
+
source: OptionsUpdateAdditionalContentExclusionPolicyRuleSource
"""Source descriptor for a `session.options.update` content-exclusion rule, with source name
and type.
"""
if_any_match: list[str] | None = None
+ """Conditions of which at least one must match."""
+
if_none_match: list[str] | None = None
+ """Conditions none of which may match."""
@staticmethod
def from_dict(obj: Any) -> 'OptionsUpdateAdditionalContentExclusionPolicyRule':
@@ -17245,60 +17484,6 @@ def to_dict(self) -> dict:
result["serverName"] = from_str(self.server_name)
return result
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class PermissionDecisionApproveForLocationApprovalMemory:
- """Location-scoped approval details for writes to long-term memory."""
-
- kind: ClassVar[str] = "memory"
- """Approval covering writes to long-term memory."""
-
- @staticmethod
- def from_dict(obj: Any) -> 'PermissionDecisionApproveForLocationApprovalMemory':
- assert isinstance(obj, dict)
- return PermissionDecisionApproveForLocationApprovalMemory()
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["kind"] = self.kind
- return result
-
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class PermissionDecisionApproveForSessionApprovalMemory:
- """Session-scoped approval details for writes to long-term memory."""
-
- kind: ClassVar[str] = "memory"
- """Approval covering writes to long-term memory."""
-
- @staticmethod
- def from_dict(obj: Any) -> 'PermissionDecisionApproveForSessionApprovalMemory':
- assert isinstance(obj, dict)
- return PermissionDecisionApproveForSessionApprovalMemory()
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["kind"] = self.kind
- return result
-
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class PermissionsLocationsAddToolApprovalDetailsMemory:
- """Location-persisted tool approval details for writes to long-term memory."""
-
- kind: ClassVar[str] = "memory"
- """Approval covering writes to long-term memory."""
-
- @staticmethod
- def from_dict(obj: Any) -> 'PermissionsLocationsAddToolApprovalDetailsMemory':
- assert isinstance(obj, dict)
- return PermissionsLocationsAddToolApprovalDetailsMemory()
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["kind"] = self.kind
- return result
-
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class PermissionDecisionApproveForLocationApprovalRead:
@@ -17866,12 +18051,17 @@ class PermissionsConfigureAdditionalContentExclusionPolicyRule:
match conditions, and source.
"""
paths: list[str]
+ """Path patterns covered by this rule."""
+
source: PermissionsConfigureAdditionalContentExclusionPolicyRuleSource
"""Source descriptor for a `session.permissions.configure` content-exclusion rule, with
source name and type.
"""
if_any_match: list[str] | None = None
+ """Conditions of which at least one must match."""
+
if_none_match: list[str] | None = None
+ """Conditions none of which may match."""
@staticmethod
def from_dict(obj: Any) -> 'PermissionsConfigureAdditionalContentExclusionPolicyRule':
@@ -18893,8 +19083,10 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class QueueInsertMessage:
- """Serializable message fields accepted by queue.insertAt."""
+ """Queued message contents and delivery metadata.
+ Serializable message fields accepted by queue.insertAt.
+ """
prompt: str
"""The user message text."""
@@ -19237,9 +19429,8 @@ class RemoteControlStatusActive:
# Internal: this field is an internal SDK API and is not part of the public surface.
prompt_manager: Any = None
"""In-process prompt-manager handle (CLI-only optimization). Marked internal: this field is
- excluded from the public SDK surface. When the CLI migrates to a process-separated SDK,
- the same bidirectional prompt-routing handshake is expressed via dedicated remote-control
- RPCs (register/resolve) rather than a shared in-process object.
+ excluded from the public SDK surface. Retained as an optional compatibility field; native
+ remote control does not populate or consume it.
"""
@staticmethod
@@ -19720,9 +19911,14 @@ def to_dict(self) -> dict:
class SessionFSSqliteTransactionError:
"""Classified SQLite transaction failure. busyOrLocked guarantees rollback;
postCommitAmbiguous must never be retried.
+
+ Classified transaction failure, when execution did not succeed.
"""
error_class: SessionFSSqliteTransactionErrorClass
+ """Machine-readable classification of the transaction failure."""
+
message: str
+ """Human-readable transaction failure message."""
@staticmethod
def from_dict(obj: Any) -> 'SessionFSSqliteTransactionError':
@@ -19832,6 +20028,7 @@ class SessionLimitPredictionTierOption:
"""AI-credit cap for this tier."""
tier: SessionLimitPredictionTier
+ """Semantic usage tier."""
@staticmethod
def from_dict(obj: Any) -> 'SessionLimitPredictionTierOption':
@@ -19853,11 +20050,16 @@ class SessionOpenOptionsAdditionalContentExclusionPolicyRule:
conditions, and source.
"""
paths: list[str]
+ """Path patterns covered by this rule."""
+
source: SessionOpenOptionsAdditionalContentExclusionPolicyRuleSource
"""Source descriptor for a `sessions.open` content-exclusion rule, with source name and type."""
if_any_match: list[str] | None = None
+ """Conditions of which at least one must match."""
+
if_none_match: list[str] | None = None
+ """Conditions none of which may match."""
@staticmethod
def from_dict(obj: Any) -> 'SessionOpenOptionsAdditionalContentExclusionPolicyRule':
@@ -19936,11 +20138,18 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionSettingsJobSnapshot:
- """Redacted job settings for a session. The job nonce is excluded."""
+ """Redacted job settings for a session. The job nonce is excluded.
+ Redacted job settings.
+ """
built_in_tool_availability: SessionSettingsBuiltInToolAvailabilitySnapshot | None = None
+ """Availability of job-specific built-in tools."""
+
event_type: str | None = None
+ """GitHub Actions event type for the job."""
+
is_trigger_job: bool | None = None
+ """Whether this is the workflow's trigger job."""
@staticmethod
def from_dict(obj: Any) -> 'SessionSettingsJobSnapshot':
@@ -20714,6 +20923,224 @@ def to_dict(self) -> dict:
result["arguments"] = from_union([lambda x: from_dict(lambda x: x, x), from_none], self.arguments)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPSerializableServerConfig:
+ """MCP server configuration (stdio process or remote HTTP/SSE)
+
+ Serializable MCP server configuration (stdio process or remote HTTP/SSE)
+
+ Replacement MCP server configuration (stdio process or remote HTTP/SSE). Omit to restart
+ the server with its already-registered configuration (config-free restart-by-name).
+
+ MCP server configuration (stdio process or remote HTTP/SSE). Omit to start the server
+ with its already-registered configuration (config-free start-by-name).
+
+ Stdio MCP server configuration launched as a child process.
+
+ Remote MCP server configuration accessed over HTTP or SSE.
+ """
+ args: list[str] | None = None
+ """Command-line arguments passed to the Stdio MCP server process."""
+
+ auth: bool | MCPServerAuthConfigRedirectPort | None = None
+ """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
+
+ command: str | None = None
+ """Executable command used to start the Stdio MCP server process."""
+
+ config_warnings: list[str] | None = None
+ """Configuration warnings recorded while loading the server."""
+
+ cwd: str | None = None
+ """Working directory for the Stdio MCP server process."""
+
+ defer_tools: MCPServerConfigDeferTools | None = None
+ """Controls if tools provided by this server can be loaded on demand via tool search (auto)
+ or always included in the initial tool list (never)
+ """
+ disable_secret_masking: bool | None = None
+ """Whether secret masking is disabled for calls to this server."""
+
+ disable_tool_cache: bool | None = None
+ """Set to true to disable persisted MCP tool snapshots for this server. Live tool discovery
+ is unaffected.
+ """
+ display_name: str | None = None
+ """Optional human-readable server name."""
+
+ env: dict[str, str] | None = None
+ """Environment variables to pass to the Stdio MCP server process."""
+
+ events: list[str] | None = None
+ """Event types this server receives as Copilot notifications."""
+
+ exclude_tools: list[str] | None = None
+ """Tool names excluded after the include filter is applied."""
+
+ filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode | None = None
+ """Content filtering mode to apply to all tools, or a map of tool name to content filtering
+ mode.
+ """
+ is_default_server: bool | None = None
+ """Whether this server is a built-in fallback used when the user has not configured their
+ own server.
+ """
+ notifications: list[str] | None = None
+ """Copilot notification types this server may send to the host."""
+
+ oidc: bool | MCPServerAuthConfigRedirectPort | None = None
+ """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
+
+ safe_for_telemetry: bool | MCPSafeForTelemetryFields | None = None
+ """Telemetry-obfuscation policy for this server's tools."""
+
+ source: McpServerSource | None = None
+ """The origin of this server configuration."""
+
+ source_path: str | None = None
+ """Source file path recorded while loading the config."""
+
+ source_plugin: str | None = None
+ """Plugin that provided this server."""
+
+ source_plugin_spec: bool | None = None
+ """Whether the providing plugin uses the Open Plugin Spec."""
+
+ source_plugin_version: str | None = None
+ """Version of the plugin that provided this server."""
+
+ timeout: int | None = None
+ """Timeout in milliseconds for tool discovery and tool calls."""
+
+ tools: list[str] | None = None
+ """Tools to include. Defaults to all tools if not specified."""
+
+ type: MCPSerializableServerConfigType | None = None
+ """Local transport type. Defaults to stdio when omitted.
+
+ Remote transport type. Defaults to "http" when omitted.
+ """
+ headers: dict[str, str] | None = None
+ """HTTP headers to include in requests to the remote MCP server."""
+
+ headers_refresh_ttl_ms: int | None = None
+ """Dynamic-header refresh cache lifetime in milliseconds."""
+
+ oauth_client_id: str | None = None
+ """OAuth client ID for a pre-registered remote MCP OAuth client."""
+
+ oauth_grant_type: MCPGrantType | None = None
+ """OAuth grant type to use when authenticating to the remote MCP server."""
+
+ oauth_public_client: bool | None = None
+ """Whether the configured OAuth client is public and does not require a client secret."""
+
+ url: str | None = None
+ """URL of the remote MCP server endpoint."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPSerializableServerConfig':
+ assert isinstance(obj, dict)
+ args = from_union([lambda x: from_list(from_str, x), from_none], obj.get("args"))
+ auth = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("auth"))
+ command = from_union([from_str, from_none], obj.get("command"))
+ config_warnings = from_union([lambda x: from_list(from_str, x), from_none], obj.get("configWarnings"))
+ cwd = from_union([from_str, from_none], obj.get("cwd"))
+ defer_tools = from_union([MCPServerConfigDeferTools, from_none], obj.get("deferTools"))
+ disable_secret_masking = from_union([from_bool, from_none], obj.get("disableSecretMasking"))
+ disable_tool_cache = from_union([from_bool, from_none], obj.get("disableToolCache"))
+ display_name = from_union([from_str, from_none], obj.get("displayName"))
+ env = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("env"))
+ events = from_union([lambda x: from_list(from_str, x), from_none], obj.get("events"))
+ exclude_tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("excludeTools"))
+ filter_mapping = from_union([lambda x: from_dict(ContentFilterMode, x), ContentFilterMode, from_none], obj.get("filterMapping"))
+ is_default_server = from_union([from_bool, from_none], obj.get("isDefaultServer"))
+ notifications = from_union([lambda x: from_list(from_str, x), from_none], obj.get("notifications"))
+ oidc = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("oidc"))
+ safe_for_telemetry = from_union([from_bool, MCPSafeForTelemetryFields.from_dict, from_none], obj.get("safeForTelemetry"))
+ source = from_union([McpServerSource, from_none], obj.get("source"))
+ source_path = from_union([from_str, from_none], obj.get("sourcePath"))
+ source_plugin = from_union([from_str, from_none], obj.get("sourcePlugin"))
+ source_plugin_spec = from_union([from_bool, from_none], obj.get("sourcePluginSpec"))
+ source_plugin_version = from_union([from_str, from_none], obj.get("sourcePluginVersion"))
+ timeout = from_union([from_int, from_none], obj.get("timeout"))
+ tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("tools"))
+ type = from_union([MCPSerializableServerConfigType, from_none], obj.get("type"))
+ headers = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("headers"))
+ headers_refresh_ttl_ms = from_union([from_int, from_none], obj.get("headersRefreshTtlMs"))
+ oauth_client_id = from_union([from_str, from_none], obj.get("oauthClientId"))
+ oauth_grant_type = from_union([MCPGrantType, from_none], obj.get("oauthGrantType"))
+ oauth_public_client = from_union([from_bool, from_none], obj.get("oauthPublicClient"))
+ url = from_union([from_str, from_none], obj.get("url"))
+ return MCPSerializableServerConfig(args, auth, command, config_warnings, cwd, defer_tools, disable_secret_masking, disable_tool_cache, display_name, env, events, exclude_tools, filter_mapping, is_default_server, notifications, oidc, safe_for_telemetry, source, source_path, source_plugin, source_plugin_spec, source_plugin_version, timeout, tools, type, headers, headers_refresh_ttl_ms, oauth_client_id, oauth_grant_type, oauth_public_client, url)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ if self.args is not None:
+ result["args"] = from_union([lambda x: from_list(from_str, x), from_none], self.args)
+ if self.auth is not None:
+ result["auth"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.auth)
+ if self.command is not None:
+ result["command"] = from_union([from_str, from_none], self.command)
+ if self.config_warnings is not None:
+ result["configWarnings"] = from_union([lambda x: from_list(from_str, x), from_none], self.config_warnings)
+ if self.cwd is not None:
+ result["cwd"] = from_union([from_str, from_none], self.cwd)
+ if self.defer_tools is not None:
+ result["deferTools"] = from_union([lambda x: to_enum(MCPServerConfigDeferTools, x), from_none], self.defer_tools)
+ if self.disable_secret_masking is not None:
+ result["disableSecretMasking"] = from_union([from_bool, from_none], self.disable_secret_masking)
+ if self.disable_tool_cache is not None:
+ result["disableToolCache"] = from_union([from_bool, from_none], self.disable_tool_cache)
+ if self.display_name is not None:
+ result["displayName"] = from_union([from_str, from_none], self.display_name)
+ if self.env is not None:
+ result["env"] = from_union([lambda x: from_dict(from_str, x), from_none], self.env)
+ if self.events is not None:
+ result["events"] = from_union([lambda x: from_list(from_str, x), from_none], self.events)
+ if self.exclude_tools is not None:
+ result["excludeTools"] = from_union([lambda x: from_list(from_str, x), from_none], self.exclude_tools)
+ if self.filter_mapping is not None:
+ result["filterMapping"] = from_union([lambda x: from_dict(lambda x: to_enum(ContentFilterMode, x), x), lambda x: to_enum(ContentFilterMode, x), from_none], self.filter_mapping)
+ if self.is_default_server is not None:
+ result["isDefaultServer"] = from_union([from_bool, from_none], self.is_default_server)
+ if self.notifications is not None:
+ result["notifications"] = from_union([lambda x: from_list(from_str, x), from_none], self.notifications)
+ if self.oidc is not None:
+ result["oidc"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.oidc)
+ if self.safe_for_telemetry is not None:
+ result["safeForTelemetry"] = from_union([from_bool, lambda x: to_class(MCPSafeForTelemetryFields, x), from_none], self.safe_for_telemetry)
+ if self.source is not None:
+ result["source"] = from_union([lambda x: to_enum(McpServerSource, x), from_none], self.source)
+ if self.source_path is not None:
+ result["sourcePath"] = from_union([from_str, from_none], self.source_path)
+ if self.source_plugin is not None:
+ result["sourcePlugin"] = from_union([from_str, from_none], self.source_plugin)
+ if self.source_plugin_spec is not None:
+ result["sourcePluginSpec"] = from_union([from_bool, from_none], self.source_plugin_spec)
+ if self.source_plugin_version is not None:
+ result["sourcePluginVersion"] = from_union([from_str, from_none], self.source_plugin_version)
+ if self.timeout is not None:
+ result["timeout"] = from_union([from_int, from_none], self.timeout)
+ if self.tools is not None:
+ result["tools"] = from_union([lambda x: from_list(from_str, x), from_none], self.tools)
+ if self.type is not None:
+ result["type"] = from_union([lambda x: to_enum(MCPSerializableServerConfigType, x), from_none], self.type)
+ if self.headers is not None:
+ result["headers"] = from_union([lambda x: from_dict(from_str, x), from_none], self.headers)
+ if self.headers_refresh_ttl_ms is not None:
+ result["headersRefreshTtlMs"] = from_union([from_int, from_none], self.headers_refresh_ttl_ms)
+ if self.oauth_client_id is not None:
+ result["oauthClientId"] = from_union([from_str, from_none], self.oauth_client_id)
+ if self.oauth_grant_type is not None:
+ result["oauthGrantType"] = from_union([lambda x: to_enum(MCPGrantType, x), from_none], self.oauth_grant_type)
+ if self.oauth_public_client is not None:
+ result["oauthPublicClient"] = from_union([from_bool, from_none], self.oauth_public_client)
+ if self.url is not None:
+ result["url"] = from_union([from_str, from_none], self.url)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPToolUI:
@@ -20744,6 +21171,352 @@ def to_dict(self) -> dict:
result["visibility"] = from_union([lambda x: from_list(lambda x: to_enum(MCPToolUIVisibility, x), x), from_none], self.visibility)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPServerConfigHTTP:
+ """Remote MCP server configuration accessed over HTTP or SSE."""
+
+ url: str
+ """URL of the remote MCP server endpoint."""
+
+ auth: bool | MCPServerAuthConfigRedirectPort | None = None
+ """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
+
+ config_warnings: list[str] | None = None
+ """Configuration warnings recorded while loading the server."""
+
+ defer_tools: MCPServerConfigDeferTools | None = None
+ """Controls if tools provided by this server can be loaded on demand via tool search (auto)
+ or always included in the initial tool list (never)
+ """
+ disable_secret_masking: bool | None = None
+ """Whether secret masking is disabled for calls to this server."""
+
+ disable_tool_cache: bool | None = None
+ """Set to true to disable persisted MCP tool snapshots for this server. Live tool discovery
+ is unaffected.
+ """
+ display_name: str | None = None
+ """Optional human-readable server name."""
+
+ events: list[str] | None = None
+ """Event types this server receives as Copilot notifications."""
+
+ exclude_tools: list[str] | None = None
+ """Tool names excluded after the include filter is applied."""
+
+ filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode | None = None
+ """Content filtering mode to apply to all tools, or a map of tool name to content filtering
+ mode.
+ """
+ headers: dict[str, str] | None = None
+ """HTTP headers to include in requests to the remote MCP server."""
+
+ headers_refresh_ttl_ms: int | None = None
+ """Dynamic-header refresh cache lifetime in milliseconds."""
+
+ is_default_server: bool | None = None
+ """Whether this server is a built-in fallback used when the user has not configured their
+ own server.
+ """
+ notifications: list[str] | None = None
+ """Copilot notification types this server may send to the host."""
+
+ oauth_client_id: str | None = None
+ """OAuth client ID for a pre-registered remote MCP OAuth client."""
+
+ oauth_grant_type: MCPGrantType | None = None
+ """OAuth grant type to use when authenticating to the remote MCP server."""
+
+ oauth_public_client: bool | None = None
+ """Whether the configured OAuth client is public and does not require a client secret."""
+
+ oidc: bool | MCPServerAuthConfigRedirectPort | None = None
+ """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
+
+ safe_for_telemetry: bool | MCPSafeForTelemetryFields | None = None
+ """Telemetry-obfuscation policy for this server's tools."""
+
+ source: McpServerSource | None = None
+ """The origin of this server configuration."""
+
+ source_path: str | None = None
+ """Source file path recorded while loading the config."""
+
+ source_plugin: str | None = None
+ """Plugin that provided this server."""
+
+ source_plugin_spec: bool | None = None
+ """Whether the providing plugin uses the Open Plugin Spec."""
+
+ source_plugin_version: str | None = None
+ """Version of the plugin that provided this server."""
+
+ timeout: int | None = None
+ """Timeout in milliseconds for tool discovery and tool calls."""
+
+ tools: list[str] | None = None
+ """Tools to include. Defaults to all tools if not specified."""
+
+ type: MCPServerConfigHTTPType | None = None
+ """Remote transport type. Defaults to "http" when omitted."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPServerConfigHTTP':
+ assert isinstance(obj, dict)
+ url = from_str(obj.get("url"))
+ auth = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("auth"))
+ config_warnings = from_union([lambda x: from_list(from_str, x), from_none], obj.get("configWarnings"))
+ defer_tools = from_union([MCPServerConfigDeferTools, from_none], obj.get("deferTools"))
+ disable_secret_masking = from_union([from_bool, from_none], obj.get("disableSecretMasking"))
+ disable_tool_cache = from_union([from_bool, from_none], obj.get("disableToolCache"))
+ display_name = from_union([from_str, from_none], obj.get("displayName"))
+ events = from_union([lambda x: from_list(from_str, x), from_none], obj.get("events"))
+ exclude_tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("excludeTools"))
+ filter_mapping = from_union([lambda x: from_dict(ContentFilterMode, x), ContentFilterMode, from_none], obj.get("filterMapping"))
+ headers = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("headers"))
+ headers_refresh_ttl_ms = from_union([from_int, from_none], obj.get("headersRefreshTtlMs"))
+ is_default_server = from_union([from_bool, from_none], obj.get("isDefaultServer"))
+ notifications = from_union([lambda x: from_list(from_str, x), from_none], obj.get("notifications"))
+ oauth_client_id = from_union([from_str, from_none], obj.get("oauthClientId"))
+ oauth_grant_type = from_union([MCPGrantType, from_none], obj.get("oauthGrantType"))
+ oauth_public_client = from_union([from_bool, from_none], obj.get("oauthPublicClient"))
+ oidc = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("oidc"))
+ safe_for_telemetry = from_union([from_bool, MCPSafeForTelemetryFields.from_dict, from_none], obj.get("safeForTelemetry"))
+ source = from_union([McpServerSource, from_none], obj.get("source"))
+ source_path = from_union([from_str, from_none], obj.get("sourcePath"))
+ source_plugin = from_union([from_str, from_none], obj.get("sourcePlugin"))
+ source_plugin_spec = from_union([from_bool, from_none], obj.get("sourcePluginSpec"))
+ source_plugin_version = from_union([from_str, from_none], obj.get("sourcePluginVersion"))
+ timeout = from_union([from_int, from_none], obj.get("timeout"))
+ tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("tools"))
+ type = from_union([MCPServerConfigHTTPType, from_none], obj.get("type"))
+ return MCPServerConfigHTTP(url, auth, config_warnings, defer_tools, disable_secret_masking, disable_tool_cache, display_name, events, exclude_tools, filter_mapping, headers, headers_refresh_ttl_ms, is_default_server, notifications, oauth_client_id, oauth_grant_type, oauth_public_client, oidc, safe_for_telemetry, source, source_path, source_plugin, source_plugin_spec, source_plugin_version, timeout, tools, type)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["url"] = from_str(self.url)
+ if self.auth is not None:
+ result["auth"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.auth)
+ if self.config_warnings is not None:
+ result["configWarnings"] = from_union([lambda x: from_list(from_str, x), from_none], self.config_warnings)
+ if self.defer_tools is not None:
+ result["deferTools"] = from_union([lambda x: to_enum(MCPServerConfigDeferTools, x), from_none], self.defer_tools)
+ if self.disable_secret_masking is not None:
+ result["disableSecretMasking"] = from_union([from_bool, from_none], self.disable_secret_masking)
+ if self.disable_tool_cache is not None:
+ result["disableToolCache"] = from_union([from_bool, from_none], self.disable_tool_cache)
+ if self.display_name is not None:
+ result["displayName"] = from_union([from_str, from_none], self.display_name)
+ if self.events is not None:
+ result["events"] = from_union([lambda x: from_list(from_str, x), from_none], self.events)
+ if self.exclude_tools is not None:
+ result["excludeTools"] = from_union([lambda x: from_list(from_str, x), from_none], self.exclude_tools)
+ if self.filter_mapping is not None:
+ result["filterMapping"] = from_union([lambda x: from_dict(lambda x: to_enum(ContentFilterMode, x), x), lambda x: to_enum(ContentFilterMode, x), from_none], self.filter_mapping)
+ if self.headers is not None:
+ result["headers"] = from_union([lambda x: from_dict(from_str, x), from_none], self.headers)
+ if self.headers_refresh_ttl_ms is not None:
+ result["headersRefreshTtlMs"] = from_union([from_int, from_none], self.headers_refresh_ttl_ms)
+ if self.is_default_server is not None:
+ result["isDefaultServer"] = from_union([from_bool, from_none], self.is_default_server)
+ if self.notifications is not None:
+ result["notifications"] = from_union([lambda x: from_list(from_str, x), from_none], self.notifications)
+ if self.oauth_client_id is not None:
+ result["oauthClientId"] = from_union([from_str, from_none], self.oauth_client_id)
+ if self.oauth_grant_type is not None:
+ result["oauthGrantType"] = from_union([lambda x: to_enum(MCPGrantType, x), from_none], self.oauth_grant_type)
+ if self.oauth_public_client is not None:
+ result["oauthPublicClient"] = from_union([from_bool, from_none], self.oauth_public_client)
+ if self.oidc is not None:
+ result["oidc"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.oidc)
+ if self.safe_for_telemetry is not None:
+ result["safeForTelemetry"] = from_union([from_bool, lambda x: to_class(MCPSafeForTelemetryFields, x), from_none], self.safe_for_telemetry)
+ if self.source is not None:
+ result["source"] = from_union([lambda x: to_enum(McpServerSource, x), from_none], self.source)
+ if self.source_path is not None:
+ result["sourcePath"] = from_union([from_str, from_none], self.source_path)
+ if self.source_plugin is not None:
+ result["sourcePlugin"] = from_union([from_str, from_none], self.source_plugin)
+ if self.source_plugin_spec is not None:
+ result["sourcePluginSpec"] = from_union([from_bool, from_none], self.source_plugin_spec)
+ if self.source_plugin_version is not None:
+ result["sourcePluginVersion"] = from_union([from_str, from_none], self.source_plugin_version)
+ if self.timeout is not None:
+ result["timeout"] = from_union([from_int, from_none], self.timeout)
+ if self.tools is not None:
+ result["tools"] = from_union([lambda x: from_list(from_str, x), from_none], self.tools)
+ if self.type is not None:
+ result["type"] = from_union([lambda x: to_enum(MCPServerConfigHTTPType, x), from_none], self.type)
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPServerConfigStdio:
+ """Stdio MCP server configuration launched as a child process."""
+
+ command: str
+ """Executable command used to start the Stdio MCP server process."""
+
+ args: list[str] | None = None
+ """Command-line arguments passed to the Stdio MCP server process."""
+
+ auth: bool | MCPServerAuthConfigRedirectPort | None = None
+ """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
+
+ config_warnings: list[str] | None = None
+ """Configuration warnings recorded while loading the server."""
+
+ cwd: str | None = None
+ """Working directory for the Stdio MCP server process."""
+
+ defer_tools: MCPServerConfigDeferTools | None = None
+ """Controls if tools provided by this server can be loaded on demand via tool search (auto)
+ or always included in the initial tool list (never)
+ """
+ disable_secret_masking: bool | None = None
+ """Whether secret masking is disabled for calls to this server."""
+
+ disable_tool_cache: bool | None = None
+ """Set to true to disable persisted MCP tool snapshots for this server. Live tool discovery
+ is unaffected.
+ """
+ display_name: str | None = None
+ """Optional human-readable server name."""
+
+ env: dict[str, str] | None = None
+ """Environment variables to pass to the Stdio MCP server process."""
+
+ events: list[str] | None = None
+ """Event types this server receives as Copilot notifications."""
+
+ exclude_tools: list[str] | None = None
+ """Tool names excluded after the include filter is applied."""
+
+ filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode | None = None
+ """Content filtering mode to apply to all tools, or a map of tool name to content filtering
+ mode.
+ """
+ is_default_server: bool | None = None
+ """Whether this server is a built-in fallback used when the user has not configured their
+ own server.
+ """
+ notifications: list[str] | None = None
+ """Copilot notification types this server may send to the host."""
+
+ oidc: bool | MCPServerAuthConfigRedirectPort | None = None
+ """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
+
+ safe_for_telemetry: bool | MCPSafeForTelemetryFields | None = None
+ """Telemetry-obfuscation policy for this server's tools."""
+
+ source: McpServerSource | None = None
+ """The origin of this server configuration."""
+
+ source_path: str | None = None
+ """Source file path recorded while loading the config."""
+
+ source_plugin: str | None = None
+ """Plugin that provided this server."""
+
+ source_plugin_spec: bool | None = None
+ """Whether the providing plugin uses the Open Plugin Spec."""
+
+ source_plugin_version: str | None = None
+ """Version of the plugin that provided this server."""
+
+ timeout: int | None = None
+ """Timeout in milliseconds for tool discovery and tool calls."""
+
+ tools: list[str] | None = None
+ """Tools to include. Defaults to all tools if not specified."""
+
+ type: MCPServerConfigStdioType | None = None
+ """Local transport type. Defaults to stdio when omitted."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPServerConfigStdio':
+ assert isinstance(obj, dict)
+ command = from_str(obj.get("command"))
+ args = from_union([lambda x: from_list(from_str, x), from_none], obj.get("args"))
+ auth = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("auth"))
+ config_warnings = from_union([lambda x: from_list(from_str, x), from_none], obj.get("configWarnings"))
+ cwd = from_union([from_str, from_none], obj.get("cwd"))
+ defer_tools = from_union([MCPServerConfigDeferTools, from_none], obj.get("deferTools"))
+ disable_secret_masking = from_union([from_bool, from_none], obj.get("disableSecretMasking"))
+ disable_tool_cache = from_union([from_bool, from_none], obj.get("disableToolCache"))
+ display_name = from_union([from_str, from_none], obj.get("displayName"))
+ env = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("env"))
+ events = from_union([lambda x: from_list(from_str, x), from_none], obj.get("events"))
+ exclude_tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("excludeTools"))
+ filter_mapping = from_union([lambda x: from_dict(ContentFilterMode, x), ContentFilterMode, from_none], obj.get("filterMapping"))
+ is_default_server = from_union([from_bool, from_none], obj.get("isDefaultServer"))
+ notifications = from_union([lambda x: from_list(from_str, x), from_none], obj.get("notifications"))
+ oidc = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("oidc"))
+ safe_for_telemetry = from_union([from_bool, MCPSafeForTelemetryFields.from_dict, from_none], obj.get("safeForTelemetry"))
+ source = from_union([McpServerSource, from_none], obj.get("source"))
+ source_path = from_union([from_str, from_none], obj.get("sourcePath"))
+ source_plugin = from_union([from_str, from_none], obj.get("sourcePlugin"))
+ source_plugin_spec = from_union([from_bool, from_none], obj.get("sourcePluginSpec"))
+ source_plugin_version = from_union([from_str, from_none], obj.get("sourcePluginVersion"))
+ timeout = from_union([from_int, from_none], obj.get("timeout"))
+ tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("tools"))
+ type = from_union([MCPServerConfigStdioType, from_none], obj.get("type"))
+ return MCPServerConfigStdio(command, args, auth, config_warnings, cwd, defer_tools, disable_secret_masking, disable_tool_cache, display_name, env, events, exclude_tools, filter_mapping, is_default_server, notifications, oidc, safe_for_telemetry, source, source_path, source_plugin, source_plugin_spec, source_plugin_version, timeout, tools, type)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["command"] = from_str(self.command)
+ if self.args is not None:
+ result["args"] = from_union([lambda x: from_list(from_str, x), from_none], self.args)
+ if self.auth is not None:
+ result["auth"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.auth)
+ if self.config_warnings is not None:
+ result["configWarnings"] = from_union([lambda x: from_list(from_str, x), from_none], self.config_warnings)
+ if self.cwd is not None:
+ result["cwd"] = from_union([from_str, from_none], self.cwd)
+ if self.defer_tools is not None:
+ result["deferTools"] = from_union([lambda x: to_enum(MCPServerConfigDeferTools, x), from_none], self.defer_tools)
+ if self.disable_secret_masking is not None:
+ result["disableSecretMasking"] = from_union([from_bool, from_none], self.disable_secret_masking)
+ if self.disable_tool_cache is not None:
+ result["disableToolCache"] = from_union([from_bool, from_none], self.disable_tool_cache)
+ if self.display_name is not None:
+ result["displayName"] = from_union([from_str, from_none], self.display_name)
+ if self.env is not None:
+ result["env"] = from_union([lambda x: from_dict(from_str, x), from_none], self.env)
+ if self.events is not None:
+ result["events"] = from_union([lambda x: from_list(from_str, x), from_none], self.events)
+ if self.exclude_tools is not None:
+ result["excludeTools"] = from_union([lambda x: from_list(from_str, x), from_none], self.exclude_tools)
+ if self.filter_mapping is not None:
+ result["filterMapping"] = from_union([lambda x: from_dict(lambda x: to_enum(ContentFilterMode, x), x), lambda x: to_enum(ContentFilterMode, x), from_none], self.filter_mapping)
+ if self.is_default_server is not None:
+ result["isDefaultServer"] = from_union([from_bool, from_none], self.is_default_server)
+ if self.notifications is not None:
+ result["notifications"] = from_union([lambda x: from_list(from_str, x), from_none], self.notifications)
+ if self.oidc is not None:
+ result["oidc"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.oidc)
+ if self.safe_for_telemetry is not None:
+ result["safeForTelemetry"] = from_union([from_bool, lambda x: to_class(MCPSafeForTelemetryFields, x), from_none], self.safe_for_telemetry)
+ if self.source is not None:
+ result["source"] = from_union([lambda x: to_enum(McpServerSource, x), from_none], self.source)
+ if self.source_path is not None:
+ result["sourcePath"] = from_union([from_str, from_none], self.source_path)
+ if self.source_plugin is not None:
+ result["sourcePlugin"] = from_union([from_str, from_none], self.source_plugin)
+ if self.source_plugin_spec is not None:
+ result["sourcePluginSpec"] = from_union([from_bool, from_none], self.source_plugin_spec)
+ if self.source_plugin_version is not None:
+ result["sourcePluginVersion"] = from_union([from_str, from_none], self.source_plugin_version)
+ if self.timeout is not None:
+ result["timeout"] = from_union([from_int, from_none], self.timeout)
+ if self.tools is not None:
+ result["tools"] = from_union([lambda x: from_list(from_str, x), from_none], self.tools)
+ if self.type is not None:
+ result["type"] = from_union([lambda x: to_enum(MCPServerConfigStdioType, x), from_none], self.type)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class PermissionLocationAddToolApprovalParams:
@@ -20838,6 +21611,9 @@ class TaskAgentInfo:
completed_at: datetime | None = None
"""ISO 8601 timestamp when the task finished"""
+ display_name: str | None = None
+ """Friendly, non-unique name intended for display"""
+
error: str | None = None
"""Error message when the task failed"""
@@ -20873,6 +21649,7 @@ def from_dict(obj: Any) -> 'TaskAgentInfo':
active_time_ms = from_union([from_int, from_none], obj.get("activeTimeMs"))
can_promote_to_background = from_union([from_bool, from_none], obj.get("canPromoteToBackground"))
completed_at = from_union([from_datetime, from_none], obj.get("completedAt"))
+ display_name = from_union([from_str, from_none], obj.get("displayName"))
error = from_union([from_str, from_none], obj.get("error"))
execution_mode = from_union([TaskExecutionMode, from_none], obj.get("executionMode"))
idle_since = from_union([from_datetime, from_none], obj.get("idleSince"))
@@ -20880,7 +21657,7 @@ def from_dict(obj: Any) -> 'TaskAgentInfo':
model = from_union([from_str, from_none], obj.get("model"))
resolved_model = from_union([from_str, from_none], obj.get("resolvedModel"))
result = from_union([from_str, from_none], obj.get("result"))
- return TaskAgentInfo(agent_type, description, id, prompt, started_at, status, tool_call_id, active_started_at, active_time_ms, can_promote_to_background, completed_at, error, execution_mode, idle_since, latest_response, model, resolved_model, result)
+ return TaskAgentInfo(agent_type, description, id, prompt, started_at, status, tool_call_id, active_started_at, active_time_ms, can_promote_to_background, completed_at, display_name, error, execution_mode, idle_since, latest_response, model, resolved_model, result)
def to_dict(self) -> dict:
result: dict = {}
@@ -20900,6 +21677,8 @@ def to_dict(self) -> dict:
result["canPromoteToBackground"] = from_union([from_bool, from_none], self.can_promote_to_background)
if self.completed_at is not None:
result["completedAt"] = from_union([lambda x: x.isoformat(), from_none], self.completed_at)
+ if self.display_name is not None:
+ result["displayName"] = from_union([from_str, from_none], self.display_name)
if self.error is not None:
result["error"] = from_union([from_str, from_none], self.error)
if self.execution_mode is not None:
@@ -21229,6 +22008,9 @@ class UIElicitationResponse:
action: UIElicitationResponseAction
"""The user's response: accept (submitted), decline (rejected), or cancel (dismissed)"""
+ meta: dict[str, Any] | None = None
+ """MCP response metadata."""
+
content: dict[str, float | bool | list[str] | str] | None = None
"""The form values submitted by the user (present when action is 'accept')"""
@@ -21236,12 +22018,15 @@ class UIElicitationResponse:
def from_dict(obj: Any) -> 'UIElicitationResponse':
assert isinstance(obj, dict)
action = UIElicitationResponseAction(obj.get("action"))
+ meta = from_union([lambda x: from_dict(lambda x: x, x), from_none], obj.get("_meta"))
content = from_union([lambda x: from_dict(lambda x: from_union([from_float, from_bool, lambda x: from_list(from_str, x), from_str], x), x), from_none], obj.get("content"))
- return UIElicitationResponse(action, content)
+ return UIElicitationResponse(action, meta, content)
def to_dict(self) -> dict:
result: dict = {}
result["action"] = to_enum(UIElicitationResponseAction, self.action)
+ if self.meta is not None:
+ result["_meta"] = from_union([lambda x: from_dict(lambda x: x, x), from_none], self.meta)
if self.content is not None:
result["content"] = from_union([lambda x: from_dict(lambda x: from_union([to_float, from_bool, lambda x: from_list(from_str, x), from_str], x), x), from_none], self.content)
return result
@@ -21836,6 +22621,7 @@ class SessionManagedSettings:
Composes restrictively with self-fetched and device policy and is not persisted.
"""
permissions: SessionManagedPermissions | None = None
+ """Managed permission policy injected by the SDK host."""
@staticmethod
def from_dict(obj: Any) -> 'SessionManagedSettings':
@@ -21893,6 +22679,36 @@ def to_dict(self) -> dict:
result["extensions"] = from_list(lambda x: to_class(Extension, x), self.extensions)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class PermissionDecisionApproveForLocationApprovalExtensionEnvAccess:
+ """Location-scoped approval details for an extension's access to sensitive environment
+ variables, keyed by extension name and the exact set of variable names.
+ """
+ environment_variables: list[str]
+ """Names of the sensitive environment variables this approval covers. Values are never
+ persisted.
+ """
+ extension_name: str
+ """Extension name."""
+
+ kind: ClassVar[str] = "extension-env-access"
+ """Approval covering an extension's request to read sensitive environment variables."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'PermissionDecisionApproveForLocationApprovalExtensionEnvAccess':
+ assert isinstance(obj, dict)
+ environment_variables = from_list(from_str, obj.get("environmentVariables"))
+ extension_name = from_str(obj.get("extensionName"))
+ return PermissionDecisionApproveForLocationApprovalExtensionEnvAccess(environment_variables, extension_name)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["environmentVariables"] = from_list(from_str, self.environment_variables)
+ result["extensionName"] = from_str(self.extension_name)
+ result["kind"] = self.kind
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess:
@@ -21917,6 +22733,36 @@ def to_dict(self) -> dict:
result["kind"] = self.kind
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class PermissionDecisionApproveForSessionApprovalExtensionEnvAccess:
+ """Session-scoped approval details for an extension's access to sensitive environment
+ variables, keyed by extension name and the exact set of variable names.
+ """
+ environment_variables: list[str]
+ """Names of the sensitive environment variables this approval covers. Values are never
+ persisted.
+ """
+ extension_name: str
+ """Extension name."""
+
+ kind: ClassVar[str] = "extension-env-access"
+ """Approval covering an extension's request to read sensitive environment variables."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'PermissionDecisionApproveForSessionApprovalExtensionEnvAccess':
+ assert isinstance(obj, dict)
+ environment_variables = from_list(from_str, obj.get("environmentVariables"))
+ extension_name = from_str(obj.get("extensionName"))
+ return PermissionDecisionApproveForSessionApprovalExtensionEnvAccess(environment_variables, extension_name)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["environmentVariables"] = from_list(from_str, self.environment_variables)
+ result["extensionName"] = from_str(self.extension_name)
+ result["kind"] = self.kind
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess:
@@ -21941,6 +22787,36 @@ def to_dict(self) -> dict:
result["kind"] = self.kind
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess:
+ """Location-persisted tool approval details for an extension's access to sensitive
+ environment variables, keyed by extension name and the exact set of variable names.
+ """
+ environment_variables: list[str]
+ """Names of the sensitive environment variables this approval covers. Values are never
+ persisted.
+ """
+ extension_name: str
+ """Extension name."""
+
+ kind: ClassVar[str] = "extension-env-access"
+ """Approval covering an extension's request to read sensitive environment variables."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess':
+ assert isinstance(obj, dict)
+ environment_variables = from_list(from_str, obj.get("environmentVariables"))
+ extension_name = from_str(obj.get("extensionName"))
+ return PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess(environment_variables, extension_name)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["environmentVariables"] = from_list(from_str, self.environment_variables)
+ result["extensionName"] = from_str(self.extension_name)
+ result["kind"] = self.kind
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess:
@@ -22093,9 +22969,16 @@ class FactoryRunTerminal:
"""Prompt-safe terminal factory outcome."""
error: str | None = None
+ """Human-readable terminal error."""
+
failure: FactoryRunFailure | None = None
+ """Machine-readable terminal failure."""
+
reason: str | None = None
+ """Human-readable terminal reason."""
+
result_preview: str | None = None
+ """Prompt-safe preview of the completed result."""
@staticmethod
def from_dict(obj: Any) -> 'FactoryRunTerminal':
@@ -22206,16 +23089,27 @@ def to_dict(self) -> dict:
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class FactoryProgressPage:
- """A bidirectional page of factory progress."""
+ """A bidirectional page of factory progress.
+ Bidirectional page of durable factory progress.
+ """
has_more_newer: bool
+ """Whether progress records newer than this page exist."""
+
has_more_older: bool
+ """Whether progress records older than this page exist."""
+
records: list[FactoryProgressLine]
+ """Progress records in sequence order."""
+
revision: int
"""Run revision reflected by this page."""
newest_seq: int | None = None
+ """Newest sequence number in this page, or null when empty."""
+
oldest_seq: int | None = None
+ """Oldest sequence number in this page, or null when empty."""
@staticmethod
def from_dict(obj: Any) -> 'FactoryProgressPage':
@@ -22634,6 +23528,16 @@ class RemoteSessionMetadataValue:
context: SessionContext | None = None
"""Most recent working directory context."""
+ host_activity: str | None = None
+ """Host-supplied human description of what the session is doing right now ("running tests",
+ "waiting for approval"). Optional in the protocol and absent on hosts that do not publish
+ it, so never rely on it -- it enriches `hostStatus`, it does not replace it.
+ """
+ host_status: RemoteSessionHostStatus | None = None
+ """Live status as the owning host reports it in its session listing, so a row for a session
+ running elsewhere can show that it is running. Absent for hosts that publish no such
+ status (the cloud task managers), which read as idle.
+ """
name: str | None = None
"""Optional human-friendly name set via /rename."""
@@ -22666,6 +23570,8 @@ def from_dict(obj: Any) -> 'RemoteSessionMetadataValue':
session_id = from_str(obj.get("sessionId"))
start_time = from_str(obj.get("startTime"))
context = from_union([SessionContext.from_dict, from_none], obj.get("context"))
+ host_activity = from_union([from_str, from_none], obj.get("hostActivity"))
+ host_status = from_union([RemoteSessionHostStatus, from_none], obj.get("hostStatus"))
name = from_union([from_str, from_none], obj.get("name"))
pull_request_number = from_union([from_int, from_none], obj.get("pullRequestNumber"))
resource_id = from_union([from_str, from_none], obj.get("resourceId"))
@@ -22673,7 +23579,7 @@ def from_dict(obj: Any) -> 'RemoteSessionMetadataValue':
state = from_union([from_str, from_none], obj.get("state"))
summary = from_union([from_str, from_none], obj.get("summary"))
task_type = from_union([TaskType, from_none], obj.get("taskType"))
- return RemoteSessionMetadataValue(is_remote, modified_time, remote_session_ids, repository, session_id, start_time, context, name, pull_request_number, resource_id, stale_at, state, summary, task_type)
+ return RemoteSessionMetadataValue(is_remote, modified_time, remote_session_ids, repository, session_id, start_time, context, host_activity, host_status, name, pull_request_number, resource_id, stale_at, state, summary, task_type)
def to_dict(self) -> dict:
result: dict = {}
@@ -22685,6 +23591,10 @@ def to_dict(self) -> dict:
result["startTime"] = from_str(self.start_time)
if self.context is not None:
result["context"] = from_union([lambda x: to_class(SessionContext, x), from_none], self.context)
+ if self.host_activity is not None:
+ result["hostActivity"] = from_union([from_str, from_none], self.host_activity)
+ if self.host_status is not None:
+ result["hostStatus"] = from_union([lambda x: to_enum(RemoteSessionHostStatus, x), from_none], self.host_status)
if self.name is not None:
result["name"] = from_union([from_str, from_none], self.name)
if self.pull_request_number is not None:
@@ -22985,129 +23895,6 @@ def to_dict(self) -> dict:
result["context"] = to_class(MCPAppsSetHostContextDetails, self.context)
return result
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class MCPConfigAddRequest:
- """MCP server name and configuration to add to user configuration."""
-
- config: MCPServerConfig
- """MCP server configuration (stdio process or remote HTTP/SSE)"""
-
- name: str
- """Unique name for the MCP server"""
-
- @staticmethod
- def from_dict(obj: Any) -> 'MCPConfigAddRequest':
- assert isinstance(obj, dict)
- config = MCPServerConfig.from_dict(obj.get("config"))
- name = from_str(obj.get("name"))
- return MCPConfigAddRequest(config, name)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["config"] = to_class(MCPServerConfig, self.config)
- result["name"] = from_str(self.name)
- return result
-
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class MCPConfigList:
- """User-configured MCP servers, keyed by server name."""
-
- servers: dict[str, MCPServerConfig]
- """All MCP servers from user config, keyed by name"""
-
- @staticmethod
- def from_dict(obj: Any) -> 'MCPConfigList':
- assert isinstance(obj, dict)
- servers = from_dict(MCPServerConfig.from_dict, obj.get("servers"))
- return MCPConfigList(servers)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["servers"] = from_dict(lambda x: to_class(MCPServerConfig, x), self.servers)
- return result
-
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class MCPConfigUpdateRequest:
- """MCP server name and replacement configuration to write to user configuration."""
-
- config: MCPServerConfig
- """MCP server configuration (stdio process or remote HTTP/SSE)"""
-
- name: str
- """Name of the MCP server to update"""
-
- @staticmethod
- def from_dict(obj: Any) -> 'MCPConfigUpdateRequest':
- assert isinstance(obj, dict)
- config = MCPServerConfig.from_dict(obj.get("config"))
- name = from_str(obj.get("name"))
- return MCPConfigUpdateRequest(config, name)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["config"] = to_class(MCPServerConfig, self.config)
- result["name"] = from_str(self.name)
- return result
-
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class MCPRestartServerRequest:
- """Server name and optional replacement configuration for an individual MCP server restart.
- Omit `config` for a config-free restart-by-name of an already-configured server.
- """
- server_name: str
- """Name of the MCP server to restart"""
-
- config: MCPServerConfig | None = None
- """Replacement MCP server configuration (stdio process or remote HTTP/SSE). Omit to restart
- the server with its already-registered configuration (config-free restart-by-name).
- """
-
- @staticmethod
- def from_dict(obj: Any) -> 'MCPRestartServerRequest':
- assert isinstance(obj, dict)
- server_name = from_str(obj.get("serverName"))
- config = from_union([MCPServerConfig.from_dict, from_none], obj.get("config"))
- return MCPRestartServerRequest(server_name, config)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["serverName"] = from_str(self.server_name)
- if self.config is not None:
- result["config"] = from_union([lambda x: to_class(MCPServerConfig, x), from_none], self.config)
- return result
-
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class MCPStartServerRequest:
- """Server name and optional configuration for an individual MCP server start. Omit `config`
- for a config-free start-by-name of an already-configured server.
- """
- server_name: str
- """Name of the MCP server to start"""
-
- config: MCPServerConfig | None = None
- """MCP server configuration (stdio process or remote HTTP/SSE). Omit to start the server
- with its already-registered configuration (config-free start-by-name).
- """
-
- @staticmethod
- def from_dict(obj: Any) -> 'MCPStartServerRequest':
- assert isinstance(obj, dict)
- server_name = from_str(obj.get("serverName"))
- config = from_union([MCPServerConfig.from_dict, from_none], obj.get("config"))
- return MCPStartServerRequest(server_name, config)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["serverName"] = from_str(self.server_name)
- if self.config is not None:
- result["config"] = from_union([lambda x: to_class(MCPServerConfig, x), from_none], self.config)
- return result
-
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPHeadersHandlePendingHeadersRefreshRequestRequest:
@@ -23430,7 +24217,11 @@ class OptionsUpdateAdditionalContentExclusionPolicy:
data, and scope.
"""
last_updated_at: Any
+ """Opaque policy update timestamp supplied by the host."""
+
rules: list[OptionsUpdateAdditionalContentExclusionPolicyRule]
+ """Content-exclusion rules to apply."""
+
scope: AdditionalContentExclusionPolicyScope
"""Allowed values for the `OptionsUpdateAdditionalContentExclusionPolicyScope` enumeration."""
@@ -23488,7 +24279,11 @@ class PermissionsConfigureAdditionalContentExclusionPolicy:
last-updated data, and scope.
"""
last_updated_at: Any
+ """Opaque policy update timestamp supplied by the host."""
+
rules: list[PermissionsConfigureAdditionalContentExclusionPolicyRule]
+ """Content-exclusion rules to apply."""
+
scope: AdditionalContentExclusionPolicyScope
"""Allowed values for the `PermissionsConfigureAdditionalContentExclusionPolicyScope`
enumeration.
@@ -23759,6 +24554,8 @@ class QueueInsertAtRequest:
"""Parameters for inserting a queued message at a public visible position."""
message: QueueInsertMessage
+ """Queued message contents and delivery metadata."""
+
position: int
"""Zero-based position in the public visible queue. Values outside the queue clamp to an end."""
@@ -24047,6 +24844,7 @@ class SessionFSSqliteTransactionRequest:
"""Target session identifier"""
statements: list[SessionFSSqliteTransactionStatement]
+ """Ordered SQL statements to execute in one transaction."""
@staticmethod
def from_dict(obj: Any) -> 'SessionFSSqliteTransactionRequest':
@@ -24068,7 +24866,11 @@ class SessionOpenOptionsAdditionalContentExclusionPolicy:
data, and scope.
"""
last_updated_at: Any
+ """Opaque policy update timestamp supplied by the host."""
+
rules: list[SessionOpenOptionsAdditionalContentExclusionPolicyRule]
+ """Content-exclusion rules to apply."""
+
scope: AdditionalContentExclusionPolicyScope
"""Allowed values for the `SessionOpenOptionsAdditionalContentExclusionPolicyScope`
enumeration.
@@ -24140,53 +24942,6 @@ def to_dict(self) -> dict:
result["processFlags"] = from_union([lambda x: from_list(from_str, x), from_none], self.process_flags)
return result
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class SessionSettingsSnapshot:
- """Redacted, serializable view of session runtime settings for SDK boundary consumers.
- Secrets and raw feature flags are intentionally excluded.
- """
- job: SessionSettingsJobSnapshot
- model: SessionSettingsModelSnapshot
- online_evaluation: SessionSettingsOnlineEvaluationSnapshot
- repo: SessionSettingsRepoSnapshot
- validation: SessionSettingsValidationSnapshot
- client_name: str | None = None
- start_time_ms: float | None = None
- timeout_ms: float | None = None
- version: str | None = None
-
- @staticmethod
- def from_dict(obj: Any) -> 'SessionSettingsSnapshot':
- assert isinstance(obj, dict)
- job = SessionSettingsJobSnapshot.from_dict(obj.get("job"))
- model = SessionSettingsModelSnapshot.from_dict(obj.get("model"))
- online_evaluation = SessionSettingsOnlineEvaluationSnapshot.from_dict(obj.get("onlineEvaluation"))
- repo = SessionSettingsRepoSnapshot.from_dict(obj.get("repo"))
- validation = SessionSettingsValidationSnapshot.from_dict(obj.get("validation"))
- client_name = from_union([from_str, from_none], obj.get("clientName"))
- start_time_ms = from_union([from_float, from_none], obj.get("startTimeMs"))
- timeout_ms = from_union([from_float, from_none], obj.get("timeoutMs"))
- version = from_union([from_str, from_none], obj.get("version"))
- return SessionSettingsSnapshot(job, model, online_evaluation, repo, validation, client_name, start_time_ms, timeout_ms, version)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["job"] = to_class(SessionSettingsJobSnapshot, self.job)
- result["model"] = to_class(SessionSettingsModelSnapshot, self.model)
- result["onlineEvaluation"] = to_class(SessionSettingsOnlineEvaluationSnapshot, self.online_evaluation)
- result["repo"] = to_class(SessionSettingsRepoSnapshot, self.repo)
- result["validation"] = to_class(SessionSettingsValidationSnapshot, self.validation)
- if self.client_name is not None:
- result["clientName"] = from_union([from_str, from_none], self.client_name)
- if self.start_time_ms is not None:
- result["startTimeMs"] = from_union([to_float, from_none], self.start_time_ms)
- if self.timeout_ms is not None:
- result["timeoutMs"] = from_union([to_float, from_none], self.timeout_ms)
- if self.version is not None:
- result["version"] = from_union([from_str, from_none], self.version)
- return result
-
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class AgentGetCurrentResult:
@@ -24373,6 +25128,129 @@ def to_dict(self) -> dict:
result["progress"] = from_union([lambda x: to_class(TaskProgress, x), from_none], self.progress)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPConfigAddRequest:
+ """MCP server name and configuration to add to user configuration."""
+
+ config: MCPSerializableServerConfig
+ """MCP server configuration (stdio process or remote HTTP/SSE)"""
+
+ name: str
+ """Unique name for the MCP server"""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPConfigAddRequest':
+ assert isinstance(obj, dict)
+ config = MCPSerializableServerConfig.from_dict(obj.get("config"))
+ name = from_str(obj.get("name"))
+ return MCPConfigAddRequest(config, name)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["config"] = to_class(MCPSerializableServerConfig, self.config)
+ result["name"] = from_str(self.name)
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPConfigList:
+ """User-configured MCP servers, keyed by server name."""
+
+ servers: dict[str, MCPSerializableServerConfig]
+ """All MCP servers from user config, keyed by name"""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPConfigList':
+ assert isinstance(obj, dict)
+ servers = from_dict(MCPSerializableServerConfig.from_dict, obj.get("servers"))
+ return MCPConfigList(servers)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["servers"] = from_dict(lambda x: to_class(MCPSerializableServerConfig, x), self.servers)
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPConfigUpdateRequest:
+ """MCP server name and replacement configuration to write to user configuration."""
+
+ config: MCPSerializableServerConfig
+ """MCP server configuration (stdio process or remote HTTP/SSE)"""
+
+ name: str
+ """Name of the MCP server to update"""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPConfigUpdateRequest':
+ assert isinstance(obj, dict)
+ config = MCPSerializableServerConfig.from_dict(obj.get("config"))
+ name = from_str(obj.get("name"))
+ return MCPConfigUpdateRequest(config, name)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["config"] = to_class(MCPSerializableServerConfig, self.config)
+ result["name"] = from_str(self.name)
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPRestartServerRequest:
+ """Server name and optional replacement configuration for an individual MCP server restart.
+ Omit `config` for a config-free restart-by-name of an already-configured server.
+ """
+ server_name: str
+ """Name of the MCP server to restart"""
+
+ config: MCPSerializableServerConfig | None = None
+ """Replacement MCP server configuration (stdio process or remote HTTP/SSE). Omit to restart
+ the server with its already-registered configuration (config-free restart-by-name).
+ """
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPRestartServerRequest':
+ assert isinstance(obj, dict)
+ server_name = from_str(obj.get("serverName"))
+ config = from_union([MCPSerializableServerConfig.from_dict, from_none], obj.get("config"))
+ return MCPRestartServerRequest(server_name, config)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["serverName"] = from_str(self.server_name)
+ if self.config is not None:
+ result["config"] = from_union([lambda x: to_class(MCPSerializableServerConfig, x), from_none], self.config)
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPStartServerRequest:
+ """Server name and optional configuration for an individual MCP server start. Omit `config`
+ for a config-free start-by-name of an already-configured server.
+ """
+ server_name: str
+ """Name of the MCP server to start"""
+
+ config: MCPSerializableServerConfig | None = None
+ """MCP server configuration (stdio process or remote HTTP/SSE). Omit to start the server
+ with its already-registered configuration (config-free start-by-name).
+ """
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPStartServerRequest':
+ assert isinstance(obj, dict)
+ server_name = from_str(obj.get("serverName"))
+ config = from_union([MCPSerializableServerConfig.from_dict, from_none], obj.get("config"))
+ return MCPStartServerRequest(server_name, config)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["serverName"] = from_str(self.server_name)
+ if self.config is not None:
+ result["config"] = from_union([lambda x: to_class(MCPSerializableServerConfig, x), from_none], self.config)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPTools:
@@ -25058,24 +25936,61 @@ class FactoryRunSummary:
"""Durable factory run summary with read-time live overlays."""
consumed: FactoryRunConsumed
+ """Durable resource consumption."""
+
created_at: int
+ """Epoch milliseconds when the run was created."""
+
declared_limits: FactoryDeclaredLimits
+ """Resource ceilings declared by the factory."""
+
declared_phase_count: int
+ """Number of phases declared by the factory."""
+
description: str
+ """Human-readable factory description."""
+
factory_name: str
+ """Registered factory name."""
+
live_agent_count: int
+ """Number of direct factory agents currently live."""
+
observed_at: int
+ """Epoch milliseconds when this live-overlay snapshot was observed."""
+
revision: int
+ """Monotonic durable run revision."""
+
run_id: str
+ """Factory run identifier."""
+
status: FactoryRunStatus
+ """Current factory run status."""
+
total_spawned_agent_count: int
+ """Total direct factory agents spawned across all attempts."""
+
updated_at: int
+ """Epoch milliseconds when the durable run was last updated."""
+
active_segment_started_at: int | None = None
+ """Epoch milliseconds when the current active segment started, or null while inactive."""
+
approved: FactoryDeclaredLimits | None = None
+ """Approved effective resource ceilings, or null until approved."""
+
completed_at: int | None = None
+ """Epoch milliseconds when the run completed, or null while nonterminal."""
+
current_phase: FactoryCurrentPhase | None = None
+ """Current phase identity, or null before any phase is entered."""
+
started_at: int | None = None
+ """Epoch milliseconds when execution first started, or null before start."""
+
terminal: FactoryRunTerminal | None = None
+ """Terminal run outcome, or null while nonterminal."""
@staticmethod
def from_dict(obj: Any) -> 'FactoryRunSummary':
@@ -25148,87 +26063,6 @@ def to_dict(self) -> dict:
result["run"] = to_class(FactoryRunResult, self.run)
return result
-# Experimental: this type is part of an experimental API and may change or be removed.
-@dataclass
-class FactoryRunDetail:
- """Full factory run observability detail."""
-
- agents: list[FactoryAgentSummary]
- consumed: FactoryRunConsumed
- created_at: int
- declared_limits: FactoryDeclaredLimits
- declared_phase_count: int
- description: str
- factory_name: str
- live_agent_count: int
- observed_at: int
- phases: list[FactoryPhaseObservation]
- progress: FactoryProgressPage
- revision: int
- run_id: str
- status: FactoryRunStatus
- total_spawned_agent_count: int
- updated_at: int
- active_segment_started_at: int | None = None
- approved: FactoryDeclaredLimits | None = None
- completed_at: int | None = None
- current_phase: FactoryCurrentPhase | None = None
- started_at: int | None = None
- terminal: FactoryRunTerminal | None = None
-
- @staticmethod
- def from_dict(obj: Any) -> 'FactoryRunDetail':
- assert isinstance(obj, dict)
- agents = from_list(FactoryAgentSummary.from_dict, obj.get("agents"))
- consumed = FactoryRunConsumed.from_dict(obj.get("consumed"))
- created_at = from_int(obj.get("createdAt"))
- declared_limits = FactoryDeclaredLimits.from_dict(obj.get("declaredLimits"))
- declared_phase_count = from_int(obj.get("declaredPhaseCount"))
- description = from_str(obj.get("description"))
- factory_name = from_str(obj.get("factoryName"))
- live_agent_count = from_int(obj.get("liveAgentCount"))
- observed_at = from_int(obj.get("observedAt"))
- phases = from_list(FactoryPhaseObservation.from_dict, obj.get("phases"))
- progress = FactoryProgressPage.from_dict(obj.get("progress"))
- revision = from_int(obj.get("revision"))
- run_id = from_str(obj.get("runId"))
- status = FactoryRunStatus(obj.get("status"))
- total_spawned_agent_count = from_int(obj.get("totalSpawnedAgentCount"))
- updated_at = from_int(obj.get("updatedAt"))
- active_segment_started_at = from_union([from_int, from_none], obj.get("activeSegmentStartedAt"))
- approved = from_union([FactoryDeclaredLimits.from_dict, from_none], obj.get("approved"))
- completed_at = from_union([from_int, from_none], obj.get("completedAt"))
- current_phase = from_union([FactoryCurrentPhase.from_dict, from_none], obj.get("currentPhase"))
- started_at = from_union([from_int, from_none], obj.get("startedAt"))
- terminal = from_union([FactoryRunTerminal.from_dict, from_none], obj.get("terminal"))
- return FactoryRunDetail(agents, consumed, created_at, declared_limits, declared_phase_count, description, factory_name, live_agent_count, observed_at, phases, progress, revision, run_id, status, total_spawned_agent_count, updated_at, active_segment_started_at, approved, completed_at, current_phase, started_at, terminal)
-
- def to_dict(self) -> dict:
- result: dict = {}
- result["agents"] = from_list(lambda x: to_class(FactoryAgentSummary, x), self.agents)
- result["consumed"] = to_class(FactoryRunConsumed, self.consumed)
- result["createdAt"] = from_int(self.created_at)
- result["declaredLimits"] = to_class(FactoryDeclaredLimits, self.declared_limits)
- result["declaredPhaseCount"] = from_int(self.declared_phase_count)
- result["description"] = from_str(self.description)
- result["factoryName"] = from_str(self.factory_name)
- result["liveAgentCount"] = from_int(self.live_agent_count)
- result["observedAt"] = from_int(self.observed_at)
- result["phases"] = from_list(lambda x: to_class(FactoryPhaseObservation, x), self.phases)
- result["progress"] = to_class(FactoryProgressPage, self.progress)
- result["revision"] = from_int(self.revision)
- result["runId"] = from_str(self.run_id)
- result["status"] = to_enum(FactoryRunStatus, self.status)
- result["totalSpawnedAgentCount"] = from_int(self.total_spawned_agent_count)
- result["updatedAt"] = from_int(self.updated_at)
- result["activeSegmentStartedAt"] = from_union([from_int, from_none], self.active_segment_started_at)
- result["approved"] = from_union([lambda x: to_class(FactoryDeclaredLimits, x), from_none], self.approved)
- result["completedAt"] = from_union([from_int, from_none], self.completed_at)
- result["currentPhase"] = from_union([lambda x: to_class(FactoryCurrentPhase, x), from_none], self.current_phase)
- result["startedAt"] = from_union([from_int, from_none], self.started_at)
- result["terminal"] = from_union([lambda x: to_class(FactoryRunTerminal, x), from_none], self.terminal)
- return result
-
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionsSetAdditionalPluginsRequest:
@@ -25719,13 +26553,21 @@ class SandboxConfig:
"""Whether to auto-add the current working directory to readwritePaths. Default: true."""
allow_dev_tool_access: bool | None = None
- """Whether to auto-grant read access to common developer-tool caches, registries, and
- toolchains in their default home locations (cargo, go, npm, Maven, and more), plus
- read-write access to (and, on Unix, up-front creation of) the scratch caches builds write
- on every run (go-build, ccache, sccache, Gradle caches, Cargo lock/tracker files), so
- builds work without extra configuration; a relocated CARGO_HOME additionally gets its
- Cargo lock files granted read-write. Default: true (enabled by default; set to false to
- opt out).
+ """Whether to auto-grant read access to the tool directories discovered on PATH and in
+ toolchain environment variables (GOROOT, CARGO_HOME, JAVA_HOME, VIRTUAL_ENV, and
+ similar), and to common developer-tool caches, registries, and toolchains in their
+ default home locations (cargo, go, npm, Maven, and more), plus read-write access to (and,
+ on Unix, up-front creation of) the scratch caches builds write on every run (go-build,
+ ccache, sccache, Gradle caches, Cargo lock/tracker files), so builds work without extra
+ configuration; a relocated CARGO_HOME additionally gets its Cargo lock files granted
+ read-write. Set to false to disable every grant listed above: user-installed toolchains
+ (rustup, nvm, pyenv, conda, pipx) then need explicit userPolicy.filesystem entries —
+ readonlyPaths to read them, plus readwriteFiles for a relocated CARGO_HOME's
+ .package-cache and .global-cache, which Cargo locks on every build. Only these
+ developer-tool grants are affected: the working directory (see
+ addCurrentWorkingDirectory), temporary storage, session log paths, and system locations
+ follow their own rules and stay granted, so commands still run. Default: true (enabled by
+ default; set to false to opt out).
"""
auth: SandboxConfigAuth | None = None
"""Credential-injection capability flags."""
@@ -25762,7 +26604,10 @@ class SessionFSSqliteTransactionResult:
"""Per-statement results, or a classified transaction error."""
results: list[SessionFSSqliteQueryResult]
+ """Per-statement query results in input order."""
+
error: SessionFSSqliteTransactionError | None = None
+ """Classified transaction failure, when execution did not succeed."""
@staticmethod
def from_dict(obj: Any) -> 'SessionFSSqliteTransactionResult':
@@ -25833,6 +26678,8 @@ class FactoryListRunsResult:
"""A page of factory runs in durable creation order."""
runs: list[FactoryRunSummary]
+ """Factory run summaries in durable creation order."""
+
has_more_newer: bool | None = None
"""Whether terminal runs newer than this page exist."""
@@ -26782,17 +27629,35 @@ class UIElicitationRequest:
requested_schema: UIElicitationSchema
"""JSON Schema describing the form fields to present to the user"""
+ meta: dict[str, Any] | None = None
+ """MCP request metadata."""
+
+ mode: MCPElicitationFormMode | None = None
+ """Elicitation mode. Omitted and form are equivalent for structured elicitation."""
+
+ task: MCPTaskMetadata | None = None
+ """MCP task metadata."""
+
@staticmethod
def from_dict(obj: Any) -> 'UIElicitationRequest':
assert isinstance(obj, dict)
message = from_str(obj.get("message"))
requested_schema = UIElicitationSchema.from_dict(obj.get("requestedSchema"))
- return UIElicitationRequest(message, requested_schema)
+ meta = from_union([lambda x: from_dict(lambda x: x, x), from_none], obj.get("_meta"))
+ mode = from_union([MCPElicitationFormMode, from_none], obj.get("mode"))
+ task = from_union([MCPTaskMetadata.from_dict, from_none], obj.get("task"))
+ return UIElicitationRequest(message, requested_schema, meta, mode, task)
def to_dict(self) -> dict:
result: dict = {}
result["message"] = from_str(self.message)
result["requestedSchema"] = to_class(UIElicitationSchema, self.requested_schema)
+ if self.meta is not None:
+ result["_meta"] = from_union([lambda x: from_dict(lambda x: x, x), from_none], self.meta)
+ if self.mode is not None:
+ result["mode"] = from_union([lambda x: to_enum(MCPElicitationFormMode, x), from_none], self.mode)
+ if self.task is not None:
+ result["task"] = from_union([lambda x: to_class(MCPTaskMetadata, x), from_none], self.task)
return result
# Experimental: this type is part of an experimental API and may change or be removed.
@@ -27533,6 +28398,220 @@ def to_dict(self) -> dict:
result["login"] = from_union([from_str, from_none], self.login)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class FactoryAgentSummary:
+ """Prompt-safe durable identity and live status for a direct factory agent."""
+
+ active_ms: int
+ """Accumulated active agent time in milliseconds."""
+
+ agent_id: str
+ """Stable direct-agent identifier."""
+
+ agent_type: str
+ """Registered agent type."""
+
+ label: str
+ """Friendly, non-unique name intended for display"""
+
+ run_id: str
+ """Owning factory run identifier."""
+
+ status: str
+ """Current durable or live agent status."""
+
+ tool_call_id: str
+ """Tool-call identifier that launched the agent."""
+
+ activity: str | None = None
+ """Prompt-safe live activity text."""
+
+ completed_at: int | None = None
+ """Epoch milliseconds when the agent completed."""
+
+ display_name: str | None = None
+ """Friendly, non-unique name intended for display"""
+
+ phase_id: str | None = None
+ """Phase identifier active when the agent was launched, or null."""
+
+ requested_model: str | None = None
+ """Model requested when the agent was launched."""
+
+ resolved_model: str | None = None
+ """Concrete model resolved for the agent."""
+
+ started_at: int | None = None
+ """Epoch milliseconds when the agent started."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'FactoryAgentSummary':
+ assert isinstance(obj, dict)
+ active_ms = from_int(obj.get("activeMs"))
+ agent_id = from_str(obj.get("agentId"))
+ agent_type = from_str(obj.get("agentType"))
+ label = from_str(obj.get("label"))
+ run_id = from_str(obj.get("runId"))
+ status = from_str(obj.get("status"))
+ tool_call_id = from_str(obj.get("toolCallId"))
+ activity = from_union([from_str, from_none], obj.get("activity"))
+ completed_at = from_union([from_int, from_none], obj.get("completedAt"))
+ display_name = from_union([from_str, from_none], obj.get("displayName"))
+ phase_id = from_union([from_none, from_str], obj.get("phaseId"))
+ requested_model = from_union([from_str, from_none], obj.get("requestedModel"))
+ resolved_model = from_union([from_str, from_none], obj.get("resolvedModel"))
+ started_at = from_union([from_int, from_none], obj.get("startedAt"))
+ return FactoryAgentSummary(active_ms, agent_id, agent_type, label, run_id, status, tool_call_id, activity, completed_at, display_name, phase_id, requested_model, resolved_model, started_at)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["activeMs"] = from_int(self.active_ms)
+ result["agentId"] = from_str(self.agent_id)
+ result["agentType"] = from_str(self.agent_type)
+ result["label"] = from_str(self.label)
+ result["runId"] = from_str(self.run_id)
+ result["status"] = from_str(self.status)
+ result["toolCallId"] = from_str(self.tool_call_id)
+ if self.activity is not None:
+ result["activity"] = from_union([from_str, from_none], self.activity)
+ if self.completed_at is not None:
+ result["completedAt"] = from_union([from_int, from_none], self.completed_at)
+ if self.display_name is not None:
+ result["displayName"] = from_union([from_str, from_none], self.display_name)
+ result["phaseId"] = from_union([from_none, from_str], self.phase_id)
+ if self.requested_model is not None:
+ result["requestedModel"] = from_union([from_str, from_none], self.requested_model)
+ if self.resolved_model is not None:
+ result["resolvedModel"] = from_union([from_str, from_none], self.resolved_model)
+ if self.started_at is not None:
+ result["startedAt"] = from_union([from_int, from_none], self.started_at)
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class FactoryRunDetail:
+ """Full factory run observability detail."""
+
+ agents: list[FactoryAgentSummary]
+ """Durable identities and live statuses for direct factory agents."""
+
+ consumed: FactoryRunConsumed
+ """Durable resource consumption."""
+
+ created_at: int
+ """Epoch milliseconds when the run was created."""
+
+ declared_limits: FactoryDeclaredLimits
+ """Resource ceilings declared by the factory."""
+
+ declared_phase_count: int
+ """Number of phases declared by the factory."""
+
+ description: str
+ """Human-readable factory description."""
+
+ factory_name: str
+ """Registered factory name."""
+
+ live_agent_count: int
+ """Number of direct factory agents currently live."""
+
+ observed_at: int
+ """Epoch milliseconds when this live-overlay snapshot was observed."""
+
+ phases: list[FactoryPhaseObservation]
+ """Lifecycle and timing observations for each factory phase."""
+
+ progress: FactoryProgressPage
+ """Bidirectional page of durable factory progress."""
+
+ revision: int
+ """Monotonic durable run revision."""
+
+ run_id: str
+ """Factory run identifier."""
+
+ status: FactoryRunStatus
+ """Current factory run status."""
+
+ total_spawned_agent_count: int
+ """Total direct factory agents spawned across all attempts."""
+
+ updated_at: int
+ """Epoch milliseconds when the durable run was last updated."""
+
+ active_segment_started_at: int | None = None
+ """Epoch milliseconds when the current active segment started, or null while inactive."""
+
+ approved: FactoryDeclaredLimits | None = None
+ """Approved effective resource ceilings, or null until approved."""
+
+ completed_at: int | None = None
+ """Epoch milliseconds when the run completed, or null while nonterminal."""
+
+ current_phase: FactoryCurrentPhase | None = None
+ """Current phase identity, or null before any phase is entered."""
+
+ started_at: int | None = None
+ """Epoch milliseconds when execution first started, or null before start."""
+
+ terminal: FactoryRunTerminal | None = None
+ """Terminal run outcome, or null while nonterminal."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'FactoryRunDetail':
+ assert isinstance(obj, dict)
+ agents = from_list(FactoryAgentSummary.from_dict, obj.get("agents"))
+ consumed = FactoryRunConsumed.from_dict(obj.get("consumed"))
+ created_at = from_int(obj.get("createdAt"))
+ declared_limits = FactoryDeclaredLimits.from_dict(obj.get("declaredLimits"))
+ declared_phase_count = from_int(obj.get("declaredPhaseCount"))
+ description = from_str(obj.get("description"))
+ factory_name = from_str(obj.get("factoryName"))
+ live_agent_count = from_int(obj.get("liveAgentCount"))
+ observed_at = from_int(obj.get("observedAt"))
+ phases = from_list(FactoryPhaseObservation.from_dict, obj.get("phases"))
+ progress = FactoryProgressPage.from_dict(obj.get("progress"))
+ revision = from_int(obj.get("revision"))
+ run_id = from_str(obj.get("runId"))
+ status = FactoryRunStatus(obj.get("status"))
+ total_spawned_agent_count = from_int(obj.get("totalSpawnedAgentCount"))
+ updated_at = from_int(obj.get("updatedAt"))
+ active_segment_started_at = from_union([from_int, from_none], obj.get("activeSegmentStartedAt"))
+ approved = from_union([FactoryDeclaredLimits.from_dict, from_none], obj.get("approved"))
+ completed_at = from_union([from_int, from_none], obj.get("completedAt"))
+ current_phase = from_union([FactoryCurrentPhase.from_dict, from_none], obj.get("currentPhase"))
+ started_at = from_union([from_int, from_none], obj.get("startedAt"))
+ terminal = from_union([FactoryRunTerminal.from_dict, from_none], obj.get("terminal"))
+ return FactoryRunDetail(agents, consumed, created_at, declared_limits, declared_phase_count, description, factory_name, live_agent_count, observed_at, phases, progress, revision, run_id, status, total_spawned_agent_count, updated_at, active_segment_started_at, approved, completed_at, current_phase, started_at, terminal)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["agents"] = from_list(lambda x: to_class(FactoryAgentSummary, x), self.agents)
+ result["consumed"] = to_class(FactoryRunConsumed, self.consumed)
+ result["createdAt"] = from_int(self.created_at)
+ result["declaredLimits"] = to_class(FactoryDeclaredLimits, self.declared_limits)
+ result["declaredPhaseCount"] = from_int(self.declared_phase_count)
+ result["description"] = from_str(self.description)
+ result["factoryName"] = from_str(self.factory_name)
+ result["liveAgentCount"] = from_int(self.live_agent_count)
+ result["observedAt"] = from_int(self.observed_at)
+ result["phases"] = from_list(lambda x: to_class(FactoryPhaseObservation, x), self.phases)
+ result["progress"] = to_class(FactoryProgressPage, self.progress)
+ result["revision"] = from_int(self.revision)
+ result["runId"] = from_str(self.run_id)
+ result["status"] = to_enum(FactoryRunStatus, self.status)
+ result["totalSpawnedAgentCount"] = from_int(self.total_spawned_agent_count)
+ result["updatedAt"] = from_int(self.updated_at)
+ result["activeSegmentStartedAt"] = from_union([from_int, from_none], self.active_segment_started_at)
+ result["approved"] = from_union([lambda x: to_class(FactoryDeclaredLimits, x), from_none], self.approved)
+ result["completedAt"] = from_union([from_int, from_none], self.completed_at)
+ result["currentPhase"] = from_union([lambda x: to_class(FactoryCurrentPhase, x), from_none], self.current_phase)
+ result["startedAt"] = from_union([from_int, from_none], self.started_at)
+ result["terminal"] = from_union([lambda x: to_class(FactoryRunTerminal, x), from_none], self.terminal)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class GhCLIAuthInfo:
@@ -27766,6 +28845,58 @@ def to_dict(self) -> dict:
result["serverName"] = from_str(self.server_name)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPOauthProbeResult:
+ """Passive MCP OAuth probe result. `authenticated` means the server accepted the probe
+ request while an OAuth-origin access token was attached; it does not prove the server
+ required or independently validated that token. The probe does not make a second
+ unauthenticated request. Failed is an expected probe-domain outcome; JSON-RPC errors are
+ reserved for API-call failures.
+ """
+ status: Status
+ """Probe outcome variant discriminator."""
+
+ http_response: ExternalRefMCPOauthHTTPResponse | None = None
+ """HTTP response returned by the server.
+
+ HTTP 401 or 403 response returned by the server.
+
+ HTTP response returned by the server, when the probe reached the server and captured the
+ complete response.
+ """
+ reason: MCPOauthProbeNeedsAuthReason | None = None
+ """Why authentication is needed."""
+
+ www_authenticate_params: McpOauthWWWAuthenticateParams | None = None
+ """Parsed WWW-Authenticate challenge parameters, when present and parseable."""
+
+ error: str | None = None
+ """Human-readable probe failure detail."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPOauthProbeResult':
+ assert isinstance(obj, dict)
+ status = Status(obj.get("status"))
+ http_response = from_union([ExternalRefMCPOauthHTTPResponse.from_dict, from_none], obj.get("httpResponse"))
+ reason = from_union([MCPOauthProbeNeedsAuthReason, from_none], obj.get("reason"))
+ www_authenticate_params = from_union([McpOauthWWWAuthenticateParams.from_dict, from_none], obj.get("wwwAuthenticateParams"))
+ error = from_union([from_str, from_none], obj.get("error"))
+ return MCPOauthProbeResult(status, http_response, reason, www_authenticate_params, error)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["status"] = to_enum(Status, self.status)
+ if self.http_response is not None:
+ result["httpResponse"] = from_union([lambda x: to_class(ExternalRefMCPOauthHTTPResponse, x), from_none], self.http_response)
+ if self.reason is not None:
+ result["reason"] = from_union([lambda x: to_enum(MCPOauthProbeNeedsAuthReason, x), from_none], self.reason)
+ if self.www_authenticate_params is not None:
+ result["wwwAuthenticateParams"] = from_union([lambda x: to_class(McpOauthWWWAuthenticateParams, x), from_none], self.www_authenticate_params)
+ if self.error is not None:
+ result["error"] = from_union([from_str, from_none], self.error)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
# Internal: this type is an internal SDK API and is not part of the public surface.
@dataclass
@@ -27805,6 +28936,304 @@ def to_dict(self) -> dict:
result["transport"] = self.transport
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class MCPServerConfig:
+ """MCP server configuration (stdio, remote HTTP/SSE, or in-process)
+
+ Stdio MCP server configuration launched as a child process.
+
+ Remote MCP server configuration accessed over HTTP or SSE.
+
+ In-process MCP server configuration used by embedded SDK clients.
+ """
+ args: list[str] | None = None
+ """Command-line arguments passed to the Stdio MCP server process."""
+
+ auth: bool | MCPServerAuthConfigRedirectPort | None = None
+ """Set to `true` to use defaults, or provide an object with additional auth or OIDC settings."""
+
+ command: str | None = None
+ """Executable command used to start the Stdio MCP server process."""
+
+ config_warnings: list[str] | None = None
+ """Configuration warnings recorded while loading the server."""
+
+ cwd: str | None = None
+ """Working directory for the Stdio MCP server process."""
+
+ defer_tools: MCPServerConfigDeferTools | None = None
+ """Controls if tools provided by this server can be loaded on demand via tool search (auto)
+ or always included in the initial tool list (never)
+
+ Controls whether tools can be loaded on demand.
+ """
+ disable_secret_masking: bool | None = None
+ """Whether secret masking is disabled for calls to this server."""
+
+ disable_tool_cache: bool | None = None
+ """Set to true to disable persisted MCP tool snapshots for this server. Live tool discovery
+ is unaffected.
+
+ Whether persisted tool snapshots are disabled.
+ """
+ display_name: str | None = None
+ """Optional human-readable server name."""
+
+ env: dict[str, str] | None = None
+ """Environment variables to pass to the Stdio MCP server process."""
+
+ events: list[str] | None = None
+ """Event types this server receives as Copilot notifications."""
+
+ exclude_tools: list[str] | None = None
+ """Tool names excluded after the include filter is applied."""
+
+ filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode | None = None
+ """Content filtering mode to apply to all tools, or a map of tool name to content filtering
+ mode.
+
+ Content filtering mode to apply to this server's tools.
+ """
+ is_default_server: bool | None = None
+ """Whether this server is a built-in fallback used when the user has not configured their
+ own server.
+
+ Whether this server is a built-in fallback.
+ """
+ notifications: list[str] | None = None
+ """Copilot notification types this server may send to the host."""
+
+ oidc: bool | MCPServerAuthConfigRedirectPort | None = None
+ """Set to `true` to use defaults, or provide an object with additional auth or OIDC
+ settings.
+
+ Set to `true` to use default OIDC settings.
+ """
+ safe_for_telemetry: bool | MCPSafeForTelemetryFields | None = None
+ """Telemetry-obfuscation policy for this server's tools."""
+
+ source: McpServerSource | None = None
+ """The origin of this server configuration."""
+
+ source_path: str | None = None
+ """Source file path recorded while loading the config."""
+
+ source_plugin: str | None = None
+ """Plugin that provided this server."""
+
+ source_plugin_spec: bool | None = None
+ """Whether the providing plugin uses the Open Plugin Spec."""
+
+ source_plugin_version: str | None = None
+ """Version of the plugin that provided this server."""
+
+ timeout: int | None = None
+ """Timeout in milliseconds for tool discovery and tool calls."""
+
+ tools: list[str] | None = None
+ """Tools to include. Defaults to all tools if not specified."""
+
+ type: MCPServerConfigType | None = None
+ """Local transport type. Defaults to stdio when omitted.
+
+ Remote transport type. Defaults to "http" when omitted.
+ """
+ headers: dict[str, str] | None = None
+ """HTTP headers to include in requests to the remote MCP server."""
+
+ headers_refresh_ttl_ms: int | None = None
+ """Dynamic-header refresh cache lifetime in milliseconds."""
+
+ oauth_client_id: str | None = None
+ """OAuth client ID for a pre-registered remote MCP OAuth client."""
+
+ oauth_grant_type: MCPGrantType | None = None
+ """OAuth grant type to use when authenticating to the remote MCP server."""
+
+ oauth_public_client: bool | None = None
+ """Whether the configured OAuth client is public and does not require a client secret."""
+
+ url: str | None = None
+ """URL of the remote MCP server endpoint."""
+
+ server_instance: Any = None
+ """In-process MCP server instance. This value cannot cross a JSON-RPC boundary."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPServerConfig':
+ assert isinstance(obj, dict)
+ args = from_union([lambda x: from_list(from_str, x), from_none], obj.get("args"))
+ auth = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("auth"))
+ command = from_union([from_str, from_none], obj.get("command"))
+ config_warnings = from_union([lambda x: from_list(from_str, x), from_none], obj.get("configWarnings"))
+ cwd = from_union([from_str, from_none], obj.get("cwd"))
+ defer_tools = from_union([MCPServerConfigDeferTools, from_none], obj.get("deferTools"))
+ disable_secret_masking = from_union([from_bool, from_none], obj.get("disableSecretMasking"))
+ disable_tool_cache = from_union([from_bool, from_none], obj.get("disableToolCache"))
+ display_name = from_union([from_str, from_none], obj.get("displayName"))
+ env = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("env"))
+ events = from_union([lambda x: from_list(from_str, x), from_none], obj.get("events"))
+ exclude_tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("excludeTools"))
+ filter_mapping = from_union([lambda x: from_dict(ContentFilterMode, x), ContentFilterMode, from_none], obj.get("filterMapping"))
+ is_default_server = from_union([from_bool, from_none], obj.get("isDefaultServer"))
+ notifications = from_union([lambda x: from_list(from_str, x), from_none], obj.get("notifications"))
+ oidc = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("oidc"))
+ safe_for_telemetry = from_union([from_bool, MCPSafeForTelemetryFields.from_dict, from_none], obj.get("safeForTelemetry"))
+ source = from_union([McpServerSource, from_none], obj.get("source"))
+ source_path = from_union([from_str, from_none], obj.get("sourcePath"))
+ source_plugin = from_union([from_str, from_none], obj.get("sourcePlugin"))
+ source_plugin_spec = from_union([from_bool, from_none], obj.get("sourcePluginSpec"))
+ source_plugin_version = from_union([from_str, from_none], obj.get("sourcePluginVersion"))
+ timeout = from_union([from_int, from_none], obj.get("timeout"))
+ tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("tools"))
+ type = from_union([MCPServerConfigType, from_none], obj.get("type"))
+ headers = from_union([lambda x: from_dict(from_str, x), from_none], obj.get("headers"))
+ headers_refresh_ttl_ms = from_union([from_int, from_none], obj.get("headersRefreshTtlMs"))
+ oauth_client_id = from_union([from_str, from_none], obj.get("oauthClientId"))
+ oauth_grant_type = from_union([MCPGrantType, from_none], obj.get("oauthGrantType"))
+ oauth_public_client = from_union([from_bool, from_none], obj.get("oauthPublicClient"))
+ url = from_union([from_str, from_none], obj.get("url"))
+ server_instance = obj.get("serverInstance")
+ return MCPServerConfig(args, auth, command, config_warnings, cwd, defer_tools, disable_secret_masking, disable_tool_cache, display_name, env, events, exclude_tools, filter_mapping, is_default_server, notifications, oidc, safe_for_telemetry, source, source_path, source_plugin, source_plugin_spec, source_plugin_version, timeout, tools, type, headers, headers_refresh_ttl_ms, oauth_client_id, oauth_grant_type, oauth_public_client, url, server_instance)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ if self.args is not None:
+ result["args"] = from_union([lambda x: from_list(from_str, x), from_none], self.args)
+ if self.auth is not None:
+ result["auth"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.auth)
+ if self.command is not None:
+ result["command"] = from_union([from_str, from_none], self.command)
+ if self.config_warnings is not None:
+ result["configWarnings"] = from_union([lambda x: from_list(from_str, x), from_none], self.config_warnings)
+ if self.cwd is not None:
+ result["cwd"] = from_union([from_str, from_none], self.cwd)
+ if self.defer_tools is not None:
+ result["deferTools"] = from_union([lambda x: to_enum(MCPServerConfigDeferTools, x), from_none], self.defer_tools)
+ if self.disable_secret_masking is not None:
+ result["disableSecretMasking"] = from_union([from_bool, from_none], self.disable_secret_masking)
+ if self.disable_tool_cache is not None:
+ result["disableToolCache"] = from_union([from_bool, from_none], self.disable_tool_cache)
+ if self.display_name is not None:
+ result["displayName"] = from_union([from_str, from_none], self.display_name)
+ if self.env is not None:
+ result["env"] = from_union([lambda x: from_dict(from_str, x), from_none], self.env)
+ if self.events is not None:
+ result["events"] = from_union([lambda x: from_list(from_str, x), from_none], self.events)
+ if self.exclude_tools is not None:
+ result["excludeTools"] = from_union([lambda x: from_list(from_str, x), from_none], self.exclude_tools)
+ if self.filter_mapping is not None:
+ result["filterMapping"] = from_union([lambda x: from_dict(lambda x: to_enum(ContentFilterMode, x), x), lambda x: to_enum(ContentFilterMode, x), from_none], self.filter_mapping)
+ if self.is_default_server is not None:
+ result["isDefaultServer"] = from_union([from_bool, from_none], self.is_default_server)
+ if self.notifications is not None:
+ result["notifications"] = from_union([lambda x: from_list(from_str, x), from_none], self.notifications)
+ if self.oidc is not None:
+ result["oidc"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.oidc)
+ if self.safe_for_telemetry is not None:
+ result["safeForTelemetry"] = from_union([from_bool, lambda x: to_class(MCPSafeForTelemetryFields, x), from_none], self.safe_for_telemetry)
+ if self.source is not None:
+ result["source"] = from_union([lambda x: to_enum(McpServerSource, x), from_none], self.source)
+ if self.source_path is not None:
+ result["sourcePath"] = from_union([from_str, from_none], self.source_path)
+ if self.source_plugin is not None:
+ result["sourcePlugin"] = from_union([from_str, from_none], self.source_plugin)
+ if self.source_plugin_spec is not None:
+ result["sourcePluginSpec"] = from_union([from_bool, from_none], self.source_plugin_spec)
+ if self.source_plugin_version is not None:
+ result["sourcePluginVersion"] = from_union([from_str, from_none], self.source_plugin_version)
+ if self.timeout is not None:
+ result["timeout"] = from_union([from_int, from_none], self.timeout)
+ if self.tools is not None:
+ result["tools"] = from_union([lambda x: from_list(from_str, x), from_none], self.tools)
+ if self.type is not None:
+ result["type"] = from_union([lambda x: to_enum(MCPServerConfigType, x), from_none], self.type)
+ if self.headers is not None:
+ result["headers"] = from_union([lambda x: from_dict(from_str, x), from_none], self.headers)
+ if self.headers_refresh_ttl_ms is not None:
+ result["headersRefreshTtlMs"] = from_union([from_int, from_none], self.headers_refresh_ttl_ms)
+ if self.oauth_client_id is not None:
+ result["oauthClientId"] = from_union([from_str, from_none], self.oauth_client_id)
+ if self.oauth_grant_type is not None:
+ result["oauthGrantType"] = from_union([lambda x: to_enum(MCPGrantType, x), from_none], self.oauth_grant_type)
+ if self.oauth_public_client is not None:
+ result["oauthPublicClient"] = from_union([from_bool, from_none], self.oauth_public_client)
+ if self.url is not None:
+ result["url"] = from_union([from_str, from_none], self.url)
+ if self.server_instance is not None:
+ result["serverInstance"] = self.server_instance
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+# Internal: this type is an internal SDK API and is not part of the public surface.
+@dataclass
+class MCPReloadConfig:
+ """In-process MCP reload configuration."""
+
+ mcp_servers: dict[str, MCPServerConfig]
+ active_git_hub_token: str | None = None
+ cli_enabled_servers: list[str] | None = None
+ """Server names the CLI enabled for this session via `--enable-mcp-server`."""
+
+ config_filter: Any = None
+ disabled_servers: list[str] | None = None
+ enabled_servers: list[str] | None = None
+ force_restart: bool | None = None
+ github_mcp_tool_options: Any = None
+ github_mcp_user_override: bool | None = None
+ include_workspace_sources: bool | None = None
+ mcp3_p_enabled: bool | None = None
+ secret_store: Any = None
+ use_cached_tool_snapshots: bool | None = None
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPReloadConfig':
+ assert isinstance(obj, dict)
+ mcp_servers = from_dict(MCPServerConfig.from_dict, obj.get("mcpServers"))
+ active_git_hub_token = from_union([from_str, from_none], obj.get("activeGitHubToken"))
+ cli_enabled_servers = from_union([lambda x: from_list(from_str, x), from_none], obj.get("cliEnabledServers"))
+ config_filter = obj.get("configFilter")
+ disabled_servers = from_union([lambda x: from_list(from_str, x), from_none], obj.get("disabledServers"))
+ enabled_servers = from_union([lambda x: from_list(from_str, x), from_none], obj.get("enabledServers"))
+ force_restart = from_union([from_bool, from_none], obj.get("forceRestart"))
+ github_mcp_tool_options = obj.get("githubMcpToolOptions")
+ github_mcp_user_override = from_union([from_bool, from_none], obj.get("githubMcpUserOverride"))
+ include_workspace_sources = from_union([from_bool, from_none], obj.get("includeWorkspaceSources"))
+ mcp3_p_enabled = from_union([from_bool, from_none], obj.get("mcp3pEnabled"))
+ secret_store = obj.get("secretStore")
+ use_cached_tool_snapshots = from_union([from_bool, from_none], obj.get("useCachedToolSnapshots"))
+ return MCPReloadConfig(mcp_servers, active_git_hub_token, cli_enabled_servers, config_filter, disabled_servers, enabled_servers, force_restart, github_mcp_tool_options, github_mcp_user_override, include_workspace_sources, mcp3_p_enabled, secret_store, use_cached_tool_snapshots)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["mcpServers"] = from_dict(lambda x: to_class(MCPServerConfig, x), self.mcp_servers)
+ if self.active_git_hub_token is not None:
+ result["activeGitHubToken"] = from_union([from_str, from_none], self.active_git_hub_token)
+ if self.cli_enabled_servers is not None:
+ result["cliEnabledServers"] = from_union([lambda x: from_list(from_str, x), from_none], self.cli_enabled_servers)
+ if self.config_filter is not None:
+ result["configFilter"] = self.config_filter
+ if self.disabled_servers is not None:
+ result["disabledServers"] = from_union([lambda x: from_list(from_str, x), from_none], self.disabled_servers)
+ if self.enabled_servers is not None:
+ result["enabledServers"] = from_union([lambda x: from_list(from_str, x), from_none], self.enabled_servers)
+ if self.force_restart is not None:
+ result["forceRestart"] = from_union([from_bool, from_none], self.force_restart)
+ if self.github_mcp_tool_options is not None:
+ result["githubMcpToolOptions"] = self.github_mcp_tool_options
+ if self.github_mcp_user_override is not None:
+ result["githubMcpUserOverride"] = from_union([from_bool, from_none], self.github_mcp_user_override)
+ if self.include_workspace_sources is not None:
+ result["includeWorkspaceSources"] = from_union([from_bool, from_none], self.include_workspace_sources)
+ if self.mcp3_p_enabled is not None:
+ result["mcp3pEnabled"] = from_union([from_bool, from_none], self.mcp3_p_enabled)
+ if self.secret_store is not None:
+ result["secretStore"] = self.secret_store
+ if self.use_cached_tool_snapshots is not None:
+ result["useCachedToolSnapshots"] = from_union([from_bool, from_none], self.use_cached_tool_snapshots)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MCPResourceAnnotations:
@@ -28040,6 +29469,143 @@ def to_dict(self) -> dict:
result["nextCursor"] = from_union([from_str, from_none], self.next_cursor)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+# Internal: this type is an internal SDK API and is not part of the public surface.
+@dataclass
+class MCPServerConfigMemory:
+ """In-process MCP server configuration used by embedded SDK clients."""
+
+ type: MCPServerConfigMemoryType
+ server_instance: Any = None
+ """In-process MCP server instance. This value cannot cross a JSON-RPC boundary."""
+
+ config_warnings: list[str] | None = None
+ """Configuration warnings recorded while loading the server."""
+
+ defer_tools: MCPServerConfigDeferTools | None = None
+ """Controls whether tools can be loaded on demand."""
+
+ disable_secret_masking: bool | None = None
+ """Whether secret masking is disabled for calls to this server."""
+
+ disable_tool_cache: bool | None = None
+ """Whether persisted tool snapshots are disabled."""
+
+ display_name: str | None = None
+ """Optional human-readable server name."""
+
+ events: list[str] | None = None
+ """Event types this server receives as Copilot notifications."""
+
+ exclude_tools: list[str] | None = None
+ """Tool names excluded after the include filter is applied."""
+
+ filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode | None = None
+ """Content filtering mode to apply to this server's tools."""
+
+ is_default_server: bool | None = None
+ """Whether this server is a built-in fallback."""
+
+ notifications: list[str] | None = None
+ """Copilot notification types this server may send to the host."""
+
+ oidc: bool | MCPServerAuthConfigRedirectPort | None = None
+ """Set to `true` to use default OIDC settings."""
+
+ safe_for_telemetry: bool | MCPSafeForTelemetryFields | None = None
+ """Telemetry-obfuscation policy for this server's tools."""
+
+ source: McpServerSource | None = None
+ """The origin of this server configuration."""
+
+ source_path: str | None = None
+ """Source file path recorded while loading the config."""
+
+ source_plugin: str | None = None
+ """Plugin that provided this server."""
+
+ source_plugin_spec: bool | None = None
+ """Whether the providing plugin uses the Open Plugin Spec."""
+
+ source_plugin_version: str | None = None
+ """Version of the plugin that provided this server."""
+
+ timeout: int | None = None
+ """Timeout in milliseconds for tool discovery and tool calls."""
+
+ tools: list[str] | None = None
+ """Tools to include. Defaults to all tools if not specified."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'MCPServerConfigMemory':
+ assert isinstance(obj, dict)
+ server_instance = obj.get("serverInstance")
+ type = MCPServerConfigMemoryType(obj.get("type"))
+ config_warnings = from_union([lambda x: from_list(from_str, x), from_none], obj.get("configWarnings"))
+ defer_tools = from_union([MCPServerConfigDeferTools, from_none], obj.get("deferTools"))
+ disable_secret_masking = from_union([from_bool, from_none], obj.get("disableSecretMasking"))
+ disable_tool_cache = from_union([from_bool, from_none], obj.get("disableToolCache"))
+ display_name = from_union([from_str, from_none], obj.get("displayName"))
+ events = from_union([lambda x: from_list(from_str, x), from_none], obj.get("events"))
+ exclude_tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("excludeTools"))
+ filter_mapping = from_union([lambda x: from_dict(ContentFilterMode, x), ContentFilterMode, from_none], obj.get("filterMapping"))
+ is_default_server = from_union([from_bool, from_none], obj.get("isDefaultServer"))
+ notifications = from_union([lambda x: from_list(from_str, x), from_none], obj.get("notifications"))
+ oidc = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict, from_none], obj.get("oidc"))
+ safe_for_telemetry = from_union([from_bool, MCPSafeForTelemetryFields.from_dict, from_none], obj.get("safeForTelemetry"))
+ source = from_union([McpServerSource, from_none], obj.get("source"))
+ source_path = from_union([from_str, from_none], obj.get("sourcePath"))
+ source_plugin = from_union([from_str, from_none], obj.get("sourcePlugin"))
+ source_plugin_spec = from_union([from_bool, from_none], obj.get("sourcePluginSpec"))
+ source_plugin_version = from_union([from_str, from_none], obj.get("sourcePluginVersion"))
+ timeout = from_union([from_int, from_none], obj.get("timeout"))
+ tools = from_union([lambda x: from_list(from_str, x), from_none], obj.get("tools"))
+ return MCPServerConfigMemory(server_instance, type, config_warnings, defer_tools, disable_secret_masking, disable_tool_cache, display_name, events, exclude_tools, filter_mapping, is_default_server, notifications, oidc, safe_for_telemetry, source, source_path, source_plugin, source_plugin_spec, source_plugin_version, timeout, tools)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["serverInstance"] = self.server_instance
+ result["type"] = to_enum(MCPServerConfigMemoryType, self.type)
+ if self.config_warnings is not None:
+ result["configWarnings"] = from_union([lambda x: from_list(from_str, x), from_none], self.config_warnings)
+ if self.defer_tools is not None:
+ result["deferTools"] = from_union([lambda x: to_enum(MCPServerConfigDeferTools, x), from_none], self.defer_tools)
+ if self.disable_secret_masking is not None:
+ result["disableSecretMasking"] = from_union([from_bool, from_none], self.disable_secret_masking)
+ if self.disable_tool_cache is not None:
+ result["disableToolCache"] = from_union([from_bool, from_none], self.disable_tool_cache)
+ if self.display_name is not None:
+ result["displayName"] = from_union([from_str, from_none], self.display_name)
+ if self.events is not None:
+ result["events"] = from_union([lambda x: from_list(from_str, x), from_none], self.events)
+ if self.exclude_tools is not None:
+ result["excludeTools"] = from_union([lambda x: from_list(from_str, x), from_none], self.exclude_tools)
+ if self.filter_mapping is not None:
+ result["filterMapping"] = from_union([lambda x: from_dict(lambda x: to_enum(ContentFilterMode, x), x), lambda x: to_enum(ContentFilterMode, x), from_none], self.filter_mapping)
+ if self.is_default_server is not None:
+ result["isDefaultServer"] = from_union([from_bool, from_none], self.is_default_server)
+ if self.notifications is not None:
+ result["notifications"] = from_union([lambda x: from_list(from_str, x), from_none], self.notifications)
+ if self.oidc is not None:
+ result["oidc"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x), from_none], self.oidc)
+ if self.safe_for_telemetry is not None:
+ result["safeForTelemetry"] = from_union([from_bool, lambda x: to_class(MCPSafeForTelemetryFields, x), from_none], self.safe_for_telemetry)
+ if self.source is not None:
+ result["source"] = from_union([lambda x: to_enum(McpServerSource, x), from_none], self.source)
+ if self.source_path is not None:
+ result["sourcePath"] = from_union([from_str, from_none], self.source_path)
+ if self.source_plugin is not None:
+ result["sourcePlugin"] = from_union([from_str, from_none], self.source_plugin)
+ if self.source_plugin_spec is not None:
+ result["sourcePluginSpec"] = from_union([from_bool, from_none], self.source_plugin_spec)
+ if self.source_plugin_version is not None:
+ result["sourcePluginVersion"] = from_union([from_str, from_none], self.source_plugin_version)
+ if self.timeout is not None:
+ result["timeout"] = from_union([from_int, from_none], self.timeout)
+ if self.tools is not None:
+ result["tools"] = from_union([lambda x: from_list(from_str, x), from_none], self.tools)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class MetadataContextInfoRequest:
@@ -28145,6 +29711,9 @@ class Model:
billing: ModelBilling | None = None
"""Billing information"""
+ default_reasoning_effort: str | None = None
+ """Default reasoning effort level (only present if model supports reasoning effort)"""
+
model_picker_category: ModelPickerCategory | None = None
"""Model capability category for grouping in the model picker"""
@@ -28154,6 +29723,12 @@ class Model:
policy: ModelPolicy | None = None
"""Policy state (if applicable)"""
+ supported_context_tiers: list[str] | None = None
+ """Context-window tiers this model offers, when the provider advertises them independently
+ of tiered token pricing. Copilot models carry their tiers in `billing.tokenPrices`; a
+ provider that has no pricing to publish (an agent host reached over AHP, for example)
+ declares them here instead, so the model picker can still offer the tier toggle.
+ """
supported_reasoning_efforts: list[str] | None = None
"""Supported reasoning effort levels (only present if model supports reasoning effort)"""
@@ -28164,11 +29739,13 @@ def from_dict(obj: Any) -> 'Model':
id = from_str(obj.get("id"))
name = from_str(obj.get("name"))
billing = from_union([ModelBilling.from_dict, from_none], obj.get("billing"))
+ default_reasoning_effort = from_union([from_str, from_none], obj.get("defaultReasoningEffort"))
model_picker_category = from_union([ModelPickerCategory, from_none], obj.get("modelPickerCategory"))
model_picker_price_category = from_union([ModelPickerPriceCategory, from_none], obj.get("modelPickerPriceCategory"))
policy = from_union([ModelPolicy.from_dict, from_none], obj.get("policy"))
+ supported_context_tiers = from_union([lambda x: from_list(from_str, x), from_none], obj.get("supportedContextTiers"))
supported_reasoning_efforts = from_union([lambda x: from_list(from_str, x), from_none], obj.get("supportedReasoningEfforts"))
- return Model(capabilities, id, name, billing, model_picker_category, model_picker_price_category, policy, supported_reasoning_efforts)
+ return Model(capabilities, id, name, billing, default_reasoning_effort, model_picker_category, model_picker_price_category, policy, supported_context_tiers, supported_reasoning_efforts)
def to_dict(self) -> dict:
result: dict = {}
@@ -28177,12 +29754,16 @@ def to_dict(self) -> dict:
result["name"] = from_str(self.name)
if self.billing is not None:
result["billing"] = from_union([lambda x: to_class(ModelBilling, x), from_none], self.billing)
+ if self.default_reasoning_effort is not None:
+ result["defaultReasoningEffort"] = from_union([from_str, from_none], self.default_reasoning_effort)
if self.model_picker_category is not None:
result["modelPickerCategory"] = from_union([lambda x: to_enum(ModelPickerCategory, x), from_none], self.model_picker_category)
if self.model_picker_price_category is not None:
result["modelPickerPriceCategory"] = from_union([lambda x: to_enum(ModelPickerPriceCategory, x), from_none], self.model_picker_price_category)
if self.policy is not None:
result["policy"] = from_union([lambda x: to_class(ModelPolicy, x), from_none], self.policy)
+ if self.supported_context_tiers is not None:
+ result["supportedContextTiers"] = from_union([lambda x: from_list(from_str, x), from_none], self.supported_context_tiers)
if self.supported_reasoning_efforts is not None:
result["supportedReasoningEfforts"] = from_union([lambda x: from_list(from_str, x), from_none], self.supported_reasoning_efforts)
return result
@@ -28240,6 +29821,10 @@ class ModelSwitchToRequest:
reasoning_summary: ReasoningSummary | None = None
"""Reasoning summary mode to request for supported model clients"""
+ source: ModelChangeSource | None = None
+ """Origin to record on the effective `session.model_change` event. Defaults to `sdk` when
+ omitted.
+ """
verbosity: Verbosity | None = None
"""Output verbosity level to request for supported models"""
@@ -28252,8 +29837,9 @@ def from_dict(obj: Any) -> 'ModelSwitchToRequest':
model_capabilities = from_union([ModelCapabilitiesOverride.from_dict, from_none], obj.get("modelCapabilities"))
reasoning_effort = from_union([from_str, from_none], obj.get("reasoningEffort"))
reasoning_summary = from_union([ReasoningSummary, from_none], obj.get("reasoningSummary"))
+ source = from_union([ModelChangeSource, from_none], obj.get("source"))
verbosity = from_union([Verbosity, from_none], obj.get("verbosity"))
- return ModelSwitchToRequest(model_id, context_tier, defer_if_model_change_queued, model_capabilities, reasoning_effort, reasoning_summary, verbosity)
+ return ModelSwitchToRequest(model_id, context_tier, defer_if_model_change_queued, model_capabilities, reasoning_effort, reasoning_summary, source, verbosity)
def to_dict(self) -> dict:
result: dict = {}
@@ -28268,6 +29854,8 @@ def to_dict(self) -> dict:
result["reasoningEffort"] = from_union([from_str, from_none], self.reasoning_effort)
if self.reasoning_summary is not None:
result["reasoningSummary"] = from_union([lambda x: to_enum(ReasoningSummary, x), from_none], self.reasoning_summary)
+ if self.source is not None:
+ result["source"] = from_union([lambda x: to_enum(ModelChangeSource, x), from_none], self.source)
if self.verbosity is not None:
result["verbosity"] = from_union([lambda x: to_enum(Verbosity, x), from_none], self.verbosity)
return result
@@ -28370,6 +29958,116 @@ def to_dict(self) -> dict:
result["unsubscribe"] = self.unsubscribe
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class HMACAuthInfoClass:
+ """Authentication-info variant for GitHub-internal HMAC auth, carrying the public GitHub
+ host and HMAC secret.
+
+ Authentication-info variant for a token sourced from an environment variable, with host,
+ optional login, token, and env var name.
+
+ Authentication-info variant for SDK-configured token authentication, carrying host and
+ the secret token value.
+
+ Authentication-info variant for direct Copilot API token auth sourced from environment
+ variables, with public GitHub host.
+
+ Authentication-info variant for OAuth user auth, with host and login; the token remains
+ in the runtime secret store.
+
+ Authentication-info variant for GitHub CLI credentials, carrying host, login, and the `gh
+ auth token` value.
+
+ Authentication-info variant for API-key authentication to a non-GitHub LLM provider,
+ carrying the secret `apiKey` and host.
+ """
+ host: str
+ """Authentication host. HMAC auth always targets the public GitHub host.
+
+ Authentication host (e.g. https://github.com or a GHES host).
+
+ Authentication host.
+
+ Authentication host (always the public GitHub host).
+ """
+ type: AuthInfoType
+ """HMAC-based authentication used by GitHub-internal services.
+
+ Personal access token (PAT) or server-to-server token sourced from an environment
+ variable.
+
+ SDK-side token authentication; the host configured the token directly via the SDK.
+
+ Direct Copilot API authentication via the `GITHUB_COPILOT_API_TOKEN` + `COPILOT_API_URL`
+ environment-variable pair. The token itself is read from the environment by the runtime,
+ not carried in this struct.
+
+ OAuth user authentication. The token itself is held in the runtime's secret token store
+ (keyed by host+login) and is NOT carried in this struct.
+
+ Authentication via the `gh` CLI's saved credentials.
+
+ API-key authentication for non-GitHub LLM providers (e.g. when running BYOM-style).
+ """
+ copilot_user: CopilotUserResponse | None = None
+ """Snapshot of the authenticated user's Copilot subscription info, if known. Mirrors the
+ GitHub API `/copilot_internal/v2/token` user response shape — the runtime trusts this
+ verbatim and does not re-fetch when set.
+ """
+ hmac: str | None = None
+ """HMAC secret used to sign requests."""
+
+ env_var: str | None = None
+ """Name of the environment variable the token was sourced from."""
+
+ login: str | None = None
+ """User login associated with the token. Undefined for server-to-server tokens (those
+ starting with `ghs_`).
+
+ OAuth user login.
+
+ User login as reported by `gh auth status`.
+ """
+ token: str | None = None
+ """The token value itself. Treat as a secret.
+
+ The token returned by `gh auth token`. Treat as a secret.
+ """
+ api_key: str | None = None
+ """The API key. Treat as a secret."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'HMACAuthInfoClass':
+ assert isinstance(obj, dict)
+ host = from_str(obj.get("host"))
+ type = AuthInfoType(obj.get("type"))
+ copilot_user = from_union([CopilotUserResponse.from_dict, from_none], obj.get("copilotUser"))
+ hmac = from_union([from_str, from_none], obj.get("hmac"))
+ env_var = from_union([from_str, from_none], obj.get("envVar"))
+ login = from_union([from_str, from_none], obj.get("login"))
+ token = from_union([from_str, from_none], obj.get("token"))
+ api_key = from_union([from_str, from_none], obj.get("apiKey"))
+ return HMACAuthInfoClass(host, type, copilot_user, hmac, env_var, login, token, api_key)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["host"] = from_str(self.host)
+ result["type"] = to_enum(AuthInfoType, self.type)
+ if self.copilot_user is not None:
+ result["copilotUser"] = from_union([lambda x: to_class(CopilotUserResponse, x), from_none], self.copilot_user)
+ if self.hmac is not None:
+ result["hmac"] = from_union([from_str, from_none], self.hmac)
+ if self.env_var is not None:
+ result["envVar"] = from_union([from_str, from_none], self.env_var)
+ if self.login is not None:
+ result["login"] = from_union([from_str, from_none], self.login)
+ if self.token is not None:
+ result["token"] = from_union([from_str, from_none], self.token)
+ if self.api_key is not None:
+ result["apiKey"] = from_union([from_str, from_none], self.api_key)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionLimitPredictionDetails:
@@ -28439,6 +30137,8 @@ class SessionLimitPredictionResult:
include an explicit reason.
"""
kind: SessionLimitPredictionResultKind
+ """Prediction result variant discriminator."""
+
prediction: SessionLimitPredictionDetails | None = None
"""Predicted session limit details."""
@@ -28482,6 +30182,142 @@ def to_dict(self) -> dict:
result["modelId"] = from_union([from_str, from_none], self.model_id)
return result
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class SessionSettingsValidationSnapshot:
+ """Redacted validation and memory-tool settings.
+
+ Redacted validation and memory-tool settings for a session.
+ """
+ advisory_enabled: bool | None = None
+ """Whether advisory validation is enabled."""
+
+ codeql_enabled: bool | None = None
+ """Whether CodeQL validation is enabled."""
+
+ code_review_enabled: bool | None = None
+ """Whether code-review validation is enabled."""
+
+ code_review_model: str | None = None
+ """Model used for code-review validation."""
+
+ dependabot_timeout: float | None = None
+ """Dependabot validation timeout budget in seconds."""
+
+ memory_store_enabled: bool | None = None
+ """Whether the memory-store tool is enabled."""
+
+ memory_vote_enabled: bool | None = None
+ """Whether the memory-vote tool is enabled."""
+
+ secret_scanning_enabled: bool | None = None
+ """Whether secret-scanning validation is enabled."""
+
+ timeout: float | None = None
+ """General validation timeout budget in seconds."""
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'SessionSettingsValidationSnapshot':
+ assert isinstance(obj, dict)
+ advisory_enabled = from_union([from_bool, from_none], obj.get("advisoryEnabled"))
+ codeql_enabled = from_union([from_bool, from_none], obj.get("codeqlEnabled"))
+ code_review_enabled = from_union([from_bool, from_none], obj.get("codeReviewEnabled"))
+ code_review_model = from_union([from_str, from_none], obj.get("codeReviewModel"))
+ dependabot_timeout = from_union([from_float, from_none], obj.get("dependabotTimeout"))
+ memory_store_enabled = from_union([from_bool, from_none], obj.get("memoryStoreEnabled"))
+ memory_vote_enabled = from_union([from_bool, from_none], obj.get("memoryVoteEnabled"))
+ secret_scanning_enabled = from_union([from_bool, from_none], obj.get("secretScanningEnabled"))
+ timeout = from_union([from_float, from_none], obj.get("timeout"))
+ return SessionSettingsValidationSnapshot(advisory_enabled, codeql_enabled, code_review_enabled, code_review_model, dependabot_timeout, memory_store_enabled, memory_vote_enabled, secret_scanning_enabled, timeout)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ if self.advisory_enabled is not None:
+ result["advisoryEnabled"] = from_union([from_bool, from_none], self.advisory_enabled)
+ if self.codeql_enabled is not None:
+ result["codeqlEnabled"] = from_union([from_bool, from_none], self.codeql_enabled)
+ if self.code_review_enabled is not None:
+ result["codeReviewEnabled"] = from_union([from_bool, from_none], self.code_review_enabled)
+ if self.code_review_model is not None:
+ result["codeReviewModel"] = from_union([from_str, from_none], self.code_review_model)
+ if self.dependabot_timeout is not None:
+ result["dependabotTimeout"] = from_union([to_float, from_none], self.dependabot_timeout)
+ if self.memory_store_enabled is not None:
+ result["memoryStoreEnabled"] = from_union([from_bool, from_none], self.memory_store_enabled)
+ if self.memory_vote_enabled is not None:
+ result["memoryVoteEnabled"] = from_union([from_bool, from_none], self.memory_vote_enabled)
+ if self.secret_scanning_enabled is not None:
+ result["secretScanningEnabled"] = from_union([from_bool, from_none], self.secret_scanning_enabled)
+ if self.timeout is not None:
+ result["timeout"] = from_union([to_float, from_none], self.timeout)
+ return result
+
+# Experimental: this type is part of an experimental API and may change or be removed.
+@dataclass
+class SessionSettingsSnapshot:
+ """Redacted, serializable view of session runtime settings for SDK boundary consumers.
+ Secrets and raw feature flags are intentionally excluded.
+ """
+ job: SessionSettingsJobSnapshot
+ """Redacted job settings."""
+
+ model: SessionSettingsModelSnapshot
+ """Redacted model routing settings."""
+
+ online_evaluation: SessionSettingsOnlineEvaluationSnapshot
+ """Online-evaluation settings safe for SDK consumers."""
+
+ repo: SessionSettingsRepoSnapshot
+ """Redacted repository and host settings."""
+
+ validation: SessionSettingsValidationSnapshot
+ """Redacted validation and memory-tool settings."""
+
+ client_name: str | None = None
+ """Name of the SDK client that created the session."""
+
+ start_time_ms: float | None = None
+ """Session start time as Unix epoch milliseconds."""
+
+ timeout_ms: float | None = None
+ """Session timeout in milliseconds."""
+
+ version: str | None = None
+ """Agent runtime version selector copied from the session settings, such as `latest` or a
+ runtime release identifier.
+ """
+
+ @staticmethod
+ def from_dict(obj: Any) -> 'SessionSettingsSnapshot':
+ assert isinstance(obj, dict)
+ job = SessionSettingsJobSnapshot.from_dict(obj.get("job"))
+ model = SessionSettingsModelSnapshot.from_dict(obj.get("model"))
+ online_evaluation = SessionSettingsOnlineEvaluationSnapshot.from_dict(obj.get("onlineEvaluation"))
+ repo = SessionSettingsRepoSnapshot.from_dict(obj.get("repo"))
+ validation = SessionSettingsValidationSnapshot.from_dict(obj.get("validation"))
+ client_name = from_union([from_str, from_none], obj.get("clientName"))
+ start_time_ms = from_union([from_float, from_none], obj.get("startTimeMs"))
+ timeout_ms = from_union([from_float, from_none], obj.get("timeoutMs"))
+ version = from_union([from_str, from_none], obj.get("version"))
+ return SessionSettingsSnapshot(job, model, online_evaluation, repo, validation, client_name, start_time_ms, timeout_ms, version)
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["job"] = to_class(SessionSettingsJobSnapshot, self.job)
+ result["model"] = to_class(SessionSettingsModelSnapshot, self.model)
+ result["onlineEvaluation"] = to_class(SessionSettingsOnlineEvaluationSnapshot, self.online_evaluation)
+ result["repo"] = to_class(SessionSettingsRepoSnapshot, self.repo)
+ result["validation"] = to_class(SessionSettingsValidationSnapshot, self.validation)
+ if self.client_name is not None:
+ result["clientName"] = from_union([from_str, from_none], self.client_name)
+ if self.start_time_ms is not None:
+ result["startTimeMs"] = from_union([to_float, from_none], self.start_time_ms)
+ if self.timeout_ms is not None:
+ result["timeoutMs"] = from_union([to_float, from_none], self.timeout_ms)
+ if self.version is not None:
+ result["version"] = from_union([from_str, from_none], self.version)
+ return result
+
# Experimental: this type is part of an experimental API and may change or be removed.
@dataclass
class SessionsOpenCloud:
@@ -28867,6 +30703,8 @@ class RPC:
api_key_auth_info: APIKeyAuthInfo
auth_info: AuthInfo
auth_info_type: AuthInfoType
+ auth_validation_error: AuthValidationError
+ auth_validation_errors: list[AuthValidationError]
built_in_model_catalog: BuiltInModelCatalog
built_in_model_catalog_entry: BuiltInModelCatalogEntry
cancel_user_requested_shell_command_result: CancelUserRequestedShellCommandResult
@@ -28884,6 +30722,8 @@ class RPC:
canvas_provider_invoke_action_request: CanvasProviderInvokeActionRequest
canvas_provider_open_request: CanvasProviderOpenRequest
canvas_provider_open_result: CanvasProviderOpenResult
+ canvas_provider_register_request: CanvasProviderRegisterRequest
+ canvas_provider_unregister_request: CanvasProviderUnregisterRequest
canvas_session_context: CanvasSessionContext
capi_session_options: CapiSessionOptions
command_list: CommandList
@@ -29133,10 +30973,12 @@ class RPC:
mcp_disable_request: MCPDisableRequest
mcp_discover_request: MCPDiscoverRequest
mcp_discover_result: MCPDiscoverResult
+ mcp_elicitation_form_mode: MCPElicitationFormMode
mcp_enable_request: MCPEnableRequest
mcp_execute_sampling_params: MCPExecuteSamplingParams
mcp_execute_sampling_request: dict[str, Any]
mcp_execute_sampling_result: dict[str, Any]
+ mcp_failed_server: MCPFailedServer
mcp_filtered_server: MCPFilteredServer
mcp_headers_handle_pending_headers_refresh_request: MCPHeadersHandlePendingHeadersRefreshRequest
mcp_headers_handle_pending_headers_refresh_request_request: MCPHeadersHandlePendingHeadersRefreshRequestRequest
@@ -29153,9 +30995,13 @@ class RPC:
mcp_oauth_login_request: MCPOauthLoginRequest
mcp_oauth_login_result: MCPOauthLoginResult
mcp_oauth_pending_request_response: MCPOauthPendingRequestResponse
+ mcp_oauth_probe_needs_auth_reason: MCPOauthProbeNeedsAuthReason
+ mcp_oauth_probe_request: MCPOauthProbeRequest
+ mcp_oauth_probe_result: MCPOauthProbeResult
mcp_oauth_respond_request: MCPOauthRespondRequest
mcp_oauth_respond_result: MCPOauthRespondResult
mcp_register_external_client_request: MCPRegisterExternalClientRequest
+ mcp_reload_config: MCPReloadConfig
mcp_reload_with_config_request: MCPReloadWithConfigRequest
mcp_remove_git_hub_result: MCPRemoveGitHubResult
mcp_resource: MCPResource
@@ -29170,8 +31016,11 @@ class RPC:
mcp_resources_read_result: MCPResourcesReadResult
mcp_resource_template: MCPResourceTemplate
mcp_restart_server_request: MCPRestartServerRequest
+ mcp_safe_for_telemetry: bool | MCPSafeForTelemetryFields
+ mcp_safe_for_telemetry_fields: MCPSafeForTelemetryFields
mcp_sampling_execution_action: MCPSamplingExecutionAction
mcp_sampling_execution_result: MCPSamplingExecutionResult
+ mcp_serializable_server_config: MCPSerializableServerConfig
mcp_server: MCPServer
mcp_server_auth_config: bool | MCPServerAuthConfigRedirectPort
mcp_server_auth_config_redirect_port: MCPServerAuthConfigRedirectPort
@@ -29180,7 +31029,10 @@ class RPC:
mcp_server_config_http: MCPServerConfigHTTP
mcp_server_config_http_oauth_grant_type: MCPGrantType
mcp_server_config_http_type: MCPServerConfigHTTPType
+ mcp_server_config_memory: MCPServerConfigMemory
+ mcp_server_config_memory_type: MCPServerConfigMemoryType
mcp_server_config_stdio: MCPServerConfigStdio
+ mcp_server_config_stdio_type: MCPServerConfigStdioType
mcp_server_failure_info: MCPServerFailureInfo
mcp_server_list: MCPServerList
mcp_server_needs_auth_info: MCPServerNeedsAuthInfo
@@ -29190,6 +31042,7 @@ class RPC:
mcp_start_server_request: MCPStartServerRequest
mcp_start_servers_result: MCPStartServersResult
mcp_stop_server_request: MCPStopServerRequest
+ mcp_task_metadata: MCPTaskMetadata
mcp_tools: MCPTools
mcp_tool_ui: MCPToolUI
mcp_tool_ui_visibility: MCPToolUIVisibility
@@ -29260,6 +31113,7 @@ class RPC:
permission_decision_approve_for_location_approval: PermissionDecisionApproveForLocationApproval
permission_decision_approve_for_location_approval_commands: PermissionDecisionApproveForLocationApprovalCommands
permission_decision_approve_for_location_approval_custom_tool: PermissionDecisionApproveForLocationApprovalCustomTool
+ permission_decision_approve_for_location_approval_extension_env_access: PermissionDecisionApproveForLocationApprovalExtensionEnvAccess
permission_decision_approve_for_location_approval_extension_management: PermissionDecisionApproveForLocationApprovalExtensionManagement
permission_decision_approve_for_location_approval_extension_permission_access: PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess
permission_decision_approve_for_location_approval_factory: PermissionDecisionApproveForLocationApprovalFactory
@@ -29272,6 +31126,7 @@ class RPC:
permission_decision_approve_for_session_approval: PermissionDecisionApproveForSessionApproval
permission_decision_approve_for_session_approval_commands: PermissionDecisionApproveForSessionApprovalCommands
permission_decision_approve_for_session_approval_custom_tool: PermissionDecisionApproveForSessionApprovalCustomTool
+ permission_decision_approve_for_session_approval_extension_env_access: PermissionDecisionApproveForSessionApprovalExtensionEnvAccess
permission_decision_approve_for_session_approval_extension_management: PermissionDecisionApproveForSessionApprovalExtensionManagement
permission_decision_approve_for_session_approval_extension_permission_access: PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess
permission_decision_approve_for_session_approval_factory: PermissionDecisionApproveForSessionApprovalFactory
@@ -29324,6 +31179,7 @@ class RPC:
permissions_locations_add_tool_approval_details: PermissionsLocationsAddToolApprovalDetails
permissions_locations_add_tool_approval_details_commands: PermissionsLocationsAddToolApprovalDetailsCommands
permissions_locations_add_tool_approval_details_custom_tool: PermissionsLocationsAddToolApprovalDetailsCustomTool
+ permissions_locations_add_tool_approval_details_extension_env_access: PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess
permissions_locations_add_tool_approval_details_extension_management: PermissionsLocationsAddToolApprovalDetailsExtensionManagement
permissions_locations_add_tool_approval_details_extension_permission_access: PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess
permissions_locations_add_tool_approval_details_factory: PermissionsLocationsAddToolApprovalDetailsFactory
@@ -29365,6 +31221,7 @@ class RPC:
plugin_install_result: PluginInstallResult
plugin_list: PluginList
plugin_list_result: PluginListResult
+ plugins_builtin_set_request: PluginsBuiltinSetRequest
plugins_disable_request: PluginsDisableRequest
plugins_enable_request: PluginsEnableRequest
plugins_install_request: PluginsInstallRequest
@@ -29467,6 +31324,7 @@ class RPC:
remote_notify_steerable_changed_request: RemoteNotifySteerableChangedRequest
remote_notify_steerable_changed_result: RemoteNotifySteerableChangedResult
remote_session_connection_result: RemoteSessionConnectionResult
+ remote_session_host_status: RemoteSessionHostStatus
remote_session_metadata_repository: RemoteSessionMetadataRepository
remote_session_metadata_task_type: TaskType
remote_session_metadata_value: RemoteSessionMetadataValue
@@ -29510,7 +31368,10 @@ class RPC:
server_skill_list: ServerSkillList
session_activity: SessionActivity
session_agent_list_request: SessionAgentListRequest
+ session_auth_login_request: SessionAuthLoginRequest
+ session_auth_logout_user_request: SessionAuthLogoutUserRequest
session_auth_status: SessionAuthStatus
+ session_auth_switch_request: SessionAuthSwitchRequest
session_bulk_delete_result: SessionBulkDeleteResult
session_cancel_all_background_agents_result: int
session_capability: SessionCapability
@@ -29552,6 +31413,9 @@ class RPC:
session_fs_stat_request: SessionFSStatRequest
session_fs_stat_result: SessionFSStatResult
session_fs_write_file_request: SessionFSWriteFileRequest
+ session_git_hub_auth_get_all_auth_available_result: list[SessionAuthStatus]
+ session_git_hub_auth_logout_result: bool
+ session_git_hub_auth_logout_user_result: bool
session_history_compact_request: SessionHistoryCompactRequest
session_installed_plugin: SessionInstalledPlugin
session_installed_plugin_source: SessionInstalledPluginSource | str
@@ -29823,6 +31687,7 @@ class RPC:
workspaces_workspace_details_host_type: HostType
workspaces_write_autopilot_objective_request: WorkspacesWriteAutopilotObjectiveRequest
workspaces_write_autopilot_objective_result: WorkspacesWriteAutopilotObjectiveResult
+ session_auth_info_result: HMACAuthInfoClass | None = None
session_context_attribution: SessionContextAttribution | None = None
session_context_info: SessionContextInfo | None = None
subagent_settings: SubagentSettings | None = None
@@ -29880,6 +31745,8 @@ def from_dict(obj: Any) -> 'RPC':
api_key_auth_info = APIKeyAuthInfo.from_dict(obj.get("ApiKeyAuthInfo"))
auth_info = _load_AuthInfo(obj.get("AuthInfo"))
auth_info_type = AuthInfoType(obj.get("AuthInfoType"))
+ auth_validation_error = AuthValidationError.from_dict(obj.get("AuthValidationError"))
+ auth_validation_errors = from_list(AuthValidationError.from_dict, obj.get("AuthValidationErrors"))
built_in_model_catalog = BuiltInModelCatalog.from_dict(obj.get("BuiltInModelCatalog"))
built_in_model_catalog_entry = BuiltInModelCatalogEntry.from_dict(obj.get("BuiltInModelCatalogEntry"))
cancel_user_requested_shell_command_result = CancelUserRequestedShellCommandResult.from_dict(obj.get("CancelUserRequestedShellCommandResult"))
@@ -29897,6 +31764,8 @@ def from_dict(obj: Any) -> 'RPC':
canvas_provider_invoke_action_request = CanvasProviderInvokeActionRequest.from_dict(obj.get("CanvasProviderInvokeActionRequest"))
canvas_provider_open_request = CanvasProviderOpenRequest.from_dict(obj.get("CanvasProviderOpenRequest"))
canvas_provider_open_result = CanvasProviderOpenResult.from_dict(obj.get("CanvasProviderOpenResult"))
+ canvas_provider_register_request = CanvasProviderRegisterRequest.from_dict(obj.get("CanvasProviderRegisterRequest"))
+ canvas_provider_unregister_request = CanvasProviderUnregisterRequest.from_dict(obj.get("CanvasProviderUnregisterRequest"))
canvas_session_context = CanvasSessionContext.from_dict(obj.get("CanvasSessionContext"))
capi_session_options = CapiSessionOptions.from_dict(obj.get("CapiSessionOptions"))
command_list = CommandList.from_dict(obj.get("CommandList"))
@@ -30146,10 +32015,12 @@ def from_dict(obj: Any) -> 'RPC':
mcp_disable_request = MCPDisableRequest.from_dict(obj.get("McpDisableRequest"))
mcp_discover_request = MCPDiscoverRequest.from_dict(obj.get("McpDiscoverRequest"))
mcp_discover_result = MCPDiscoverResult.from_dict(obj.get("McpDiscoverResult"))
+ mcp_elicitation_form_mode = MCPElicitationFormMode(obj.get("McpElicitationFormMode"))
mcp_enable_request = MCPEnableRequest.from_dict(obj.get("McpEnableRequest"))
mcp_execute_sampling_params = MCPExecuteSamplingParams.from_dict(obj.get("McpExecuteSamplingParams"))
mcp_execute_sampling_request = from_dict(lambda x: x, obj.get("McpExecuteSamplingRequest"))
mcp_execute_sampling_result = from_dict(lambda x: x, obj.get("McpExecuteSamplingResult"))
+ mcp_failed_server = MCPFailedServer.from_dict(obj.get("McpFailedServer"))
mcp_filtered_server = MCPFilteredServer.from_dict(obj.get("McpFilteredServer"))
mcp_headers_handle_pending_headers_refresh_request = MCPHeadersHandlePendingHeadersRefreshRequest.from_dict(obj.get("McpHeadersHandlePendingHeadersRefreshRequest"))
mcp_headers_handle_pending_headers_refresh_request_request = MCPHeadersHandlePendingHeadersRefreshRequestRequest.from_dict(obj.get("McpHeadersHandlePendingHeadersRefreshRequestRequest"))
@@ -30166,9 +32037,13 @@ def from_dict(obj: Any) -> 'RPC':
mcp_oauth_login_request = MCPOauthLoginRequest.from_dict(obj.get("McpOauthLoginRequest"))
mcp_oauth_login_result = MCPOauthLoginResult.from_dict(obj.get("McpOauthLoginResult"))
mcp_oauth_pending_request_response = MCPOauthPendingRequestResponse.from_dict(obj.get("McpOauthPendingRequestResponse"))
+ mcp_oauth_probe_needs_auth_reason = MCPOauthProbeNeedsAuthReason(obj.get("McpOauthProbeNeedsAuthReason"))
+ mcp_oauth_probe_request = MCPOauthProbeRequest.from_dict(obj.get("McpOauthProbeRequest"))
+ mcp_oauth_probe_result = MCPOauthProbeResult.from_dict(obj.get("McpOauthProbeResult"))
mcp_oauth_respond_request = MCPOauthRespondRequest.from_dict(obj.get("McpOauthRespondRequest"))
mcp_oauth_respond_result = MCPOauthRespondResult.from_dict(obj.get("McpOauthRespondResult"))
mcp_register_external_client_request = MCPRegisterExternalClientRequest.from_dict(obj.get("McpRegisterExternalClientRequest"))
+ mcp_reload_config = MCPReloadConfig.from_dict(obj.get("McpReloadConfig"))
mcp_reload_with_config_request = MCPReloadWithConfigRequest.from_dict(obj.get("McpReloadWithConfigRequest"))
mcp_remove_git_hub_result = MCPRemoveGitHubResult.from_dict(obj.get("McpRemoveGitHubResult"))
mcp_resource = MCPResource.from_dict(obj.get("McpResource"))
@@ -30183,8 +32058,11 @@ def from_dict(obj: Any) -> 'RPC':
mcp_resources_read_result = MCPResourcesReadResult.from_dict(obj.get("McpResourcesReadResult"))
mcp_resource_template = MCPResourceTemplate.from_dict(obj.get("McpResourceTemplate"))
mcp_restart_server_request = MCPRestartServerRequest.from_dict(obj.get("McpRestartServerRequest"))
+ mcp_safe_for_telemetry = from_union([from_bool, MCPSafeForTelemetryFields.from_dict], obj.get("McpSafeForTelemetry"))
+ mcp_safe_for_telemetry_fields = MCPSafeForTelemetryFields.from_dict(obj.get("McpSafeForTelemetryFields"))
mcp_sampling_execution_action = MCPSamplingExecutionAction(obj.get("McpSamplingExecutionAction"))
mcp_sampling_execution_result = MCPSamplingExecutionResult.from_dict(obj.get("McpSamplingExecutionResult"))
+ mcp_serializable_server_config = MCPSerializableServerConfig.from_dict(obj.get("McpSerializableServerConfig"))
mcp_server = MCPServer.from_dict(obj.get("McpServer"))
mcp_server_auth_config = from_union([from_bool, MCPServerAuthConfigRedirectPort.from_dict], obj.get("McpServerAuthConfig"))
mcp_server_auth_config_redirect_port = MCPServerAuthConfigRedirectPort.from_dict(obj.get("McpServerAuthConfigRedirectPort"))
@@ -30193,7 +32071,10 @@ def from_dict(obj: Any) -> 'RPC':
mcp_server_config_http = MCPServerConfigHTTP.from_dict(obj.get("McpServerConfigHttp"))
mcp_server_config_http_oauth_grant_type = MCPGrantType(obj.get("McpServerConfigHttpOauthGrantType"))
mcp_server_config_http_type = MCPServerConfigHTTPType(obj.get("McpServerConfigHttpType"))
+ mcp_server_config_memory = MCPServerConfigMemory.from_dict(obj.get("McpServerConfigMemory"))
+ mcp_server_config_memory_type = MCPServerConfigMemoryType(obj.get("McpServerConfigMemoryType"))
mcp_server_config_stdio = MCPServerConfigStdio.from_dict(obj.get("McpServerConfigStdio"))
+ mcp_server_config_stdio_type = MCPServerConfigStdioType(obj.get("McpServerConfigStdioType"))
mcp_server_failure_info = MCPServerFailureInfo.from_dict(obj.get("McpServerFailureInfo"))
mcp_server_list = MCPServerList.from_dict(obj.get("McpServerList"))
mcp_server_needs_auth_info = MCPServerNeedsAuthInfo.from_dict(obj.get("McpServerNeedsAuthInfo"))
@@ -30203,6 +32084,7 @@ def from_dict(obj: Any) -> 'RPC':
mcp_start_server_request = MCPStartServerRequest.from_dict(obj.get("McpStartServerRequest"))
mcp_start_servers_result = MCPStartServersResult.from_dict(obj.get("McpStartServersResult"))
mcp_stop_server_request = MCPStopServerRequest.from_dict(obj.get("McpStopServerRequest"))
+ mcp_task_metadata = MCPTaskMetadata.from_dict(obj.get("McpTaskMetadata"))
mcp_tools = MCPTools.from_dict(obj.get("McpTools"))
mcp_tool_ui = MCPToolUI.from_dict(obj.get("McpToolUi"))
mcp_tool_ui_visibility = MCPToolUIVisibility(obj.get("McpToolUiVisibility"))
@@ -30273,6 +32155,7 @@ def from_dict(obj: Any) -> 'RPC':
permission_decision_approve_for_location_approval = _load_PermissionDecisionApproveForLocationApproval(obj.get("PermissionDecisionApproveForLocationApproval"))
permission_decision_approve_for_location_approval_commands = PermissionDecisionApproveForLocationApprovalCommands.from_dict(obj.get("PermissionDecisionApproveForLocationApprovalCommands"))
permission_decision_approve_for_location_approval_custom_tool = PermissionDecisionApproveForLocationApprovalCustomTool.from_dict(obj.get("PermissionDecisionApproveForLocationApprovalCustomTool"))
+ permission_decision_approve_for_location_approval_extension_env_access = PermissionDecisionApproveForLocationApprovalExtensionEnvAccess.from_dict(obj.get("PermissionDecisionApproveForLocationApprovalExtensionEnvAccess"))
permission_decision_approve_for_location_approval_extension_management = PermissionDecisionApproveForLocationApprovalExtensionManagement.from_dict(obj.get("PermissionDecisionApproveForLocationApprovalExtensionManagement"))
permission_decision_approve_for_location_approval_extension_permission_access = PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess.from_dict(obj.get("PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess"))
permission_decision_approve_for_location_approval_factory = PermissionDecisionApproveForLocationApprovalFactory.from_dict(obj.get("PermissionDecisionApproveForLocationApprovalFactory"))
@@ -30285,6 +32168,7 @@ def from_dict(obj: Any) -> 'RPC':
permission_decision_approve_for_session_approval = _load_PermissionDecisionApproveForSessionApproval(obj.get("PermissionDecisionApproveForSessionApproval"))
permission_decision_approve_for_session_approval_commands = PermissionDecisionApproveForSessionApprovalCommands.from_dict(obj.get("PermissionDecisionApproveForSessionApprovalCommands"))
permission_decision_approve_for_session_approval_custom_tool = PermissionDecisionApproveForSessionApprovalCustomTool.from_dict(obj.get("PermissionDecisionApproveForSessionApprovalCustomTool"))
+ permission_decision_approve_for_session_approval_extension_env_access = PermissionDecisionApproveForSessionApprovalExtensionEnvAccess.from_dict(obj.get("PermissionDecisionApproveForSessionApprovalExtensionEnvAccess"))
permission_decision_approve_for_session_approval_extension_management = PermissionDecisionApproveForSessionApprovalExtensionManagement.from_dict(obj.get("PermissionDecisionApproveForSessionApprovalExtensionManagement"))
permission_decision_approve_for_session_approval_extension_permission_access = PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess.from_dict(obj.get("PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess"))
permission_decision_approve_for_session_approval_factory = PermissionDecisionApproveForSessionApprovalFactory.from_dict(obj.get("PermissionDecisionApproveForSessionApprovalFactory"))
@@ -30337,6 +32221,7 @@ def from_dict(obj: Any) -> 'RPC':
permissions_locations_add_tool_approval_details = _load_PermissionsLocationsAddToolApprovalDetails(obj.get("PermissionsLocationsAddToolApprovalDetails"))
permissions_locations_add_tool_approval_details_commands = PermissionsLocationsAddToolApprovalDetailsCommands.from_dict(obj.get("PermissionsLocationsAddToolApprovalDetailsCommands"))
permissions_locations_add_tool_approval_details_custom_tool = PermissionsLocationsAddToolApprovalDetailsCustomTool.from_dict(obj.get("PermissionsLocationsAddToolApprovalDetailsCustomTool"))
+ permissions_locations_add_tool_approval_details_extension_env_access = PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess.from_dict(obj.get("PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess"))
permissions_locations_add_tool_approval_details_extension_management = PermissionsLocationsAddToolApprovalDetailsExtensionManagement.from_dict(obj.get("PermissionsLocationsAddToolApprovalDetailsExtensionManagement"))
permissions_locations_add_tool_approval_details_extension_permission_access = PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess.from_dict(obj.get("PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess"))
permissions_locations_add_tool_approval_details_factory = PermissionsLocationsAddToolApprovalDetailsFactory.from_dict(obj.get("PermissionsLocationsAddToolApprovalDetailsFactory"))
@@ -30378,6 +32263,7 @@ def from_dict(obj: Any) -> 'RPC':
plugin_install_result = PluginInstallResult.from_dict(obj.get("PluginInstallResult"))
plugin_list = PluginList.from_dict(obj.get("PluginList"))
plugin_list_result = PluginListResult.from_dict(obj.get("PluginListResult"))
+ plugins_builtin_set_request = PluginsBuiltinSetRequest.from_dict(obj.get("PluginsBuiltinSetRequest"))
plugins_disable_request = PluginsDisableRequest.from_dict(obj.get("PluginsDisableRequest"))
plugins_enable_request = PluginsEnableRequest.from_dict(obj.get("PluginsEnableRequest"))
plugins_install_request = PluginsInstallRequest.from_dict(obj.get("PluginsInstallRequest"))
@@ -30480,6 +32366,7 @@ def from_dict(obj: Any) -> 'RPC':
remote_notify_steerable_changed_request = RemoteNotifySteerableChangedRequest.from_dict(obj.get("RemoteNotifySteerableChangedRequest"))
remote_notify_steerable_changed_result = RemoteNotifySteerableChangedResult.from_dict(obj.get("RemoteNotifySteerableChangedResult"))
remote_session_connection_result = RemoteSessionConnectionResult.from_dict(obj.get("RemoteSessionConnectionResult"))
+ remote_session_host_status = RemoteSessionHostStatus(obj.get("RemoteSessionHostStatus"))
remote_session_metadata_repository = RemoteSessionMetadataRepository.from_dict(obj.get("RemoteSessionMetadataRepository"))
remote_session_metadata_task_type = TaskType(obj.get("RemoteSessionMetadataTaskType"))
remote_session_metadata_value = RemoteSessionMetadataValue.from_dict(obj.get("RemoteSessionMetadataValue"))
@@ -30523,7 +32410,10 @@ def from_dict(obj: Any) -> 'RPC':
server_skill_list = ServerSkillList.from_dict(obj.get("ServerSkillList"))
session_activity = SessionActivity.from_dict(obj.get("SessionActivity"))
session_agent_list_request = SessionAgentListRequest.from_dict(obj.get("SessionAgentListRequest"))
+ session_auth_login_request = SessionAuthLoginRequest.from_dict(obj.get("SessionAuthLoginRequest"))
+ session_auth_logout_user_request = SessionAuthLogoutUserRequest.from_dict(obj.get("SessionAuthLogoutUserRequest"))
session_auth_status = SessionAuthStatus.from_dict(obj.get("SessionAuthStatus"))
+ session_auth_switch_request = SessionAuthSwitchRequest.from_dict(obj.get("SessionAuthSwitchRequest"))
session_bulk_delete_result = SessionBulkDeleteResult.from_dict(obj.get("SessionBulkDeleteResult"))
session_cancel_all_background_agents_result = from_int(obj.get("SessionCancelAllBackgroundAgentsResult"))
session_capability = SessionCapability(obj.get("SessionCapability"))
@@ -30565,6 +32455,9 @@ def from_dict(obj: Any) -> 'RPC':
session_fs_stat_request = SessionFSStatRequest.from_dict(obj.get("SessionFsStatRequest"))
session_fs_stat_result = SessionFSStatResult.from_dict(obj.get("SessionFsStatResult"))
session_fs_write_file_request = SessionFSWriteFileRequest.from_dict(obj.get("SessionFsWriteFileRequest"))
+ session_git_hub_auth_get_all_auth_available_result = from_list(SessionAuthStatus.from_dict, obj.get("SessionGitHubAuthGetAllAuthAvailableResult"))
+ session_git_hub_auth_logout_result = from_bool(obj.get("SessionGitHubAuthLogoutResult"))
+ session_git_hub_auth_logout_user_result = from_bool(obj.get("SessionGitHubAuthLogoutUserResult"))
session_history_compact_request = SessionHistoryCompactRequest.from_dict(obj.get("SessionHistoryCompactRequest"))
session_installed_plugin = SessionInstalledPlugin.from_dict(obj.get("SessionInstalledPlugin"))
session_installed_plugin_source = from_union([SessionInstalledPluginSource.from_dict, from_str], obj.get("SessionInstalledPluginSource"))
@@ -30836,12 +32729,13 @@ def from_dict(obj: Any) -> 'RPC':
workspaces_workspace_details_host_type = HostType(obj.get("WorkspacesWorkspaceDetailsHostType"))
workspaces_write_autopilot_objective_request = WorkspacesWriteAutopilotObjectiveRequest.from_dict(obj.get("WorkspacesWriteAutopilotObjectiveRequest"))
workspaces_write_autopilot_objective_result = WorkspacesWriteAutopilotObjectiveResult.from_dict(obj.get("WorkspacesWriteAutopilotObjectiveResult"))
+ session_auth_info_result = from_union([HMACAuthInfoClass.from_dict, from_none], obj.get("SessionAuthInfoResult"))
session_context_attribution = from_union([SessionContextAttribution.from_dict, from_none], obj.get("SessionContextAttribution"))
session_context_info = from_union([SessionContextInfo.from_dict, from_none], obj.get("SessionContextInfo"))
subagent_settings = from_union([SubagentSettings.from_dict, from_none], obj.get("SubagentSettings"))
task_progress = from_union([TaskProgress.from_dict, from_none], obj.get("TaskProgress"))
workspace_summary = from_union([WorkspaceSummary.from_dict, from_none], obj.get("WorkspaceSummary"))
- return RPC(abort_request, abort_result, account_all_users, account_get_all_users_result, account_get_current_auth_result, account_get_quota_request, account_get_quota_result, account_login_request, account_login_result, account_logout_request, account_logout_result, account_quota_snapshot, adaptive_thinking_support, agent_discovery_path, agent_discovery_path_list, agent_discovery_path_scope, agent_get_current_result, agent_info, agent_info_source, agent_list, agent_list_request, agent_registry_live_target_entry, agent_registry_live_target_entry_attention_kind, agent_registry_live_target_entry_kind, agent_registry_live_target_entry_last_terminal_event, agent_registry_live_target_entry_status, agent_registry_log_capture, agent_registry_log_capture_open_error_reason, agent_registry_spawn_error, agent_registry_spawn_permission_mode, agent_registry_spawn_registry_timeout, agent_registry_spawn_request, agent_registry_spawn_result, agent_registry_spawn_spawned, agent_registry_spawn_validation_error, agent_registry_spawn_validation_error_field, agent_registry_spawn_validation_error_reason, agent_reload_result, agents_discover_request, agent_select_request, agent_select_result, agent_set_prompt_request, agents_get_discovery_paths_request, allow_all_permission_set_result, allow_all_permission_state, api_key_auth_info, auth_info, auth_info_type, built_in_model_catalog, built_in_model_catalog_entry, cancel_user_requested_shell_command_result, canvas_action, canvas_action_invoke_request, canvas_action_invoke_result, canvas_close_request, canvas_host_context, canvas_host_context_capabilities, canvas_json_schema, canvas_list, canvas_list_open_result, canvas_open_request, canvas_provider_close_request, canvas_provider_invoke_action_request, canvas_provider_open_request, canvas_provider_open_result, canvas_session_context, capi_session_options, command_list, commands_handle_pending_command_request, commands_handle_pending_command_result, commands_invoke_request, commands_list_request, commands_respond_to_queued_command_request, commands_respond_to_queued_command_result, completions_get_trigger_characters_result, completions_request_request, completions_request_result, configure_session_extensions_params, connected_remote_session_metadata, connected_remote_session_metadata_kind, connected_remote_session_metadata_repository, connect_remote_session_params, connect_request, connect_result, content_exclusion_check_paths_request, content_exclusion_check_paths_result, content_exclusion_path_check, content_filter_mode, context_heaviest_message, copilot_api_token_auth_info, copilot_user_response, copilot_user_response_endpoints, copilot_user_response_quota_snapshots, copilot_user_response_quota_snapshots_chat, copilot_user_response_quota_snapshots_completions, copilot_user_response_quota_snapshots_premium_interactions, current_model, current_tool_metadata, debug_collect_logs_collected_entry, debug_collect_logs_destination, debug_collect_logs_entry, debug_collect_logs_entry_kind, debug_collect_logs_include, debug_collect_logs_redaction, debug_collect_logs_request, debug_collect_logs_result, debug_collect_logs_result_kind, debug_collect_logs_skipped_entry, debug_collect_logs_source, disable_bypass_permissions_mode, discovered_canvas, discovered_extension, discovered_extension_mode, discovered_extension_plugin, discovered_extensions, discovered_extensions_disable_request, discovered_extensions_enable_request, discovered_extension_source, discovered_mcp_server, discovered_mcp_server_type, enqueue_command_params, enqueue_command_result, env_auth_info, event_log_read_request, event_log_release_interest_result, event_log_tail_result, event_log_types, events_agent_scope, events_cursor_status, events_read_direction, events_read_result, execute_command_params, execute_command_result, extension, extension_context_push_input, extension_launch_profile, extension_launch_provider_resolve_request, extension_launch_provider_resolve_result, extension_list, extensions_disable_request, extensions_enable_request, extension_source, extension_status, external_tool_result, external_tool_text_result_for_llm, external_tool_text_result_for_llm_binary_results_for_llm, external_tool_text_result_for_llm_binary_results_for_llm_type, external_tool_text_result_for_llm_content, external_tool_text_result_for_llm_content_audio, external_tool_text_result_for_llm_content_image, external_tool_text_result_for_llm_content_resource, external_tool_text_result_for_llm_content_resource_details, external_tool_text_result_for_llm_content_resource_link, external_tool_text_result_for_llm_content_resource_link_icon, external_tool_text_result_for_llm_content_resource_link_icon_theme, external_tool_text_result_for_llm_content_shell_exit, external_tool_text_result_for_llm_content_terminal, external_tool_text_result_for_llm_content_text, factory_abort_request, factory_ack_result, factory_agent_options, factory_agent_request, factory_agent_result, factory_agent_summary, factory_cancel_request, factory_current_phase, factory_declared_limits, factory_durable_operation, factory_execute_request, factory_execute_result, factory_get_run_progress_request, factory_get_run_request, factory_journal_get_request, factory_journal_get_result, factory_journal_put_request, factory_list_runs_request, factory_list_runs_result, factory_log_line, factory_log_line_kind, factory_log_request, factory_phase_observation, factory_phase_status, factory_progress_line, factory_progress_page, factory_resume_request, factory_resume_result, factory_run_consumed, factory_run_detail, factory_run_failure, factory_run_failure_kind, factory_run_limits, factory_run_request, factory_run_result, factory_run_status, factory_run_summary, factory_run_terminal, filter_mapping, fleet_start_request, fleet_start_result, folder_trust_add_params, folder_trust_check_params, folder_trust_check_result, gh_cli_auth_info, git_hub_telemetry_client_info, git_hub_telemetry_event, git_hub_telemetry_notification, handle_pending_tool_call_request, handle_pending_tool_call_result, history_abort_manual_compaction_result, history_cancel_background_compaction_result, history_clear_context_request, history_clear_context_result, history_compact_context_window, history_compact_request, history_compact_result, history_file_restore_skip_reason, history_list_rewind_points_result, history_preview_rewind_request, history_preview_rewind_result, history_rewind_change_type, history_rewind_file_preview, history_rewind_mode, history_rewind_outcome, history_rewind_point, history_rewind_request, history_rewind_result, history_rewind_unavailable_reason, history_skipped_file_restore, history_summarize_for_handoff_result, history_truncate_request, history_truncate_result, hmac_auth_info, hook_invoke_request, hook_invoke_response, hook_type, installed_plugin, installed_plugin_info, installed_plugin_source, installed_plugin_source_git_hub, installed_plugin_source_local, installed_plugin_source_url, instruction_discovery_path, instruction_discovery_path_kind, instruction_discovery_path_list, instruction_discovery_path_location, instructions_discover_request, instructions_get_discovery_paths_request, instructions_get_sources_result, instruction_source, instruction_source_location, instruction_source_type, interrupt_main_turn_request, interrupt_main_turn_result, llm_inference_headers, llm_inference_http_request_chunk_request, llm_inference_http_request_chunk_result, llm_inference_http_request_start_request, llm_inference_http_request_start_result, llm_inference_http_request_start_transport, llm_inference_http_response_chunk_error, llm_inference_http_response_chunk_request, llm_inference_http_response_chunk_result, llm_inference_http_response_start_request, llm_inference_http_response_start_result, llm_inference_set_provider_result, local_session_metadata_value, log_request, log_result, lsp_initialize_request, managed_settings_read_result, marketplace_add_result, marketplace_browse_result, marketplace_info, marketplace_list_result, marketplace_plugin_info, marketplace_refresh_entry, marketplace_refresh_result, marketplace_remove_result, mcp_allowed_server, mcp_apps_call_tool_request, mcp_apps_diagnose_capability, mcp_apps_diagnose_request, mcp_apps_diagnose_result, mcp_apps_diagnose_server, mcp_apps_host_context, mcp_apps_host_context_details, mcp_apps_host_context_details_available_display_mode, mcp_apps_host_context_details_display_mode, mcp_apps_host_context_details_platform, mcp_apps_host_context_details_theme, mcp_apps_list_tools_request, mcp_apps_list_tools_result, mcp_apps_read_resource_request, mcp_apps_read_resource_result, mcp_apps_resource_content, mcp_apps_set_host_context_details, mcp_apps_set_host_context_details_available_display_mode, mcp_apps_set_host_context_details_display_mode, mcp_apps_set_host_context_details_platform, mcp_apps_set_host_context_details_theme, mcp_apps_set_host_context_request, mcp_cancel_sampling_execution_params, mcp_cancel_sampling_execution_result, mcp_config_add_request, mcp_config_disable_request, mcp_config_enable_request, mcp_config_list, mcp_config_remove_request, mcp_config_update_request, mcp_configure_git_hub_request, mcp_configure_git_hub_result, mcp_disable_request, mcp_discover_request, mcp_discover_result, mcp_enable_request, mcp_execute_sampling_params, mcp_execute_sampling_request, mcp_execute_sampling_result, mcp_filtered_server, mcp_headers_handle_pending_headers_refresh_request, mcp_headers_handle_pending_headers_refresh_request_request, mcp_headers_handle_pending_headers_refresh_request_result, mcp_host_state, mcp_is_server_running_request, mcp_is_server_running_result, mcp_list_tools_request, mcp_list_tools_result, mcp_oauth_authentication_state_changed_request, mcp_oauth_handle_pending_request, mcp_oauth_handle_pending_result, mcp_oauth_login_grant_type, mcp_oauth_login_request, mcp_oauth_login_result, mcp_oauth_pending_request_response, mcp_oauth_respond_request, mcp_oauth_respond_result, mcp_register_external_client_request, mcp_reload_with_config_request, mcp_remove_git_hub_result, mcp_resource, mcp_resource_annotations, mcp_resource_content, mcp_resource_icon, mcp_resources_list_request, mcp_resources_list_result, mcp_resources_list_templates_request, mcp_resources_list_templates_result, mcp_resources_read_request, mcp_resources_read_result, mcp_resource_template, mcp_restart_server_request, mcp_sampling_execution_action, mcp_sampling_execution_result, mcp_server, mcp_server_auth_config, mcp_server_auth_config_redirect_port, mcp_server_config, mcp_server_config_defer_tools, mcp_server_config_http, mcp_server_config_http_oauth_grant_type, mcp_server_config_http_type, mcp_server_config_stdio, mcp_server_failure_info, mcp_server_list, mcp_server_needs_auth_info, mcp_set_env_value_mode_details, mcp_set_env_value_mode_params, mcp_set_env_value_mode_result, mcp_start_server_request, mcp_start_servers_result, mcp_stop_server_request, mcp_tools, mcp_tool_ui, mcp_tool_ui_visibility, mcp_unregister_external_client_request, memory_configuration, metadata_context_attribution_result, metadata_context_heaviest_messages_request, metadata_context_heaviest_messages_result, metadata_context_info_request, metadata_context_info_result, metadata_is_processing_result, metadata_recompute_context_tokens_request, metadata_recompute_context_tokens_result, metadata_record_context_change_request, metadata_record_context_change_result, metadata_set_working_directory_request, metadata_set_working_directory_result, metadata_snapshot_current_mode, metadata_snapshot_remote_metadata, metadata_snapshot_remote_metadata_repository, metadata_snapshot_remote_metadata_task_type, model, model_billing, model_billing_promo, model_billing_token_prices, model_billing_token_prices_long_context, model_capabilities, model_capabilities_limits, model_capabilities_limits_vision, model_capabilities_override, model_capabilities_override_limits, model_capabilities_override_limits_vision, model_capabilities_override_supports, model_capabilities_supports, model_list, model_list_request, model_picker_category, model_picker_price_category, model_policy, model_policy_state, model_set_reasoning_effort_request, model_set_reasoning_effort_result, models_list_request, model_switch_to_request, model_switch_to_result, mode_set_request, named_provider_config, name_get_result, name_set_auto_request, name_set_auto_result, name_set_request, open_canvas_instance, options_update_additional_content_exclusion_policy, options_update_additional_content_exclusion_policy_rule, options_update_additional_content_exclusion_policy_rule_source, options_update_additional_content_exclusion_policy_scope, options_update_context_tier, options_update_env_value_mode, options_update_reasoning_summary, options_update_tool_filter_precedence, pending_permission_request, pending_permission_request_list, permission_decision, permission_decision_approved, permission_decision_approved_for_location, permission_decision_approved_for_session, permission_decision_approve_for_location, permission_decision_approve_for_location_approval, permission_decision_approve_for_location_approval_commands, permission_decision_approve_for_location_approval_custom_tool, permission_decision_approve_for_location_approval_extension_management, permission_decision_approve_for_location_approval_extension_permission_access, permission_decision_approve_for_location_approval_factory, permission_decision_approve_for_location_approval_mcp, permission_decision_approve_for_location_approval_mcp_sampling, permission_decision_approve_for_location_approval_memory, permission_decision_approve_for_location_approval_read, permission_decision_approve_for_location_approval_write, permission_decision_approve_for_session, permission_decision_approve_for_session_approval, permission_decision_approve_for_session_approval_commands, permission_decision_approve_for_session_approval_custom_tool, permission_decision_approve_for_session_approval_extension_management, permission_decision_approve_for_session_approval_extension_permission_access, permission_decision_approve_for_session_approval_factory, permission_decision_approve_for_session_approval_mcp, permission_decision_approve_for_session_approval_mcp_sampling, permission_decision_approve_for_session_approval_memory, permission_decision_approve_for_session_approval_read, permission_decision_approve_for_session_approval_write, permission_decision_approve_once, permission_decision_approve_permanently, permission_decision_cancelled, permission_decision_context, permission_decision_denied_by_content_exclusion_policy, permission_decision_denied_by_permission_request_hook, permission_decision_denied_by_rules, permission_decision_denied_interactively_by_user, permission_decision_denied_no_approval_rule_and_could_not_request_from_user, permission_decision_outcome, permission_decision_reject, permission_decision_request, permission_decision_source, permission_decision_surface, permission_decision_user_not_available, permission_location_add_tool_approval_params, permission_location_apply_params, permission_location_apply_result, permission_location_resolve_params, permission_location_resolve_result, permission_location_type, permission_paths_add_params, permission_paths_allowed_check_params, permission_paths_allowed_check_result, permission_paths_config, permission_paths_list, permission_paths_update_primary_params, permission_paths_workspace_check_params, permission_paths_workspace_check_result, permission_prompt_shown_notification, permission_request_result, permission_rules_set, permissions_allow_all_mode, permissions_configure_additional_content_exclusion_policy, permissions_configure_additional_content_exclusion_policy_rule, permissions_configure_additional_content_exclusion_policy_rule_source, permissions_configure_additional_content_exclusion_policy_scope, permissions_configure_params, permissions_configure_result, permissions_folder_trust_add_trusted_result, permissions_get_allow_all_request, permissions_locations_add_tool_approval_details, permissions_locations_add_tool_approval_details_commands, permissions_locations_add_tool_approval_details_custom_tool, permissions_locations_add_tool_approval_details_extension_management, permissions_locations_add_tool_approval_details_extension_permission_access, permissions_locations_add_tool_approval_details_factory, permissions_locations_add_tool_approval_details_mcp, permissions_locations_add_tool_approval_details_mcp_sampling, permissions_locations_add_tool_approval_details_memory, permissions_locations_add_tool_approval_details_read, permissions_locations_add_tool_approval_details_write, permissions_locations_add_tool_approval_result, permissions_modify_rules_params, permissions_modify_rules_result, permissions_modify_rules_scope, permissions_notify_prompt_shown_result, permissions_paths_add_result, permissions_paths_list_request, permissions_paths_update_primary_result, permissions_pending_requests_request, permissions_reset_session_approvals_request, permissions_reset_session_approvals_result, permissions_set_allow_all_request, permissions_set_allow_all_source, permissions_set_approve_all_request, permissions_set_approve_all_result, permissions_set_approve_all_source, permissions_set_required_request, permissions_set_required_result, permissions_urls_set_unrestricted_mode_result, permission_urls_config, permission_urls_set_unrestricted_mode_params, ping_request, ping_result, plan_read_result, plan_read_sql_todos_result, plan_read_sql_todos_with_dependencies_result, plan_sql_todo_dependency, plan_sql_todos_row, plan_update_request, plugin, plugin_install_result, plugin_list, plugin_list_result, plugins_disable_request, plugins_enable_request, plugins_install_request, plugins_marketplaces_add_request, plugins_marketplaces_browse_request, plugins_marketplaces_refresh_request, plugins_marketplaces_remove_request, plugins_reload_request, plugins_uninstall_request, plugins_update_request, plugin_update_all_entry, plugin_update_all_result, plugin_update_result, provider_add_request, provider_add_result, provider_config, provider_config_azure, provider_config_transport, provider_config_type, provider_config_wire_api, provider_endpoint, provider_endpoint_transport, provider_endpoint_type, provider_endpoint_wire_api, provider_get_endpoint_request, provider_model_config, provider_session_token, provider_token_acquire_request, provider_token_acquire_result, push_attachment, push_attachment_blob, push_attachment_directory, push_attachment_file, push_attachment_file_line_range, push_attachment_git_hub_actions_job, push_attachment_git_hub_commit, push_attachment_git_hub_file, push_attachment_git_hub_file_diff, push_attachment_git_hub_file_diff_side, push_attachment_git_hub_reference, push_attachment_git_hub_reference_type, push_attachment_git_hub_release, push_attachment_git_hub_repository, push_attachment_git_hub_snippet, push_attachment_git_hub_tree_comparison, push_attachment_git_hub_tree_comparison_side, push_attachment_git_hub_url, push_attachment_selection, push_attachment_selection_details, push_attachment_selection_details_end, push_attachment_selection_details_start, push_git_hub_repo_ref, queue_begin_deferred_idle_drain_request, queue_begin_deferred_idle_drain_result, queue_consume_system_notifications_request, queued_command_handled, queued_command_not_handled, queued_command_result, queue_defer_session_idle_request, queue_duplicate_at_request, queue_duplicate_at_result, queue_enqueue_resume_pending_result, queue_finish_deferred_idle_drain_request, queue_finish_deferred_idle_drain_result, queue_has_pending_result, queue_insert_at_request, queue_insert_at_result, queue_insert_message, queue_move_item_request, queue_move_item_result, queue_pending_items, queue_pending_items_kind, queue_pending_items_result, queue_remove_at_request, queue_remove_at_result, queue_remove_most_recent_result, queue_send_now_request, queue_send_now_result, queue_set_drain_paused_request, queue_snapshot_result, queue_update_text_request, queue_update_text_result, register_event_interest_params, register_event_interest_result, register_extension_tools_params, register_extension_tools_result, release_event_interest_params, remote_control_config, remote_control_config_existing_mc_session, remote_control_status, remote_control_status_active, remote_control_status_connecting, remote_control_status_error, remote_control_status_off, remote_control_status_result, remote_control_stop_result, remote_control_transfer_result, remote_enable_request, remote_enable_result, remote_notify_steerable_changed_request, remote_notify_steerable_changed_result, remote_session_connection_result, remote_session_metadata_repository, remote_session_metadata_task_type, remote_session_metadata_value, remote_session_mode, remote_session_repository, run_options, sandbox_config, sandbox_config_auth, sandbox_config_user_policy, sandbox_config_user_policy_experimental, sandbox_config_user_policy_experimental_seatbelt, sandbox_config_user_policy_filesystem, sandbox_config_user_policy_network, sandbox_config_user_policy_network_proxy, sandbox_config_user_policy_seatbelt, schedule_add_at_request, schedule_add_cron_request, schedule_add_request, schedule_add_result, schedule_add_self_paced_request, schedule_entry, schedule_has_self_paced_result, schedule_list, schedule_rearm_self_paced_request, schedule_stop_request, schedule_stop_result, secrets_add_filter_values_request, secrets_add_filter_values_result, send_agent_mode, send_attachments_to_message_params, send_message_item, send_messages_request, send_messages_result, send_mode, send_request, send_result, send_system_notification_request, server_agent_list, server_instruction_source_list, server_skill, server_skill_list, session_activity, session_agent_list_request, session_auth_status, session_bulk_delete_result, session_cancel_all_background_agents_result, session_capability, session_commands_list_request, session_completion_item, session_context, session_context_host_type, session_enrich_metadata_result, session_fs_append_file_request, session_fs_error, session_fs_error_code, session_fs_exists_request, session_fs_exists_result, session_fs_mkdir_request, session_fs_readdir_request, session_fs_readdir_result, session_fs_readdir_with_types_entry, session_fs_readdir_with_types_entry_type, session_fs_readdir_with_types_request, session_fs_readdir_with_types_result, session_fs_read_file_request, session_fs_read_file_result, session_fs_rename_request, session_fs_rm_request, session_fs_set_provider_capabilities, session_fs_set_provider_conventions, session_fs_set_provider_request, session_fs_set_provider_result, session_fs_sqlite_exists_request, session_fs_sqlite_exists_result, session_fs_sqlite_query_request, session_fs_sqlite_query_result, session_fs_sqlite_query_type, session_fs_sqlite_transaction_error, session_fs_sqlite_transaction_error_class, session_fs_sqlite_transaction_request, session_fs_sqlite_transaction_result, session_fs_sqlite_transaction_statement, session_fs_stat_request, session_fs_stat_result, session_fs_write_file_request, session_history_compact_request, session_installed_plugin, session_installed_plugin_source, session_installed_plugin_source_git_hub, session_installed_plugin_source_local, session_installed_plugin_source_url, session_limit_prediction_baseline_data, session_limit_prediction_client_type, session_limit_prediction_details, session_limit_prediction_predict_request, session_limit_prediction_request, session_limit_prediction_result, session_limit_prediction_source, session_limit_prediction_tier, session_limit_prediction_tier_option, session_limit_prediction_unavailable_reason, session_list, session_list_entry, session_list_filter, session_load_deferred_repo_hooks_result, session_log_level, session_managed_permissions, session_managed_settings, session_mcp_apps_call_tool_result, session_metadata_snapshot, session_mode, session_model_list, session_model_list_request, session_model_price_category, session_open_options, session_open_options_additional_content_exclusion_policy, session_open_options_additional_content_exclusion_policy_rule, session_open_options_additional_content_exclusion_policy_rule_source, session_open_options_additional_content_exclusion_policy_scope, session_open_options_env_value_mode, session_open_options_reasoning_summary, session_open_params, session_open_result, session_plugins_reload_request, session_provider_get_endpoint_request, session_prune_result, sessions_bulk_delete_request, sessions_check_in_use_request, sessions_check_in_use_result, sessions_close_request, sessions_close_result, sessions_delete_request, sessions_enrich_metadata_request, session_set_credentials_params, session_set_credentials_result, session_settings_built_in_tool_availability_snapshot, session_settings_evaluate_predicate_request, session_settings_evaluate_predicate_result, session_settings_job_snapshot, session_settings_model_snapshot, session_settings_online_evaluation_snapshot, session_settings_predicate_name, session_settings_repo_snapshot, session_settings_snapshot, session_settings_validation_snapshot, sessions_find_by_prefix_request, sessions_find_by_prefix_result, sessions_find_by_task_id_request, sessions_find_by_task_id_result, sessions_fork_request, sessions_fork_result, sessions_get_board_entry_count_request, sessions_get_board_entry_count_result, sessions_get_event_file_path_request, sessions_get_event_file_path_result, sessions_get_last_for_context_request, sessions_get_last_for_context_result, sessions_get_metadata_request, sessions_get_metadata_result, sessions_get_persisted_remote_steerable_request, sessions_get_persisted_remote_steerable_result, session_sizes, sessions_list_non_empty_session_ids_request, sessions_list_non_empty_session_ids_result, sessions_list_request, sessions_load_deferred_repo_hooks_request, sessions_open_attach, sessions_open_cloud, sessions_open_create, sessions_open_handoff, sessions_open_handoff_task_type, sessions_open_progress, sessions_open_progress_status, sessions_open_progress_step, sessions_open_remote, sessions_open_resume, sessions_open_resume_last, sessions_open_status, session_source, sessions_prune_old_request, sessions_register_extension_tools_on_session_options, sessions_release_lock_request, sessions_release_lock_result, sessions_reload_plugin_hooks_request, sessions_reload_plugin_hooks_result, sessions_save_request, sessions_save_result, sessions_set_additional_plugins_request, sessions_set_additional_plugins_result, sessions_set_remote_control_steering_request, sessions_start_remote_control_request, sessions_stop_remote_control_request, sessions_transfer_remote_control_request, session_telemetry_engagement, session_update_options_params, session_update_options_result, session_visibility_status, session_working_directory_context, session_working_directory_context_host_type, shell_cancel_user_requested_request, shell_exec_request, shell_exec_result, shell_execute_user_requested_request, shell_init_profile, shell_init_script, shell_init_script_shell, shell_kill_request, shell_kill_result, shell_kill_signal, shell_options, shutdown_request, skill, skill_discovery_path, skill_discovery_path_list, skill_discovery_scope, skill_list, skills_config_set_disabled_skills_request, skills_disable_request, skills_discover_request, skills_enable_request, skills_get_discovery_paths_request, skills_get_invoked_result, skills_invoked_skill, skills_load_diagnostics, slash_command_agent_prompt_result, slash_command_completed_result, slash_command_info, slash_command_input, slash_command_input_choice, slash_command_input_completion, slash_command_invocation_result, slash_command_kind, slash_command_select_subcommand_option, slash_command_select_subcommand_result, slash_command_text_result, subagent_settings_entry, subagent_settings_entry_context_tier, task_agent_info, task_agent_progress, task_execution_mode, task_info, task_list, task_progress_line, tasks_cancel_request, tasks_cancel_result, tasks_get_current_promotable_result, tasks_get_progress_request, tasks_get_progress_result, task_shell_info, task_shell_info_attachment_mode, task_shell_progress, tasks_promote_current_to_background_result, tasks_promote_to_background_request, tasks_promote_to_background_result, tasks_refresh_result, tasks_remove_request, tasks_remove_result, tasks_send_message_request, tasks_send_message_result, tasks_start_agent_request, tasks_start_agent_result, task_status, tasks_wait_for_pending_result, telemetry_set_feature_overrides_request, token_auth_info, tool, tool_list, tools_get_current_metadata_result, tools_initialize_and_validate_result, tools_list_request, tools_update_subagent_settings_result, ui_auto_mode_switch_response, ui_elicitation_array_any_of_field, ui_elicitation_array_any_of_field_items, ui_elicitation_array_any_of_field_items_any_of, ui_elicitation_array_enum_field, ui_elicitation_array_enum_field_items, ui_elicitation_field_value, ui_elicitation_request, ui_elicitation_response, ui_elicitation_response_action, ui_elicitation_response_content, ui_elicitation_result, ui_elicitation_schema, ui_elicitation_schema_property, ui_elicitation_schema_property_boolean, ui_elicitation_schema_property_number, ui_elicitation_schema_property_number_type, ui_elicitation_schema_property_string, ui_elicitation_schema_property_string_format, ui_elicitation_string_enum_field, ui_elicitation_string_one_of_field, ui_elicitation_string_one_of_field_one_of, ui_ephemeral_query_request, ui_ephemeral_query_result, ui_exit_plan_mode_action, ui_exit_plan_mode_response, ui_handle_pending_auto_mode_switch_request, ui_handle_pending_elicitation_request, ui_handle_pending_exit_plan_mode_request, ui_handle_pending_result, ui_handle_pending_sampling_request, ui_handle_pending_sampling_response, ui_handle_pending_session_limits_exhausted_request, ui_handle_pending_user_input_request, ui_register_direct_auto_mode_switch_handler_result, ui_session_limits_exhausted_response, ui_session_limits_exhausted_response_action, ui_unregister_direct_auto_mode_switch_handler_request, ui_unregister_direct_auto_mode_switch_handler_result, ui_user_input_response, update_subagent_settings_request, usage_get_metrics_result, usage_metrics_code_changes, usage_metrics_model_metric, usage_metrics_model_metric_requests, usage_metrics_model_metric_token_detail, usage_metrics_model_metric_usage, usage_metrics_token_detail, user_auth_info, user_requested_shell_command_result, user_setting_metadata, user_settings_get_result, user_settings_set_request, user_settings_set_result, visibility_get_result, visibility_set_request, visibility_set_result, workspace_diff_file_change, workspace_diff_file_change_type, workspace_diff_mode, workspace_diff_result, workspaces_add_summary_request, workspaces_add_summary_result, workspaces_autopilot_objective_exists_result, workspaces_checkpoints, workspaces_create_file_request, workspaces_delete_autopilot_objective_result, workspaces_diff_request, workspaces_ensure_request, workspaces_get_workspace_result, workspaces_list_checkpoints_result, workspaces_list_files_result, workspaces_read_autopilot_objective_result, workspaces_read_checkpoint_request, workspaces_read_checkpoint_result, workspaces_read_file_request, workspaces_read_file_result, workspaces_save_large_paste_request, workspaces_save_large_paste_result, workspaces_truncate_summaries_request, workspace_summary_host_type, workspaces_update_metadata_request, workspaces_workspace_details_host_type, workspaces_write_autopilot_objective_request, workspaces_write_autopilot_objective_result, session_context_attribution, session_context_info, subagent_settings, task_progress, workspace_summary)
+ return RPC(abort_request, abort_result, account_all_users, account_get_all_users_result, account_get_current_auth_result, account_get_quota_request, account_get_quota_result, account_login_request, account_login_result, account_logout_request, account_logout_result, account_quota_snapshot, adaptive_thinking_support, agent_discovery_path, agent_discovery_path_list, agent_discovery_path_scope, agent_get_current_result, agent_info, agent_info_source, agent_list, agent_list_request, agent_registry_live_target_entry, agent_registry_live_target_entry_attention_kind, agent_registry_live_target_entry_kind, agent_registry_live_target_entry_last_terminal_event, agent_registry_live_target_entry_status, agent_registry_log_capture, agent_registry_log_capture_open_error_reason, agent_registry_spawn_error, agent_registry_spawn_permission_mode, agent_registry_spawn_registry_timeout, agent_registry_spawn_request, agent_registry_spawn_result, agent_registry_spawn_spawned, agent_registry_spawn_validation_error, agent_registry_spawn_validation_error_field, agent_registry_spawn_validation_error_reason, agent_reload_result, agents_discover_request, agent_select_request, agent_select_result, agent_set_prompt_request, agents_get_discovery_paths_request, allow_all_permission_set_result, allow_all_permission_state, api_key_auth_info, auth_info, auth_info_type, auth_validation_error, auth_validation_errors, built_in_model_catalog, built_in_model_catalog_entry, cancel_user_requested_shell_command_result, canvas_action, canvas_action_invoke_request, canvas_action_invoke_result, canvas_close_request, canvas_host_context, canvas_host_context_capabilities, canvas_json_schema, canvas_list, canvas_list_open_result, canvas_open_request, canvas_provider_close_request, canvas_provider_invoke_action_request, canvas_provider_open_request, canvas_provider_open_result, canvas_provider_register_request, canvas_provider_unregister_request, canvas_session_context, capi_session_options, command_list, commands_handle_pending_command_request, commands_handle_pending_command_result, commands_invoke_request, commands_list_request, commands_respond_to_queued_command_request, commands_respond_to_queued_command_result, completions_get_trigger_characters_result, completions_request_request, completions_request_result, configure_session_extensions_params, connected_remote_session_metadata, connected_remote_session_metadata_kind, connected_remote_session_metadata_repository, connect_remote_session_params, connect_request, connect_result, content_exclusion_check_paths_request, content_exclusion_check_paths_result, content_exclusion_path_check, content_filter_mode, context_heaviest_message, copilot_api_token_auth_info, copilot_user_response, copilot_user_response_endpoints, copilot_user_response_quota_snapshots, copilot_user_response_quota_snapshots_chat, copilot_user_response_quota_snapshots_completions, copilot_user_response_quota_snapshots_premium_interactions, current_model, current_tool_metadata, debug_collect_logs_collected_entry, debug_collect_logs_destination, debug_collect_logs_entry, debug_collect_logs_entry_kind, debug_collect_logs_include, debug_collect_logs_redaction, debug_collect_logs_request, debug_collect_logs_result, debug_collect_logs_result_kind, debug_collect_logs_skipped_entry, debug_collect_logs_source, disable_bypass_permissions_mode, discovered_canvas, discovered_extension, discovered_extension_mode, discovered_extension_plugin, discovered_extensions, discovered_extensions_disable_request, discovered_extensions_enable_request, discovered_extension_source, discovered_mcp_server, discovered_mcp_server_type, enqueue_command_params, enqueue_command_result, env_auth_info, event_log_read_request, event_log_release_interest_result, event_log_tail_result, event_log_types, events_agent_scope, events_cursor_status, events_read_direction, events_read_result, execute_command_params, execute_command_result, extension, extension_context_push_input, extension_launch_profile, extension_launch_provider_resolve_request, extension_launch_provider_resolve_result, extension_list, extensions_disable_request, extensions_enable_request, extension_source, extension_status, external_tool_result, external_tool_text_result_for_llm, external_tool_text_result_for_llm_binary_results_for_llm, external_tool_text_result_for_llm_binary_results_for_llm_type, external_tool_text_result_for_llm_content, external_tool_text_result_for_llm_content_audio, external_tool_text_result_for_llm_content_image, external_tool_text_result_for_llm_content_resource, external_tool_text_result_for_llm_content_resource_details, external_tool_text_result_for_llm_content_resource_link, external_tool_text_result_for_llm_content_resource_link_icon, external_tool_text_result_for_llm_content_resource_link_icon_theme, external_tool_text_result_for_llm_content_shell_exit, external_tool_text_result_for_llm_content_terminal, external_tool_text_result_for_llm_content_text, factory_abort_request, factory_ack_result, factory_agent_options, factory_agent_request, factory_agent_result, factory_agent_summary, factory_cancel_request, factory_current_phase, factory_declared_limits, factory_durable_operation, factory_execute_request, factory_execute_result, factory_get_run_progress_request, factory_get_run_request, factory_journal_get_request, factory_journal_get_result, factory_journal_put_request, factory_list_runs_request, factory_list_runs_result, factory_log_line, factory_log_line_kind, factory_log_request, factory_phase_observation, factory_phase_status, factory_progress_line, factory_progress_page, factory_resume_request, factory_resume_result, factory_run_consumed, factory_run_detail, factory_run_failure, factory_run_failure_kind, factory_run_limits, factory_run_request, factory_run_result, factory_run_status, factory_run_summary, factory_run_terminal, filter_mapping, fleet_start_request, fleet_start_result, folder_trust_add_params, folder_trust_check_params, folder_trust_check_result, gh_cli_auth_info, git_hub_telemetry_client_info, git_hub_telemetry_event, git_hub_telemetry_notification, handle_pending_tool_call_request, handle_pending_tool_call_result, history_abort_manual_compaction_result, history_cancel_background_compaction_result, history_clear_context_request, history_clear_context_result, history_compact_context_window, history_compact_request, history_compact_result, history_file_restore_skip_reason, history_list_rewind_points_result, history_preview_rewind_request, history_preview_rewind_result, history_rewind_change_type, history_rewind_file_preview, history_rewind_mode, history_rewind_outcome, history_rewind_point, history_rewind_request, history_rewind_result, history_rewind_unavailable_reason, history_skipped_file_restore, history_summarize_for_handoff_result, history_truncate_request, history_truncate_result, hmac_auth_info, hook_invoke_request, hook_invoke_response, hook_type, installed_plugin, installed_plugin_info, installed_plugin_source, installed_plugin_source_git_hub, installed_plugin_source_local, installed_plugin_source_url, instruction_discovery_path, instruction_discovery_path_kind, instruction_discovery_path_list, instruction_discovery_path_location, instructions_discover_request, instructions_get_discovery_paths_request, instructions_get_sources_result, instruction_source, instruction_source_location, instruction_source_type, interrupt_main_turn_request, interrupt_main_turn_result, llm_inference_headers, llm_inference_http_request_chunk_request, llm_inference_http_request_chunk_result, llm_inference_http_request_start_request, llm_inference_http_request_start_result, llm_inference_http_request_start_transport, llm_inference_http_response_chunk_error, llm_inference_http_response_chunk_request, llm_inference_http_response_chunk_result, llm_inference_http_response_start_request, llm_inference_http_response_start_result, llm_inference_set_provider_result, local_session_metadata_value, log_request, log_result, lsp_initialize_request, managed_settings_read_result, marketplace_add_result, marketplace_browse_result, marketplace_info, marketplace_list_result, marketplace_plugin_info, marketplace_refresh_entry, marketplace_refresh_result, marketplace_remove_result, mcp_allowed_server, mcp_apps_call_tool_request, mcp_apps_diagnose_capability, mcp_apps_diagnose_request, mcp_apps_diagnose_result, mcp_apps_diagnose_server, mcp_apps_host_context, mcp_apps_host_context_details, mcp_apps_host_context_details_available_display_mode, mcp_apps_host_context_details_display_mode, mcp_apps_host_context_details_platform, mcp_apps_host_context_details_theme, mcp_apps_list_tools_request, mcp_apps_list_tools_result, mcp_apps_read_resource_request, mcp_apps_read_resource_result, mcp_apps_resource_content, mcp_apps_set_host_context_details, mcp_apps_set_host_context_details_available_display_mode, mcp_apps_set_host_context_details_display_mode, mcp_apps_set_host_context_details_platform, mcp_apps_set_host_context_details_theme, mcp_apps_set_host_context_request, mcp_cancel_sampling_execution_params, mcp_cancel_sampling_execution_result, mcp_config_add_request, mcp_config_disable_request, mcp_config_enable_request, mcp_config_list, mcp_config_remove_request, mcp_config_update_request, mcp_configure_git_hub_request, mcp_configure_git_hub_result, mcp_disable_request, mcp_discover_request, mcp_discover_result, mcp_elicitation_form_mode, mcp_enable_request, mcp_execute_sampling_params, mcp_execute_sampling_request, mcp_execute_sampling_result, mcp_failed_server, mcp_filtered_server, mcp_headers_handle_pending_headers_refresh_request, mcp_headers_handle_pending_headers_refresh_request_request, mcp_headers_handle_pending_headers_refresh_request_result, mcp_host_state, mcp_is_server_running_request, mcp_is_server_running_result, mcp_list_tools_request, mcp_list_tools_result, mcp_oauth_authentication_state_changed_request, mcp_oauth_handle_pending_request, mcp_oauth_handle_pending_result, mcp_oauth_login_grant_type, mcp_oauth_login_request, mcp_oauth_login_result, mcp_oauth_pending_request_response, mcp_oauth_probe_needs_auth_reason, mcp_oauth_probe_request, mcp_oauth_probe_result, mcp_oauth_respond_request, mcp_oauth_respond_result, mcp_register_external_client_request, mcp_reload_config, mcp_reload_with_config_request, mcp_remove_git_hub_result, mcp_resource, mcp_resource_annotations, mcp_resource_content, mcp_resource_icon, mcp_resources_list_request, mcp_resources_list_result, mcp_resources_list_templates_request, mcp_resources_list_templates_result, mcp_resources_read_request, mcp_resources_read_result, mcp_resource_template, mcp_restart_server_request, mcp_safe_for_telemetry, mcp_safe_for_telemetry_fields, mcp_sampling_execution_action, mcp_sampling_execution_result, mcp_serializable_server_config, mcp_server, mcp_server_auth_config, mcp_server_auth_config_redirect_port, mcp_server_config, mcp_server_config_defer_tools, mcp_server_config_http, mcp_server_config_http_oauth_grant_type, mcp_server_config_http_type, mcp_server_config_memory, mcp_server_config_memory_type, mcp_server_config_stdio, mcp_server_config_stdio_type, mcp_server_failure_info, mcp_server_list, mcp_server_needs_auth_info, mcp_set_env_value_mode_details, mcp_set_env_value_mode_params, mcp_set_env_value_mode_result, mcp_start_server_request, mcp_start_servers_result, mcp_stop_server_request, mcp_task_metadata, mcp_tools, mcp_tool_ui, mcp_tool_ui_visibility, mcp_unregister_external_client_request, memory_configuration, metadata_context_attribution_result, metadata_context_heaviest_messages_request, metadata_context_heaviest_messages_result, metadata_context_info_request, metadata_context_info_result, metadata_is_processing_result, metadata_recompute_context_tokens_request, metadata_recompute_context_tokens_result, metadata_record_context_change_request, metadata_record_context_change_result, metadata_set_working_directory_request, metadata_set_working_directory_result, metadata_snapshot_current_mode, metadata_snapshot_remote_metadata, metadata_snapshot_remote_metadata_repository, metadata_snapshot_remote_metadata_task_type, model, model_billing, model_billing_promo, model_billing_token_prices, model_billing_token_prices_long_context, model_capabilities, model_capabilities_limits, model_capabilities_limits_vision, model_capabilities_override, model_capabilities_override_limits, model_capabilities_override_limits_vision, model_capabilities_override_supports, model_capabilities_supports, model_list, model_list_request, model_picker_category, model_picker_price_category, model_policy, model_policy_state, model_set_reasoning_effort_request, model_set_reasoning_effort_result, models_list_request, model_switch_to_request, model_switch_to_result, mode_set_request, named_provider_config, name_get_result, name_set_auto_request, name_set_auto_result, name_set_request, open_canvas_instance, options_update_additional_content_exclusion_policy, options_update_additional_content_exclusion_policy_rule, options_update_additional_content_exclusion_policy_rule_source, options_update_additional_content_exclusion_policy_scope, options_update_context_tier, options_update_env_value_mode, options_update_reasoning_summary, options_update_tool_filter_precedence, pending_permission_request, pending_permission_request_list, permission_decision, permission_decision_approved, permission_decision_approved_for_location, permission_decision_approved_for_session, permission_decision_approve_for_location, permission_decision_approve_for_location_approval, permission_decision_approve_for_location_approval_commands, permission_decision_approve_for_location_approval_custom_tool, permission_decision_approve_for_location_approval_extension_env_access, permission_decision_approve_for_location_approval_extension_management, permission_decision_approve_for_location_approval_extension_permission_access, permission_decision_approve_for_location_approval_factory, permission_decision_approve_for_location_approval_mcp, permission_decision_approve_for_location_approval_mcp_sampling, permission_decision_approve_for_location_approval_memory, permission_decision_approve_for_location_approval_read, permission_decision_approve_for_location_approval_write, permission_decision_approve_for_session, permission_decision_approve_for_session_approval, permission_decision_approve_for_session_approval_commands, permission_decision_approve_for_session_approval_custom_tool, permission_decision_approve_for_session_approval_extension_env_access, permission_decision_approve_for_session_approval_extension_management, permission_decision_approve_for_session_approval_extension_permission_access, permission_decision_approve_for_session_approval_factory, permission_decision_approve_for_session_approval_mcp, permission_decision_approve_for_session_approval_mcp_sampling, permission_decision_approve_for_session_approval_memory, permission_decision_approve_for_session_approval_read, permission_decision_approve_for_session_approval_write, permission_decision_approve_once, permission_decision_approve_permanently, permission_decision_cancelled, permission_decision_context, permission_decision_denied_by_content_exclusion_policy, permission_decision_denied_by_permission_request_hook, permission_decision_denied_by_rules, permission_decision_denied_interactively_by_user, permission_decision_denied_no_approval_rule_and_could_not_request_from_user, permission_decision_outcome, permission_decision_reject, permission_decision_request, permission_decision_source, permission_decision_surface, permission_decision_user_not_available, permission_location_add_tool_approval_params, permission_location_apply_params, permission_location_apply_result, permission_location_resolve_params, permission_location_resolve_result, permission_location_type, permission_paths_add_params, permission_paths_allowed_check_params, permission_paths_allowed_check_result, permission_paths_config, permission_paths_list, permission_paths_update_primary_params, permission_paths_workspace_check_params, permission_paths_workspace_check_result, permission_prompt_shown_notification, permission_request_result, permission_rules_set, permissions_allow_all_mode, permissions_configure_additional_content_exclusion_policy, permissions_configure_additional_content_exclusion_policy_rule, permissions_configure_additional_content_exclusion_policy_rule_source, permissions_configure_additional_content_exclusion_policy_scope, permissions_configure_params, permissions_configure_result, permissions_folder_trust_add_trusted_result, permissions_get_allow_all_request, permissions_locations_add_tool_approval_details, permissions_locations_add_tool_approval_details_commands, permissions_locations_add_tool_approval_details_custom_tool, permissions_locations_add_tool_approval_details_extension_env_access, permissions_locations_add_tool_approval_details_extension_management, permissions_locations_add_tool_approval_details_extension_permission_access, permissions_locations_add_tool_approval_details_factory, permissions_locations_add_tool_approval_details_mcp, permissions_locations_add_tool_approval_details_mcp_sampling, permissions_locations_add_tool_approval_details_memory, permissions_locations_add_tool_approval_details_read, permissions_locations_add_tool_approval_details_write, permissions_locations_add_tool_approval_result, permissions_modify_rules_params, permissions_modify_rules_result, permissions_modify_rules_scope, permissions_notify_prompt_shown_result, permissions_paths_add_result, permissions_paths_list_request, permissions_paths_update_primary_result, permissions_pending_requests_request, permissions_reset_session_approvals_request, permissions_reset_session_approvals_result, permissions_set_allow_all_request, permissions_set_allow_all_source, permissions_set_approve_all_request, permissions_set_approve_all_result, permissions_set_approve_all_source, permissions_set_required_request, permissions_set_required_result, permissions_urls_set_unrestricted_mode_result, permission_urls_config, permission_urls_set_unrestricted_mode_params, ping_request, ping_result, plan_read_result, plan_read_sql_todos_result, plan_read_sql_todos_with_dependencies_result, plan_sql_todo_dependency, plan_sql_todos_row, plan_update_request, plugin, plugin_install_result, plugin_list, plugin_list_result, plugins_builtin_set_request, plugins_disable_request, plugins_enable_request, plugins_install_request, plugins_marketplaces_add_request, plugins_marketplaces_browse_request, plugins_marketplaces_refresh_request, plugins_marketplaces_remove_request, plugins_reload_request, plugins_uninstall_request, plugins_update_request, plugin_update_all_entry, plugin_update_all_result, plugin_update_result, provider_add_request, provider_add_result, provider_config, provider_config_azure, provider_config_transport, provider_config_type, provider_config_wire_api, provider_endpoint, provider_endpoint_transport, provider_endpoint_type, provider_endpoint_wire_api, provider_get_endpoint_request, provider_model_config, provider_session_token, provider_token_acquire_request, provider_token_acquire_result, push_attachment, push_attachment_blob, push_attachment_directory, push_attachment_file, push_attachment_file_line_range, push_attachment_git_hub_actions_job, push_attachment_git_hub_commit, push_attachment_git_hub_file, push_attachment_git_hub_file_diff, push_attachment_git_hub_file_diff_side, push_attachment_git_hub_reference, push_attachment_git_hub_reference_type, push_attachment_git_hub_release, push_attachment_git_hub_repository, push_attachment_git_hub_snippet, push_attachment_git_hub_tree_comparison, push_attachment_git_hub_tree_comparison_side, push_attachment_git_hub_url, push_attachment_selection, push_attachment_selection_details, push_attachment_selection_details_end, push_attachment_selection_details_start, push_git_hub_repo_ref, queue_begin_deferred_idle_drain_request, queue_begin_deferred_idle_drain_result, queue_consume_system_notifications_request, queued_command_handled, queued_command_not_handled, queued_command_result, queue_defer_session_idle_request, queue_duplicate_at_request, queue_duplicate_at_result, queue_enqueue_resume_pending_result, queue_finish_deferred_idle_drain_request, queue_finish_deferred_idle_drain_result, queue_has_pending_result, queue_insert_at_request, queue_insert_at_result, queue_insert_message, queue_move_item_request, queue_move_item_result, queue_pending_items, queue_pending_items_kind, queue_pending_items_result, queue_remove_at_request, queue_remove_at_result, queue_remove_most_recent_result, queue_send_now_request, queue_send_now_result, queue_set_drain_paused_request, queue_snapshot_result, queue_update_text_request, queue_update_text_result, register_event_interest_params, register_event_interest_result, register_extension_tools_params, register_extension_tools_result, release_event_interest_params, remote_control_config, remote_control_config_existing_mc_session, remote_control_status, remote_control_status_active, remote_control_status_connecting, remote_control_status_error, remote_control_status_off, remote_control_status_result, remote_control_stop_result, remote_control_transfer_result, remote_enable_request, remote_enable_result, remote_notify_steerable_changed_request, remote_notify_steerable_changed_result, remote_session_connection_result, remote_session_host_status, remote_session_metadata_repository, remote_session_metadata_task_type, remote_session_metadata_value, remote_session_mode, remote_session_repository, run_options, sandbox_config, sandbox_config_auth, sandbox_config_user_policy, sandbox_config_user_policy_experimental, sandbox_config_user_policy_experimental_seatbelt, sandbox_config_user_policy_filesystem, sandbox_config_user_policy_network, sandbox_config_user_policy_network_proxy, sandbox_config_user_policy_seatbelt, schedule_add_at_request, schedule_add_cron_request, schedule_add_request, schedule_add_result, schedule_add_self_paced_request, schedule_entry, schedule_has_self_paced_result, schedule_list, schedule_rearm_self_paced_request, schedule_stop_request, schedule_stop_result, secrets_add_filter_values_request, secrets_add_filter_values_result, send_agent_mode, send_attachments_to_message_params, send_message_item, send_messages_request, send_messages_result, send_mode, send_request, send_result, send_system_notification_request, server_agent_list, server_instruction_source_list, server_skill, server_skill_list, session_activity, session_agent_list_request, session_auth_login_request, session_auth_logout_user_request, session_auth_status, session_auth_switch_request, session_bulk_delete_result, session_cancel_all_background_agents_result, session_capability, session_commands_list_request, session_completion_item, session_context, session_context_host_type, session_enrich_metadata_result, session_fs_append_file_request, session_fs_error, session_fs_error_code, session_fs_exists_request, session_fs_exists_result, session_fs_mkdir_request, session_fs_readdir_request, session_fs_readdir_result, session_fs_readdir_with_types_entry, session_fs_readdir_with_types_entry_type, session_fs_readdir_with_types_request, session_fs_readdir_with_types_result, session_fs_read_file_request, session_fs_read_file_result, session_fs_rename_request, session_fs_rm_request, session_fs_set_provider_capabilities, session_fs_set_provider_conventions, session_fs_set_provider_request, session_fs_set_provider_result, session_fs_sqlite_exists_request, session_fs_sqlite_exists_result, session_fs_sqlite_query_request, session_fs_sqlite_query_result, session_fs_sqlite_query_type, session_fs_sqlite_transaction_error, session_fs_sqlite_transaction_error_class, session_fs_sqlite_transaction_request, session_fs_sqlite_transaction_result, session_fs_sqlite_transaction_statement, session_fs_stat_request, session_fs_stat_result, session_fs_write_file_request, session_git_hub_auth_get_all_auth_available_result, session_git_hub_auth_logout_result, session_git_hub_auth_logout_user_result, session_history_compact_request, session_installed_plugin, session_installed_plugin_source, session_installed_plugin_source_git_hub, session_installed_plugin_source_local, session_installed_plugin_source_url, session_limit_prediction_baseline_data, session_limit_prediction_client_type, session_limit_prediction_details, session_limit_prediction_predict_request, session_limit_prediction_request, session_limit_prediction_result, session_limit_prediction_source, session_limit_prediction_tier, session_limit_prediction_tier_option, session_limit_prediction_unavailable_reason, session_list, session_list_entry, session_list_filter, session_load_deferred_repo_hooks_result, session_log_level, session_managed_permissions, session_managed_settings, session_mcp_apps_call_tool_result, session_metadata_snapshot, session_mode, session_model_list, session_model_list_request, session_model_price_category, session_open_options, session_open_options_additional_content_exclusion_policy, session_open_options_additional_content_exclusion_policy_rule, session_open_options_additional_content_exclusion_policy_rule_source, session_open_options_additional_content_exclusion_policy_scope, session_open_options_env_value_mode, session_open_options_reasoning_summary, session_open_params, session_open_result, session_plugins_reload_request, session_provider_get_endpoint_request, session_prune_result, sessions_bulk_delete_request, sessions_check_in_use_request, sessions_check_in_use_result, sessions_close_request, sessions_close_result, sessions_delete_request, sessions_enrich_metadata_request, session_set_credentials_params, session_set_credentials_result, session_settings_built_in_tool_availability_snapshot, session_settings_evaluate_predicate_request, session_settings_evaluate_predicate_result, session_settings_job_snapshot, session_settings_model_snapshot, session_settings_online_evaluation_snapshot, session_settings_predicate_name, session_settings_repo_snapshot, session_settings_snapshot, session_settings_validation_snapshot, sessions_find_by_prefix_request, sessions_find_by_prefix_result, sessions_find_by_task_id_request, sessions_find_by_task_id_result, sessions_fork_request, sessions_fork_result, sessions_get_board_entry_count_request, sessions_get_board_entry_count_result, sessions_get_event_file_path_request, sessions_get_event_file_path_result, sessions_get_last_for_context_request, sessions_get_last_for_context_result, sessions_get_metadata_request, sessions_get_metadata_result, sessions_get_persisted_remote_steerable_request, sessions_get_persisted_remote_steerable_result, session_sizes, sessions_list_non_empty_session_ids_request, sessions_list_non_empty_session_ids_result, sessions_list_request, sessions_load_deferred_repo_hooks_request, sessions_open_attach, sessions_open_cloud, sessions_open_create, sessions_open_handoff, sessions_open_handoff_task_type, sessions_open_progress, sessions_open_progress_status, sessions_open_progress_step, sessions_open_remote, sessions_open_resume, sessions_open_resume_last, sessions_open_status, session_source, sessions_prune_old_request, sessions_register_extension_tools_on_session_options, sessions_release_lock_request, sessions_release_lock_result, sessions_reload_plugin_hooks_request, sessions_reload_plugin_hooks_result, sessions_save_request, sessions_save_result, sessions_set_additional_plugins_request, sessions_set_additional_plugins_result, sessions_set_remote_control_steering_request, sessions_start_remote_control_request, sessions_stop_remote_control_request, sessions_transfer_remote_control_request, session_telemetry_engagement, session_update_options_params, session_update_options_result, session_visibility_status, session_working_directory_context, session_working_directory_context_host_type, shell_cancel_user_requested_request, shell_exec_request, shell_exec_result, shell_execute_user_requested_request, shell_init_profile, shell_init_script, shell_init_script_shell, shell_kill_request, shell_kill_result, shell_kill_signal, shell_options, shutdown_request, skill, skill_discovery_path, skill_discovery_path_list, skill_discovery_scope, skill_list, skills_config_set_disabled_skills_request, skills_disable_request, skills_discover_request, skills_enable_request, skills_get_discovery_paths_request, skills_get_invoked_result, skills_invoked_skill, skills_load_diagnostics, slash_command_agent_prompt_result, slash_command_completed_result, slash_command_info, slash_command_input, slash_command_input_choice, slash_command_input_completion, slash_command_invocation_result, slash_command_kind, slash_command_select_subcommand_option, slash_command_select_subcommand_result, slash_command_text_result, subagent_settings_entry, subagent_settings_entry_context_tier, task_agent_info, task_agent_progress, task_execution_mode, task_info, task_list, task_progress_line, tasks_cancel_request, tasks_cancel_result, tasks_get_current_promotable_result, tasks_get_progress_request, tasks_get_progress_result, task_shell_info, task_shell_info_attachment_mode, task_shell_progress, tasks_promote_current_to_background_result, tasks_promote_to_background_request, tasks_promote_to_background_result, tasks_refresh_result, tasks_remove_request, tasks_remove_result, tasks_send_message_request, tasks_send_message_result, tasks_start_agent_request, tasks_start_agent_result, task_status, tasks_wait_for_pending_result, telemetry_set_feature_overrides_request, token_auth_info, tool, tool_list, tools_get_current_metadata_result, tools_initialize_and_validate_result, tools_list_request, tools_update_subagent_settings_result, ui_auto_mode_switch_response, ui_elicitation_array_any_of_field, ui_elicitation_array_any_of_field_items, ui_elicitation_array_any_of_field_items_any_of, ui_elicitation_array_enum_field, ui_elicitation_array_enum_field_items, ui_elicitation_field_value, ui_elicitation_request, ui_elicitation_response, ui_elicitation_response_action, ui_elicitation_response_content, ui_elicitation_result, ui_elicitation_schema, ui_elicitation_schema_property, ui_elicitation_schema_property_boolean, ui_elicitation_schema_property_number, ui_elicitation_schema_property_number_type, ui_elicitation_schema_property_string, ui_elicitation_schema_property_string_format, ui_elicitation_string_enum_field, ui_elicitation_string_one_of_field, ui_elicitation_string_one_of_field_one_of, ui_ephemeral_query_request, ui_ephemeral_query_result, ui_exit_plan_mode_action, ui_exit_plan_mode_response, ui_handle_pending_auto_mode_switch_request, ui_handle_pending_elicitation_request, ui_handle_pending_exit_plan_mode_request, ui_handle_pending_result, ui_handle_pending_sampling_request, ui_handle_pending_sampling_response, ui_handle_pending_session_limits_exhausted_request, ui_handle_pending_user_input_request, ui_register_direct_auto_mode_switch_handler_result, ui_session_limits_exhausted_response, ui_session_limits_exhausted_response_action, ui_unregister_direct_auto_mode_switch_handler_request, ui_unregister_direct_auto_mode_switch_handler_result, ui_user_input_response, update_subagent_settings_request, usage_get_metrics_result, usage_metrics_code_changes, usage_metrics_model_metric, usage_metrics_model_metric_requests, usage_metrics_model_metric_token_detail, usage_metrics_model_metric_usage, usage_metrics_token_detail, user_auth_info, user_requested_shell_command_result, user_setting_metadata, user_settings_get_result, user_settings_set_request, user_settings_set_result, visibility_get_result, visibility_set_request, visibility_set_result, workspace_diff_file_change, workspace_diff_file_change_type, workspace_diff_mode, workspace_diff_result, workspaces_add_summary_request, workspaces_add_summary_result, workspaces_autopilot_objective_exists_result, workspaces_checkpoints, workspaces_create_file_request, workspaces_delete_autopilot_objective_result, workspaces_diff_request, workspaces_ensure_request, workspaces_get_workspace_result, workspaces_list_checkpoints_result, workspaces_list_files_result, workspaces_read_autopilot_objective_result, workspaces_read_checkpoint_request, workspaces_read_checkpoint_result, workspaces_read_file_request, workspaces_read_file_result, workspaces_save_large_paste_request, workspaces_save_large_paste_result, workspaces_truncate_summaries_request, workspace_summary_host_type, workspaces_update_metadata_request, workspaces_workspace_details_host_type, workspaces_write_autopilot_objective_request, workspaces_write_autopilot_objective_result, session_auth_info_result, session_context_attribution, session_context_info, subagent_settings, task_progress, workspace_summary)
def to_dict(self) -> dict:
result: dict = {}
@@ -30893,6 +32787,8 @@ def to_dict(self) -> dict:
result["ApiKeyAuthInfo"] = to_class(APIKeyAuthInfo, self.api_key_auth_info)
result["AuthInfo"] = (self.auth_info).to_dict()
result["AuthInfoType"] = to_enum(AuthInfoType, self.auth_info_type)
+ result["AuthValidationError"] = to_class(AuthValidationError, self.auth_validation_error)
+ result["AuthValidationErrors"] = from_list(lambda x: to_class(AuthValidationError, x), self.auth_validation_errors)
result["BuiltInModelCatalog"] = to_class(BuiltInModelCatalog, self.built_in_model_catalog)
result["BuiltInModelCatalogEntry"] = to_class(BuiltInModelCatalogEntry, self.built_in_model_catalog_entry)
result["CancelUserRequestedShellCommandResult"] = to_class(CancelUserRequestedShellCommandResult, self.cancel_user_requested_shell_command_result)
@@ -30910,6 +32806,8 @@ def to_dict(self) -> dict:
result["CanvasProviderInvokeActionRequest"] = to_class(CanvasProviderInvokeActionRequest, self.canvas_provider_invoke_action_request)
result["CanvasProviderOpenRequest"] = to_class(CanvasProviderOpenRequest, self.canvas_provider_open_request)
result["CanvasProviderOpenResult"] = to_class(CanvasProviderOpenResult, self.canvas_provider_open_result)
+ result["CanvasProviderRegisterRequest"] = to_class(CanvasProviderRegisterRequest, self.canvas_provider_register_request)
+ result["CanvasProviderUnregisterRequest"] = to_class(CanvasProviderUnregisterRequest, self.canvas_provider_unregister_request)
result["CanvasSessionContext"] = to_class(CanvasSessionContext, self.canvas_session_context)
result["CapiSessionOptions"] = to_class(CapiSessionOptions, self.capi_session_options)
result["CommandList"] = to_class(CommandList, self.command_list)
@@ -31159,10 +33057,12 @@ def to_dict(self) -> dict:
result["McpDisableRequest"] = to_class(MCPDisableRequest, self.mcp_disable_request)
result["McpDiscoverRequest"] = to_class(MCPDiscoverRequest, self.mcp_discover_request)
result["McpDiscoverResult"] = to_class(MCPDiscoverResult, self.mcp_discover_result)
+ result["McpElicitationFormMode"] = to_enum(MCPElicitationFormMode, self.mcp_elicitation_form_mode)
result["McpEnableRequest"] = to_class(MCPEnableRequest, self.mcp_enable_request)
result["McpExecuteSamplingParams"] = to_class(MCPExecuteSamplingParams, self.mcp_execute_sampling_params)
result["McpExecuteSamplingRequest"] = from_dict(lambda x: x, self.mcp_execute_sampling_request)
result["McpExecuteSamplingResult"] = from_dict(lambda x: x, self.mcp_execute_sampling_result)
+ result["McpFailedServer"] = to_class(MCPFailedServer, self.mcp_failed_server)
result["McpFilteredServer"] = to_class(MCPFilteredServer, self.mcp_filtered_server)
result["McpHeadersHandlePendingHeadersRefreshRequest"] = to_class(MCPHeadersHandlePendingHeadersRefreshRequest, self.mcp_headers_handle_pending_headers_refresh_request)
result["McpHeadersHandlePendingHeadersRefreshRequestRequest"] = to_class(MCPHeadersHandlePendingHeadersRefreshRequestRequest, self.mcp_headers_handle_pending_headers_refresh_request_request)
@@ -31179,9 +33079,13 @@ def to_dict(self) -> dict:
result["McpOauthLoginRequest"] = to_class(MCPOauthLoginRequest, self.mcp_oauth_login_request)
result["McpOauthLoginResult"] = to_class(MCPOauthLoginResult, self.mcp_oauth_login_result)
result["McpOauthPendingRequestResponse"] = to_class(MCPOauthPendingRequestResponse, self.mcp_oauth_pending_request_response)
+ result["McpOauthProbeNeedsAuthReason"] = to_enum(MCPOauthProbeNeedsAuthReason, self.mcp_oauth_probe_needs_auth_reason)
+ result["McpOauthProbeRequest"] = to_class(MCPOauthProbeRequest, self.mcp_oauth_probe_request)
+ result["McpOauthProbeResult"] = to_class(MCPOauthProbeResult, self.mcp_oauth_probe_result)
result["McpOauthRespondRequest"] = to_class(MCPOauthRespondRequest, self.mcp_oauth_respond_request)
result["McpOauthRespondResult"] = to_class(MCPOauthRespondResult, self.mcp_oauth_respond_result)
result["McpRegisterExternalClientRequest"] = to_class(MCPRegisterExternalClientRequest, self.mcp_register_external_client_request)
+ result["McpReloadConfig"] = to_class(MCPReloadConfig, self.mcp_reload_config)
result["McpReloadWithConfigRequest"] = to_class(MCPReloadWithConfigRequest, self.mcp_reload_with_config_request)
result["McpRemoveGitHubResult"] = to_class(MCPRemoveGitHubResult, self.mcp_remove_git_hub_result)
result["McpResource"] = to_class(MCPResource, self.mcp_resource)
@@ -31196,8 +33100,11 @@ def to_dict(self) -> dict:
result["McpResourcesReadResult"] = to_class(MCPResourcesReadResult, self.mcp_resources_read_result)
result["McpResourceTemplate"] = to_class(MCPResourceTemplate, self.mcp_resource_template)
result["McpRestartServerRequest"] = to_class(MCPRestartServerRequest, self.mcp_restart_server_request)
+ result["McpSafeForTelemetry"] = from_union([from_bool, lambda x: to_class(MCPSafeForTelemetryFields, x)], self.mcp_safe_for_telemetry)
+ result["McpSafeForTelemetryFields"] = to_class(MCPSafeForTelemetryFields, self.mcp_safe_for_telemetry_fields)
result["McpSamplingExecutionAction"] = to_enum(MCPSamplingExecutionAction, self.mcp_sampling_execution_action)
result["McpSamplingExecutionResult"] = to_class(MCPSamplingExecutionResult, self.mcp_sampling_execution_result)
+ result["McpSerializableServerConfig"] = to_class(MCPSerializableServerConfig, self.mcp_serializable_server_config)
result["McpServer"] = to_class(MCPServer, self.mcp_server)
result["McpServerAuthConfig"] = from_union([from_bool, lambda x: to_class(MCPServerAuthConfigRedirectPort, x)], self.mcp_server_auth_config)
result["McpServerAuthConfigRedirectPort"] = to_class(MCPServerAuthConfigRedirectPort, self.mcp_server_auth_config_redirect_port)
@@ -31206,7 +33113,10 @@ def to_dict(self) -> dict:
result["McpServerConfigHttp"] = to_class(MCPServerConfigHTTP, self.mcp_server_config_http)
result["McpServerConfigHttpOauthGrantType"] = to_enum(MCPGrantType, self.mcp_server_config_http_oauth_grant_type)
result["McpServerConfigHttpType"] = to_enum(MCPServerConfigHTTPType, self.mcp_server_config_http_type)
+ result["McpServerConfigMemory"] = to_class(MCPServerConfigMemory, self.mcp_server_config_memory)
+ result["McpServerConfigMemoryType"] = to_enum(MCPServerConfigMemoryType, self.mcp_server_config_memory_type)
result["McpServerConfigStdio"] = to_class(MCPServerConfigStdio, self.mcp_server_config_stdio)
+ result["McpServerConfigStdioType"] = to_enum(MCPServerConfigStdioType, self.mcp_server_config_stdio_type)
result["McpServerFailureInfo"] = to_class(MCPServerFailureInfo, self.mcp_server_failure_info)
result["McpServerList"] = to_class(MCPServerList, self.mcp_server_list)
result["McpServerNeedsAuthInfo"] = to_class(MCPServerNeedsAuthInfo, self.mcp_server_needs_auth_info)
@@ -31216,6 +33126,7 @@ def to_dict(self) -> dict:
result["McpStartServerRequest"] = to_class(MCPStartServerRequest, self.mcp_start_server_request)
result["McpStartServersResult"] = to_class(MCPStartServersResult, self.mcp_start_servers_result)
result["McpStopServerRequest"] = to_class(MCPStopServerRequest, self.mcp_stop_server_request)
+ result["McpTaskMetadata"] = to_class(MCPTaskMetadata, self.mcp_task_metadata)
result["McpTools"] = to_class(MCPTools, self.mcp_tools)
result["McpToolUi"] = to_class(MCPToolUI, self.mcp_tool_ui)
result["McpToolUiVisibility"] = to_enum(MCPToolUIVisibility, self.mcp_tool_ui_visibility)
@@ -31286,6 +33197,7 @@ def to_dict(self) -> dict:
result["PermissionDecisionApproveForLocationApproval"] = (self.permission_decision_approve_for_location_approval).to_dict()
result["PermissionDecisionApproveForLocationApprovalCommands"] = to_class(PermissionDecisionApproveForLocationApprovalCommands, self.permission_decision_approve_for_location_approval_commands)
result["PermissionDecisionApproveForLocationApprovalCustomTool"] = to_class(PermissionDecisionApproveForLocationApprovalCustomTool, self.permission_decision_approve_for_location_approval_custom_tool)
+ result["PermissionDecisionApproveForLocationApprovalExtensionEnvAccess"] = to_class(PermissionDecisionApproveForLocationApprovalExtensionEnvAccess, self.permission_decision_approve_for_location_approval_extension_env_access)
result["PermissionDecisionApproveForLocationApprovalExtensionManagement"] = to_class(PermissionDecisionApproveForLocationApprovalExtensionManagement, self.permission_decision_approve_for_location_approval_extension_management)
result["PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess"] = to_class(PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess, self.permission_decision_approve_for_location_approval_extension_permission_access)
result["PermissionDecisionApproveForLocationApprovalFactory"] = to_class(PermissionDecisionApproveForLocationApprovalFactory, self.permission_decision_approve_for_location_approval_factory)
@@ -31298,6 +33210,7 @@ def to_dict(self) -> dict:
result["PermissionDecisionApproveForSessionApproval"] = (self.permission_decision_approve_for_session_approval).to_dict()
result["PermissionDecisionApproveForSessionApprovalCommands"] = to_class(PermissionDecisionApproveForSessionApprovalCommands, self.permission_decision_approve_for_session_approval_commands)
result["PermissionDecisionApproveForSessionApprovalCustomTool"] = to_class(PermissionDecisionApproveForSessionApprovalCustomTool, self.permission_decision_approve_for_session_approval_custom_tool)
+ result["PermissionDecisionApproveForSessionApprovalExtensionEnvAccess"] = to_class(PermissionDecisionApproveForSessionApprovalExtensionEnvAccess, self.permission_decision_approve_for_session_approval_extension_env_access)
result["PermissionDecisionApproveForSessionApprovalExtensionManagement"] = to_class(PermissionDecisionApproveForSessionApprovalExtensionManagement, self.permission_decision_approve_for_session_approval_extension_management)
result["PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess"] = to_class(PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess, self.permission_decision_approve_for_session_approval_extension_permission_access)
result["PermissionDecisionApproveForSessionApprovalFactory"] = to_class(PermissionDecisionApproveForSessionApprovalFactory, self.permission_decision_approve_for_session_approval_factory)
@@ -31350,6 +33263,7 @@ def to_dict(self) -> dict:
result["PermissionsLocationsAddToolApprovalDetails"] = (self.permissions_locations_add_tool_approval_details).to_dict()
result["PermissionsLocationsAddToolApprovalDetailsCommands"] = to_class(PermissionsLocationsAddToolApprovalDetailsCommands, self.permissions_locations_add_tool_approval_details_commands)
result["PermissionsLocationsAddToolApprovalDetailsCustomTool"] = to_class(PermissionsLocationsAddToolApprovalDetailsCustomTool, self.permissions_locations_add_tool_approval_details_custom_tool)
+ result["PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess"] = to_class(PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess, self.permissions_locations_add_tool_approval_details_extension_env_access)
result["PermissionsLocationsAddToolApprovalDetailsExtensionManagement"] = to_class(PermissionsLocationsAddToolApprovalDetailsExtensionManagement, self.permissions_locations_add_tool_approval_details_extension_management)
result["PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess"] = to_class(PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess, self.permissions_locations_add_tool_approval_details_extension_permission_access)
result["PermissionsLocationsAddToolApprovalDetailsFactory"] = to_class(PermissionsLocationsAddToolApprovalDetailsFactory, self.permissions_locations_add_tool_approval_details_factory)
@@ -31391,6 +33305,7 @@ def to_dict(self) -> dict:
result["PluginInstallResult"] = to_class(PluginInstallResult, self.plugin_install_result)
result["PluginList"] = to_class(PluginList, self.plugin_list)
result["PluginListResult"] = to_class(PluginListResult, self.plugin_list_result)
+ result["PluginsBuiltinSetRequest"] = to_class(PluginsBuiltinSetRequest, self.plugins_builtin_set_request)
result["PluginsDisableRequest"] = to_class(PluginsDisableRequest, self.plugins_disable_request)
result["PluginsEnableRequest"] = to_class(PluginsEnableRequest, self.plugins_enable_request)
result["PluginsInstallRequest"] = to_class(PluginsInstallRequest, self.plugins_install_request)
@@ -31493,6 +33408,7 @@ def to_dict(self) -> dict:
result["RemoteNotifySteerableChangedRequest"] = to_class(RemoteNotifySteerableChangedRequest, self.remote_notify_steerable_changed_request)
result["RemoteNotifySteerableChangedResult"] = to_class(RemoteNotifySteerableChangedResult, self.remote_notify_steerable_changed_result)
result["RemoteSessionConnectionResult"] = to_class(RemoteSessionConnectionResult, self.remote_session_connection_result)
+ result["RemoteSessionHostStatus"] = to_enum(RemoteSessionHostStatus, self.remote_session_host_status)
result["RemoteSessionMetadataRepository"] = to_class(RemoteSessionMetadataRepository, self.remote_session_metadata_repository)
result["RemoteSessionMetadataTaskType"] = to_enum(TaskType, self.remote_session_metadata_task_type)
result["RemoteSessionMetadataValue"] = to_class(RemoteSessionMetadataValue, self.remote_session_metadata_value)
@@ -31536,7 +33452,10 @@ def to_dict(self) -> dict:
result["ServerSkillList"] = to_class(ServerSkillList, self.server_skill_list)
result["SessionActivity"] = to_class(SessionActivity, self.session_activity)
result["SessionAgentListRequest"] = to_class(SessionAgentListRequest, self.session_agent_list_request)
+ result["SessionAuthLoginRequest"] = to_class(SessionAuthLoginRequest, self.session_auth_login_request)
+ result["SessionAuthLogoutUserRequest"] = to_class(SessionAuthLogoutUserRequest, self.session_auth_logout_user_request)
result["SessionAuthStatus"] = to_class(SessionAuthStatus, self.session_auth_status)
+ result["SessionAuthSwitchRequest"] = to_class(SessionAuthSwitchRequest, self.session_auth_switch_request)
result["SessionBulkDeleteResult"] = to_class(SessionBulkDeleteResult, self.session_bulk_delete_result)
result["SessionCancelAllBackgroundAgentsResult"] = from_int(self.session_cancel_all_background_agents_result)
result["SessionCapability"] = to_enum(SessionCapability, self.session_capability)
@@ -31578,6 +33497,9 @@ def to_dict(self) -> dict:
result["SessionFsStatRequest"] = to_class(SessionFSStatRequest, self.session_fs_stat_request)
result["SessionFsStatResult"] = to_class(SessionFSStatResult, self.session_fs_stat_result)
result["SessionFsWriteFileRequest"] = to_class(SessionFSWriteFileRequest, self.session_fs_write_file_request)
+ result["SessionGitHubAuthGetAllAuthAvailableResult"] = from_list(lambda x: to_class(SessionAuthStatus, x), self.session_git_hub_auth_get_all_auth_available_result)
+ result["SessionGitHubAuthLogoutResult"] = from_bool(self.session_git_hub_auth_logout_result)
+ result["SessionGitHubAuthLogoutUserResult"] = from_bool(self.session_git_hub_auth_logout_user_result)
result["SessionHistoryCompactRequest"] = to_class(SessionHistoryCompactRequest, self.session_history_compact_request)
result["SessionInstalledPlugin"] = to_class(SessionInstalledPlugin, self.session_installed_plugin)
result["SessionInstalledPluginSource"] = from_union([lambda x: to_class(SessionInstalledPluginSource, x), from_str], self.session_installed_plugin_source)
@@ -31849,6 +33771,7 @@ def to_dict(self) -> dict:
result["WorkspacesWorkspaceDetailsHostType"] = to_enum(HostType, self.workspaces_workspace_details_host_type)
result["WorkspacesWriteAutopilotObjectiveRequest"] = to_class(WorkspacesWriteAutopilotObjectiveRequest, self.workspaces_write_autopilot_objective_request)
result["WorkspacesWriteAutopilotObjectiveResult"] = to_class(WorkspacesWriteAutopilotObjectiveResult, self.workspaces_write_autopilot_objective_result)
+ result["SessionAuthInfoResult"] = from_union([lambda x: to_class(HMACAuthInfoClass, x), from_none], self.session_auth_info_result)
result["SessionContextAttribution"] = from_union([lambda x: to_class(SessionContextAttribution, x), from_none], self.session_context_attribution)
result["SessionContextInfo"] = from_union([lambda x: to_class(SessionContextInfo, x), from_none], self.session_context_info)
result["SubagentSettings"] = from_union([lambda x: to_class(SubagentSettings, x), from_none], self.subagent_settings)
@@ -31932,7 +33855,7 @@ def _load_PermissionDecision(obj: Any) -> "PermissionDecision":
case _: raise ValueError(f"Unknown PermissionDecision kind: {kind!r}")
# Approval to persist for this location
-PermissionDecisionApproveForLocationApproval = PermissionDecisionApproveForLocationApprovalCommands | PermissionDecisionApproveForLocationApprovalRead | PermissionDecisionApproveForLocationApprovalWrite | PermissionDecisionApproveForLocationApprovalMCP | PermissionDecisionApproveForLocationApprovalMCPSampling | PermissionDecisionApproveForLocationApprovalMemory | PermissionDecisionApproveForLocationApprovalCustomTool | PermissionDecisionApproveForLocationApprovalExtensionManagement | PermissionDecisionApproveForLocationApprovalFactory | PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess
+PermissionDecisionApproveForLocationApproval = PermissionDecisionApproveForLocationApprovalCommands | PermissionDecisionApproveForLocationApprovalRead | PermissionDecisionApproveForLocationApprovalWrite | PermissionDecisionApproveForLocationApprovalMCP | PermissionDecisionApproveForLocationApprovalMCPSampling | PermissionDecisionApproveForLocationApprovalMemory | PermissionDecisionApproveForLocationApprovalCustomTool | PermissionDecisionApproveForLocationApprovalExtensionManagement | PermissionDecisionApproveForLocationApprovalFactory | PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess | PermissionDecisionApproveForLocationApprovalExtensionEnvAccess
def _load_PermissionDecisionApproveForLocationApproval(obj: Any) -> "PermissionDecisionApproveForLocationApproval":
assert isinstance(obj, dict)
@@ -31948,10 +33871,11 @@ def _load_PermissionDecisionApproveForLocationApproval(obj: Any) -> "PermissionD
case "extension-management": return PermissionDecisionApproveForLocationApprovalExtensionManagement.from_dict(obj)
case "factory": return PermissionDecisionApproveForLocationApprovalFactory.from_dict(obj)
case "extension-permission-access": return PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess.from_dict(obj)
+ case "extension-env-access": return PermissionDecisionApproveForLocationApprovalExtensionEnvAccess.from_dict(obj)
case _: raise ValueError(f"Unknown PermissionDecisionApproveForLocationApproval kind: {kind!r}")
# Session-scoped approval to remember (tool prompts only; omitted for path/url prompts)
-PermissionDecisionApproveForSessionApproval = PermissionDecisionApproveForSessionApprovalCommands | PermissionDecisionApproveForSessionApprovalRead | PermissionDecisionApproveForSessionApprovalWrite | PermissionDecisionApproveForSessionApprovalMCP | PermissionDecisionApproveForSessionApprovalMCPSampling | PermissionDecisionApproveForSessionApprovalMemory | PermissionDecisionApproveForSessionApprovalCustomTool | PermissionDecisionApproveForSessionApprovalExtensionManagement | PermissionDecisionApproveForSessionApprovalFactory | PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess
+PermissionDecisionApproveForSessionApproval = PermissionDecisionApproveForSessionApprovalCommands | PermissionDecisionApproveForSessionApprovalRead | PermissionDecisionApproveForSessionApprovalWrite | PermissionDecisionApproveForSessionApprovalMCP | PermissionDecisionApproveForSessionApprovalMCPSampling | PermissionDecisionApproveForSessionApprovalMemory | PermissionDecisionApproveForSessionApprovalCustomTool | PermissionDecisionApproveForSessionApprovalExtensionManagement | PermissionDecisionApproveForSessionApprovalFactory | PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess | PermissionDecisionApproveForSessionApprovalExtensionEnvAccess
def _load_PermissionDecisionApproveForSessionApproval(obj: Any) -> "PermissionDecisionApproveForSessionApproval":
assert isinstance(obj, dict)
@@ -31967,10 +33891,11 @@ def _load_PermissionDecisionApproveForSessionApproval(obj: Any) -> "PermissionDe
case "extension-management": return PermissionDecisionApproveForSessionApprovalExtensionManagement.from_dict(obj)
case "factory": return PermissionDecisionApproveForSessionApprovalFactory.from_dict(obj)
case "extension-permission-access": return PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess.from_dict(obj)
+ case "extension-env-access": return PermissionDecisionApproveForSessionApprovalExtensionEnvAccess.from_dict(obj)
case _: raise ValueError(f"Unknown PermissionDecisionApproveForSessionApproval kind: {kind!r}")
# Tool approval to persist and apply
-PermissionsLocationsAddToolApprovalDetails = PermissionsLocationsAddToolApprovalDetailsCommands | PermissionsLocationsAddToolApprovalDetailsRead | PermissionsLocationsAddToolApprovalDetailsWrite | PermissionsLocationsAddToolApprovalDetailsMCP | PermissionsLocationsAddToolApprovalDetailsMCPSampling | PermissionsLocationsAddToolApprovalDetailsMemory | PermissionsLocationsAddToolApprovalDetailsCustomTool | PermissionsLocationsAddToolApprovalDetailsExtensionManagement | PermissionsLocationsAddToolApprovalDetailsFactory | PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess
+PermissionsLocationsAddToolApprovalDetails = PermissionsLocationsAddToolApprovalDetailsCommands | PermissionsLocationsAddToolApprovalDetailsRead | PermissionsLocationsAddToolApprovalDetailsWrite | PermissionsLocationsAddToolApprovalDetailsMCP | PermissionsLocationsAddToolApprovalDetailsMCPSampling | PermissionsLocationsAddToolApprovalDetailsMemory | PermissionsLocationsAddToolApprovalDetailsCustomTool | PermissionsLocationsAddToolApprovalDetailsExtensionManagement | PermissionsLocationsAddToolApprovalDetailsFactory | PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess | PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess
def _load_PermissionsLocationsAddToolApprovalDetails(obj: Any) -> "PermissionsLocationsAddToolApprovalDetails":
assert isinstance(obj, dict)
@@ -31986,6 +33911,7 @@ def _load_PermissionsLocationsAddToolApprovalDetails(obj: Any) -> "PermissionsLo
case "extension-management": return PermissionsLocationsAddToolApprovalDetailsExtensionManagement.from_dict(obj)
case "factory": return PermissionsLocationsAddToolApprovalDetailsFactory.from_dict(obj)
case "extension-permission-access": return PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess.from_dict(obj)
+ case "extension-env-access": return PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess.from_dict(obj)
case _: raise ValueError(f"Unknown PermissionsLocationsAddToolApprovalDetails kind: {kind!r}")
# Attachment union accepted by push input, covering files, directories, GitHub objects, blobs, snippets, and extension context.
@@ -32090,6 +34016,7 @@ def _load_TaskInfo(obj: Any) -> "TaskInfo":
AccountGetAllUsersResult = list
AgentListRequest = Any
+AuthValidationErrors = list
CanvasActionInvokeResult = Any
CanvasJsonSchema = Any
CommandsListRequest = Any
@@ -32111,6 +34038,7 @@ def _load_TaskInfo(obj: Any) -> "TaskInfo":
McpExecuteSamplingRequest = dict
McpExecuteSamplingResult = dict
McpOauthLoginGrantType = MCPGrantType
+McpSafeForTelemetry = bool
McpServerAuthConfig = bool
McpServerConfigHttpOauthGrantType = MCPGrantType
MetadataSnapshotRemoteMetadataTaskType = TaskType
@@ -32130,9 +34058,13 @@ def _load_TaskInfo(obj: Any) -> "TaskInfo":
ProviderEndpointWireApi = ProviderWireAPI
ProviderGetEndpointRequest = Any
RemoteSessionMetadataTaskType = TaskType
+SessionAuthInfoResult = HMACAuthInfoClass
SessionCancelAllBackgroundAgentsResult = int
SessionContextHostType = HostType
SessionFsReaddirWithTypesEntryType = DebugCollectLogsEntryKind
+SessionGitHubAuthGetAllAuthAvailableResult = list
+SessionGitHubAuthLogoutResult = bool
+SessionGitHubAuthLogoutUserResult = bool
SessionLimitPredictionRequest = Any
SessionMcpAppsCallToolResult = dict
SessionOpenOptionsAdditionalContentExclusionPolicyScope = AdditionalContentExclusionPolicyScope
@@ -32310,6 +34242,17 @@ async def disable(self, params: DiscoveredExtensionsDisableRequest, *, timeout:
await self._client.request("extensions.disable", params_dict, **_timeout_kwargs(timeout))
+# Experimental: this API group is experimental and may change or be removed.
+class ServerPluginsBuiltinApi:
+ def __init__(self, client: "JsonRpcClient"):
+ self._client = client
+
+ async def set(self, params: PluginsBuiltinSetRequest, *, timeout: float | None = None) -> None:
+ "Replaces this server's trusted built-in plugin directories while no sessions are active.\n\nArgs:\n params: Trusted built-in plugin directories to use for this runtime process."
+ params_dict = {k: v for k, v in params.to_dict().items() if v is not None}
+ await self._client.request("plugins.builtin.set", params_dict, **_timeout_kwargs(timeout))
+
+
# Experimental: this API group is experimental and may change or be removed.
class ServerPluginsMarketplacesApi:
def __init__(self, client: "JsonRpcClient"):
@@ -32344,6 +34287,7 @@ async def refresh(self, params: PluginsMarketplacesRefreshRequest, *, timeout: f
class ServerPluginsApi:
def __init__(self, client: "JsonRpcClient"):
self._client = client
+ self.builtin = ServerPluginsBuiltinApi(client)
self.marketplaces = ServerPluginsMarketplacesApi(client)
async def list(self, *, timeout: float | None = None) -> PluginListResult:
@@ -33289,6 +35233,12 @@ async def login(self, params: MCPOauthLoginRequest, *, timeout: float | None = N
params_dict["sessionId"] = self._session_id
return MCPOauthLoginResult.from_dict(await self._client.request("session.mcp.oauth.login", params_dict, **_timeout_kwargs(timeout)))
+ async def probe(self, params: MCPOauthProbeRequest, *, timeout: float | None = None) -> MCPOauthProbeResult:
+ "Passively probes a configured remote MCP server to classify whether OAuth is required or a cached/override token is accepted. Does not start OAuth, emit pending OAuth requests, or mutate MCP connection state.\n\nArgs:\n params: Remote MCP server name for a passive OAuth status probe.\n\nReturns:\n Passive MCP OAuth probe result. `authenticated` means the server accepted the probe request while an OAuth-origin access token was attached; it does not prove the server required or independently validated that token. The probe does not make a second unauthenticated request. Failed is an expected probe-domain outcome; JSON-RPC errors are reserved for API-call failures."
+ params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None}
+ params_dict["sessionId"] = self._session_id
+ return MCPOauthProbeResult.from_dict(await self._client.request("session.mcp.oauth.probe", params_dict, **_timeout_kwargs(timeout)))
+
async def respond(self, params: MCPOauthRespondRequest, *, timeout: float | None = None) -> MCPOauthRespondResult:
"Responds to a pending MCP OAuth authorization request by its request id.\n\nArgs:\n params: Pending MCP OAuth request id to respond to.\n\nReturns:\n Indicates whether the pending MCP OAuth response was accepted."
params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None}
@@ -34273,6 +36223,80 @@ async def log(self, params: LogRequest, *, timeout: float | None = None) -> LogR
return LogResult.from_dict(await self._client.request("session.log", params_dict, **_timeout_kwargs(timeout)))
+# Experimental: this API group is experimental and may change or be removed.
+class _InternalGitHubAuthApi:
+ def __init__(self, client: "JsonRpcClient", session_id: str):
+ self._client = client
+ self._session_id = session_id
+
+ async def _get_current_auth_info(self, *, timeout: float | None = None) -> AuthInfo | None:
+ "Gets the current authentication information for internal session hosts.\n\nReturns:\n Current authentication information, or null when no authentication is active.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ _result = await self._client.request("session.gitHubAuth.getCurrentAuthInfo", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))
+ return AuthInfo(_result) if _result is not None else None
+
+ async def _get_all_auth_available(self, *, timeout: float | None = None) -> list:
+ "Gets all authentication accounts available to the internal session host.\n\nReturns:\n Authentication accounts available to the internal session host.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ return list(await self._client.request("session.gitHubAuth.getAllAuthAvailable", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)))
+
+ async def _refresh_copilot_user(self, *, timeout: float | None = None) -> AuthInfo | None:
+ "Refreshes Copilot account metadata for the current authentication.\n\nReturns:\n Current authentication information, or null when no authentication is active.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ _result = await self._client.request("session.gitHubAuth.refreshCopilotUser", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))
+ return AuthInfo(_result) if _result is not None else None
+
+ async def _login(self, params: SessionAuthLoginRequest, *, timeout: float | None = None) -> AuthInfo:
+ "Logs in a GitHub user through the internal session host.\n\nArgs:\n params: Internal GitHub login parameters.\n\nReturns:\n Initial authentication info for the session.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None}
+ params_dict["sessionId"] = self._session_id
+ return _load_AuthInfo(await self._client.request("session.gitHubAuth.login", params_dict, **_timeout_kwargs(timeout)))
+
+ async def _switch_to_auth(self, params: SessionAuthSwitchRequest, *, timeout: float | None = None) -> None:
+ "Switches the session to another available authentication.\n\nArgs:\n params: Parameters for switching the session's active authentication.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None}
+ params_dict["sessionId"] = self._session_id
+ await self._client.request("session.gitHubAuth.switchToAuth", params_dict, **_timeout_kwargs(timeout))
+
+ async def _logout(self, *, timeout: float | None = None) -> bool:
+ "Logs out the session's current GitHub authentication.\n\nReturns:\n Whether the current authentication was logged out.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ return bool(await self._client.request("session.gitHubAuth.logout", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)))
+
+ async def _logout_user(self, params: SessionAuthLogoutUserRequest, *, timeout: float | None = None) -> bool:
+ "Logs out a specific GitHub authentication.\n\nArgs:\n params: Parameters identifying a GitHub authentication to log out.\n\nReturns:\n Whether the requested authentication was logged out.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None}
+ params_dict["sessionId"] = self._session_id
+ return bool(await self._client.request("session.gitHubAuth.logoutUser", params_dict, **_timeout_kwargs(timeout)))
+
+ async def _last_auth_errors(self, *, timeout: float | None = None) -> list:
+ "Gets validation errors from the most recent authentication attempt.\n\nReturns:\n Validation errors from the most recent authentication attempt.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ return list(await self._client.request("session.gitHubAuth.lastAuthErrors", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)))
+
+
+# Experimental: this API group is experimental and may change or be removed.
+class _InternalCanvasProviderApi:
+ def __init__(self, client: "JsonRpcClient", session_id: str):
+ self._client = client
+ self._session_id = session_id
+
+ async def _register(self, params: CanvasProviderRegisterRequest, *, timeout: float | None = None) -> None:
+ "Registers an internal canvas provider connection and its contributions.\n\nArgs:\n params: Internal canvas provider registration parameters.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None}
+ params_dict["sessionId"] = self._session_id
+ await self._client.request("session.canvas.provider.register", params_dict, **_timeout_kwargs(timeout))
+
+ async def _unregister(self, params: CanvasProviderUnregisterRequest, *, timeout: float | None = None) -> None:
+ "Unregisters an internal canvas provider connection.\n\nArgs:\n params: Internal canvas provider unregistration parameters.\n\n:meta private:\n\nInternal SDK API; not part of the public surface."
+ params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None}
+ params_dict["sessionId"] = self._session_id
+ await self._client.request("session.canvas.provider.unregister", params_dict, **_timeout_kwargs(timeout))
+
+
+# Experimental: this API group is experimental and may change or be removed.
+class _InternalCanvasApi:
+ def __init__(self, client: "JsonRpcClient", session_id: str):
+ self._client = client
+ self._session_id = session_id
+ self.provider = _InternalCanvasProviderApi(client, session_id)
+
+
# Experimental: this API group is experimental and may change or be removed.
class _InternalMcpApi:
def __init__(self, client: "JsonRpcClient", session_id: str):
@@ -34418,6 +36442,8 @@ class _InternalSessionRpc:
def __init__(self, client: "JsonRpcClient", session_id: str):
self._client = client
self._session_id = session_id
+ self.git_hub_auth = _InternalGitHubAuthApi(client, session_id)
+ self.canvas = _InternalCanvasApi(client, session_id)
self.mcp = _InternalMcpApi(client, session_id)
self.settings = _InternalSettingsApi(client, session_id)
self.queue = _InternalQueueApi(client, session_id)
@@ -34783,6 +36809,8 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"ApprovalKind",
"AuthInfo",
"AuthInfoType",
+ "AuthValidationError",
+ "AuthValidationErrors",
"BuiltInModelCatalog",
"BuiltInModelCatalogEntry",
"CancelUserRequestedShellCommandResult",
@@ -34803,6 +36831,8 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"CanvasProviderInvokeActionRequest",
"CanvasProviderOpenRequest",
"CanvasProviderOpenResult",
+ "CanvasProviderRegisterRequest",
+ "CanvasProviderUnregisterRequest",
"CanvasSessionContext",
"CapiSessionOptions",
"Categories",
@@ -34893,6 +36923,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"ExtensionsApi",
"ExtensionsDisableRequest",
"ExtensionsEnableRequest",
+ "ExternalRefMCPOauthHTTPResponse",
"ExternalToolResult",
"ExternalToolTextResultForLlm",
"ExternalToolTextResultForLlmBinaryResultsForLlm",
@@ -34973,6 +37004,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"GitHubTelemetryHandler",
"GitHubTelemetryNotification",
"HMACAuthInfo",
+ "HMACAuthInfoClass",
"HMACAuthInfoType",
"HandlePendingToolCallRequest",
"HandlePendingToolCallResult",
@@ -35073,8 +37105,10 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"MCPDisableRequest",
"MCPDiscoverRequest",
"MCPDiscoverResult",
+ "MCPElicitationFormMode",
"MCPEnableRequest",
"MCPExecuteSamplingParams",
+ "MCPFailedServer",
"MCPFilteredServer",
"MCPGrantType",
"MCPHeadersHandlePendingHeadersRefreshRequest",
@@ -35093,9 +37127,13 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"MCPOauthLoginResult",
"MCPOauthPendingRequestResponse",
"MCPOauthPendingRequestResponseKind",
+ "MCPOauthProbeNeedsAuthReason",
+ "MCPOauthProbeRequest",
+ "MCPOauthProbeResult",
"MCPOauthRespondRequest",
"MCPOauthRespondResult",
"MCPRegisterExternalClientRequest",
+ "MCPReloadConfig",
"MCPReloadWithConfigRequest",
"MCPRemoveGitHubResult",
"MCPResource",
@@ -35110,15 +37148,22 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"MCPResourcesReadRequest",
"MCPResourcesReadResult",
"MCPRestartServerRequest",
+ "MCPSafeForTelemetryFields",
"MCPSamplingExecutionAction",
"MCPSamplingExecutionResult",
+ "MCPSerializableServerConfig",
+ "MCPSerializableServerConfigType",
"MCPServer",
"MCPServerAuthConfigRedirectPort",
"MCPServerConfig",
"MCPServerConfigDeferTools",
"MCPServerConfigHTTP",
"MCPServerConfigHTTPType",
+ "MCPServerConfigMemory",
+ "MCPServerConfigMemoryType",
"MCPServerConfigStdio",
+ "MCPServerConfigStdioType",
+ "MCPServerConfigType",
"MCPServerFailureInfo",
"MCPServerList",
"MCPServerNeedsAuthInfo",
@@ -35128,6 +37173,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"MCPStartServerRequest",
"MCPStartServersResult",
"MCPStopServerRequest",
+ "MCPTaskMetadata",
"MCPToolUI",
"MCPToolUIVisibility",
"MCPTools",
@@ -35156,6 +37202,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"McpOauthApi",
"McpOauthLoginGrantType",
"McpResourcesApi",
+ "McpSafeForTelemetry",
"McpServerAuthConfig",
"McpServerConfigHttpOauthGrantType",
"MemoryConfiguration",
@@ -35228,6 +37275,8 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"PermissionDecisionApproveForLocationApprovalCommandsKind",
"PermissionDecisionApproveForLocationApprovalCustomTool",
"PermissionDecisionApproveForLocationApprovalCustomToolKind",
+ "PermissionDecisionApproveForLocationApprovalExtensionEnvAccess",
+ "PermissionDecisionApproveForLocationApprovalExtensionEnvAccessKind",
"PermissionDecisionApproveForLocationApprovalExtensionManagement",
"PermissionDecisionApproveForLocationApprovalExtensionManagementKind",
"PermissionDecisionApproveForLocationApprovalExtensionPermissionAccess",
@@ -35239,7 +37288,6 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"PermissionDecisionApproveForLocationApprovalMCPSampling",
"PermissionDecisionApproveForLocationApprovalMCPSamplingKind",
"PermissionDecisionApproveForLocationApprovalMemory",
- "PermissionDecisionApproveForLocationApprovalMemoryKind",
"PermissionDecisionApproveForLocationApprovalRead",
"PermissionDecisionApproveForLocationApprovalReadKind",
"PermissionDecisionApproveForLocationApprovalWrite",
@@ -35249,6 +37297,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"PermissionDecisionApproveForSessionApproval",
"PermissionDecisionApproveForSessionApprovalCommands",
"PermissionDecisionApproveForSessionApprovalCustomTool",
+ "PermissionDecisionApproveForSessionApprovalExtensionEnvAccess",
"PermissionDecisionApproveForSessionApprovalExtensionManagement",
"PermissionDecisionApproveForSessionApprovalExtensionPermissionAccess",
"PermissionDecisionApproveForSessionApprovalFactory",
@@ -35323,6 +37372,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"PermissionsLocationsAddToolApprovalDetails",
"PermissionsLocationsAddToolApprovalDetailsCommands",
"PermissionsLocationsAddToolApprovalDetailsCustomTool",
+ "PermissionsLocationsAddToolApprovalDetailsExtensionEnvAccess",
"PermissionsLocationsAddToolApprovalDetailsExtensionManagement",
"PermissionsLocationsAddToolApprovalDetailsExtensionPermissionAccess",
"PermissionsLocationsAddToolApprovalDetailsFactory",
@@ -35371,6 +37421,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"PluginUpdateAllResult",
"PluginUpdateResult",
"PluginsApi",
+ "PluginsBuiltinSetRequest",
"PluginsDisableRequest",
"PluginsEnableRequest",
"PluginsInstallRequest",
@@ -35496,6 +37547,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"RemoteNotifySteerableChangedRequest",
"RemoteNotifySteerableChangedResult",
"RemoteSessionConnectionResult",
+ "RemoteSessionHostStatus",
"RemoteSessionMetadataRepository",
"RemoteSessionMetadataTaskType",
"RemoteSessionMetadataValue",
@@ -35549,6 +37601,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"ServerMcpConfigApi",
"ServerModelsApi",
"ServerPluginsApi",
+ "ServerPluginsBuiltinApi",
"ServerPluginsMarketplacesApi",
"ServerRpc",
"ServerRuntimeApi",
@@ -35564,7 +37617,11 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"ServerUserSettingsApi",
"SessionActivity",
"SessionAgentListRequest",
+ "SessionAuthInfoResult",
+ "SessionAuthLoginRequest",
+ "SessionAuthLogoutUserRequest",
"SessionAuthStatus",
+ "SessionAuthSwitchRequest",
"SessionBulkDeleteResult",
"SessionCancelAllBackgroundAgentsResult",
"SessionCapability",
@@ -35609,6 +37666,9 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"SessionFSWriteFileRequest",
"SessionFsHandler",
"SessionFsReaddirWithTypesEntryType",
+ "SessionGitHubAuthGetAllAuthAvailableResult",
+ "SessionGitHubAuthLogoutResult",
+ "SessionGitHubAuthLogoutUserResult",
"SessionHistoryCompactRequest",
"SessionInstalledPlugin",
"SessionInstalledPluginSource",
@@ -35774,6 +37834,7 @@ async def handle_git_hub_telemetry_event(params: dict) -> None:
"SlashCommandSelectSubcommandResult",
"SlashCommandSelectSubcommandResultKind",
"SlashCommandTextResult",
+ "Status",
"StickySource",
"SubagentSettings",
"SubagentSettingsEntry",
diff --git a/python/copilot/generated/session_events.py b/python/copilot/generated/session_events.py
index 4c3a53e53..b0ae1c3f3 100644
--- a/python/copilot/generated/session_events.py
+++ b/python/copilot/generated/session_events.py
@@ -156,6 +156,7 @@ class SessionEventType(Enum):
PENDING_MESSAGES_MODIFIED = "pending_messages.modified"
ASSISTANT_TURN_START = "assistant.turn_start"
ASSISTANT_TURN_RETRY = "assistant.turn_retry"
+ AGENT_INTERRUPTED = "agent.interrupted"
ASSISTANT_INTENT = "assistant.intent"
ASSISTANT_SERVER_TOOL_PROGRESS = "assistant.server_tool_progress"
ASSISTANT_REASONING = "assistant.reasoning"
@@ -178,6 +179,7 @@ class SessionEventType(Enum):
TOOL_EXECUTION_COMPLETE = "tool.execution_complete"
TOOL_SEARCH_ACTIVATED = "tool_search.activated"
SKILL_INVOKED = "skill.invoked"
+ SANDBOX_DECISION = "sandbox.decision"
SUBAGENT_STARTED = "subagent.started"
SUBAGENT_COMPLETED = "subagent.completed"
SUBAGENT_FAILED = "subagent.failed"
@@ -1279,6 +1281,83 @@ def to_dict(self) -> dict:
return result
+@dataclass
+class AgentInterruptedData:
+ "Metadata for work the user interrupted while the agent was running"
+ activity: AgentInterruptedActivity
+ elapsed: timedelta
+ turn: int
+ api_endpoint: str | None = None
+ cancel_phase: AgentInterruptedCancelPhase | None = None
+ interrupted_agent_count: int | None = None
+ model: str | None = None
+ output_ttft: timedelta | None = None
+ reasoning_effort: str | None = None
+ safe_tool_names: list[str] | None = None
+ tool_call_ids: list[str] | None = None
+ tool_names: list[str] | None = None
+ transport: ModelCallFailureTransport | None = None
+
+ @staticmethod
+ def from_dict(obj: Any) -> "AgentInterruptedData":
+ assert isinstance(obj, dict)
+ activity = parse_enum(AgentInterruptedActivity, obj.get("activity"))
+ elapsed = from_timedelta(obj.get("elapsedMs"))
+ turn = from_int(obj.get("turn"))
+ api_endpoint = from_union([from_none, from_str], obj.get("apiEndpoint"))
+ cancel_phase = from_union([from_none, lambda x: parse_enum(AgentInterruptedCancelPhase, x)], obj.get("cancelPhase"))
+ interrupted_agent_count = from_union([from_none, from_int], obj.get("interruptedAgentCount"))
+ model = from_union([from_none, from_str], obj.get("model"))
+ output_ttft = from_union([from_none, from_timedelta], obj.get("outputTtftMs"))
+ reasoning_effort = from_union([from_none, from_str], obj.get("reasoningEffort"))
+ safe_tool_names = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("safeToolNames"))
+ tool_call_ids = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("toolCallIds"))
+ tool_names = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("toolNames"))
+ transport = from_union([from_none, lambda x: parse_enum(ModelCallFailureTransport, x)], obj.get("transport"))
+ return AgentInterruptedData(
+ activity=activity,
+ elapsed=elapsed,
+ turn=turn,
+ api_endpoint=api_endpoint,
+ cancel_phase=cancel_phase,
+ interrupted_agent_count=interrupted_agent_count,
+ model=model,
+ output_ttft=output_ttft,
+ reasoning_effort=reasoning_effort,
+ safe_tool_names=safe_tool_names,
+ tool_call_ids=tool_call_ids,
+ tool_names=tool_names,
+ transport=transport,
+ )
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["activity"] = to_enum(AgentInterruptedActivity, self.activity)
+ result["elapsedMs"] = to_timedelta(self.elapsed)
+ result["turn"] = to_int(self.turn)
+ if self.api_endpoint is not None:
+ result["apiEndpoint"] = from_union([from_none, from_str], self.api_endpoint)
+ if self.cancel_phase is not None:
+ result["cancelPhase"] = from_union([from_none, lambda x: to_enum(AgentInterruptedCancelPhase, x)], self.cancel_phase)
+ if self.interrupted_agent_count is not None:
+ result["interruptedAgentCount"] = from_union([from_none, to_int], self.interrupted_agent_count)
+ if self.model is not None:
+ result["model"] = from_union([from_none, from_str], self.model)
+ if self.output_ttft is not None:
+ result["outputTtftMs"] = from_union([from_none, to_timedelta], self.output_ttft)
+ if self.reasoning_effort is not None:
+ result["reasoningEffort"] = from_union([from_none, from_str], self.reasoning_effort)
+ if self.safe_tool_names is not None:
+ result["safeToolNames"] = from_union([from_none, lambda x: from_list(from_str, x)], self.safe_tool_names)
+ if self.tool_call_ids is not None:
+ result["toolCallIds"] = from_union([from_none, lambda x: from_list(from_str, x)], self.tool_call_ids)
+ if self.tool_names is not None:
+ result["toolNames"] = from_union([from_none, lambda x: from_list(from_str, x)], self.tool_names)
+ if self.transport is not None:
+ result["transport"] = from_union([from_none, lambda x: to_enum(ModelCallFailureTransport, x)], self.transport)
+ return result
+
+
@dataclass
class AssistantIdleData:
"Payload emitted whenever the main agent's processing loop goes idle, including while related background work (running agents or in-flight attached shell commands) is still pending and the session-level idle event is therefore deferred"
@@ -1821,6 +1900,7 @@ def to_dict(self) -> dict:
class AssistantUsageData:
"LLM API call usage metrics including tokens, costs, quotas, and billing information"
model: str
+ accepted_prediction_tokens: int | None = None
api_call_id: str | None = None
api_endpoint: AssistantUsageApiEndpoint | None = None
# Internal: this field is an internal SDK API and is not part of the public surface.
@@ -1838,6 +1918,10 @@ class AssistantUsageData:
input_tokens: int | None = None
interaction_type: str | None = None
inter_token_latency: timedelta | None = None
+ is_auto: bool | None = None
+ is_byok: bool | None = None
+ max_output_tokens: int | None = None
+ max_prompt_tokens: int | None = None
# Internal: this field is an internal SDK API and is not part of the public surface.
_num_tool_calls: int | None = None
output_tokens: int | None = None
@@ -1847,7 +1931,9 @@ class AssistantUsageData:
# Internal: this field is an internal SDK API and is not part of the public surface.
_quota_snapshots: dict[str, _AssistantUsageQuotaSnapshot] | None = None
reasoning_effort: str | None = None
+ reasoning_summary: ReasoningSummary | None = None
reasoning_tokens: int | None = None
+ rejected_prediction_tokens: int | None = None
rte: bool | None = None
service_request_id: str | None = None
time_to_first_token: timedelta | None = None
@@ -1855,11 +1941,13 @@ class AssistantUsageData:
_tool_counts: dict[str, int] | None = None
# Internal: this field is an internal SDK API and is not part of the public surface.
_tool_token_count: int | None = None
+ transport: AssistantUsageTransport | None = None
@staticmethod
def from_dict(obj: Any) -> "AssistantUsageData":
assert isinstance(obj, dict)
model = from_str(obj.get("model"))
+ accepted_prediction_tokens = from_union([from_none, from_int], obj.get("acceptedPredictionTokens"))
api_call_id = from_union([from_none, from_str], obj.get("apiCallId"))
api_endpoint = from_union([from_none, lambda x: parse_enum(AssistantUsageApiEndpoint, x)], obj.get("apiEndpoint"))
_available_tool_count = from_union([from_none, from_int], obj.get("availableToolCount"))
@@ -1875,20 +1963,28 @@ def from_dict(obj: Any) -> "AssistantUsageData":
input_tokens = from_union([from_none, from_int], obj.get("inputTokens"))
interaction_type = from_union([from_none, from_str], obj.get("interactionType"))
inter_token_latency = from_union([from_none, from_timedelta], obj.get("interTokenLatencyMs"))
+ is_auto = from_union([from_none, from_bool], obj.get("isAuto"))
+ is_byok = from_union([from_none, from_bool], obj.get("isByok"))
+ max_output_tokens = from_union([from_none, from_int], obj.get("maxOutputTokens"))
+ max_prompt_tokens = from_union([from_none, from_int], obj.get("maxPromptTokens"))
_num_tool_calls = from_union([from_none, from_int], obj.get("numToolCalls"))
output_tokens = from_union([from_none, from_int], obj.get("outputTokens"))
parent_tool_call_id = from_union([from_none, from_str], obj.get("parentToolCallId"))
provider_call_id = from_union([from_none, from_str], obj.get("providerCallId"))
_quota_snapshots = from_union([from_none, lambda x: from_dict(_AssistantUsageQuotaSnapshot.from_dict, x)], obj.get("quotaSnapshots"))
reasoning_effort = from_union([from_none, from_str], obj.get("reasoningEffort"))
+ reasoning_summary = from_union([from_none, lambda x: parse_enum(ReasoningSummary, x)], obj.get("reasoningSummary"))
reasoning_tokens = from_union([from_none, from_int], obj.get("reasoningTokens"))
+ rejected_prediction_tokens = from_union([from_none, from_int], obj.get("rejectedPredictionTokens"))
rte = from_union([from_none, from_bool], obj.get("rte"))
service_request_id = from_union([from_none, from_str], obj.get("serviceRequestId"))
time_to_first_token = from_union([from_none, from_timedelta], obj.get("timeToFirstTokenMs"))
_tool_counts = from_union([from_none, lambda x: from_dict(from_int, x)], obj.get("toolCounts"))
_tool_token_count = from_union([from_none, from_int], obj.get("toolTokenCount"))
+ transport = from_union([from_none, lambda x: parse_enum(AssistantUsageTransport, x)], obj.get("transport"))
return AssistantUsageData(
model=model,
+ accepted_prediction_tokens=accepted_prediction_tokens,
api_call_id=api_call_id,
api_endpoint=api_endpoint,
_available_tool_count=_available_tool_count,
@@ -1904,23 +2000,32 @@ def from_dict(obj: Any) -> "AssistantUsageData":
input_tokens=input_tokens,
interaction_type=interaction_type,
inter_token_latency=inter_token_latency,
+ is_auto=is_auto,
+ is_byok=is_byok,
+ max_output_tokens=max_output_tokens,
+ max_prompt_tokens=max_prompt_tokens,
_num_tool_calls=_num_tool_calls,
output_tokens=output_tokens,
parent_tool_call_id=parent_tool_call_id,
provider_call_id=provider_call_id,
_quota_snapshots=_quota_snapshots,
reasoning_effort=reasoning_effort,
+ reasoning_summary=reasoning_summary,
reasoning_tokens=reasoning_tokens,
+ rejected_prediction_tokens=rejected_prediction_tokens,
rte=rte,
service_request_id=service_request_id,
time_to_first_token=time_to_first_token,
_tool_counts=_tool_counts,
_tool_token_count=_tool_token_count,
+ transport=transport,
)
def to_dict(self) -> dict:
result: dict = {}
result["model"] = from_str(self.model)
+ if self.accepted_prediction_tokens is not None:
+ result["acceptedPredictionTokens"] = from_union([from_none, to_int], self.accepted_prediction_tokens)
if self.api_call_id is not None:
result["apiCallId"] = from_union([from_none, from_str], self.api_call_id)
if self.api_endpoint is not None:
@@ -1951,6 +2056,14 @@ def to_dict(self) -> dict:
result["interactionType"] = from_union([from_none, from_str], self.interaction_type)
if self.inter_token_latency is not None:
result["interTokenLatencyMs"] = from_union([from_none, to_timedelta], self.inter_token_latency)
+ if self.is_auto is not None:
+ result["isAuto"] = from_union([from_none, from_bool], self.is_auto)
+ if self.is_byok is not None:
+ result["isByok"] = from_union([from_none, from_bool], self.is_byok)
+ if self.max_output_tokens is not None:
+ result["maxOutputTokens"] = from_union([from_none, to_int], self.max_output_tokens)
+ if self.max_prompt_tokens is not None:
+ result["maxPromptTokens"] = from_union([from_none, to_int], self.max_prompt_tokens)
if self._num_tool_calls is not None:
result["numToolCalls"] = from_union([from_none, to_int], self._num_tool_calls)
if self.output_tokens is not None:
@@ -1963,8 +2076,12 @@ def to_dict(self) -> dict:
result["quotaSnapshots"] = from_union([from_none, lambda x: from_dict(lambda x: to_class(_AssistantUsageQuotaSnapshot, x), x)], self._quota_snapshots)
if self.reasoning_effort is not None:
result["reasoningEffort"] = from_union([from_none, from_str], self.reasoning_effort)
+ if self.reasoning_summary is not None:
+ result["reasoningSummary"] = from_union([from_none, lambda x: to_enum(ReasoningSummary, x)], self.reasoning_summary)
if self.reasoning_tokens is not None:
result["reasoningTokens"] = from_union([from_none, to_int], self.reasoning_tokens)
+ if self.rejected_prediction_tokens is not None:
+ result["rejectedPredictionTokens"] = from_union([from_none, to_int], self.rejected_prediction_tokens)
if self.rte is not None:
result["rte"] = from_union([from_none, from_bool], self.rte)
if self.service_request_id is not None:
@@ -1975,6 +2092,8 @@ def to_dict(self) -> dict:
result["toolCounts"] = from_union([from_none, lambda x: from_dict(to_int, x)], self._tool_counts)
if self._tool_token_count is not None:
result["toolTokenCount"] = from_union([from_none, to_int], self._tool_token_count)
+ if self.transport is not None:
+ result["transport"] = from_union([from_none, lambda x: to_enum(AssistantUsageTransport, x)], self.transport)
return result
@@ -3314,6 +3433,7 @@ class ExitPlanModeRequestedData:
recommended_action: ExitPlanModeAction
request_id: str
summary: str
+ model: str | None = None
@staticmethod
def from_dict(obj: Any) -> "ExitPlanModeRequestedData":
@@ -3323,12 +3443,14 @@ def from_dict(obj: Any) -> "ExitPlanModeRequestedData":
recommended_action = parse_enum(ExitPlanModeAction, obj.get("recommendedAction"))
request_id = from_str(obj.get("requestId"))
summary = from_str(obj.get("summary"))
+ model = from_union([from_none, from_str], obj.get("model"))
return ExitPlanModeRequestedData(
actions=actions,
plan_content=plan_content,
recommended_action=recommended_action,
request_id=request_id,
summary=summary,
+ model=model,
)
def to_dict(self) -> dict:
@@ -3338,6 +3460,8 @@ def to_dict(self) -> dict:
result["recommendedAction"] = to_enum(ExitPlanModeAction, self.recommended_action)
result["requestId"] = from_str(self.request_id)
result["summary"] = from_str(self.summary)
+ if self.model is not None:
+ result["model"] = from_union([from_none, from_str], self.model)
return result
@@ -4679,6 +4803,42 @@ def to_dict(self) -> dict:
return result
+@dataclass
+class PermissionPromptRequestExtensionEnvAccess:
+ "Extension sensitive environment variable access prompt"
+ environment_variables: list[str]
+ extension_name: str
+ kind: ClassVar[str] = "extension-env-access"
+ # Experimental: this field is part of an experimental API and may change or be removed.
+ auto_approval: PermissionAutoApproval | None = None
+ tool_call_id: str | None = None
+
+ @staticmethod
+ def from_dict(obj: Any) -> "PermissionPromptRequestExtensionEnvAccess":
+ assert isinstance(obj, dict)
+ environment_variables = from_list(from_str, obj.get("environmentVariables"))
+ extension_name = from_str(obj.get("extensionName"))
+ auto_approval = from_union([from_none, PermissionAutoApproval.from_dict], obj.get("autoApproval"))
+ tool_call_id = from_union([from_none, from_str], obj.get("toolCallId"))
+ return PermissionPromptRequestExtensionEnvAccess(
+ environment_variables=environment_variables,
+ extension_name=extension_name,
+ auto_approval=auto_approval,
+ tool_call_id=tool_call_id,
+ )
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["environmentVariables"] = from_list(from_str, self.environment_variables)
+ result["extensionName"] = from_str(self.extension_name)
+ result["kind"] = self.kind
+ if self.auto_approval is not None:
+ result["autoApproval"] = from_union([from_none, lambda x: to_class(PermissionAutoApproval, x)], self.auto_approval)
+ if self.tool_call_id is not None:
+ result["toolCallId"] = from_union([from_none, from_str], self.tool_call_id)
+ return result
+
+
@dataclass
class PermissionPromptRequestExtensionManagement:
"Extension management permission prompt"
@@ -4901,6 +5061,8 @@ class PermissionPromptRequestMcp:
args: Any = None
# Experimental: this field is part of an experimental API and may change or be removed.
auto_approval: PermissionAutoApproval | None = None
+ # Experimental: this field is part of an experimental API and may change or be removed.
+ permission_recommendation: PermissionRecommendation | None = None
tool_call_id: str | None = None
@staticmethod
@@ -4911,6 +5073,7 @@ def from_dict(obj: Any) -> "PermissionPromptRequestMcp":
tool_title = from_str(obj.get("toolTitle"))
args = obj.get("args")
auto_approval = from_union([from_none, PermissionAutoApproval.from_dict], obj.get("autoApproval"))
+ permission_recommendation = from_union([from_none, lambda x: parse_enum(PermissionRecommendation, x)], obj.get("permissionRecommendation"))
tool_call_id = from_union([from_none, from_str], obj.get("toolCallId"))
return PermissionPromptRequestMcp(
server_name=server_name,
@@ -4918,6 +5081,7 @@ def from_dict(obj: Any) -> "PermissionPromptRequestMcp":
tool_title=tool_title,
args=args,
auto_approval=auto_approval,
+ permission_recommendation=permission_recommendation,
tool_call_id=tool_call_id,
)
@@ -4931,6 +5095,8 @@ def to_dict(self) -> dict:
result["args"] = self.args
if self.auto_approval is not None:
result["autoApproval"] = from_union([from_none, lambda x: to_class(PermissionAutoApproval, x)], self.auto_approval)
+ if self.permission_recommendation is not None:
+ result["permissionRecommendation"] = from_union([from_none, lambda x: to_enum(PermissionRecommendation, x)], self.permission_recommendation)
if self.tool_call_id is not None:
result["toolCallId"] = from_union([from_none, from_str], self.tool_call_id)
return result
@@ -5220,6 +5386,36 @@ def to_dict(self) -> dict:
return result
+@dataclass
+class PermissionRequestExtensionEnvAccess:
+ "Extension sensitive environment variable access request"
+ environment_variables: list[str]
+ extension_name: str
+ kind: ClassVar[str] = "extension-env-access"
+ tool_call_id: str | None = None
+
+ @staticmethod
+ def from_dict(obj: Any) -> "PermissionRequestExtensionEnvAccess":
+ assert isinstance(obj, dict)
+ environment_variables = from_list(from_str, obj.get("environmentVariables"))
+ extension_name = from_str(obj.get("extensionName"))
+ tool_call_id = from_union([from_none, from_str], obj.get("toolCallId"))
+ return PermissionRequestExtensionEnvAccess(
+ environment_variables=environment_variables,
+ extension_name=extension_name,
+ tool_call_id=tool_call_id,
+ )
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["environmentVariables"] = from_list(from_str, self.environment_variables)
+ result["extensionName"] = from_str(self.extension_name)
+ result["kind"] = self.kind
+ if self.tool_call_id is not None:
+ result["toolCallId"] = from_union([from_none, from_str], self.tool_call_id)
+ return result
+
+
@dataclass
class PermissionRequestExtensionManagement:
"Extension management permission request"
@@ -5432,6 +5628,8 @@ class PermissionRequestMcp:
tool_name: str
tool_title: str
args: Any = None
+ # Experimental: this field is part of an experimental API and may change or be removed.
+ permission_recommendation: PermissionRecommendation | None = None
tool_call_id: str | None = None
managed_approval_required: bool | None = None
@@ -5443,6 +5641,7 @@ def from_dict(obj: Any) -> "PermissionRequestMcp":
tool_name = from_str(obj.get("toolName"))
tool_title = from_str(obj.get("toolTitle"))
args = obj.get("args")
+ permission_recommendation = from_union([from_none, lambda x: parse_enum(PermissionRecommendation, x)], obj.get("permissionRecommendation"))
tool_call_id = from_union([from_none, from_str], obj.get("toolCallId"))
managed_approval_required = from_union([from_none, from_bool], obj.get("managedApprovalRequired"))
return PermissionRequestMcp(
@@ -5451,6 +5650,7 @@ def from_dict(obj: Any) -> "PermissionRequestMcp":
tool_name=tool_name,
tool_title=tool_title,
args=args,
+ permission_recommendation=permission_recommendation,
tool_call_id=tool_call_id,
managed_approval_required=managed_approval_required,
)
@@ -5464,6 +5664,8 @@ def to_dict(self) -> dict:
result["toolTitle"] = from_str(self.tool_title)
if self.args is not None:
result["args"] = self.args
+ if self.permission_recommendation is not None:
+ result["permissionRecommendation"] = from_union([from_none, lambda x: to_enum(PermissionRecommendation, x)], self.permission_recommendation)
if self.tool_call_id is not None:
result["toolCallId"] = from_union([from_none, from_str], self.tool_call_id)
if self.managed_approval_required is not None:
@@ -5964,6 +6166,18 @@ def to_dict(self) -> dict:
return result
+@dataclass
+class SandboxDecisionData:
+ "Payload of `sandbox.decision`, a bounded governance record of what the process sandbox was configured to do and whether it took effect. Discriminated by `kind`."
+ @staticmethod
+ def from_dict(obj: Any) -> "SandboxDecisionData":
+ assert isinstance(obj, dict)
+ return SandboxDecisionData()
+
+ def to_dict(self) -> dict:
+ return {}
+
+
@dataclass
class SessionAutopilotObjectiveChangedData:
"Autopilot objective state file operation details indicating what changed"
@@ -6739,6 +6953,7 @@ class SessionModelChangeData:
previous_verbosity: Verbosity | None = None
reasoning_effort: str | None = None
reasoning_summary: ReasoningSummary | None = None
+ source: ModelChangeSource | None = None
verbosity: Verbosity | None = None
@staticmethod
@@ -6753,6 +6968,7 @@ def from_dict(obj: Any) -> "SessionModelChangeData":
previous_verbosity = from_union([from_none, lambda x: parse_enum(Verbosity, x)], obj.get("previousVerbosity"))
reasoning_effort = from_union([from_none, from_str], obj.get("reasoningEffort"))
reasoning_summary = from_union([from_none, lambda x: parse_enum(ReasoningSummary, x)], obj.get("reasoningSummary"))
+ source = from_union([from_none, lambda x: parse_enum(ModelChangeSource, x)], obj.get("source"))
verbosity = from_union([from_none, lambda x: parse_enum(Verbosity, x)], obj.get("verbosity"))
return SessionModelChangeData(
new_model=new_model,
@@ -6764,6 +6980,7 @@ def from_dict(obj: Any) -> "SessionModelChangeData":
previous_verbosity=previous_verbosity,
reasoning_effort=reasoning_effort,
reasoning_summary=reasoning_summary,
+ source=source,
verbosity=verbosity,
)
@@ -6786,6 +7003,8 @@ def to_dict(self) -> dict:
result["reasoningEffort"] = from_union([from_none, from_str], self.reasoning_effort)
if self.reasoning_summary is not None:
result["reasoningSummary"] = from_union([from_none, lambda x: to_enum(ReasoningSummary, x)], self.reasoning_summary)
+ if self.source is not None:
+ result["source"] = from_union([from_none, lambda x: to_enum(ModelChangeSource, x)], self.source)
if self.verbosity is not None:
result["verbosity"] = from_union([from_none, lambda x: to_enum(Verbosity, x)], self.verbosity)
return result
@@ -8079,6 +8298,7 @@ class SystemNotificationAgentCompleted:
status: SystemNotificationAgentCompletedStatus
type: ClassVar[str] = "agent_completed"
description: str | None = None
+ display_name: str | None = None
prompt: str | None = None
@staticmethod
@@ -8088,12 +8308,14 @@ def from_dict(obj: Any) -> "SystemNotificationAgentCompleted":
agent_type = from_str(obj.get("agentType"))
status = parse_enum(SystemNotificationAgentCompletedStatus, obj.get("status"))
description = from_union([from_none, from_str], obj.get("description"))
+ display_name = from_union([from_none, from_str], obj.get("displayName"))
prompt = from_union([from_none, from_str], obj.get("prompt"))
return SystemNotificationAgentCompleted(
agent_id=agent_id,
agent_type=agent_type,
status=status,
description=description,
+ display_name=display_name,
prompt=prompt,
)
@@ -8105,6 +8327,8 @@ def to_dict(self) -> dict:
result["type"] = self.type
if self.description is not None:
result["description"] = from_union([from_none, from_str], self.description)
+ if self.display_name is not None:
+ result["displayName"] = from_union([from_none, from_str], self.display_name)
if self.prompt is not None:
result["prompt"] = from_union([from_none, from_str], self.prompt)
return result
@@ -8117,6 +8341,7 @@ class SystemNotificationAgentIdle:
agent_type: str
type: ClassVar[str] = "agent_idle"
description: str | None = None
+ display_name: str | None = None
@staticmethod
def from_dict(obj: Any) -> "SystemNotificationAgentIdle":
@@ -8124,10 +8349,12 @@ def from_dict(obj: Any) -> "SystemNotificationAgentIdle":
agent_id = from_str(obj.get("agentId"))
agent_type = from_str(obj.get("agentType"))
description = from_union([from_none, from_str], obj.get("description"))
+ display_name = from_union([from_none, from_str], obj.get("displayName"))
return SystemNotificationAgentIdle(
agent_id=agent_id,
agent_type=agent_type,
description=description,
+ display_name=display_name,
)
def to_dict(self) -> dict:
@@ -8137,6 +8364,8 @@ def to_dict(self) -> dict:
result["type"] = self.type
if self.description is not None:
result["description"] = from_union([from_none, from_str], self.description)
+ if self.display_name is not None:
+ result["displayName"] = from_union([from_none, from_str], self.display_name)
return result
@@ -9516,6 +9745,31 @@ def to_dict(self) -> dict:
return result
+@dataclass
+class UserToolSessionApprovalExtensionEnvAccess:
+ "Session-scoped tool-approval rule for an extension's access to sensitive environment variables, keyed by extension name and the exact set of variable names."
+ environment_variables: list[str]
+ extension_name: str
+ kind: ClassVar[str] = "extension-env-access"
+
+ @staticmethod
+ def from_dict(obj: Any) -> "UserToolSessionApprovalExtensionEnvAccess":
+ assert isinstance(obj, dict)
+ environment_variables = from_list(from_str, obj.get("environmentVariables"))
+ extension_name = from_str(obj.get("extensionName"))
+ return UserToolSessionApprovalExtensionEnvAccess(
+ environment_variables=environment_variables,
+ extension_name=extension_name,
+ )
+
+ def to_dict(self) -> dict:
+ result: dict = {}
+ result["environmentVariables"] = from_list(from_str, self.environment_variables)
+ result["extensionName"] = from_str(self.extension_name)
+ result["kind"] = self.kind
+ return result
+
+
@dataclass
class UserToolSessionApprovalExtensionManagement:
"Session-scoped tool-approval rule for extension-management operations, optionally narrowed by operation."
@@ -9764,6 +10018,7 @@ def _load_PermissionPromptRequest(obj: Any) -> "PermissionPromptRequest":
case "extension-management": return PermissionPromptRequestExtensionManagement.from_dict(obj)
case "factory": return PermissionPromptRequestFactory.from_dict(obj)
case "extension-permission-access": return PermissionPromptRequestExtensionPermissionAccess.from_dict(obj)
+ case "extension-env-access": return PermissionPromptRequestExtensionEnvAccess.from_dict(obj)
case _: raise ValueError(f"Unknown PermissionPromptRequest kind: {kind!r}")
@@ -9782,6 +10037,7 @@ def _load_PermissionRequest(obj: Any) -> "PermissionRequest":
case "extension-management": return PermissionRequestExtensionManagement.from_dict(obj)
case "factory": return PermissionRequestFactory.from_dict(obj)
case "extension-permission-access": return PermissionRequestExtensionPermissionAccess.from_dict(obj)
+ case "extension-env-access": return PermissionRequestExtensionEnvAccess.from_dict(obj)
case _: raise ValueError(f"Unknown PermissionRequest kind: {kind!r}")
@@ -9843,6 +10099,7 @@ def _load_UserToolSessionApproval(obj: Any) -> "UserToolSessionApproval":
case "extension-management": return UserToolSessionApprovalExtensionManagement.from_dict(obj)
case "factory": return UserToolSessionApprovalFactory.from_dict(obj)
case "extension-permission-access": return UserToolSessionApprovalExtensionPermissionAccess.from_dict(obj)
+ case "extension-env-access": return UserToolSessionApprovalExtensionEnvAccess.from_dict(obj)
case _: raise ValueError(f"Unknown UserToolSessionApproval kind: {kind!r}")
@@ -9859,11 +10116,11 @@ def _load_UserToolSessionApproval(obj: Any) -> "UserToolSessionApproval":
# Derived user-facing permission prompt details for UI consumers
-PermissionPromptRequest = PermissionPromptRequestCommands | PermissionPromptRequestWrite | PermissionPromptRequestRead | PermissionPromptRequestMcp | PermissionPromptRequestUrl | PermissionPromptRequestMemory | PermissionPromptRequestCustomTool | PermissionPromptRequestPath | PermissionPromptRequestHook | PermissionPromptRequestExtensionManagement | PermissionPromptRequestFactory | PermissionPromptRequestExtensionPermissionAccess
+PermissionPromptRequest = PermissionPromptRequestCommands | PermissionPromptRequestWrite | PermissionPromptRequestRead | PermissionPromptRequestMcp | PermissionPromptRequestUrl | PermissionPromptRequestMemory | PermissionPromptRequestCustomTool | PermissionPromptRequestPath | PermissionPromptRequestHook | PermissionPromptRequestExtensionManagement | PermissionPromptRequestFactory | PermissionPromptRequestExtensionPermissionAccess | PermissionPromptRequestExtensionEnvAccess
# Details of the permission being requested
-PermissionRequest = PermissionRequestShell | PermissionRequestWrite | PermissionRequestRead | PermissionRequestMcp | PermissionRequestUrl | PermissionRequestMemory | PermissionRequestCustomTool | PermissionRequestHook | PermissionRequestExtensionManagement | PermissionRequestFactory | PermissionRequestExtensionPermissionAccess
+PermissionRequest = PermissionRequestShell | PermissionRequestWrite | PermissionRequestRead | PermissionRequestMcp | PermissionRequestUrl | PermissionRequestMemory | PermissionRequestCustomTool | PermissionRequestHook | PermissionRequestExtensionManagement | PermissionRequestFactory | PermissionRequestExtensionPermissionAccess | PermissionRequestExtensionEnvAccess
# Location within a cited source (character, page, or content-block range) that supports a span.
@@ -9875,7 +10132,7 @@ def _load_UserToolSessionApproval(obj: Any) -> "UserToolSessionApproval":
# The approval to add as a session-scoped rule
-UserToolSessionApproval = UserToolSessionApprovalCommands | UserToolSessionApprovalRead | UserToolSessionApprovalWrite | UserToolSessionApprovalMcp | UserToolSessionApprovalMemory | UserToolSessionApprovalCustomTool | UserToolSessionApprovalExtensionManagement | UserToolSessionApprovalFactory | UserToolSessionApprovalExtensionPermissionAccess
+UserToolSessionApproval = UserToolSessionApprovalCommands | UserToolSessionApprovalRead | UserToolSessionApprovalWrite | UserToolSessionApprovalMcp | UserToolSessionApprovalMemory | UserToolSessionApprovalCustomTool | UserToolSessionApprovalExtensionManagement | UserToolSessionApprovalFactory | UserToolSessionApprovalExtensionPermissionAccess | UserToolSessionApprovalExtensionEnvAccess
# The embedded resource contents, either text or base64-encoded binary
@@ -9936,6 +10193,13 @@ class PermissionAllowAllMode(Enum):
AUTO = "auto"
+# Experimental: this enum is part of an experimental API and may change or be removed.
+class PermissionRecommendation(Enum):
+ "Advisory recommendation the runtime attaches to a permission request whose origin it can vouch for by construction. Unlike the auto-approval judge this does not depend on auto mode and does not evaluate what the tool call does; its absence simply means the runtime has no opinion and the request follows the host's normal approval flow."
+ # The runtime vouches for the request's origin and recommends approving it without prompting. The host still owns the decision and may deny it; deny rules, managed policy, and the auto-approval safety judge all outrank this recommendation.
+ APPROVE = "approve"
+
+
class AbortReason(Enum):
"Finite reason code describing why the current turn was aborted"
# The local user requested the abort, for example by pressing Ctrl+C in the CLI.
@@ -9948,6 +10212,26 @@ class AbortReason(Enum):
AUTOPILOT_CREDIT_LIMIT = "autopilot_credit_limit"
+class AgentInterruptedActivity(Enum):
+ "What the agent was doing when the user interrupted it."
+ # A request to the model was open.
+ MODEL_CALL = "model_call"
+ # The turn was sleeping between retry attempts.
+ RETRY_BACKOFF = "retry_backoff"
+ # One or more tools were executing.
+ TOOL_CALL = "tool_call"
+ # Background sub-agents were running while the main loop was idle.
+ BACKGROUND_AGENT = "background_agent"
+
+
+class AgentInterruptedCancelPhase(Enum):
+ "Where the interruption landed relative to the first streamed token."
+ # No output had been produced when the request was cancelled.
+ PRE_FIRST_TOKEN = "pre_first_token"
+ # The response was already streaming when the request was cancelled.
+ MID_STREAM = "mid_stream"
+
+
class AssistantMessageToolRequestType(Enum):
"Tool call type: \"function\" for standard tool calls, \"custom\" for grammar-based tool calls. Defaults to \"function\" when absent."
# Standard function-style tool call.
@@ -9968,6 +10252,14 @@ class AssistantUsageApiEndpoint(Enum):
WS_RESPONSES = "ws:/responses"
+class AssistantUsageTransport(Enum):
+ "Transport used for a successful model call"
+ # HTTP transport, including SSE streams.
+ HTTP = "http"
+ # WebSocket transport.
+ WEBSOCKET = "websocket"
+
+
class AttachmentGitHubReferenceType(Enum):
"Type of GitHub reference"
# GitHub issue reference.
@@ -10278,6 +10570,32 @@ class ModelCallFailureTransport(Enum):
WEBSOCKET = "websocket"
+class ModelChangeSource(Enum):
+ "Origin of an effective session model change."
+ # The user selected a model directly with `/model `.
+ MODEL_COMMAND = "model_command"
+ # The user selected the model with `/settings`.
+ SETTINGS_COMMAND = "settings_command"
+ # The user selected the model with the `/config` alias.
+ CONFIG_COMMAND = "config_command"
+ # The user selected the model in the model picker, including the picker opened by bare `/model`.
+ MODEL_PICKER = "model_picker"
+ # Organization-managed settings selected the model.
+ MANAGED_SETTINGS = "managed_settings"
+ # Repository settings selected the model.
+ REPO_SETTINGS = "repo_settings"
+ # Startup model resolution selected the model.
+ STARTUP = "startup"
+ # Selecting an agent selected its configured model.
+ AGENT = "agent"
+ # Entering, leaving, or reconfiguring plan mode selected the model.
+ PLAN_MODE = "plan_mode"
+ # The runtime selected the model automatically, such as rate-limit recovery or refusal fallback.
+ AUTOMATIC = "automatic"
+ # An SDK or RPC caller selected the model.
+ SDK = "sdk"
+
+
class OmittedBinaryOmittedReason(Enum):
"Why the binary data is absent: it exceeded the inline size limit, or its asset was unavailable"
# Bytes exceeded the session's inline size limit.
@@ -10524,7 +10842,7 @@ class WorkspaceFileChangedOperation(Enum):
UPDATE = "update"
-SessionEventData = SessionStartData | SessionResumeData | SessionRemoteSteerableChangedData | SessionErrorData | SessionIdleData | SessionTitleChangedData | SessionScheduleCreatedData | SessionScheduleCancelledData | SessionScheduleRearmedData | SessionAutopilotObjectiveChangedData | SessionInfoData | SessionWarningData | SessionModelChangeData | SessionModeChangedData | SessionSessionLimitsChangedData | SessionPermissionsChangedData | SessionPlanChangedData | SessionTodosChangedData | SessionWorkspaceFileChangedData | SessionHandoffData | SessionTruncationData | SessionSnapshotRewindData | SessionShutdownData | SessionUsageCheckpointData | SessionContextChangedData | SessionUsageInfoData | SessionContextClearedData | SessionCompactionStartData | SessionCompactionCompleteData | SessionTaskCompleteData | UserMessageData | PendingMessagesModifiedData | AssistantTurnStartData | AssistantTurnRetryData | AssistantIntentData | AssistantServerToolProgressData | AssistantReasoningData | AssistantReasoningDeltaData | AssistantToolCallDeltaData | AssistantStreamingDeltaData | AssistantMessageData | AssistantMessageStartData | AssistantMessageDeltaData | AssistantTurnEndData | AssistantIdleData | AssistantUsageData | ModelCallFailureData | ModelCallStartData | AbortData | ToolUserRequestedData | ToolExecutionStartData | ToolExecutionPartialResultData | ToolExecutionProgressData | ToolExecutionCompleteData | ToolSearchActivatedData | SkillInvokedData | SubagentStartedData | SubagentCompletedData | SubagentFailedData | SubagentSelectedData | SubagentDeselectedData | HookStartData | HookEndData | HookProgressData | SessionBinaryAssetData | SystemMessageData | SystemNotificationData | PermissionRequestedData | PermissionCompletedData | UserInputRequestedData | UserInputCompletedData | ElicitationRequestedData | ElicitationCompletedData | SamplingRequestedData | SamplingCompletedData | McpOauthRequiredData | McpOauthCompletedData | McpHeadersRefreshRequiredData | McpHeadersRefreshCompletedData | SessionCustomNotificationData | ExternalToolRequestedData | ExternalToolCompletedData | CommandQueuedData | CommandExecuteData | CommandCompletedData | AutoModeSwitchRequestedData | AutoModeSwitchCompletedData | SessionLimitsExhaustedRequestedData | SessionLimitsExhaustedCompletedData | SessionAutoModeResolvedData | SessionManagedSettingsResolvedData | SessionManagedSettingsEnforcedData | CommandsChangedData | CapabilitiesChangedData | ExitPlanModeRequestedData | ExitPlanModeCompletedData | SessionToolsUpdatedData | SessionBackgroundTasksChangedData | FactoryRunUpdatedData | SessionSkillsLoadedData | SessionCustomAgentsUpdatedData | SessionMcpServersLoadedData | SessionMcpServerStatusChangedData | McpToolsListChangedData | McpResourcesListChangedData | McpPromptsListChangedData | SessionExtensionsLoadedData | SessionCanvasOpenedData | SessionCanvasRegistryChangedData | SessionCanvasClosedData | SessionCanvasUnavailableData | SessionCanvasRecordedData | SessionCanvasRemovedData | SessionExtensionsAttachmentsPushedData | McpAppToolCallCompleteData | RawSessionEventData | Data
+SessionEventData = SessionStartData | SessionResumeData | SessionRemoteSteerableChangedData | SessionErrorData | SessionIdleData | SessionTitleChangedData | SessionScheduleCreatedData | SessionScheduleCancelledData | SessionScheduleRearmedData | SessionAutopilotObjectiveChangedData | SessionInfoData | SessionWarningData | SessionModelChangeData | SessionModeChangedData | SessionSessionLimitsChangedData | SessionPermissionsChangedData | SessionPlanChangedData | SessionTodosChangedData | SessionWorkspaceFileChangedData | SessionHandoffData | SessionTruncationData | SessionSnapshotRewindData | SessionShutdownData | SessionUsageCheckpointData | SessionContextChangedData | SessionUsageInfoData | SessionContextClearedData | SessionCompactionStartData | SessionCompactionCompleteData | SessionTaskCompleteData | UserMessageData | PendingMessagesModifiedData | AssistantTurnStartData | AssistantTurnRetryData | AgentInterruptedData | AssistantIntentData | AssistantServerToolProgressData | AssistantReasoningData | AssistantReasoningDeltaData | AssistantToolCallDeltaData | AssistantStreamingDeltaData | AssistantMessageData | AssistantMessageStartData | AssistantMessageDeltaData | AssistantTurnEndData | AssistantIdleData | AssistantUsageData | ModelCallFailureData | ModelCallStartData | AbortData | ToolUserRequestedData | ToolExecutionStartData | ToolExecutionPartialResultData | ToolExecutionProgressData | ToolExecutionCompleteData | ToolSearchActivatedData | SkillInvokedData | SandboxDecisionData | SubagentStartedData | SubagentCompletedData | SubagentFailedData | SubagentSelectedData | SubagentDeselectedData | HookStartData | HookEndData | HookProgressData | SessionBinaryAssetData | SystemMessageData | SystemNotificationData | PermissionRequestedData | PermissionCompletedData | UserInputRequestedData | UserInputCompletedData | ElicitationRequestedData | ElicitationCompletedData | SamplingRequestedData | SamplingCompletedData | McpOauthRequiredData | McpOauthCompletedData | McpHeadersRefreshRequiredData | McpHeadersRefreshCompletedData | SessionCustomNotificationData | ExternalToolRequestedData | ExternalToolCompletedData | CommandQueuedData | CommandExecuteData | CommandCompletedData | AutoModeSwitchRequestedData | AutoModeSwitchCompletedData | SessionLimitsExhaustedRequestedData | SessionLimitsExhaustedCompletedData | SessionAutoModeResolvedData | SessionManagedSettingsResolvedData | SessionManagedSettingsEnforcedData | CommandsChangedData | CapabilitiesChangedData | ExitPlanModeRequestedData | ExitPlanModeCompletedData | SessionToolsUpdatedData | SessionBackgroundTasksChangedData | FactoryRunUpdatedData | SessionSkillsLoadedData | SessionCustomAgentsUpdatedData | SessionMcpServersLoadedData | SessionMcpServerStatusChangedData | McpToolsListChangedData | McpResourcesListChangedData | McpPromptsListChangedData | SessionExtensionsLoadedData | SessionCanvasOpenedData | SessionCanvasRegistryChangedData | SessionCanvasClosedData | SessionCanvasUnavailableData | SessionCanvasRecordedData | SessionCanvasRemovedData | SessionExtensionsAttachmentsPushedData | McpAppToolCallCompleteData | RawSessionEventData | Data
@dataclass
@@ -10584,6 +10902,7 @@ def from_dict(obj: Any) -> "SessionEvent":
case SessionEventType.PENDING_MESSAGES_MODIFIED: data = PendingMessagesModifiedData.from_dict(data_obj)
case SessionEventType.ASSISTANT_TURN_START: data = AssistantTurnStartData.from_dict(data_obj)
case SessionEventType.ASSISTANT_TURN_RETRY: data = AssistantTurnRetryData.from_dict(data_obj)
+ case SessionEventType.AGENT_INTERRUPTED: data = AgentInterruptedData.from_dict(data_obj)
case SessionEventType.ASSISTANT_INTENT: data = AssistantIntentData.from_dict(data_obj)
case SessionEventType.ASSISTANT_SERVER_TOOL_PROGRESS: data = AssistantServerToolProgressData.from_dict(data_obj)
case SessionEventType.ASSISTANT_REASONING: data = AssistantReasoningData.from_dict(data_obj)
@@ -10606,6 +10925,7 @@ def from_dict(obj: Any) -> "SessionEvent":
case SessionEventType.TOOL_EXECUTION_COMPLETE: data = ToolExecutionCompleteData.from_dict(data_obj)
case SessionEventType.TOOL_SEARCH_ACTIVATED: data = ToolSearchActivatedData.from_dict(data_obj)
case SessionEventType.SKILL_INVOKED: data = SkillInvokedData.from_dict(data_obj)
+ case SessionEventType.SANDBOX_DECISION: data = SandboxDecisionData.from_dict(data_obj)
case SessionEventType.SUBAGENT_STARTED: data = SubagentStartedData.from_dict(data_obj)
case SessionEventType.SUBAGENT_COMPLETED: data = SubagentCompletedData.from_dict(data_obj)
case SessionEventType.SUBAGENT_FAILED: data = SubagentFailedData.from_dict(data_obj)
@@ -10701,6 +11021,9 @@ def session_event_to_dict(x: SessionEvent) -> Any:
__all__ = [
"AbortData",
"AbortReason",
+ "AgentInterruptedActivity",
+ "AgentInterruptedCancelPhase",
+ "AgentInterruptedData",
"AssistantIdleData",
"AssistantIntentData",
"AssistantMessageData",
@@ -10721,6 +11044,7 @@ def session_event_to_dict(x: SessionEvent) -> Any:
"AssistantUsageCopilotUsage",
"AssistantUsageCopilotUsageTokenDetail",
"AssistantUsageData",
+ "AssistantUsageTransport",
"Attachment",
"AttachmentBlob",
"AttachmentDirectory",
@@ -10839,6 +11163,7 @@ def session_event_to_dict(x: SessionEvent) -> Any:
"ModelCallFailureSource",
"ModelCallFailureTransport",
"ModelCallStartData",
+ "ModelChangeSource",
"OmittedBinaryOmittedReason",
"OmittedBinaryResult",
"OmittedBinaryType",
@@ -10858,6 +11183,7 @@ def session_event_to_dict(x: SessionEvent) -> Any:
"PermissionPromptRequest",
"PermissionPromptRequestCommands",
"PermissionPromptRequestCustomTool",
+ "PermissionPromptRequestExtensionEnvAccess",
"PermissionPromptRequestExtensionManagement",
"PermissionPromptRequestExtensionPermissionAccess",
"PermissionPromptRequestFactory",
@@ -10869,8 +11195,10 @@ def session_event_to_dict(x: SessionEvent) -> Any:
"PermissionPromptRequestRead",
"PermissionPromptRequestUrl",
"PermissionPromptRequestWrite",
+ "PermissionRecommendation",
"PermissionRequest",
"PermissionRequestCustomTool",
+ "PermissionRequestExtensionEnvAccess",
"PermissionRequestExtensionManagement",
"PermissionRequestExtensionPermissionAccess",
"PermissionRequestFactory",
@@ -10897,6 +11225,7 @@ def session_event_to_dict(x: SessionEvent) -> Any:
"ReasoningSummary",
"SamplingCompletedData",
"SamplingRequestedData",
+ "SandboxDecisionData",
"ScheduleOrigin",
"SessionAutoModeResolvedData",
"SessionAutopilotObjectiveChangedData",
@@ -11033,6 +11362,7 @@ def session_event_to_dict(x: SessionEvent) -> Any:
"UserToolSessionApproval",
"UserToolSessionApprovalCommands",
"UserToolSessionApprovalCustomTool",
+ "UserToolSessionApprovalExtensionEnvAccess",
"UserToolSessionApprovalExtensionManagement",
"UserToolSessionApprovalExtensionPermissionAccess",
"UserToolSessionApprovalFactory",
diff --git a/rust/src/generated/api_types.rs b/rust/src/generated/api_types.rs
index caf9457a8..1d7daddba 100644
--- a/rust/src/generated/api_types.rs
+++ b/rust/src/generated/api_types.rs
@@ -10,9 +10,9 @@ use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use super::session_events::{
- AbortReason, ContextTier, McpServerSource, McpServerStatus, PermissionPromptRequest,
- PermissionRule, ReasoningSummary, SessionLimitsConfig, SessionMode, ShutdownType, SkillSource,
- UserToolSessionApproval, Verbosity,
+ AbortReason, ContextTier, McpServerSource, McpServerStatus, ModelChangeSource,
+ PermissionPromptRequest, PermissionRule, ReasoningSummary, SessionLimitsConfig, SessionMode,
+ ShutdownType, SkillSource, UserToolSessionApproval, Verbosity,
};
use crate::types::{RequestId, SessionEvent, SessionId};
@@ -78,6 +78,8 @@ pub mod rpc_methods {
pub const PLUGINS_ENABLE: &str = "plugins.enable";
/// `plugins.disable`
pub const PLUGINS_DISABLE: &str = "plugins.disable";
+ /// `plugins.builtin.set`
+ pub const PLUGINS_BUILTIN_SET: &str = "plugins.builtin.set";
/// `plugins.marketplaces.list`
pub const PLUGINS_MARKETPLACES_LIST: &str = "plugins.marketplaces.list";
/// `plugins.marketplaces.add`
@@ -207,6 +209,23 @@ pub mod rpc_methods {
pub const SESSION_GITHUBAUTH_GETSTATUS: &str = "session.gitHubAuth.getStatus";
/// `session.gitHubAuth.setCredentials`
pub const SESSION_GITHUBAUTH_SETCREDENTIALS: &str = "session.gitHubAuth.setCredentials";
+ /// `session.gitHubAuth.getCurrentAuthInfo`
+ pub const SESSION_GITHUBAUTH_GETCURRENTAUTHINFO: &str = "session.gitHubAuth.getCurrentAuthInfo";
+ /// `session.gitHubAuth.getAllAuthAvailable`
+ pub const SESSION_GITHUBAUTH_GETALLAUTHAVAILABLE: &str =
+ "session.gitHubAuth.getAllAuthAvailable";
+ /// `session.gitHubAuth.refreshCopilotUser`
+ pub const SESSION_GITHUBAUTH_REFRESHCOPILOTUSER: &str = "session.gitHubAuth.refreshCopilotUser";
+ /// `session.gitHubAuth.login`
+ pub const SESSION_GITHUBAUTH_LOGIN: &str = "session.gitHubAuth.login";
+ /// `session.gitHubAuth.switchToAuth`
+ pub const SESSION_GITHUBAUTH_SWITCHTOAUTH: &str = "session.gitHubAuth.switchToAuth";
+ /// `session.gitHubAuth.logout`
+ pub const SESSION_GITHUBAUTH_LOGOUT: &str = "session.gitHubAuth.logout";
+ /// `session.gitHubAuth.logoutUser`
+ pub const SESSION_GITHUBAUTH_LOGOUTUSER: &str = "session.gitHubAuth.logoutUser";
+ /// `session.gitHubAuth.lastAuthErrors`
+ pub const SESSION_GITHUBAUTH_LASTAUTHERRORS: &str = "session.gitHubAuth.lastAuthErrors";
/// `session.debug.collectLogs`
pub const SESSION_DEBUG_COLLECTLOGS: &str = "session.debug.collectLogs";
/// `session.canvas.list`
@@ -219,6 +238,10 @@ pub mod rpc_methods {
pub const SESSION_CANVAS_CLOSE: &str = "session.canvas.close";
/// `session.canvas.action.invoke`
pub const SESSION_CANVAS_ACTION_INVOKE: &str = "session.canvas.action.invoke";
+ /// `session.canvas.provider.register`
+ pub const SESSION_CANVAS_PROVIDER_REGISTER: &str = "session.canvas.provider.register";
+ /// `session.canvas.provider.unregister`
+ pub const SESSION_CANVAS_PROVIDER_UNREGISTER: &str = "session.canvas.provider.unregister";
/// `session.factory.run`
pub const SESSION_FACTORY_RUN: &str = "session.factory.run";
/// `session.factory.resume`
@@ -404,6 +427,8 @@ pub mod rpc_methods {
"session.mcp.oauth.authenticationStateChanged";
/// `session.mcp.oauth.login`
pub const SESSION_MCP_OAUTH_LOGIN: &str = "session.mcp.oauth.login";
+ /// `session.mcp.oauth.probe`
+ pub const SESSION_MCP_OAUTH_PROBE: &str = "session.mcp.oauth.probe";
/// `session.mcp.oauth.respond`
pub const SESSION_MCP_OAUTH_RESPOND: &str = "session.mcp.oauth.respond";
/// `session.mcp.headers.handlePendingHeadersRefreshRequest`
@@ -1408,14 +1433,19 @@ pub struct AllowAllPermissionState {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CopilotUserResponseEndpoints {
+ /// Copilot API endpoint URL.
#[serde(skip_serializing_if = "Option::is_none")]
pub api: Option,
+ /// Experimental-service endpoint URL.
#[serde(skip_serializing_if = "Option::is_none")]
pub exp: Option,
+ /// Origin-tracker endpoint URL.
#[serde(rename = "origin-tracker", skip_serializing_if = "Option::is_none")]
pub origin_tracker: Option,
+ /// Copilot proxy endpoint URL.
#[serde(skip_serializing_if = "Option::is_none")]
pub proxy: Option,
+ /// Copilot telemetry endpoint URL.
#[serde(skip_serializing_if = "Option::is_none")]
pub telemetry: Option,
}
@@ -2251,6 +2281,24 @@ pub struct AttachmentSelection {
pub r#type: AttachmentSelectionType,
}
+/// Validation error from an authentication attempt.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct AuthValidationError {
+ /// Optional message returned by GitHub
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub github_message: Option,
+ /// Authentication validation error message
+ pub message: String,
+}
+
/// A well-known model in the runtime's built-in catalog.
///
///
@@ -2650,6 +2698,40 @@ pub struct CanvasProviderOpenResult {
pub url: Option
,
}
+/// Internal canvas provider registration parameters.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct CanvasProviderRegisterRequest {
+ /// Canvas contributions supplied by the provider
+ pub canvases: Vec,
+ /// Connection identifier for callback routing
+ pub connection_id: String,
+ /// Provider metadata supplied by the host
+ pub info: serde_json::Value,
+}
+
+/// Internal canvas provider unregistration parameters.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct CanvasProviderUnregisterRequest {
+ /// Connection identifier to unregister
+ pub connection_id: String,
+}
+
/// Options scoped to the built-in CAPI (Copilot API) provider.
///
///
@@ -3235,6 +3317,7 @@ pub struct DebugCollectLogsCollectedEntry {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DebugCollectLogsDestinationArchive {
+ /// Destination variant discriminator.
pub kind: DebugCollectLogsDestinationArchiveKind,
/// When true, create the archive atomically without overwriting an existing file by appending ` (N)` before the extension as needed. Defaults to false.
#[serde(skip_serializing_if = "Option::is_none")]
@@ -3246,6 +3329,7 @@ pub struct DebugCollectLogsDestinationArchive {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DebugCollectLogsDestinationDirectory {
+ /// Destination variant discriminator.
pub kind: DebugCollectLogsDestinationDirectoryKind,
/// Directory where redacted files should be staged. The directory is created if needed.
pub output_directory: String,
@@ -4161,23 +4245,39 @@ pub struct FactoryAgentResult {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactoryAgentSummary {
+ /// Accumulated active agent time in milliseconds.
pub active_ms: i64,
+ /// Prompt-safe live activity text.
#[serde(skip_serializing_if = "Option::is_none")]
pub activity: Option
,
+ /// Stable direct-agent identifier.
pub agent_id: String,
+ /// Registered agent type.
pub agent_type: String,
+ /// Epoch milliseconds when the agent completed.
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_at: Option,
+ /// Friendly, non-unique name intended for display
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub display_name: Option,
+ /// Friendly, non-unique name intended for display
pub label: String,
+ /// Phase identifier active when the agent was launched, or null.
pub phase_id: Option,
+ /// Model requested when the agent was launched.
#[serde(skip_serializing_if = "Option::is_none")]
pub requested_model: Option,
+ /// Concrete model resolved for the agent.
#[serde(skip_serializing_if = "Option::is_none")]
pub resolved_model: Option,
+ /// Owning factory run identifier.
pub run_id: String,
+ /// Epoch milliseconds when the agent started.
#[serde(skip_serializing_if = "Option::is_none")]
pub started_at: Option,
+ /// Current durable or live agent status.
pub status: String,
+ /// Tool-call identifier that launched the agent.
pub tool_call_id: String,
}
@@ -4207,7 +4307,9 @@ pub struct FactoryCancelRequest {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactoryCurrentPhase {
+ /// Current phase identifier.
pub id: String,
+ /// Zero-based declared phase ordinal, or null for an undeclared phase.
pub ordinal: Option,
}
@@ -4222,12 +4324,16 @@ pub struct FactoryCurrentPhase {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactoryDeclaredLimits {
+ /// Maximum AI credits consumed by subagents and descendants.
#[serde(skip_serializing_if = "Option::is_none")]
pub max_ai_credits: Option,
+ /// Maximum concurrently active subagents.
#[serde(skip_serializing_if = "Option::is_none")]
pub max_concurrent_subagents: Option,
+ /// Maximum total subagents spawned by the run.
#[serde(skip_serializing_if = "Option::is_none")]
pub max_total_subagents: Option,
+ /// Maximum accumulated active execution time in seconds.
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout_seconds: Option,
}
@@ -4404,8 +4510,11 @@ pub struct FactoryListRunsRequest {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactoryRunConsumed {
+ /// Accumulated active execution time in milliseconds.
pub active_ms: i64,
+ /// AI usage consumed by the run in nano-AIU.
pub nano_aiu: i64,
+ /// Total subagents spawned by the run.
pub subagents: i64,
}
@@ -4420,12 +4529,16 @@ pub struct FactoryRunConsumed {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactoryRunTerminal {
+ /// Human-readable terminal error.
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option,
+ /// Machine-readable terminal failure.
#[serde(skip_serializing_if = "Option::is_none")]
pub failure: Option,
+ /// Human-readable terminal reason.
#[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option,
+ /// Prompt-safe preview of the completed result.
#[serde(skip_serializing_if = "Option::is_none")]
pub result_preview: Option,
}
@@ -4441,24 +4554,43 @@ pub struct FactoryRunTerminal {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactoryRunSummary {
+ /// Epoch milliseconds when the current active segment started, or null while inactive.
pub active_segment_started_at: Option,
+ /// Approved effective resource ceilings, or null until approved.
pub approved: Option,
+ /// Epoch milliseconds when the run completed, or null while nonterminal.
pub completed_at: Option,
+ /// Durable resource consumption.
pub consumed: FactoryRunConsumed,
+ /// Epoch milliseconds when the run was created.
pub created_at: i64,
+ /// Current phase identity, or null before any phase is entered.
pub current_phase: Option,
+ /// Resource ceilings declared by the factory.
pub declared_limits: FactoryDeclaredLimits,
+ /// Number of phases declared by the factory.
pub declared_phase_count: i64,
+ /// Human-readable factory description.
pub description: String,
+ /// Registered factory name.
pub factory_name: String,
+ /// Number of direct factory agents currently live.
pub live_agent_count: i64,
+ /// Epoch milliseconds when this live-overlay snapshot was observed.
pub observed_at: i64,
+ /// Monotonic durable run revision.
pub revision: i64,
+ /// Factory run identifier.
pub run_id: String,
+ /// Epoch milliseconds when execution first started, or null before start.
pub started_at: Option,
+ /// Current factory run status.
pub status: FactoryRunStatus,
+ /// Terminal run outcome, or null while nonterminal.
pub terminal: Option,
+ /// Total direct factory agents spawned across all attempts.
pub total_spawned_agent_count: i64,
+ /// Epoch milliseconds when the durable run was last updated.
pub updated_at: i64,
}
@@ -4485,6 +4617,7 @@ pub struct FactoryListRunsResult {
/// Number of terminal runs older than this page.
#[serde(skip_serializing_if = "Option::is_none")]
pub omitted_older: Option,
+ /// Factory run summaries in durable creation order.
pub runs: Vec,
}
@@ -4537,21 +4670,34 @@ pub struct FactoryLogRequest {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactoryPhaseObservation {
+ /// Completed active time accumulated by this phase in milliseconds.
pub accumulated_active_ms: i64,
+ /// Epoch milliseconds when this phase completed; for a skipped phase, the synthetic skip timestamp (equal to `startedAt`).
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_at: Option,
+ /// Current live active time for this phase in milliseconds.
pub current_active_ms: i64,
+ /// Optional human-readable phase detail.
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option,
+ /// Number of times execution entered this phase.
pub entry_count: i64,
+ /// Phase identifier.
pub id: String,
+ /// Most recent run attempt that entered this phase, or `0` if the phase has never been entered.
pub last_entered_run_attempt: i64,
+ /// Direct agents in this phase that are currently live.
pub live_agent_count: i64,
+ /// Zero-based declared phase ordinal, or null for an undeclared phase.
pub ordinal: Option,
+ /// Epoch milliseconds when this phase first started; for a skipped phase, the synthetic skip timestamp (equal to `completedAt`).
#[serde(skip_serializing_if = "Option::is_none")]
pub started_at: Option,
+ /// Derived lifecycle state of the phase.
pub status: FactoryPhaseStatus,
+ /// Human-readable phase title.
pub title: String,
+ /// Total direct agents associated with this phase.
pub total_agent_count: i64,
}
@@ -4591,10 +4737,15 @@ pub struct FactoryProgressLine {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactoryProgressPage {
+ /// Whether progress records newer than this page exist.
pub has_more_newer: bool,
+ /// Whether progress records older than this page exist.
pub has_more_older: bool,
+ /// Newest sequence number in this page, or null when empty.
pub newest_seq: Option,
+ /// Oldest sequence number in this page, or null when empty.
pub oldest_seq: Option,
+ /// Progress records in sequence order.
pub records: Vec,
/// Run revision reflected by this page.
pub revision: i64,
@@ -4703,27 +4854,49 @@ pub struct FactoryResumeResult {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FactoryRunDetail {
+ /// Epoch milliseconds when the current active segment started, or null while inactive.
pub active_segment_started_at: Option,
+ /// Durable identities and live statuses for direct factory agents.
pub agents: Vec,
+ /// Approved effective resource ceilings, or null until approved.
pub approved: Option,
+ /// Epoch milliseconds when the run completed, or null while nonterminal.
pub completed_at: Option,
+ /// Durable resource consumption.
pub consumed: FactoryRunConsumed,
+ /// Epoch milliseconds when the run was created.
pub created_at: i64,
+ /// Current phase identity, or null before any phase is entered.
pub current_phase: Option,
+ /// Resource ceilings declared by the factory.
pub declared_limits: FactoryDeclaredLimits,
+ /// Number of phases declared by the factory.
pub declared_phase_count: i64,
+ /// Human-readable factory description.
pub description: String,
+ /// Registered factory name.
pub factory_name: String,
+ /// Number of direct factory agents currently live.
pub live_agent_count: i64,
+ /// Epoch milliseconds when this live-overlay snapshot was observed.
pub observed_at: i64,
+ /// Lifecycle and timing observations for each factory phase.
pub phases: Vec,
+ /// Bidirectional page of durable factory progress.
pub progress: FactoryProgressPage,
+ /// Monotonic durable run revision.
pub revision: i64,
+ /// Factory run identifier.
pub run_id: String,
+ /// Epoch milliseconds when execution first started, or null before start.
pub started_at: Option,
+ /// Current factory run status.
pub status: FactoryRunStatus,
+ /// Terminal run outcome, or null while nonterminal.
pub terminal: Option,
+ /// Total direct factory agents spawned across all attempts.
pub total_spawned_agent_count: i64,
+ /// Epoch milliseconds when the durable run was last updated.
pub updated_at: i64,
}
@@ -5475,10 +5648,13 @@ pub struct InstalledPluginInfo {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstalledPluginSourceGitHub {
+ /// Optional repository-relative path to the plugin.
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option,
+ /// Optional Git ref to resolve.
#[serde(skip_serializing_if = "Option::is_none")]
pub r#ref: Option,
+ /// GitHub repository in `owner/repo` form.
pub repo: String,
/// Optional full 40-character hexadecimal commit SHA.
#[serde(skip_serializing_if = "Option::is_none")]
@@ -5498,6 +5674,7 @@ pub struct InstalledPluginSourceGitHub {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstalledPluginSourceLocal {
+ /// Local filesystem path to the plugin.
pub path: String,
/// Constant value. Always "local".
pub source: InstalledPluginSourceLocalSource,
@@ -5514,8 +5691,10 @@ pub struct InstalledPluginSourceLocal {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct InstalledPluginSourceUrl {
+ /// Optional source-relative path to the plugin.
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option,
+ /// Optional Git ref to resolve.
#[serde(skip_serializing_if = "Option::is_none")]
pub r#ref: Option,
/// Optional full 40-character hexadecimal commit SHA.
@@ -5523,6 +5702,7 @@ pub struct InstalledPluginSourceUrl {
pub sha: Option,
/// Constant value. Always "url".
pub source: InstalledPluginSourceUrlSource,
+ /// URL of the plugin source.
pub url: String,
}
@@ -5726,6 +5906,7 @@ pub struct LlmInferenceHttpRequestStartRequest {
/// Identity of the agent invocation (one agentic loop) that issued this request. It remains fixed across physical retries within the invocation and is distinct from the stable trajectory `agentId`. A caller-supplied invocation id always takes precedence (this covers auxiliary calls that have no model call id). Otherwise, first-party CAPI requests fall back to the runtime's agent task id — the same value the runtime emits as the `X-Agent-Task-Id` header — while custom-provider requests fall back to the model call id.
#[serde(skip_serializing_if = "Option::is_none")]
pub agent_invocation_id: Option,
+ /// HTTP request headers, preserving multiple values per name.
pub headers: HashMap>,
/// Coarse classification of the interaction that produced this request. Open string for forward-compatibility; known values include `conversation-agent`, `conversation-subagent`, `conversation-sampling`, `conversation-background`, `conversation-compaction`, and `conversation-user`. Absent when the runtime did not classify the request. Comes from the runtime's per-request agent context independently of transport; on the CAPI transport the runtime derives the upstream `X-Interaction-Type` header from this same context.
#[serde(skip_serializing_if = "Option::is_none")]
@@ -5822,6 +6003,7 @@ pub struct LlmInferenceHttpResponseChunkResult {
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LlmInferenceHttpResponseStartRequest {
+ /// HTTP response headers, preserving multiple values per name.
pub headers: HashMap>,
/// Matches the requestId from the originating httpRequestStart frame.
pub request_id: RequestId,
@@ -6700,6 +6882,24 @@ pub struct McpExecuteSamplingParams {
pub server_name: String,
}
+/// MCP server whose connection attempt failed.
+///
+///
+///
+/// **Experimental.** This type is part of an experimental wire-protocol surface
+/// and may change or be removed in future SDK or CLI releases.
+///
+///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct McpFailedServer {
+ /// The captured connection failure detail.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub error: Option,
+ /// The config key of the server that failed to connect.
+ pub name: String,
+}
+
/// MCP server filtered by policy, with name, reason, and optional redacted reason.
///
///
@@ -6730,12 +6930,14 @@ pub struct McpFilteredServer {
pub struct McpHeadersHandlePendingHeadersRefreshRequestHeaders {
/// Headers to overlay onto the MCP request. Dynamic headers override static config headers but do not replace SDK-managed request headers.
pub headers: HashMap,
+ /// Headers-refresh response variant discriminator.
pub kind: McpHeadersHandlePendingHeadersRefreshRequestHeadersKind,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct McpHeadersHandlePendingHeadersRefreshRequestNone {
+ /// Headers-refresh response variant discriminator.
pub kind: McpHeadersHandlePendingHeadersRefreshRequestNoneKind,
}
@@ -6957,6 +7159,7 @@ pub struct McpOauthPendingRequestResponseToken {
/// Token lifetime in seconds, if known.
#[serde(skip_serializing_if = "Option::is_none")]
pub expires_in: Option