diff --git a/dotnet/src/Generated/Rpc.cs b/dotnet/src/Generated/Rpc.cs index 470fae6cb..691f4e718 100644 --- a/dotnet/src/Generated/Rpc.cs +++ b/dotnet/src/Generated/Rpc.cs @@ -1011,11 +1011,11 @@ internal sealed class SessionsReleaseLockRequest public string SessionId { get; set; } = string.Empty; } -/// The same metadata records, with summary and context fields backfilled where available. +/// The enriched metadata records, with summary and context fields backfilled where available. Sessions confirmed empty and unnamed are omitted. [Experimental(Diagnostics.Experimental)] public sealed class SessionEnrichMetadataResult { - /// Same records, with summary and context backfilled. + /// Enriched records, with summary and context backfilled. Sessions confirmed empty and unnamed may be omitted. [JsonPropertyName("sessions")] public IList Sessions { get => field ??= []; set; } } @@ -7449,6 +7449,7 @@ internal sealed class ScheduleStopRequest } /// Describes a filesystem error. +[Experimental(Diagnostics.Experimental)] public sealed class SessionFsError { /// Error classification. @@ -7461,6 +7462,7 @@ public sealed class SessionFsError } /// File content as a UTF-8 string, or a filesystem error if the read failed. +[Experimental(Diagnostics.Experimental)] public sealed class SessionFsReadFileResult { /// File content as UTF-8 string. @@ -7525,6 +7527,7 @@ public sealed class SessionFsAppendFileRequest } /// Indicates whether the requested path exists in the client-provided session filesystem. +[Experimental(Diagnostics.Experimental)] public sealed class SessionFsExistsResult { /// Whether the path exists. @@ -7545,6 +7548,7 @@ public sealed class SessionFsExistsRequest } /// Filesystem metadata for the requested path, or a filesystem error if the stat failed. +[Experimental(Diagnostics.Experimental)] public sealed class SessionFsStatResult { /// ISO 8601 timestamp of creation. @@ -7605,6 +7609,7 @@ public sealed class SessionFsMkdirRequest } /// Names of entries in the requested directory, or a filesystem error if the read failed. +[Experimental(Diagnostics.Experimental)] public sealed class SessionFsReaddirResult { /// Entry names in the directory. @@ -7629,6 +7634,7 @@ public sealed class SessionFsReaddirRequest } /// Schema for the `SessionFsReaddirWithTypesEntry` type. +[Experimental(Diagnostics.Experimental)] public sealed class SessionFsReaddirWithTypesEntry { /// Entry name. @@ -7641,6 +7647,7 @@ public sealed class SessionFsReaddirWithTypesEntry } /// Entries in the requested directory paired with file/directory type information, or a filesystem error if the read failed. +[Experimental(Diagnostics.Experimental)] public sealed class SessionFsReaddirWithTypesResult { /// Directory entries with type information. @@ -7701,6 +7708,7 @@ public sealed class SessionFsRenameRequest } /// Query results including rows, columns, and rows affected, or a filesystem error if execution failed. +[Experimental(Diagnostics.Experimental)] public sealed class SessionFsSqliteQueryResult { /// Column names from the result set. @@ -7745,6 +7753,7 @@ public sealed class SessionFsSqliteQueryRequest } /// Indicates whether the per-session SQLite database already exists. +[Experimental(Diagnostics.Experimental)] public sealed class SessionFsSqliteExistsResult { /// Whether the session database already exists. @@ -7760,6 +7769,125 @@ public sealed class SessionFsSqliteExistsRequest public string SessionId { get; set; } = string.Empty; } +/// Canvas open result returned by the provider. +[Experimental(Diagnostics.Experimental)] +public sealed class CanvasProviderOpenResult +{ + /// Provider-supplied status text. + [JsonPropertyName("status")] + public string? Status { get; set; } + + /// Provider-supplied title. + [JsonPropertyName("title")] + public string? Title { get; set; } + + /// URL for web-rendered canvases. + [JsonPropertyName("url")] + public string? Url { get; set; } +} + +/// Host capabilities. +[Experimental(Diagnostics.Experimental)] +public sealed class CanvasHostContextCapabilities +{ + /// Whether canvas rendering is supported. + [JsonPropertyName("canvases")] + public bool? Canvases { get; set; } +} + +/// Host context supplied by the runtime. +[Experimental(Diagnostics.Experimental)] +public sealed class CanvasHostContext +{ + /// Host capabilities. + [JsonPropertyName("capabilities")] + public CanvasHostContextCapabilities? Capabilities { get; set; } +} + +/// Canvas open parameters sent to the provider. +public sealed class CanvasProviderOpenRequest +{ + /// Provider-local canvas identifier. + [JsonPropertyName("canvasId")] + public string CanvasId { get; set; } = string.Empty; + + /// Owning provider identifier. + [JsonPropertyName("extensionId")] + public string ExtensionId { get; set; } = string.Empty; + + /// Host context supplied by the runtime. + [JsonPropertyName("host")] + public CanvasHostContext? Host { get; set; } + + /// Canvas open input. + [JsonPropertyName("input")] + public JsonElement? Input { get; set; } + + /// Stable caller-supplied canvas instance identifier. + [JsonPropertyName("instanceId")] + public string InstanceId { get; set; } = string.Empty; + + /// Target session identifier. + [JsonPropertyName("sessionId")] + public string SessionId { get; set; } = string.Empty; +} + +/// Canvas close parameters sent to the provider. +public sealed class CanvasProviderCloseRequest +{ + /// Provider-local canvas identifier. + [JsonPropertyName("canvasId")] + public string CanvasId { get; set; } = string.Empty; + + /// Owning provider identifier. + [JsonPropertyName("extensionId")] + public string ExtensionId { get; set; } = string.Empty; + + /// Host context supplied by the runtime. + [JsonPropertyName("host")] + public CanvasHostContext? Host { get; set; } + + /// Canvas instance identifier. + [JsonPropertyName("instanceId")] + public string InstanceId { get; set; } = string.Empty; + + /// Target session identifier. + [JsonPropertyName("sessionId")] + public string SessionId { get; set; } = string.Empty; +} + +/// Canvas action invocation parameters sent to the provider. +public sealed class CanvasProviderInvokeActionRequest +{ + /// Action name to invoke. + [JsonPropertyName("actionName")] + public string ActionName { get; set; } = string.Empty; + + /// Provider-local canvas identifier. + [JsonPropertyName("canvasId")] + public string CanvasId { get; set; } = string.Empty; + + /// Owning provider identifier. + [JsonPropertyName("extensionId")] + public string ExtensionId { get; set; } = string.Empty; + + /// Host context supplied by the runtime. + [JsonPropertyName("host")] + public CanvasHostContext? Host { get; set; } + + /// Action input. + [JsonPropertyName("input")] + public JsonElement? Input { get; set; } + + /// Canvas instance identifier. + [JsonPropertyName("instanceId")] + public string InstanceId { get; set; } = string.Empty; + + /// Target session identifier. + [JsonPropertyName("sessionId")] + public string SessionId { get; set; } = string.Empty; +} + /// Model capability category for grouping in the model picker. [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] @@ -11242,6 +11370,7 @@ public override void Write(Utf8JsonWriter writer, RemoteSessionMode value, JsonS /// Error classification. +[Experimental(Diagnostics.Experimental)] [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] public readonly struct SessionFsErrorCode : IEquatable @@ -11304,6 +11433,7 @@ public override void Write(Utf8JsonWriter writer, SessionFsErrorCode value, Json /// Entry type. +[Experimental(Diagnostics.Experimental)] [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] public readonly struct SessionFsReaddirWithTypesEntryType : IEquatable @@ -11366,6 +11496,7 @@ public override void Write(Utf8JsonWriter writer, SessionFsReaddirWithTypesEntry /// How to execute the query: 'exec' for DDL/multi-statement (no results), 'query' for SELECT (returns rows), 'run' for INSERT/UPDATE/DELETE (returns rowsAffected). +[Experimental(Diagnostics.Experimental)] [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] public readonly struct SessionFsSqliteQueryType : IEquatable @@ -11967,7 +12098,7 @@ public async Task ReleaseLockAsync(string sessionId, /// Backfills missing summary and context fields on the supplied session metadata records. /// Session metadata records to enrich. Records that already have summary and context are returned unchanged. /// The to monitor for cancellation requests. The default is . - /// The same metadata records, with summary and context fields backfilled where available. + /// The enriched metadata records, with summary and context fields backfilled where available. Sessions confirmed empty and unnamed are omitted. public async Task EnrichMetadataAsync(IList sessions, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(sessions); @@ -14477,6 +14608,7 @@ public async Task StopAsync(long id, CancellationToken cance } /// Handles `sessionFs` client session API methods. +[Experimental(Diagnostics.Experimental)] public interface ISessionFsHandler { /// Reads a file from the client-provided session filesystem. @@ -14541,11 +14673,34 @@ public interface ISessionFsHandler Task SqliteExistsAsync(SessionFsSqliteExistsRequest request, CancellationToken cancellationToken = default); } +/// Handles `canvas` client session API methods. +[Experimental(Diagnostics.Experimental)] +public interface ICanvasHandler +{ + /// Opens a canvas instance on the provider. + /// Canvas open parameters sent to the provider. + /// The to monitor for cancellation requests. The default is . + /// Canvas open result returned by the provider. + Task OpenAsync(CanvasProviderOpenRequest request, CancellationToken cancellationToken = default); + /// Closes a canvas instance on the provider. + /// Canvas close parameters sent to the provider. + /// The to monitor for cancellation requests. The default is . + Task CloseAsync(CanvasProviderCloseRequest request, CancellationToken cancellationToken = default); + /// Invokes an action on an open canvas instance via the provider. + /// Canvas action invocation parameters sent to the provider. + /// The to monitor for cancellation requests. The default is . + /// Provider-supplied action result. + Task InvokeActionAsync(CanvasProviderInvokeActionRequest request, CancellationToken cancellationToken = default); +} + /// Provides all client session API handler groups for a session. public sealed class ClientSessionApiHandlers { /// Optional handler for SessionFs client session API methods. public ISessionFsHandler? SessionFs { get; set; } + + /// Optional handler for Canvas client session API methods. + public ICanvasHandler? Canvas { get; set; } } /// Registers client session API handlers on a JSON-RPC connection. @@ -14630,6 +14785,24 @@ public static void RegisterClientSessionApiHandlers(JsonRpc rpc, Func>)(async (request, cancellationToken) => + { + var handler = getHandlers(request.SessionId).Canvas; + if (handler is null) throw new InvalidOperationException($"No canvas handler registered for session: {request.SessionId}"); + return await handler.OpenAsync(request, cancellationToken); + }), singleObjectParam: true); + rpc.SetLocalRpcMethod("canvas.close", (Func)(async (request, cancellationToken) => + { + var handler = getHandlers(request.SessionId).Canvas; + if (handler is null) throw new InvalidOperationException($"No canvas handler registered for session: {request.SessionId}"); + await handler.CloseAsync(request, cancellationToken); + }), singleObjectParam: true); + rpc.SetLocalRpcMethod("canvas.invokeAction", (Func>)(async (request, cancellationToken) => + { + var handler = getHandlers(request.SessionId).Canvas; + if (handler is null) throw new InvalidOperationException($"No canvas handler registered for session: {request.SessionId}"); + return await handler.InvokeActionAsync(request, cancellationToken); + }), singleObjectParam: true); } } @@ -14895,11 +15068,17 @@ public static void RegisterClientSessionApiHandlers(JsonRpc rpc, Func => connection.sendRequest("sessions.enrichMetadata", params), @@ -11147,9 +11341,36 @@ export interface SessionFsHandler { sqliteExists(params: SessionFsSqliteExistsRequest): Promise; } +/** Handler for `canvas` client session API methods. */ +export interface CanvasHandler { + /** + * Opens a canvas instance on the provider. + * + * @param params Canvas open parameters sent to the provider. + * + * @returns Canvas open result returned by the provider. + */ + open(params: CanvasProviderOpenRequest): Promise; + /** + * Closes a canvas instance on the provider. + * + * @param params Canvas close parameters sent to the provider. + */ + close(params: CanvasProviderCloseRequest): Promise; + /** + * Invokes an action on an open canvas instance via the provider. + * + * @param params Canvas action invocation parameters sent to the provider. + * + * @returns Provider-supplied action result. + */ + invokeAction(params: CanvasProviderInvokeActionRequest): Promise; +} + /** All client session API handler groups. */ export interface ClientSessionApiHandlers { sessionFs?: SessionFsHandler; + canvas?: CanvasHandler; } /** @@ -11222,4 +11443,19 @@ export function registerClientSessionApiHandlers( if (!handler) throw new Error(`No sessionFs handler registered for session: ${params.sessionId}`); return handler.sqliteExists(params); }); + connection.onRequest("canvas.open", async (params: CanvasProviderOpenRequest) => { + const handler = getHandlers(params.sessionId).canvas; + if (!handler) throw new Error(`No canvas handler registered for session: ${params.sessionId}`); + return handler.open(params); + }); + connection.onRequest("canvas.close", async (params: CanvasProviderCloseRequest) => { + const handler = getHandlers(params.sessionId).canvas; + if (!handler) throw new Error(`No canvas handler registered for session: ${params.sessionId}`); + return handler.close(params); + }); + connection.onRequest("canvas.invokeAction", async (params: CanvasProviderInvokeActionRequest) => { + const handler = getHandlers(params.sessionId).canvas; + if (!handler) throw new Error(`No canvas handler registered for session: ${params.sessionId}`); + return handler.invokeAction(params); + }); } diff --git a/python/copilot/generated/rpc.py b/python/copilot/generated/rpc.py index b438ae5dc..211e15ca6 100644 --- a/python/copilot/generated/rpc.py +++ b/python/copilot/generated/rpc.py @@ -357,26 +357,6 @@ def to_dict(self) -> dict: result["input"] = self.input return result -# Experimental: this type is part of an experimental API and may change or be removed. -@dataclass -class CanvasInvokeActionResult: - """Canvas action invocation result.""" - - result: Any = None - """Provider-supplied action result""" - - @staticmethod - def from_dict(obj: Any) -> 'CanvasInvokeActionResult': - assert isinstance(obj, dict) - result = obj.get("result") - return CanvasInvokeActionResult(result) - - def to_dict(self) -> dict: - result: dict = {} - if self.result is not None: - result["result"] = self.result - return result - # Experimental: this type is part of an experimental API and may change or be removed. @dataclass class CanvasOpenRequest: @@ -414,6 +394,38 @@ def to_dict(self) -> dict: result["input"] = self.input return result +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class CanvasProviderOpenResult: + """Canvas open result returned by the provider.""" + + status: str | None = None + """Provider-supplied status text""" + + title: str | None = None + """Provider-supplied title""" + + url: str | None = None + """URL for web-rendered canvases""" + + @staticmethod + def from_dict(obj: Any) -> 'CanvasProviderOpenResult': + assert isinstance(obj, dict) + status = from_union([from_str, from_none], obj.get("status")) + title = from_union([from_str, from_none], obj.get("title")) + url = from_union([from_str, from_none], obj.get("url")) + return CanvasProviderOpenResult(status, title, url) + + def to_dict(self) -> dict: + result: dict = {} + if self.status is not None: + result["status"] = from_union([from_str, from_none], self.status) + if self.title is not None: + result["title"] = from_union([from_str, from_none], self.title) + 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. class SlashCommandInputCompletion(Enum): """Optional completion hint for the input (e.g. 'directory' for filesystem path completion)""" @@ -1822,17 +1834,17 @@ def to_dict(self) -> dict: return result @dataclass -class MCPServerConfigHTTPAuth: +class AuthAuth: """Additional authentication configuration for this server.""" redirect_port: int | None = None """Fixed port for the OAuth redirect callback server.""" @staticmethod - def from_dict(obj: Any) -> 'MCPServerConfigHTTPAuth': + def from_dict(obj: Any) -> 'AuthAuth': assert isinstance(obj, dict) redirect_port = from_union([from_int, from_none], obj.get("redirectPort")) - return MCPServerConfigHTTPAuth(redirect_port) + return AuthAuth(redirect_port) def to_dict(self) -> dict: result: dict = {} @@ -4134,6 +4146,7 @@ def to_dict(self) -> dict: result["freedBytes"] = from_dict(from_int, self.freed_bytes) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSAppendFileRequest: """File path, content to append, and optional mode for the client-provided session @@ -4169,12 +4182,14 @@ def to_dict(self) -> dict: result["mode"] = from_union([from_int, from_none], self.mode) return result +# Experimental: this type is part of an experimental API and may change or be removed. class SessionFSErrorCode(Enum): """Error classification""" ENOENT = "ENOENT" UNKNOWN = "UNKNOWN" +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSExistsRequest: """Path to test for existence in the client-provided session filesystem.""" @@ -4198,6 +4213,7 @@ def to_dict(self) -> dict: result["sessionId"] = from_str(self.session_id) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSExistsResult: """Indicates whether the requested path exists in the client-provided session filesystem.""" @@ -4216,6 +4232,7 @@ def to_dict(self) -> dict: result["exists"] = from_bool(self.exists) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSMkdirRequest: """Directory path to create in the client-provided session filesystem, with options for @@ -4252,6 +4269,7 @@ def to_dict(self) -> dict: result["recursive"] = from_union([from_bool, from_none], self.recursive) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSReadFileRequest: """Path of the file to read from the client-provided session filesystem.""" @@ -4275,6 +4293,7 @@ def to_dict(self) -> dict: result["sessionId"] = from_str(self.session_id) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSReaddirRequest: """Directory path whose entries should be listed from the client-provided session filesystem.""" @@ -4298,12 +4317,14 @@ def to_dict(self) -> dict: result["sessionId"] = from_str(self.session_id) return result +# Experimental: this type is part of an experimental API and may change or be removed. class SessionFSReaddirWithTypesEntryType(Enum): """Entry type""" DIRECTORY = "directory" FILE = "file" +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSReaddirWithTypesRequest: """Directory path whose entries (with type information) should be listed from the @@ -4328,6 +4349,7 @@ def to_dict(self) -> dict: result["sessionId"] = from_str(self.session_id) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSRenameRequest: """Source and destination paths for renaming or moving an entry in the client-provided @@ -4357,6 +4379,7 @@ def to_dict(self) -> dict: result["src"] = from_str(self.src) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSRmRequest: """Path to remove from the client-provided session filesystem, with options for recursive @@ -4436,6 +4459,7 @@ def to_dict(self) -> dict: result["success"] = from_bool(self.success) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSSqliteExistsRequest: """Identifies the target session.""" @@ -4454,6 +4478,7 @@ def to_dict(self) -> dict: result["sessionId"] = from_str(self.session_id) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSSqliteExistsResult: """Indicates whether the per-session SQLite database already exists.""" @@ -4472,6 +4497,7 @@ def to_dict(self) -> dict: result["exists"] = from_bool(self.exists) return result +# Experimental: this type is part of an experimental API and may change or be removed. class SessionFSSqliteQueryType(Enum): """How to execute the query: 'exec' for DDL/multi-statement (no results), 'query' for SELECT (returns rows), 'run' for INSERT/UPDATE/DELETE (returns rowsAffected) @@ -4480,6 +4506,7 @@ class SessionFSSqliteQueryType(Enum): QUERY = "query" RUN = "run" +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSStatRequest: """Path whose metadata should be returned from the client-provided session filesystem.""" @@ -4503,6 +4530,7 @@ def to_dict(self) -> dict: result["sessionId"] = from_str(self.session_id) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSWriteFileRequest: """File path, content to write, and optional mode for the client-provided session filesystem.""" @@ -7049,6 +7077,9 @@ class MCPServerConfigStdio: args: list[str] | None = None """Command-line arguments passed to the Stdio MCP server process.""" + auth: bool | dict[str, Any] | None = None + """Authentication configuration for this server.""" + cwd: str | None = None """Working directory for the Stdio MCP server process.""" @@ -7063,6 +7094,9 @@ class MCPServerConfigStdio: """Whether this server is a built-in fallback used when the user has not configured their own server. """ + oidc: bool | dict[str, Any] | None = None + """OIDC token configuration. When truthy, a token is automatically gathered.""" + timeout: int | None = None """Timeout in milliseconds for tool calls to this server.""" @@ -7074,19 +7108,23 @@ 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, lambda x: from_dict(lambda x: x, x), from_none], obj.get("auth")) cwd = from_union([from_str, from_none], obj.get("cwd")) 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, lambda x: from_dict(lambda x: x, x), 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, cwd, env, filter_mapping, is_default_server, timeout, tools) + return MCPServerConfigStdio(command, args, auth, cwd, 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: from_dict(lambda x: x, x), from_none], self.auth) if self.cwd is not None: result["cwd"] = from_union([from_str, from_none], self.cwd) if self.env is not None: @@ -7095,12 +7133,34 @@ def to_dict(self) -> dict: 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: from_dict(lambda x: x, 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 CanvasHostContextCapabilities: + """Host capabilities""" + + canvases: bool | None = None + """Whether canvas rendering is supported""" + + @staticmethod + def from_dict(obj: Any) -> 'CanvasHostContextCapabilities': + assert isinstance(obj, dict) + canvases = from_union([from_bool, from_none], obj.get("canvases")) + return CanvasHostContextCapabilities(canvases) + + def to_dict(self) -> dict: + result: dict = {} + if self.canvases is not None: + result["canvases"] = from_union([from_bool, from_none], self.canvases) + return result + # Experimental: this type is part of an experimental API and may change or be removed. @dataclass class CopilotUserResponseQuotaSnapshots: @@ -8092,6 +8152,11 @@ class MCPServerConfig: args: list[str] | None = None """Command-line arguments passed to the Stdio MCP server process.""" + auth: bool | AuthAuth | None = None + """Authentication configuration for this server. + + Additional authentication configuration for this server. + """ command: str | None = None """Executable command used to start the Stdio MCP server process.""" @@ -8109,15 +8174,15 @@ class MCPServerConfig: """Whether this server is a built-in fallback used when the user has not configured their own server. """ + oidc: bool | dict[str, Any] | None = None + """OIDC token configuration. When truthy, a token is automatically gathered.""" + 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.""" - auth: MCPServerConfigHTTPAuth | None = None - """Additional authentication configuration for this server.""" - headers: dict[str, str] | None = None """HTTP headers to include in requests to the remote MCP server.""" @@ -8140,26 +8205,29 @@ class MCPServerConfig: 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, AuthAuth.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")) 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, lambda x: from_dict(lambda x: x, x), 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")) - auth = from_union([MCPServerConfigHTTPAuth.from_dict, from_none], obj.get("auth")) 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([MCPServerConfigHTTPOauthGrantType, 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, command, cwd, env, filter_mapping, is_default_server, timeout, tools, auth, headers, oauth_client_id, oauth_grant_type, oauth_public_client, type, url) + return MCPServerConfig(args, auth, command, cwd, 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(AuthAuth, 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: @@ -8170,12 +8238,12 @@ def to_dict(self) -> dict: 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: from_dict(lambda x: x, 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.auth is not None: - result["auth"] = from_union([lambda x: to_class(MCPServerConfigHTTPAuth, x), from_none], self.auth) 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: @@ -8197,7 +8265,7 @@ class MCPServerConfigHTTP: url: str """URL of the remote MCP server endpoint.""" - auth: MCPServerConfigHTTPAuth | None = None + auth: AuthAuth | None = None """Additional authentication configuration for this server.""" filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode | None = None @@ -8220,6 +8288,9 @@ class MCPServerConfigHTTP: oauth_public_client: bool | None = None """Whether the configured OAuth client is public and does not require a client secret.""" + oidc: bool | dict[str, Any] | None = None + """OIDC token configuration. When truthy, a token is automatically gathered.""" + timeout: int | None = None """Timeout in milliseconds for tool calls to this server.""" @@ -8233,23 +8304,24 @@ class MCPServerConfigHTTP: def from_dict(obj: Any) -> 'MCPServerConfigHTTP': assert isinstance(obj, dict) url = from_str(obj.get("url")) - auth = from_union([MCPServerConfigHTTPAuth.from_dict, from_none], obj.get("auth")) + auth = from_union([AuthAuth.from_dict, from_none], obj.get("auth")) 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([MCPServerConfigHTTPOauthGrantType, from_none], obj.get("oauthGrantType")) oauth_public_client = from_union([from_bool, from_none], obj.get("oauthPublicClient")) + oidc = from_union([from_bool, lambda x: from_dict(lambda x: x, x), 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, filter_mapping, headers, is_default_server, oauth_client_id, oauth_grant_type, oauth_public_client, timeout, tools, type) + return MCPServerConfigHTTP(url, auth, 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([lambda x: to_class(MCPServerConfigHTTPAuth, x), from_none], self.auth) + result["auth"] = from_union([lambda x: to_class(AuthAuth, x), from_none], self.auth) 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: @@ -8262,6 +8334,8 @@ def to_dict(self) -> dict: result["oauthGrantType"] = from_union([lambda x: to_enum(MCPServerConfigHTTPOauthGrantType, 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: from_dict(lambda x: x, 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: @@ -10183,6 +10257,7 @@ def to_dict(self) -> dict: result["skills"] = from_list(lambda x: to_class(ServerSkill, x), self.skills) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSError: """Describes a filesystem error.""" @@ -10207,6 +10282,7 @@ def to_dict(self) -> dict: result["message"] = from_union([from_str, from_none], self.message) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSReaddirWithTypesEntry: """Schema for the `SessionFsReaddirWithTypesEntry` type.""" @@ -10265,6 +10341,7 @@ def to_dict(self) -> dict: result["capabilities"] = from_union([lambda x: to_class(SessionFSSetProviderCapabilities, x), from_none], self.capabilities) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSSqliteQueryRequest: """SQL query, query type, and optional bind parameters for executing a SQLite query against @@ -11479,6 +11556,26 @@ def to_dict(self) -> dict: result["sessionId"] = from_str(self.session_id) return result +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class CanvasHostContext: + """Host context supplied by the runtime.""" + + capabilities: CanvasHostContextCapabilities | None = None + """Host capabilities""" + + @staticmethod + def from_dict(obj: Any) -> 'CanvasHostContext': + assert isinstance(obj, dict) + capabilities = from_union([CanvasHostContextCapabilities.from_dict, from_none], obj.get("capabilities")) + return CanvasHostContext(capabilities) + + def to_dict(self) -> dict: + result: dict = {} + if self.capabilities is not None: + result["capabilities"] = from_union([lambda x: to_class(CanvasHostContextCapabilities, x), from_none], self.capabilities) + return result + # Experimental: this type is part of an experimental API and may change or be removed. @dataclass class CopilotUserResponse: @@ -12428,6 +12525,7 @@ def to_dict(self) -> dict: result["type"] = self.type return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSReadFileResult: """File content as a UTF-8 string, or a filesystem error if the read failed.""" @@ -12452,6 +12550,7 @@ def to_dict(self) -> dict: result["error"] = from_union([lambda x: to_class(SessionFSError, x), from_none], self.error) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSReaddirResult: """Names of entries in the requested directory, or a filesystem error if the read failed.""" @@ -12476,6 +12575,7 @@ def to_dict(self) -> dict: result["error"] = from_union([lambda x: to_class(SessionFSError, x), from_none], self.error) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSSqliteQueryResult: """Query results including rows, columns, and rows affected, or a filesystem error if @@ -12517,6 +12617,7 @@ def to_dict(self) -> dict: result["lastInsertRowid"] = from_union([from_int, from_none], self.last_insert_rowid) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSStatResult: """Filesystem metadata for the requested path, or a filesystem error if the stat failed.""" @@ -12561,6 +12662,7 @@ def to_dict(self) -> dict: result["error"] = from_union([lambda x: to_class(SessionFSError, x), from_none], self.error) return result +# Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionFSReaddirWithTypesResult: """Entries in the requested directory paired with file/directory type information, or a @@ -13125,6 +13227,143 @@ def to_dict(self) -> dict: result["commands"] = from_list(lambda x: to_class(SlashCommandInfo, x), self.commands) return result +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class CanvasProviderCloseRequest: + """Canvas close parameters sent to the provider.""" + + canvas_id: str + """Provider-local canvas identifier""" + + extension_id: str + """Owning provider identifier""" + + instance_id: str + """Canvas instance identifier""" + + session_id: str + """Target session identifier""" + + host: CanvasHostContext | None = None + """Host context supplied by the runtime.""" + + @staticmethod + def from_dict(obj: Any) -> 'CanvasProviderCloseRequest': + assert isinstance(obj, dict) + canvas_id = from_str(obj.get("canvasId")) + extension_id = from_str(obj.get("extensionId")) + instance_id = from_str(obj.get("instanceId")) + session_id = from_str(obj.get("sessionId")) + host = from_union([CanvasHostContext.from_dict, from_none], obj.get("host")) + return CanvasProviderCloseRequest(canvas_id, extension_id, instance_id, session_id, host) + + def to_dict(self) -> dict: + result: dict = {} + result["canvasId"] = from_str(self.canvas_id) + result["extensionId"] = from_str(self.extension_id) + result["instanceId"] = from_str(self.instance_id) + result["sessionId"] = from_str(self.session_id) + if self.host is not None: + result["host"] = from_union([lambda x: to_class(CanvasHostContext, x), from_none], self.host) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class CanvasProviderInvokeActionRequest: + """Canvas action invocation parameters sent to the provider.""" + + action_name: str + """Action name to invoke""" + + canvas_id: str + """Provider-local canvas identifier""" + + extension_id: str + """Owning provider identifier""" + + instance_id: str + """Canvas instance identifier""" + + session_id: str + """Target session identifier""" + + host: CanvasHostContext | None = None + """Host context supplied by the runtime.""" + + input: Any = None + """Action input""" + + @staticmethod + def from_dict(obj: Any) -> 'CanvasProviderInvokeActionRequest': + assert isinstance(obj, dict) + action_name = from_str(obj.get("actionName")) + canvas_id = from_str(obj.get("canvasId")) + extension_id = from_str(obj.get("extensionId")) + instance_id = from_str(obj.get("instanceId")) + session_id = from_str(obj.get("sessionId")) + host = from_union([CanvasHostContext.from_dict, from_none], obj.get("host")) + input = obj.get("input") + return CanvasProviderInvokeActionRequest(action_name, canvas_id, extension_id, instance_id, session_id, host, input) + + def to_dict(self) -> dict: + result: dict = {} + result["actionName"] = from_str(self.action_name) + result["canvasId"] = from_str(self.canvas_id) + result["extensionId"] = from_str(self.extension_id) + result["instanceId"] = from_str(self.instance_id) + result["sessionId"] = from_str(self.session_id) + if self.host is not None: + result["host"] = from_union([lambda x: to_class(CanvasHostContext, x), from_none], self.host) + if self.input is not None: + result["input"] = self.input + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class CanvasProviderOpenRequest: + """Canvas open parameters sent to the provider.""" + + canvas_id: str + """Provider-local canvas identifier""" + + extension_id: str + """Owning provider identifier""" + + instance_id: str + """Stable caller-supplied canvas instance identifier""" + + session_id: str + """Target session identifier""" + + host: CanvasHostContext | None = None + """Host context supplied by the runtime.""" + + input: Any = None + """Canvas open input""" + + @staticmethod + def from_dict(obj: Any) -> 'CanvasProviderOpenRequest': + assert isinstance(obj, dict) + canvas_id = from_str(obj.get("canvasId")) + extension_id = from_str(obj.get("extensionId")) + instance_id = from_str(obj.get("instanceId")) + session_id = from_str(obj.get("sessionId")) + host = from_union([CanvasHostContext.from_dict, from_none], obj.get("host")) + input = obj.get("input") + return CanvasProviderOpenRequest(canvas_id, extension_id, instance_id, session_id, host, input) + + def to_dict(self) -> dict: + result: dict = {} + result["canvasId"] = from_str(self.canvas_id) + result["extensionId"] = from_str(self.extension_id) + result["instanceId"] = from_str(self.instance_id) + result["sessionId"] = from_str(self.session_id) + if self.host is not None: + result["host"] = from_union([lambda x: to_class(CanvasHostContext, x), from_none], self.host) + if self.input is not None: + result["input"] = self.input + return result + # Experimental: this type is part of an experimental API and may change or be removed. @dataclass class APIKeyAuthInfo: @@ -13656,10 +13895,13 @@ def to_dict(self) -> dict: # Experimental: this type is part of an experimental API and may change or be removed. @dataclass class SessionEnrichMetadataResult: - """The same metadata records, with summary and context fields backfilled where available.""" - + """The enriched metadata records, with summary and context fields backfilled where + available. Sessions confirmed empty and unnamed are omitted. + """ sessions: list[SessionMetadata] - """Same records, with summary and context backfilled""" + """Enriched records, with summary and context backfilled. Sessions confirmed empty and + unnamed may be omitted. + """ @staticmethod def from_dict(obj: Any) -> 'SessionEnrichMetadataResult': @@ -14617,13 +14859,19 @@ class RPC: auth_info_type: AuthInfoType canvas_action: CanvasAction canvas_close_request: CanvasCloseRequest + canvas_host_context: CanvasHostContext + canvas_host_context_capabilities: CanvasHostContextCapabilities canvas_instance_availability: CanvasInstanceAvailability canvas_invoke_action_request: CanvasInvokeActionRequest - canvas_invoke_action_result: CanvasInvokeActionResult + canvas_invoke_action_result: Any canvas_json_schema: Any canvas_list: CanvasList canvas_list_open_result: CanvasListOpenResult canvas_open_request: CanvasOpenRequest + canvas_provider_close_request: CanvasProviderCloseRequest + canvas_provider_invoke_action_request: CanvasProviderInvokeActionRequest + canvas_provider_open_request: CanvasProviderOpenRequest + canvas_provider_open_result: CanvasProviderOpenResult command_list: CommandList commands_handle_pending_command_request: CommandsHandlePendingCommandRequest commands_handle_pending_command_result: CommandsHandlePendingCommandResult @@ -14756,10 +15004,13 @@ class RPC: mcp_server: MCPServer mcp_server_config: MCPServerConfig mcp_server_config_http: MCPServerConfigHTTP - mcp_server_config_http_auth: MCPServerConfigHTTPAuth + mcp_server_config_http_auth: AuthAuth mcp_server_config_http_oauth_grant_type: MCPServerConfigHTTPOauthGrantType + mcp_server_config_http_oidc: bool | dict[str, Any] mcp_server_config_http_type: MCPServerConfigHTTPType mcp_server_config_stdio: MCPServerConfigStdio + mcp_server_config_stdio_auth: bool | dict[str, Any] + mcp_server_config_stdio_oidc: bool | dict[str, Any] mcp_server_list: MCPServerList mcp_set_env_value_mode_details: MCPSetEnvValueModeDetails mcp_set_env_value_mode_params: MCPSetEnvValueModeParams @@ -15168,13 +15419,19 @@ def from_dict(obj: Any) -> 'RPC': auth_info_type = AuthInfoType(obj.get("AuthInfoType")) canvas_action = CanvasAction.from_dict(obj.get("CanvasAction")) canvas_close_request = CanvasCloseRequest.from_dict(obj.get("CanvasCloseRequest")) + canvas_host_context = CanvasHostContext.from_dict(obj.get("CanvasHostContext")) + canvas_host_context_capabilities = CanvasHostContextCapabilities.from_dict(obj.get("CanvasHostContextCapabilities")) canvas_instance_availability = CanvasInstanceAvailability(obj.get("CanvasInstanceAvailability")) canvas_invoke_action_request = CanvasInvokeActionRequest.from_dict(obj.get("CanvasInvokeActionRequest")) - canvas_invoke_action_result = CanvasInvokeActionResult.from_dict(obj.get("CanvasInvokeActionResult")) + canvas_invoke_action_result = obj.get("CanvasInvokeActionResult") canvas_json_schema = obj.get("CanvasJsonSchema") canvas_list = CanvasList.from_dict(obj.get("CanvasList")) canvas_list_open_result = CanvasListOpenResult.from_dict(obj.get("CanvasListOpenResult")) canvas_open_request = CanvasOpenRequest.from_dict(obj.get("CanvasOpenRequest")) + canvas_provider_close_request = CanvasProviderCloseRequest.from_dict(obj.get("CanvasProviderCloseRequest")) + 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")) command_list = CommandList.from_dict(obj.get("CommandList")) commands_handle_pending_command_request = CommandsHandlePendingCommandRequest.from_dict(obj.get("CommandsHandlePendingCommandRequest")) commands_handle_pending_command_result = CommandsHandlePendingCommandResult.from_dict(obj.get("CommandsHandlePendingCommandResult")) @@ -15307,10 +15564,13 @@ def from_dict(obj: Any) -> 'RPC': mcp_server = MCPServer.from_dict(obj.get("McpServer")) mcp_server_config = MCPServerConfig.from_dict(obj.get("McpServerConfig")) mcp_server_config_http = MCPServerConfigHTTP.from_dict(obj.get("McpServerConfigHttp")) - mcp_server_config_http_auth = MCPServerConfigHTTPAuth.from_dict(obj.get("McpServerConfigHttpAuth")) + mcp_server_config_http_auth = AuthAuth.from_dict(obj.get("McpServerConfigHttpAuth")) mcp_server_config_http_oauth_grant_type = MCPServerConfigHTTPOauthGrantType(obj.get("McpServerConfigHttpOauthGrantType")) + mcp_server_config_http_oidc = from_union([from_bool, lambda x: from_dict(lambda x: x, x)], obj.get("McpServerConfigHttpOidc")) mcp_server_config_http_type = MCPServerConfigHTTPType(obj.get("McpServerConfigHttpType")) mcp_server_config_stdio = MCPServerConfigStdio.from_dict(obj.get("McpServerConfigStdio")) + mcp_server_config_stdio_auth = from_union([from_bool, lambda x: from_dict(lambda x: x, x)], obj.get("McpServerConfigStdioAuth")) + mcp_server_config_stdio_oidc = from_union([from_bool, lambda x: from_dict(lambda x: x, x)], obj.get("McpServerConfigStdioOidc")) mcp_server_list = MCPServerList.from_dict(obj.get("McpServerList")) mcp_set_env_value_mode_details = MCPSetEnvValueModeDetails(obj.get("McpSetEnvValueModeDetails")) mcp_set_env_value_mode_params = MCPSetEnvValueModeParams.from_dict(obj.get("McpSetEnvValueModeParams")) @@ -15698,7 +15958,7 @@ def from_dict(obj: Any) -> 'RPC': session_context_info = from_union([SessionContextInfo.from_dict, from_none], obj.get("SessionContextInfo")) 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_get_quota_request, account_get_quota_result, account_quota_snapshot, agent_get_current_result, agent_info, agent_info_source, agent_list, agent_reload_result, agent_select_request, agent_select_result, api_key_auth_info, auth_info, auth_info_type, canvas_action, canvas_close_request, canvas_instance_availability, canvas_invoke_action_request, canvas_invoke_action_result, canvas_json_schema, canvas_list, canvas_list_open_result, canvas_open_request, 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, connected_remote_session_metadata, connected_remote_session_metadata_kind, connected_remote_session_metadata_repository, connect_remote_session_params, connect_request, connect_result, content_filter_mode, 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, discovered_canvas, 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_result, execute_command_params, execute_command_result, extension, 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_terminal, external_tool_text_result_for_llm_content_text, filter_mapping, fleet_start_request, fleet_start_result, folder_trust_add_params, folder_trust_check_params, folder_trust_check_result, gh_cli_auth_info, handle_pending_tool_call_request, handle_pending_tool_call_result, history_abort_manual_compaction_result, history_cancel_background_compaction_result, history_compact_context_window, history_compact_request, history_compact_result, history_summarize_for_handoff_result, history_truncate_request, history_truncate_result, hmac_auth_info, installed_plugin, installed_plugin_source, installed_plugin_source_github, installed_plugin_source_local, installed_plugin_source_url, instructions_get_sources_result, instructions_sources, instructions_sources_location, instructions_sources_type, log_request, log_result, lsp_initialize_request, 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_disable_request, mcp_discover_request, mcp_discover_result, mcp_enable_request, mcp_execute_sampling_params, mcp_execute_sampling_request, mcp_execute_sampling_result, mcp_oauth_login_request, mcp_oauth_login_result, mcp_remove_git_hub_result, mcp_sampling_execution_action, mcp_sampling_execution_result, mcp_server, mcp_server_config, mcp_server_config_http, mcp_server_config_http_auth, mcp_server_config_http_oauth_grant_type, mcp_server_config_http_type, mcp_server_config_stdio, mcp_server_list, mcp_set_env_value_mode_details, mcp_set_env_value_mode_params, mcp_set_env_value_mode_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_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_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, name_get_result, name_set_auto_request, name_set_auto_result, name_set_request, open_canvas_instance, options_update_env_value_mode, 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_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_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_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_reject, permission_decision_request, 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_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_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_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_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_update_request, plugin, plugin_list, queued_command_handled, queued_command_not_handled, queued_command_result, queue_pending_items, queue_pending_items_kind, queue_pending_items_result, queue_remove_most_recent_result, register_event_interest_params, register_event_interest_result, release_event_interest_params, remote_enable_request, remote_enable_result, remote_notify_steerable_changed_request, remote_notify_steerable_changed_result, remote_session_connection_result, remote_session_mode, schedule_entry, schedule_list, schedule_stop_request, schedule_stop_result, secrets_add_filter_values_request, secrets_add_filter_values_result, send_agent_mode, send_attachment, send_attachment_blob, send_attachment_directory, send_attachment_file, send_attachment_file_line_range, send_attachment_github_reference, send_attachment_github_reference_type, send_attachment_selection, send_attachment_selection_details, send_attachment_selection_details_end, send_attachment_selection_details_start, send_mode, send_request, send_result, server_skill, server_skill_list, session_auth_status, session_bulk_delete_result, 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_stat_request, session_fs_stat_result, session_fs_write_file_request, session_installed_plugin, session_installed_plugin_source, session_installed_plugin_source_github, session_installed_plugin_source_local, session_installed_plugin_source_url, session_list, session_list_filter, session_load_deferred_repo_hooks_result, session_log_level, session_mcp_apps_call_tool_result, session_metadata, session_metadata_snapshot, session_mode, session_prune_result, sessions_bulk_delete_request, sessions_check_in_use_request, sessions_check_in_use_result, sessions_close_request, sessions_close_result, sessions_enrich_metadata_request, session_set_credentials_params, session_set_credentials_result, 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_event_file_path_request, sessions_get_event_file_path_result, sessions_get_last_for_context_request, sessions_get_last_for_context_result, sessions_get_persisted_remote_steerable_request, sessions_get_persisted_remote_steerable_result, session_sizes, sessions_list_request, sessions_load_deferred_repo_hooks_request, sessions_prune_old_request, 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, session_update_options_params, session_update_options_result, session_working_directory_context, session_working_directory_context_host_type, shell_exec_request, shell_exec_result, shell_kill_request, shell_kill_result, shell_kill_signal, shutdown_request, skill, skill_list, skills_config_set_disabled_skills_request, skills_disable_request, skills_discover_request, skills_enable_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_completion, slash_command_invocation_result, slash_command_kind, slash_command_select_subcommand_option, slash_command_select_subcommand_result, slash_command_text_result, 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_initialize_and_validate_result, tools_list_request, 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_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_user_input_request, ui_register_direct_auto_mode_switch_handler_result, ui_unregister_direct_auto_mode_switch_handler_request, ui_unregister_direct_auto_mode_switch_handler_result, ui_user_input_response, 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, workspace_diff_file_change, workspace_diff_file_change_type, workspace_diff_mode, workspace_diff_result, workspaces_checkpoints, workspaces_create_file_request, workspaces_diff_request, workspaces_get_workspace_result, workspaces_list_checkpoints_result, workspaces_list_files_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, workspace_summary_host_type, workspaces_workspace_details_host_type, session_context_info, task_progress, workspace_summary) + return RPC(abort_request, abort_result, account_get_quota_request, account_get_quota_result, account_quota_snapshot, agent_get_current_result, agent_info, agent_info_source, agent_list, agent_reload_result, agent_select_request, agent_select_result, api_key_auth_info, auth_info, auth_info_type, canvas_action, canvas_close_request, canvas_host_context, canvas_host_context_capabilities, canvas_instance_availability, canvas_invoke_action_request, canvas_invoke_action_result, 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, 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, connected_remote_session_metadata, connected_remote_session_metadata_kind, connected_remote_session_metadata_repository, connect_remote_session_params, connect_request, connect_result, content_filter_mode, 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, discovered_canvas, 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_result, execute_command_params, execute_command_result, extension, 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_terminal, external_tool_text_result_for_llm_content_text, filter_mapping, fleet_start_request, fleet_start_result, folder_trust_add_params, folder_trust_check_params, folder_trust_check_result, gh_cli_auth_info, handle_pending_tool_call_request, handle_pending_tool_call_result, history_abort_manual_compaction_result, history_cancel_background_compaction_result, history_compact_context_window, history_compact_request, history_compact_result, history_summarize_for_handoff_result, history_truncate_request, history_truncate_result, hmac_auth_info, installed_plugin, installed_plugin_source, installed_plugin_source_github, installed_plugin_source_local, installed_plugin_source_url, instructions_get_sources_result, instructions_sources, instructions_sources_location, instructions_sources_type, log_request, log_result, lsp_initialize_request, 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_disable_request, mcp_discover_request, mcp_discover_result, mcp_enable_request, mcp_execute_sampling_params, mcp_execute_sampling_request, mcp_execute_sampling_result, mcp_oauth_login_request, mcp_oauth_login_result, mcp_remove_git_hub_result, mcp_sampling_execution_action, mcp_sampling_execution_result, mcp_server, mcp_server_config, mcp_server_config_http, mcp_server_config_http_auth, mcp_server_config_http_oauth_grant_type, mcp_server_config_http_oidc, mcp_server_config_http_type, mcp_server_config_stdio, mcp_server_config_stdio_auth, mcp_server_config_stdio_oidc, mcp_server_list, mcp_set_env_value_mode_details, mcp_set_env_value_mode_params, mcp_set_env_value_mode_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_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_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, name_get_result, name_set_auto_request, name_set_auto_result, name_set_request, open_canvas_instance, options_update_env_value_mode, 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_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_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_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_reject, permission_decision_request, 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_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_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_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_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_update_request, plugin, plugin_list, queued_command_handled, queued_command_not_handled, queued_command_result, queue_pending_items, queue_pending_items_kind, queue_pending_items_result, queue_remove_most_recent_result, register_event_interest_params, register_event_interest_result, release_event_interest_params, remote_enable_request, remote_enable_result, remote_notify_steerable_changed_request, remote_notify_steerable_changed_result, remote_session_connection_result, remote_session_mode, schedule_entry, schedule_list, schedule_stop_request, schedule_stop_result, secrets_add_filter_values_request, secrets_add_filter_values_result, send_agent_mode, send_attachment, send_attachment_blob, send_attachment_directory, send_attachment_file, send_attachment_file_line_range, send_attachment_github_reference, send_attachment_github_reference_type, send_attachment_selection, send_attachment_selection_details, send_attachment_selection_details_end, send_attachment_selection_details_start, send_mode, send_request, send_result, server_skill, server_skill_list, session_auth_status, session_bulk_delete_result, 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_stat_request, session_fs_stat_result, session_fs_write_file_request, session_installed_plugin, session_installed_plugin_source, session_installed_plugin_source_github, session_installed_plugin_source_local, session_installed_plugin_source_url, session_list, session_list_filter, session_load_deferred_repo_hooks_result, session_log_level, session_mcp_apps_call_tool_result, session_metadata, session_metadata_snapshot, session_mode, session_prune_result, sessions_bulk_delete_request, sessions_check_in_use_request, sessions_check_in_use_result, sessions_close_request, sessions_close_result, sessions_enrich_metadata_request, session_set_credentials_params, session_set_credentials_result, 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_event_file_path_request, sessions_get_event_file_path_result, sessions_get_last_for_context_request, sessions_get_last_for_context_result, sessions_get_persisted_remote_steerable_request, sessions_get_persisted_remote_steerable_result, session_sizes, sessions_list_request, sessions_load_deferred_repo_hooks_request, sessions_prune_old_request, 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, session_update_options_params, session_update_options_result, session_working_directory_context, session_working_directory_context_host_type, shell_exec_request, shell_exec_result, shell_kill_request, shell_kill_result, shell_kill_signal, shutdown_request, skill, skill_list, skills_config_set_disabled_skills_request, skills_disable_request, skills_discover_request, skills_enable_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_completion, slash_command_invocation_result, slash_command_kind, slash_command_select_subcommand_option, slash_command_select_subcommand_result, slash_command_text_result, 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_initialize_and_validate_result, tools_list_request, 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_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_user_input_request, ui_register_direct_auto_mode_switch_handler_result, ui_unregister_direct_auto_mode_switch_handler_request, ui_unregister_direct_auto_mode_switch_handler_result, ui_user_input_response, 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, workspace_diff_file_change, workspace_diff_file_change_type, workspace_diff_mode, workspace_diff_result, workspaces_checkpoints, workspaces_create_file_request, workspaces_diff_request, workspaces_get_workspace_result, workspaces_list_checkpoints_result, workspaces_list_files_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, workspace_summary_host_type, workspaces_workspace_details_host_type, session_context_info, task_progress, workspace_summary) def to_dict(self) -> dict: result: dict = {} @@ -15719,13 +15979,19 @@ def to_dict(self) -> dict: result["AuthInfoType"] = to_enum(AuthInfoType, self.auth_info_type) result["CanvasAction"] = to_class(CanvasAction, self.canvas_action) result["CanvasCloseRequest"] = to_class(CanvasCloseRequest, self.canvas_close_request) + result["CanvasHostContext"] = to_class(CanvasHostContext, self.canvas_host_context) + result["CanvasHostContextCapabilities"] = to_class(CanvasHostContextCapabilities, self.canvas_host_context_capabilities) result["CanvasInstanceAvailability"] = to_enum(CanvasInstanceAvailability, self.canvas_instance_availability) result["CanvasInvokeActionRequest"] = to_class(CanvasInvokeActionRequest, self.canvas_invoke_action_request) - result["CanvasInvokeActionResult"] = to_class(CanvasInvokeActionResult, self.canvas_invoke_action_result) + result["CanvasInvokeActionResult"] = self.canvas_invoke_action_result result["CanvasJsonSchema"] = self.canvas_json_schema result["CanvasList"] = to_class(CanvasList, self.canvas_list) result["CanvasListOpenResult"] = to_class(CanvasListOpenResult, self.canvas_list_open_result) result["CanvasOpenRequest"] = to_class(CanvasOpenRequest, self.canvas_open_request) + result["CanvasProviderCloseRequest"] = to_class(CanvasProviderCloseRequest, self.canvas_provider_close_request) + 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["CommandList"] = to_class(CommandList, self.command_list) result["CommandsHandlePendingCommandRequest"] = to_class(CommandsHandlePendingCommandRequest, self.commands_handle_pending_command_request) result["CommandsHandlePendingCommandResult"] = to_class(CommandsHandlePendingCommandResult, self.commands_handle_pending_command_result) @@ -15858,10 +16124,13 @@ def to_dict(self) -> dict: result["McpServer"] = to_class(MCPServer, self.mcp_server) result["McpServerConfig"] = to_class(MCPServerConfig, self.mcp_server_config) result["McpServerConfigHttp"] = to_class(MCPServerConfigHTTP, self.mcp_server_config_http) - result["McpServerConfigHttpAuth"] = to_class(MCPServerConfigHTTPAuth, self.mcp_server_config_http_auth) + result["McpServerConfigHttpAuth"] = to_class(AuthAuth, self.mcp_server_config_http_auth) result["McpServerConfigHttpOauthGrantType"] = to_enum(MCPServerConfigHTTPOauthGrantType, self.mcp_server_config_http_oauth_grant_type) + result["McpServerConfigHttpOidc"] = from_union([from_bool, lambda x: from_dict(lambda x: x, x)], self.mcp_server_config_http_oidc) result["McpServerConfigHttpType"] = to_enum(MCPServerConfigHTTPType, self.mcp_server_config_http_type) result["McpServerConfigStdio"] = to_class(MCPServerConfigStdio, self.mcp_server_config_stdio) + result["McpServerConfigStdioAuth"] = from_union([from_bool, lambda x: from_dict(lambda x: x, x)], self.mcp_server_config_stdio_auth) + result["McpServerConfigStdioOidc"] = from_union([from_bool, lambda x: from_dict(lambda x: x, x)], self.mcp_server_config_stdio_oidc) result["McpServerList"] = to_class(MCPServerList, self.mcp_server_list) result["McpSetEnvValueModeDetails"] = to_enum(MCPSetEnvValueModeDetails, self.mcp_set_env_value_mode_details) result["McpSetEnvValueModeParams"] = to_class(MCPSetEnvValueModeParams, self.mcp_set_env_value_mode_params) @@ -16416,6 +16685,7 @@ def _load_TaskInfo(obj: Any) -> "TaskInfo": case _: raise ValueError(f"Unknown TaskInfo type: {kind!r}") +CanvasInvokeActionResult = Any CanvasJsonSchema = Any ExternalToolResult = ExternalToolTextResultForLlm ExternalToolTextResultForLlmContentResourceLinkIconTheme = Theme @@ -16429,6 +16699,10 @@ def _load_TaskInfo(obj: Any) -> "TaskInfo": McpAppsSetHostContextDetailsTheme = Theme McpExecuteSamplingRequest = dict McpExecuteSamplingResult = dict +McpServerConfigHttpAuth = AuthAuth +McpServerConfigHttpOidc = bool +McpServerConfigStdioAuth = bool +McpServerConfigStdioOidc = bool OptionsUpdateEnvValueMode = MCPSetEnvValueModeDetails SessionContextHostType = HostType SessionMcpAppsCallToolResult = dict @@ -16662,7 +16936,7 @@ async def release_lock(self, params: SessionsReleaseLockRequest, *, timeout: flo return SessionsReleaseLockResult.from_dict(await self._client.request("sessions.releaseLock", params_dict, **_timeout_kwargs(timeout))) async def enrich_metadata(self, params: SessionsEnrichMetadataRequest, *, timeout: float | None = None) -> SessionEnrichMetadataResult: - "Backfills missing summary and context fields on the supplied session metadata records.\n\nArgs:\n params: Session metadata records to enrich with summary and context information.\n\nReturns:\n The same metadata records, with summary and context fields backfilled where available." + "Backfills missing summary and context fields on the supplied session metadata records.\n\nArgs:\n params: Session metadata records to enrich with summary and context information.\n\nReturns:\n The enriched metadata records, with summary and context fields backfilled where available. Sessions confirmed empty and unnamed are omitted." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return SessionEnrichMetadataResult.from_dict(await self._client.request("sessions.enrichMetadata", params_dict, **_timeout_kwargs(timeout))) @@ -16755,11 +17029,11 @@ async def close(self, params: CanvasCloseRequest, *, timeout: float | None = Non params_dict["sessionId"] = self._session_id await self._client.request("session.canvas.close", params_dict, **_timeout_kwargs(timeout)) - async def invoke_action(self, params: CanvasInvokeActionRequest, *, timeout: float | None = None) -> CanvasInvokeActionResult: + async def invoke_action(self, params: CanvasInvokeActionRequest, *, timeout: float | None = None) -> Any: "Invokes an action on an open canvas instance.\n\nArgs:\n params: Canvas action invocation parameters.\n\nReturns:\n Canvas action invocation result." 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 CanvasInvokeActionResult.from_dict(await self._client.request("session.canvas.invokeAction", params_dict, **_timeout_kwargs(timeout))) + return Any.from_dict(await self._client.request("session.canvas.invokeAction", params_dict, **_timeout_kwargs(timeout))) # Experimental: this API group is experimental and may change or be removed. @@ -17741,6 +18015,7 @@ 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 SessionFsHandler(Protocol): async def read_file(self, params: SessionFSReadFileRequest) -> SessionFSReadFileResult: "Reads a file from the client-provided session filesystem.\n\nArgs:\n params: Path of the file to read from the client-provided session filesystem.\n\nReturns:\n File content as a UTF-8 string, or a filesystem error if the read failed." @@ -17779,9 +18054,22 @@ async def sqlite_exists(self, params: SessionFSSqliteExistsRequest) -> SessionFS "Checks whether the per-session SQLite database already exists, without creating it.\n\nArgs:\n params: Identifies the target session.\n\nReturns:\n Indicates whether the per-session SQLite database already exists." pass +# Experimental: this API group is experimental and may change or be removed. +class CanvasHandler(Protocol): + async def open(self, params: CanvasProviderOpenRequest) -> CanvasProviderOpenResult: + "Opens a canvas instance on the provider.\n\nArgs:\n params: Canvas open parameters sent to the provider.\n\nReturns:\n Canvas open result returned by the provider." + pass + async def close(self, params: CanvasProviderCloseRequest) -> None: + "Closes a canvas instance on the provider.\n\nArgs:\n params: Canvas close parameters sent to the provider." + pass + async def invoke_action(self, params: CanvasProviderInvokeActionRequest) -> Any: + "Invokes an action on an open canvas instance via the provider.\n\nArgs:\n params: Canvas action invocation parameters sent to the provider.\n\nReturns:\n Provider-supplied action result." + pass + @dataclass class ClientSessionApiHandlers: session_fs: SessionFsHandler | None = None + canvas: CanvasHandler | None = None def register_client_session_api_handlers( client: "JsonRpcClient", @@ -17872,3 +18160,24 @@ async def handle_session_fs_sqlite_exists(params: dict) -> dict | None: result = await handler.sqlite_exists(request) return result.to_dict() client.set_request_handler("sessionFs.sqliteExists", handle_session_fs_sqlite_exists) + async def handle_canvas_open(params: dict) -> dict | None: + request = CanvasProviderOpenRequest.from_dict(params) + handler = get_handlers(request.session_id).canvas + if handler is None: raise RuntimeError(f"No canvas handler registered for session: {request.session_id}") + result = await handler.open(request) + return result.to_dict() + client.set_request_handler("canvas.open", handle_canvas_open) + async def handle_canvas_close(params: dict) -> dict | None: + request = CanvasProviderCloseRequest.from_dict(params) + handler = get_handlers(request.session_id).canvas + if handler is None: raise RuntimeError(f"No canvas handler registered for session: {request.session_id}") + await handler.close(request) + return None + client.set_request_handler("canvas.close", handle_canvas_close) + async def handle_canvas_invoke_action(params: dict) -> dict | None: + request = CanvasProviderInvokeActionRequest.from_dict(params) + handler = get_handlers(request.session_id).canvas + if handler is None: raise RuntimeError(f"No canvas handler registered for session: {request.session_id}") + result = await handler.invoke_action(request) + return result.value if hasattr(result, 'value') else result + client.set_request_handler("canvas.invokeAction", handle_canvas_invoke_action) diff --git a/rust/src/generated/api_types.rs b/rust/src/generated/api_types.rs index 9f2da297e..58451ded9 100644 --- a/rust/src/generated/api_types.rs +++ b/rust/src/generated/api_types.rs @@ -402,6 +402,12 @@ pub mod rpc_methods { pub const SESSIONFS_SQLITEQUERY: &str = "sessionFs.sqliteQuery"; /// `sessionFs.sqliteExists` pub const SESSIONFS_SQLITEEXISTS: &str = "sessionFs.sqliteExists"; + /// `canvas.open` + pub const CANVAS_OPEN: &str = "canvas.open"; + /// `canvas.close` + pub const CANVAS_CLOSE: &str = "canvas.close"; + /// `canvas.invokeAction` + pub const CANVAS_INVOKEACTION: &str = "canvas.invokeAction"; } /// Parameters for aborting the current turn @@ -917,6 +923,38 @@ pub struct CanvasCloseRequest { pub instance_id: String, } +/// Host capabilities +/// +///
+/// +/// **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 CanvasHostContextCapabilities { + /// Whether canvas rendering is supported + #[serde(skip_serializing_if = "Option::is_none")] + pub canvases: Option, +} + +/// Host context supplied by the runtime. +/// +///
+/// +/// **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 CanvasHostContext { + /// Host capabilities + #[serde(skip_serializing_if = "Option::is_none")] + pub capabilities: Option, +} + /// Canvas action invocation parameters. /// ///
@@ -1074,6 +1112,108 @@ pub struct CanvasOpenRequest { pub instance_id: String, } +/// Canvas close parameters sent to the provider. +/// +///
+/// +/// **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 CanvasProviderCloseRequest { + /// Target session identifier + pub session_id: SessionId, + /// Owning provider identifier + pub extension_id: String, + /// Provider-local canvas identifier + pub canvas_id: String, + /// Canvas instance identifier + pub instance_id: String, + /// Host context supplied by the runtime. + #[serde(skip_serializing_if = "Option::is_none")] + pub host: Option, +} + +/// Canvas action invocation parameters sent to the provider. +/// +///
+/// +/// **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 CanvasProviderInvokeActionRequest { + /// Target session identifier + pub session_id: SessionId, + /// Owning provider identifier + pub extension_id: String, + /// Provider-local canvas identifier + pub canvas_id: String, + /// Canvas instance identifier + pub instance_id: String, + /// Action name to invoke + pub action_name: String, + /// Action input + #[serde(skip_serializing_if = "Option::is_none")] + pub input: Option, + /// Host context supplied by the runtime. + #[serde(skip_serializing_if = "Option::is_none")] + pub host: Option, +} + +/// Canvas open parameters sent to the provider. +/// +///
+/// +/// **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 CanvasProviderOpenRequest { + /// Target session identifier + pub session_id: SessionId, + /// Owning provider identifier + pub extension_id: String, + /// Provider-local canvas identifier + pub canvas_id: String, + /// Stable caller-supplied canvas instance identifier + pub instance_id: String, + /// Canvas open input + #[serde(skip_serializing_if = "Option::is_none")] + pub input: Option, + /// Host context supplied by the runtime. + #[serde(skip_serializing_if = "Option::is_none")] + pub host: Option, +} + +/// Canvas open result returned by the provider. +/// +///
+/// +/// **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 CanvasProviderOpenResult { + /// Provider-supplied status text + #[serde(skip_serializing_if = "Option::is_none")] + pub status: Option, + /// Provider-supplied title + #[serde(skip_serializing_if = "Option::is_none")] + pub title: Option, + /// URL for web-rendered canvases + #[serde(skip_serializing_if = "Option::is_none")] + pub url: Option, +} + /// Optional unstructured input hint /// ///
@@ -2930,6 +3070,9 @@ pub struct McpServerConfigHttp { /// Whether the configured OAuth client is public and does not require a client secret. #[serde(skip_serializing_if = "Option::is_none")] pub oauth_public_client: Option, + /// OIDC token configuration. When truthy, a token is automatically gathered. + #[serde(skip_serializing_if = "Option::is_none")] + pub oidc: Option, /// Timeout in milliseconds for tool calls to this server. #[serde(skip_serializing_if = "Option::is_none")] pub timeout: Option, @@ -2950,6 +3093,9 @@ pub struct McpServerConfigStdio { /// Command-line arguments passed to the Stdio MCP server process. #[serde(default)] pub args: Vec, + /// Authentication configuration for this server. + #[serde(skip_serializing_if = "Option::is_none")] + pub auth: Option, /// Executable command used to start the Stdio MCP server process. pub command: String, /// Working directory for the Stdio MCP server process. @@ -2964,6 +3110,9 @@ pub struct McpServerConfigStdio { /// Whether this server is a built-in fallback used when the user has not configured their own server. #[serde(skip_serializing_if = "Option::is_none")] pub is_default_server: Option, + /// OIDC token configuration. When truthy, a token is automatically gathered. + #[serde(skip_serializing_if = "Option::is_none")] + pub oidc: Option, /// Timeout in milliseconds for tool calls to this server. #[serde(skip_serializing_if = "Option::is_none")] pub timeout: Option, @@ -5877,7 +6026,7 @@ pub struct SessionMetadata { pub summary: Option, } -/// The same metadata records, with summary and context fields backfilled where available. +/// The enriched metadata records, with summary and context fields backfilled where available. Sessions confirmed empty and unnamed are omitted. /// ///
/// @@ -5888,11 +6037,18 @@ pub struct SessionMetadata { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SessionEnrichMetadataResult { - /// Same records, with summary and context backfilled + /// Enriched records, with summary and context backfilled. Sessions confirmed empty and unnamed may be omitted. pub sessions: Vec, } /// File path, content to append, and optional mode for the client-provided session filesystem. +/// +///
+/// +/// **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 SessionFsAppendFileRequest { @@ -5908,6 +6064,13 @@ pub struct SessionFsAppendFileRequest { } /// Describes a filesystem error. +/// +///
+/// +/// **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 SessionFsError { @@ -5919,6 +6082,13 @@ pub struct SessionFsError { } /// Path to test for existence in the client-provided session filesystem. +/// +///
+/// +/// **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 SessionFsExistsRequest { @@ -5929,6 +6099,13 @@ pub struct SessionFsExistsRequest { } /// Indicates whether the requested path exists in the client-provided session filesystem. +/// +///
+/// +/// **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 SessionFsExistsResult { @@ -5937,6 +6114,13 @@ pub struct SessionFsExistsResult { } /// Directory path to create in the client-provided session filesystem, with options for recursive creation and POSIX mode. +/// +///
+/// +/// **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 SessionFsMkdirRequest { @@ -5953,6 +6137,13 @@ pub struct SessionFsMkdirRequest { } /// Directory path whose entries should be listed from the client-provided session filesystem. +/// +///
+/// +/// **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 SessionFsReaddirRequest { @@ -5963,6 +6154,13 @@ pub struct SessionFsReaddirRequest { } /// Names of entries in the requested directory, or a filesystem error if the read 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 SessionFsReaddirResult { @@ -5974,6 +6172,13 @@ pub struct SessionFsReaddirResult { } /// Schema for the `SessionFsReaddirWithTypesEntry` type. +/// +///
+/// +/// **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 SessionFsReaddirWithTypesEntry { @@ -5984,6 +6189,13 @@ pub struct SessionFsReaddirWithTypesEntry { } /// Directory path whose entries (with type information) should be listed from the client-provided session filesystem. +/// +///
+/// +/// **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 SessionFsReaddirWithTypesRequest { @@ -5994,6 +6206,13 @@ pub struct SessionFsReaddirWithTypesRequest { } /// Entries in the requested directory paired with file/directory type information, or a filesystem error if the read 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 SessionFsReaddirWithTypesResult { @@ -6005,6 +6224,13 @@ pub struct SessionFsReaddirWithTypesResult { } /// Path of the file to read from the client-provided session filesystem. +/// +///
+/// +/// **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 SessionFsReadFileRequest { @@ -6015,6 +6241,13 @@ pub struct SessionFsReadFileRequest { } /// File content as a UTF-8 string, or a filesystem error if the read 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 SessionFsReadFileResult { @@ -6026,6 +6259,13 @@ pub struct SessionFsReadFileResult { } /// Source and destination paths for renaming or moving an entry in the client-provided session filesystem. +/// +///
+/// +/// **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 SessionFsRenameRequest { @@ -6038,6 +6278,13 @@ pub struct SessionFsRenameRequest { } /// Path to remove from the client-provided session filesystem, with options for recursive removal and force. +/// +///
+/// +/// **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 SessionFsRmRequest { @@ -6086,6 +6333,13 @@ pub struct SessionFsSetProviderResult { } /// Indicates whether the per-session SQLite database already exists. +/// +///
+/// +/// **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 SessionFsSqliteExistsResult { @@ -6094,6 +6348,13 @@ pub struct SessionFsSqliteExistsResult { } /// SQL query, query type, and optional bind parameters for executing a SQLite query against the per-session database. +/// +///
+/// +/// **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 SessionFsSqliteQueryRequest { @@ -6109,6 +6370,13 @@ pub struct SessionFsSqliteQueryRequest { } /// Query results including rows, columns, and rows affected, or a filesystem error if execution 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 SessionFsSqliteQueryResult { @@ -6127,6 +6395,13 @@ pub struct SessionFsSqliteQueryResult { } /// Path whose metadata should be returned from the client-provided session filesystem. +/// +///
+/// +/// **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 SessionFsStatRequest { @@ -6137,6 +6412,13 @@ pub struct SessionFsStatRequest { } /// Filesystem metadata for the requested path, or a filesystem error if the stat 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 SessionFsStatResult { @@ -6156,6 +6438,13 @@ pub struct SessionFsStatResult { } /// File path, content to write, and optional mode for the client-provided session filesystem. +/// +///
+/// +/// **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 SessionFsWriteFileRequest { @@ -9108,7 +9397,7 @@ pub struct SessionsPruneOldResult { pub skipped: Vec, } -/// The same metadata records, with summary and context fields backfilled where available. +/// The enriched metadata records, with summary and context fields backfilled where available. Sessions confirmed empty and unnamed are omitted. /// ///
/// @@ -9119,7 +9408,7 @@ pub struct SessionsPruneOldResult { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SessionsEnrichMetadataResult { - /// Same records, with summary and context backfilled + /// Enriched records, with summary and context backfilled. Sessions confirmed empty and unnamed may be omitted. pub sessions: Vec, } @@ -11807,6 +12096,13 @@ pub struct SessionScheduleStopResult { } /// Identifies the target session. +/// +///
+/// +/// **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 SessionFsSqliteExistsParams { @@ -11814,6 +12110,28 @@ pub struct SessionFsSqliteExistsParams { pub session_id: SessionId, } +/// Canvas open result returned by the provider. +/// +///
+/// +/// **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 CanvasOpenResult { + /// Provider-supplied status text + #[serde(skip_serializing_if = "Option::is_none")] + pub status: Option, + /// Provider-supplied title + #[serde(skip_serializing_if = "Option::is_none")] + pub title: Option, + /// URL for web-rendered canvases + #[serde(skip_serializing_if = "Option::is_none")] + pub url: Option, +} + /// MCP CreateMessageResult payload (with optional 'tools' extension), present when action='success'. Treated as opaque at the schema layer; consumers should construct/consume it per the MCP CreateMessageResult shape. /// ///
@@ -13522,6 +13840,13 @@ pub enum SessionContextHostType { } /// Error classification +/// +///
+/// +/// **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, PartialEq, Eq, Serialize, Deserialize)] pub enum SessionFsErrorCode { /// The requested path does not exist. @@ -13535,6 +13860,13 @@ pub enum SessionFsErrorCode { } /// Entry type +/// +///
+/// +/// **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, PartialEq, Eq, Serialize, Deserialize)] pub enum SessionFsReaddirWithTypesEntryType { /// The entry is a file. @@ -13565,6 +13897,13 @@ pub enum SessionFsSetProviderConventions { } /// How to execute the query: 'exec' for DDL/multi-statement (no results), 'query' for SELECT (returns rows), 'run' for INSERT/UPDATE/DELETE (returns rowsAffected) +/// +///
+/// +/// **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, PartialEq, Eq, Serialize, Deserialize)] pub enum SessionFsSqliteQueryType { /// Execute DDL or multi-statement SQL without returning rows. diff --git a/rust/src/generated/rpc.rs b/rust/src/generated/rpc.rs index 644e49e86..c0c793fe0 100644 --- a/rust/src/generated/rpc.rs +++ b/rust/src/generated/rpc.rs @@ -902,7 +902,7 @@ impl<'a> ClientRpcSessions<'a> { /// /// # Returns /// - /// The same metadata records, with summary and context fields backfilled where available. + /// The enriched metadata records, with summary and context fields backfilled where available. Sessions confirmed empty and unnamed are omitted. /// ///
/// diff --git a/test/harness/package-lock.json b/test/harness/package-lock.json index a72f4eebf..d4360b22a 100644 --- a/test/harness/package-lock.json +++ b/test/harness/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "devDependencies": { - "@github/copilot": "^1.0.55-0", + "@github/copilot": "^1.0.55-1", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14", @@ -464,9 +464,9 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.55-0", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.55-0.tgz", - "integrity": "sha512-w94Y1QT90lgoXOCUxKw3CtKD5yNtwOXwUB0KGthrCNcyYaBFapUnVh0Hik0oenucv13R8yyuET4Wrl0zJvaeUA==", + "version": "1.0.55-1", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.55-1.tgz", + "integrity": "sha512-P8uFRbbKWyImqPWaHub8dCt2R4f/GWjY/4xyf3uyHs5wZfSPLzh9DvagAA2ryQjuGHsgCZeDscUkJoYW+yn2UA==", "dev": true, "license": "SEE LICENSE IN LICENSE.md", "dependencies": { @@ -476,20 +476,20 @@ "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.55-0", - "@github/copilot-darwin-x64": "1.0.55-0", - "@github/copilot-linux-arm64": "1.0.55-0", - "@github/copilot-linux-x64": "1.0.55-0", - "@github/copilot-linuxmusl-arm64": "1.0.55-0", - "@github/copilot-linuxmusl-x64": "1.0.55-0", - "@github/copilot-win32-arm64": "1.0.55-0", - "@github/copilot-win32-x64": "1.0.55-0" + "@github/copilot-darwin-arm64": "1.0.55-1", + "@github/copilot-darwin-x64": "1.0.55-1", + "@github/copilot-linux-arm64": "1.0.55-1", + "@github/copilot-linux-x64": "1.0.55-1", + "@github/copilot-linuxmusl-arm64": "1.0.55-1", + "@github/copilot-linuxmusl-x64": "1.0.55-1", + "@github/copilot-win32-arm64": "1.0.55-1", + "@github/copilot-win32-x64": "1.0.55-1" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.55-0", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.55-0.tgz", - "integrity": "sha512-9Af5VzQtXXeRo7/8jvARZ8NFEy53wPubrMi6/Ji9cTdUNtrIz9u6Dj4VxKJuIYYv5JnBCgsL4D4FpXdcppS4pA==", + "version": "1.0.55-1", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.55-1.tgz", + "integrity": "sha512-0z5P/FZZ7OIJbcs+WWIwkCcY7+sRGxmL80GTvT6x0QiJdJLqLlvwcX/Pfhomp4NxwEYBAK3I51F8I8A3GacjuQ==", "cpu": [ "arm64" ], @@ -504,9 +504,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.55-0", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.55-0.tgz", - "integrity": "sha512-jveV7dT8k7piYs0Xkck7BH0oAoszbsUM8Y9YVzKo5CZeRAvAncD/vsxP3e/BLnI3onJO9gIfWapruXfrvELwLQ==", + "version": "1.0.55-1", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.55-1.tgz", + "integrity": "sha512-334+JCBb0iqg7omB2szc+/Ii2xkq81HKaer+mTaXj+1kHUGtfZacmzejwvutl6CxKTuZ8E9BcozP65KEYLBbwQ==", "cpu": [ "x64" ], @@ -521,9 +521,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.55-0", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.55-0.tgz", - "integrity": "sha512-E3i9taaBsQltyirWqCnOK4B/gmnemNGL5WB3uT3MiEBJywmEPmks1aA7+yDSdaqSTT/2MpkToNmbjsmnxypyHw==", + "version": "1.0.55-1", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.55-1.tgz", + "integrity": "sha512-UTZuNCWzEaeqjhEyz+BUPNECPy5b6KKnym60q9x9dZw1ufqQSxKdhu02p62x53PA1fd4l6N8FRdhoHOOhKfEkQ==", "cpu": [ "arm64" ], @@ -538,9 +538,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.55-0", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.55-0.tgz", - "integrity": "sha512-iR7XSllFyy8FVLeuEDk6eJVdLpakxtcvA6A7Y9iCT9VMOLnFvvXqTWUYdrU+0qngBUJnfSgDQ0Nr1KMTgwOyKA==", + "version": "1.0.55-1", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.55-1.tgz", + "integrity": "sha512-IwKgCrSXy7zeQlGgf8tZue8eaM/TcxVxXvpijXUTY0F9KXldzO0xv3WAgh5540ALH+jwkLI85UuPq5aoVCBuCA==", "cpu": [ "x64" ], @@ -555,9 +555,9 @@ } }, "node_modules/@github/copilot-linuxmusl-arm64": { - "version": "1.0.55-0", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.55-0.tgz", - "integrity": "sha512-0BslCyHOouUmj1ZTi1H/WLpZkyzYxrOdGiH0f2s9+uRd7DqmWugZrNURbx9vicm5QMiVax4RgvgLmE2PQsjpJg==", + "version": "1.0.55-1", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.55-1.tgz", + "integrity": "sha512-3Uu9JOYU9zmr5dcYBQZHwXF1JpzVPZXpBau0khLd6OFZkA6al1D2miNmw4nO/WoT0IfheW6EhYUBN1WuthmXTw==", "cpu": [ "arm64" ], @@ -572,9 +572,9 @@ } }, "node_modules/@github/copilot-linuxmusl-x64": { - "version": "1.0.55-0", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.55-0.tgz", - "integrity": "sha512-7GE3q7Cahe/urK16KMgis1b3pryofrdfMUJqvhhaycPv0EiaaatSn715XxgoQrZxnfwtEhqAYzCBzRkUxJl6Pg==", + "version": "1.0.55-1", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.55-1.tgz", + "integrity": "sha512-0szVr6ejslqi6O+Rbmx5ETRTEMFpGv9A9qiK3E0XuzE4uXSPyPad/wOSSE2yat7YEqUVU8J/HIUKU9TpBpiWbA==", "cpu": [ "x64" ], @@ -589,9 +589,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.55-0", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.55-0.tgz", - "integrity": "sha512-KEQ0GcAzoaVvO5SyMzAVIDmvTZywStdxh1bc7NyRYu2kpOKaFdUL18lAbH9aMQBB+2SKnpur9Svi9fS63ClsTQ==", + "version": "1.0.55-1", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.55-1.tgz", + "integrity": "sha512-h0LXoTv7cT8J/RVuocWbwd5+VYbxJk5/s7EsMXn+FR6m8ZqYZdBjYMAyDe9v/HcCyAPY0xLYRKt6k3Jb17Upag==", "cpu": [ "arm64" ], @@ -606,9 +606,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.55-0", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.55-0.tgz", - "integrity": "sha512-ybesOFzaeK6u4j1Dx3pIqX3PcBT1SGfiHdzTpaLmue86jbCvRSS0aVZuoVBYYGI95UfRBbuK8bOMuWAShaxJpw==", + "version": "1.0.55-1", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.55-1.tgz", + "integrity": "sha512-lxaRdPd5NZaC5YyMOTt2uTV34fQyuClg71JAYoKVZ1w7Dc6E+f7+WMM3L67ZieornfgG80h4QMNtfpVpCVgpAQ==", "cpu": [ "x64" ], diff --git a/test/harness/package.json b/test/harness/package.json index a517f53b9..548fcb575 100644 --- a/test/harness/package.json +++ b/test/harness/package.json @@ -11,7 +11,7 @@ "test": "vitest run" }, "devDependencies": { - "@github/copilot": "^1.0.55-0", + "@github/copilot": "^1.0.55-1", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14",