From de5cfee65b91d41db69d2dea9285365fbd4b922a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 14 May 2026 16:38:46 +0000 Subject: [PATCH 1/5] Update @github/copilot to 1.0.48 - Updated nodejs and test harness dependencies - Re-ran code generators - Formatted generated code --- dotnet/src/Generated/SessionEvents.cs | 48 +++- go/rpc/zrpc.go | 288 +-------------------- go/rpc/zsession_encoding.go | 68 +++++ go/rpc/zsession_events.go | 31 ++- go/zsession_events.go | 3 + nodejs/package-lock.json | 56 ++-- nodejs/package.json | 2 +- nodejs/samples/package-lock.json | 2 +- nodejs/src/generated/rpc.ts | 276 +------------------- nodejs/src/generated/session-events.ts | 61 ++++- python/copilot/generated/rpc.py | 95 +------ python/copilot/generated/session_events.py | 41 ++- rust/src/generated/api_types.rs | 30 --- rust/src/generated/rpc.rs | 190 +------------- rust/src/generated/session_events.rs | 24 +- test/harness/package-lock.json | 56 ++-- test/harness/package.json | 2 +- 17 files changed, 343 insertions(+), 930 deletions(-) diff --git a/dotnet/src/Generated/SessionEvents.cs b/dotnet/src/Generated/SessionEvents.cs index fc807bb9c..bc0a86848 100644 --- a/dotnet/src/Generated/SessionEvents.cs +++ b/dotnet/src/Generated/SessionEvents.cs @@ -63,6 +63,7 @@ namespace GitHub.Copilot.SDK; [JsonDerivedType(typeof(SessionCompactionStartEvent), "session.compaction_start")] [JsonDerivedType(typeof(SessionContextChangedEvent), "session.context_changed")] [JsonDerivedType(typeof(SessionCustomAgentsUpdatedEvent), "session.custom_agents_updated")] +[JsonDerivedType(typeof(SessionCustomNotificationEvent), "session.custom_notification")] [JsonDerivedType(typeof(SessionErrorEvent), "session.error")] [JsonDerivedType(typeof(SessionExtensionsLoadedEvent), "session.extensions_loaded")] [JsonDerivedType(typeof(SessionHandoffEvent), "session.handoff")] @@ -951,6 +952,19 @@ public partial class McpOauthCompletedEvent : SessionEvent public required McpOauthCompletedData Data { get; set; } } +/// Opaque custom notification data. Consumers may branch on source and name, but payload semantics are source-defined. +/// Represents the session.custom_notification event. +public partial class SessionCustomNotificationEvent : SessionEvent +{ + /// + [JsonIgnore] + public override string Type => "session.custom_notification"; + + /// The session.custom_notification event payload. + [JsonPropertyName("data")] + public required SessionCustomNotificationData Data { get; set; } +} + /// External tool invocation request for client-side tool execution. /// Represents the external_tool.requested event. public partial class ExternalToolRequestedEvent : SessionEvent @@ -1295,7 +1309,7 @@ public partial class SessionErrorData [JsonPropertyName("eligibleForAutoSwitch")] public bool? EligibleForAutoSwitch { get; set; } - /// Fine-grained error code from the upstream provider, when available. For `errorType: "rate_limit"`, this is one of the `RateLimitErrorCode` values (e.g., `"user_weekly_rate_limited"`, `"user_global_rate_limited"`, `"rate_limited"`, `"user_model_rate_limited"`, `"integration_rate_limited"`). + /// Fine-grained error code from the upstream provider, when available. For `errorType: "rate_limit"`, this is one of the `RateLimitErrorCode` values (e.g., `"user_weekly_rate_limited"`, `"user_global_rate_limited"`, `"rate_limited"`, `"user_model_rate_limited"`, `"integration_rate_limited"`). For `errorType: "quota"`, this is the CAPI quota error code (e.g., `"quota_exceeded"`, `"session_quota_exceeded"`, `"billing_not_configured"`). [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("errorCode")] public string? ErrorCode { get; set; } @@ -2760,6 +2774,36 @@ public partial class McpOauthCompletedData public required string RequestId { get; set; } } +/// Opaque custom notification data. Consumers may branch on source and name, but payload semantics are source-defined. +public partial class SessionCustomNotificationData +{ + /// Source-defined custom notification name. + [UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Safe for generated string properties: JSON Schema minLength/maxLength map to string length validation, not reflection over trimmed Count members")] + [MinLength(1)] + [JsonPropertyName("name")] + public required string Name { get; set; } + + /// Source-defined JSON payload for the custom notification. + [JsonPropertyName("payload")] + public required object Payload { get; set; } + + /// Namespace for the custom notification producer. + [UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "Safe for generated string properties: JSON Schema minLength/maxLength map to string length validation, not reflection over trimmed Count members")] + [MinLength(1)] + [JsonPropertyName("source")] + public required string Source { get; set; } + + /// Optional source-defined string identifiers describing the payload subject. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("subject")] + public IDictionary? Subject { get; set; } + + /// Optional source-defined payload schema version. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("version")] + public long? Version { get; set; } +} + /// External tool invocation request for client-side tool execution. public partial class ExternalToolRequestedData { @@ -6876,6 +6920,8 @@ public override void Write(Utf8JsonWriter writer, ExtensionsLoadedExtensionStatu [JsonSerializable(typeof(SessionContextChangedEvent))] [JsonSerializable(typeof(SessionCustomAgentsUpdatedData))] [JsonSerializable(typeof(SessionCustomAgentsUpdatedEvent))] +[JsonSerializable(typeof(SessionCustomNotificationData))] +[JsonSerializable(typeof(SessionCustomNotificationEvent))] [JsonSerializable(typeof(SessionErrorData))] [JsonSerializable(typeof(SessionErrorEvent))] [JsonSerializable(typeof(SessionEvent))] diff --git a/go/rpc/zrpc.go b/go/rpc/zrpc.go index 91481b733..63e6eac41 100644 --- a/go/rpc/zrpc.go +++ b/go/rpc/zrpc.go @@ -2642,15 +2642,8 @@ type serverApi struct { type ServerAccountApi serverApi -// GetQuota calls account.getQuota. -// -// RPC method: account.getQuota. -func (a *ServerAccountApi) GetQuota(ctx context.Context, params ...*AccountGetQuotaRequest) (*AccountGetQuotaResult, error) { - var requestParams *AccountGetQuotaRequest - if len(params) > 0 { - requestParams = params[0] - } - raw, err := a.client.Request("account.getQuota", requestParams) +func (a *ServerAccountApi) GetQuota(ctx context.Context, params *AccountGetQuotaRequest) (*AccountGetQuotaResult, error) { + raw, err := a.client.Request("account.getQuota", params) if err != nil { return nil, err } @@ -2663,9 +2656,6 @@ func (a *ServerAccountApi) GetQuota(ctx context.Context, params ...*AccountGetQu type ServerMcpApi serverApi -// Discover calls mcp.discover. -// -// RPC method: mcp.discover. func (a *ServerMcpApi) Discover(ctx context.Context, params *McpDiscoverRequest) (*McpDiscoverResult, error) { raw, err := a.client.Request("mcp.discover", params) if err != nil { @@ -2680,9 +2670,6 @@ func (a *ServerMcpApi) Discover(ctx context.Context, params *McpDiscoverRequest) type ServerMcpConfigApi serverApi -// Add calls mcp.config.add. -// -// RPC method: mcp.config.add. func (a *ServerMcpConfigApi) Add(ctx context.Context, params *McpConfigAddRequest) (*McpConfigAddResult, error) { raw, err := a.client.Request("mcp.config.add", params) if err != nil { @@ -2695,9 +2682,6 @@ func (a *ServerMcpConfigApi) Add(ctx context.Context, params *McpConfigAddReques return &result, nil } -// Disable calls mcp.config.disable. -// -// RPC method: mcp.config.disable. func (a *ServerMcpConfigApi) Disable(ctx context.Context, params *McpConfigDisableRequest) (*McpConfigDisableResult, error) { raw, err := a.client.Request("mcp.config.disable", params) if err != nil { @@ -2710,9 +2694,6 @@ func (a *ServerMcpConfigApi) Disable(ctx context.Context, params *McpConfigDisab return &result, nil } -// Enable calls mcp.config.enable. -// -// RPC method: mcp.config.enable. func (a *ServerMcpConfigApi) Enable(ctx context.Context, params *McpConfigEnableRequest) (*McpConfigEnableResult, error) { raw, err := a.client.Request("mcp.config.enable", params) if err != nil { @@ -2725,9 +2706,6 @@ func (a *ServerMcpConfigApi) Enable(ctx context.Context, params *McpConfigEnable return &result, nil } -// List calls mcp.config.list. -// -// RPC method: mcp.config.list. func (a *ServerMcpConfigApi) List(ctx context.Context) (*McpConfigList, error) { raw, err := a.client.Request("mcp.config.list", nil) if err != nil { @@ -2740,9 +2718,6 @@ func (a *ServerMcpConfigApi) List(ctx context.Context) (*McpConfigList, error) { return &result, nil } -// Remove calls mcp.config.remove. -// -// RPC method: mcp.config.remove. func (a *ServerMcpConfigApi) Remove(ctx context.Context, params *McpConfigRemoveRequest) (*McpConfigRemoveResult, error) { raw, err := a.client.Request("mcp.config.remove", params) if err != nil { @@ -2755,9 +2730,6 @@ func (a *ServerMcpConfigApi) Remove(ctx context.Context, params *McpConfigRemove return &result, nil } -// Update calls mcp.config.update. -// -// RPC method: mcp.config.update. func (a *ServerMcpConfigApi) Update(ctx context.Context, params *McpConfigUpdateRequest) (*McpConfigUpdateResult, error) { raw, err := a.client.Request("mcp.config.update", params) if err != nil { @@ -2776,15 +2748,8 @@ func (s *ServerMcpApi) Config() *ServerMcpConfigApi { type ServerModelsApi serverApi -// List calls models.list. -// -// RPC method: models.list. -func (a *ServerModelsApi) List(ctx context.Context, params ...*ModelsListRequest) (*ModelList, error) { - var requestParams *ModelsListRequest - if len(params) > 0 { - requestParams = params[0] - } - raw, err := a.client.Request("models.list", requestParams) +func (a *ServerModelsApi) List(ctx context.Context, params *ModelsListRequest) (*ModelList, error) { + raw, err := a.client.Request("models.list", params) if err != nil { return nil, err } @@ -2797,9 +2762,6 @@ func (a *ServerModelsApi) List(ctx context.Context, params ...*ModelsListRequest type ServerSessionFsApi serverApi -// SetProvider calls sessionFs.setProvider. -// -// RPC method: sessionFs.setProvider. func (a *ServerSessionFsApi) SetProvider(ctx context.Context, params *SessionFsSetProviderRequest) (*SessionFsSetProviderResult, error) { raw, err := a.client.Request("sessionFs.setProvider", params) if err != nil { @@ -2815,9 +2777,6 @@ func (a *ServerSessionFsApi) SetProvider(ctx context.Context, params *SessionFsS // Experimental: ServerSessionsApi contains experimental APIs that may change or be removed. type ServerSessionsApi serverApi -// Fork calls sessions.fork. -// -// RPC method: sessions.fork. func (a *ServerSessionsApi) Fork(ctx context.Context, params *SessionsForkRequest) (*SessionsForkResult, error) { raw, err := a.client.Request("sessions.fork", params) if err != nil { @@ -2832,9 +2791,6 @@ func (a *ServerSessionsApi) Fork(ctx context.Context, params *SessionsForkReques type ServerSkillsApi serverApi -// Discover calls skills.discover. -// -// RPC method: skills.discover. func (a *ServerSkillsApi) Discover(ctx context.Context, params *SkillsDiscoverRequest) (*ServerSkillList, error) { raw, err := a.client.Request("skills.discover", params) if err != nil { @@ -2849,9 +2805,6 @@ func (a *ServerSkillsApi) Discover(ctx context.Context, params *SkillsDiscoverRe type ServerSkillsConfigApi serverApi -// SetDisabledSkills calls skills.config.setDisabledSkills. -// -// RPC method: skills.config.setDisabledSkills. func (a *ServerSkillsConfigApi) SetDisabledSkills(ctx context.Context, params *SkillsConfigSetDisabledSkillsRequest) (*SkillsConfigSetDisabledSkillsResult, error) { raw, err := a.client.Request("skills.config.setDisabledSkills", params) if err != nil { @@ -2870,9 +2823,6 @@ func (s *ServerSkillsApi) Config() *ServerSkillsConfigApi { type ServerToolsApi serverApi -// List calls tools.list. -// -// RPC method: tools.list. func (a *ServerToolsApi) List(ctx context.Context, params *ToolsListRequest) (*ToolList, error) { raw, err := a.client.Request("tools.list", params) if err != nil { @@ -2899,9 +2849,6 @@ type ServerRpc struct { Tools *ServerToolsApi } -// Ping calls ping. -// -// RPC method: ping. func (a *ServerRpc) Ping(ctx context.Context, params *PingRequest) (*PingResult, error) { raw, err := a.common.client.Request("ping", params) if err != nil { @@ -2938,9 +2885,6 @@ type InternalServerRpc struct { common internalServerApi } -// Connect calls connect. -// -// RPC method: connect. // Internal: Connect is part of the SDK's internal handshake/plumbing; external callers // should not use it. func (a *InternalServerRpc) Connect(ctx context.Context, params *ConnectRequest) (*ConnectResult, error) { @@ -2969,9 +2913,6 @@ type sessionApi struct { // Experimental: AgentApi contains experimental APIs that may change or be removed. type AgentApi sessionApi -// Deselect calls session.agent.deselect. -// -// RPC method: session.agent.deselect. func (a *AgentApi) Deselect(ctx context.Context) (*AgentDeselectResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.agent.deselect", req) @@ -2985,9 +2926,6 @@ func (a *AgentApi) Deselect(ctx context.Context) (*AgentDeselectResult, error) { return &result, nil } -// GetCurrent calls session.agent.getCurrent. -// -// RPC method: session.agent.getCurrent. func (a *AgentApi) GetCurrent(ctx context.Context) (*AgentGetCurrentResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.agent.getCurrent", req) @@ -3001,9 +2939,6 @@ func (a *AgentApi) GetCurrent(ctx context.Context) (*AgentGetCurrentResult, erro return &result, nil } -// List calls session.agent.list. -// -// RPC method: session.agent.list. func (a *AgentApi) List(ctx context.Context) (*AgentList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.agent.list", req) @@ -3017,9 +2952,6 @@ func (a *AgentApi) List(ctx context.Context) (*AgentList, error) { return &result, nil } -// Reload calls session.agent.reload. -// -// RPC method: session.agent.reload. func (a *AgentApi) Reload(ctx context.Context) (*AgentReloadResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.agent.reload", req) @@ -3033,9 +2965,6 @@ func (a *AgentApi) Reload(ctx context.Context) (*AgentReloadResult, error) { return &result, nil } -// Select calls session.agent.select. -// -// RPC method: session.agent.select. func (a *AgentApi) Select(ctx context.Context, params *AgentSelectRequest) (*AgentSelectResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3054,9 +2983,6 @@ func (a *AgentApi) Select(ctx context.Context, params *AgentSelectRequest) (*Age type AuthApi sessionApi -// GetStatus calls session.auth.getStatus. -// -// RPC method: session.auth.getStatus. func (a *AuthApi) GetStatus(ctx context.Context) (*SessionAuthStatus, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.auth.getStatus", req) @@ -3072,9 +2998,6 @@ func (a *AuthApi) GetStatus(ctx context.Context) (*SessionAuthStatus, error) { type CommandsApi sessionApi -// HandlePendingCommand calls session.commands.handlePendingCommand. -// -// RPC method: session.commands.handlePendingCommand. func (a *CommandsApi) HandlePendingCommand(ctx context.Context, params *CommandsHandlePendingCommandRequest) (*CommandsHandlePendingCommandResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3094,9 +3017,6 @@ func (a *CommandsApi) HandlePendingCommand(ctx context.Context, params *Commands return &result, nil } -// Invoke calls session.commands.invoke. -// -// RPC method: session.commands.invoke. func (a *CommandsApi) Invoke(ctx context.Context, params *CommandsInvokeRequest) (SlashCommandInvocationResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3116,9 +3036,6 @@ func (a *CommandsApi) Invoke(ctx context.Context, params *CommandsInvokeRequest) return result, nil } -// List calls session.commands.list. -// -// RPC method: session.commands.list. func (a *CommandsApi) List(ctx context.Context, params ...*CommandsListRequest) (*CommandList, error) { var requestParams *CommandsListRequest if len(params) > 0 { @@ -3147,9 +3064,6 @@ func (a *CommandsApi) List(ctx context.Context, params ...*CommandsListRequest) return &result, nil } -// RespondToQueuedCommand calls session.commands.respondToQueuedCommand. -// -// RPC method: session.commands.respondToQueuedCommand. func (a *CommandsApi) RespondToQueuedCommand(ctx context.Context, params *CommandsRespondToQueuedCommandRequest) (*CommandsRespondToQueuedCommandResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3170,9 +3084,6 @@ func (a *CommandsApi) RespondToQueuedCommand(ctx context.Context, params *Comman // Experimental: ExtensionsApi contains experimental APIs that may change or be removed. type ExtensionsApi sessionApi -// Disable calls session.extensions.disable. -// -// RPC method: session.extensions.disable. func (a *ExtensionsApi) Disable(ctx context.Context, params *ExtensionsDisableRequest) (*ExtensionsDisableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3189,9 +3100,6 @@ func (a *ExtensionsApi) Disable(ctx context.Context, params *ExtensionsDisableRe return &result, nil } -// Enable calls session.extensions.enable. -// -// RPC method: session.extensions.enable. func (a *ExtensionsApi) Enable(ctx context.Context, params *ExtensionsEnableRequest) (*ExtensionsEnableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3208,9 +3116,6 @@ func (a *ExtensionsApi) Enable(ctx context.Context, params *ExtensionsEnableRequ return &result, nil } -// List calls session.extensions.list. -// -// RPC method: session.extensions.list. func (a *ExtensionsApi) List(ctx context.Context) (*ExtensionList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.extensions.list", req) @@ -3224,9 +3129,6 @@ func (a *ExtensionsApi) List(ctx context.Context) (*ExtensionList, error) { return &result, nil } -// Reload calls session.extensions.reload. -// -// RPC method: session.extensions.reload. func (a *ExtensionsApi) Reload(ctx context.Context) (*ExtensionsReloadResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.extensions.reload", req) @@ -3243,9 +3145,6 @@ func (a *ExtensionsApi) Reload(ctx context.Context) (*ExtensionsReloadResult, er // Experimental: FleetApi contains experimental APIs that may change or be removed. type FleetApi sessionApi -// Start calls session.fleet.start. -// -// RPC method: session.fleet.start. func (a *FleetApi) Start(ctx context.Context, params *FleetStartRequest) (*FleetStartResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3267,9 +3166,6 @@ func (a *FleetApi) Start(ctx context.Context, params *FleetStartRequest) (*Fleet // Experimental: HistoryApi contains experimental APIs that may change or be removed. type HistoryApi sessionApi -// Compact calls session.history.compact. -// -// RPC method: session.history.compact. func (a *HistoryApi) Compact(ctx context.Context) (*HistoryCompactResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.history.compact", req) @@ -3283,9 +3179,6 @@ func (a *HistoryApi) Compact(ctx context.Context) (*HistoryCompactResult, error) return &result, nil } -// Truncate calls session.history.truncate. -// -// RPC method: session.history.truncate. func (a *HistoryApi) Truncate(ctx context.Context, params *HistoryTruncateRequest) (*HistoryTruncateResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3304,9 +3197,6 @@ func (a *HistoryApi) Truncate(ctx context.Context, params *HistoryTruncateReques type InstructionsApi sessionApi -// GetSources calls session.instructions.getSources. -// -// RPC method: session.instructions.getSources. func (a *InstructionsApi) GetSources(ctx context.Context) (*InstructionsGetSourcesResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.instructions.getSources", req) @@ -3323,9 +3213,6 @@ func (a *InstructionsApi) GetSources(ctx context.Context) (*InstructionsGetSourc // Experimental: McpApi contains experimental APIs that may change or be removed. type McpApi sessionApi -// Disable calls session.mcp.disable. -// -// RPC method: session.mcp.disable. func (a *McpApi) Disable(ctx context.Context, params *McpDisableRequest) (*McpDisableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3342,9 +3229,6 @@ func (a *McpApi) Disable(ctx context.Context, params *McpDisableRequest) (*McpDi return &result, nil } -// Enable calls session.mcp.enable. -// -// RPC method: session.mcp.enable. func (a *McpApi) Enable(ctx context.Context, params *McpEnableRequest) (*McpEnableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3361,9 +3245,6 @@ func (a *McpApi) Enable(ctx context.Context, params *McpEnableRequest) (*McpEnab return &result, nil } -// List calls session.mcp.list. -// -// RPC method: session.mcp.list. func (a *McpApi) List(ctx context.Context) (*McpServerList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.mcp.list", req) @@ -3377,9 +3258,6 @@ func (a *McpApi) List(ctx context.Context) (*McpServerList, error) { return &result, nil } -// Reload calls session.mcp.reload. -// -// RPC method: session.mcp.reload. func (a *McpApi) Reload(ctx context.Context) (*McpReloadResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.mcp.reload", req) @@ -3396,9 +3274,6 @@ func (a *McpApi) Reload(ctx context.Context) (*McpReloadResult, error) { // Experimental: McpOauthApi contains experimental APIs that may change or be removed. type McpOauthApi sessionApi -// Login calls session.mcp.oauth.login. -// -// RPC method: session.mcp.oauth.login. func (a *McpOauthApi) Login(ctx context.Context, params *McpOauthLoginRequest) (*McpOauthLoginResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3431,11 +3306,6 @@ func (s *McpApi) Oauth() *McpOauthApi { type ModeApi sessionApi -// Get calls session.mode.get. -// -// RPC method: session.mode.get. -// -// Returns: The agent mode. Valid values: "interactive", "plan", "autopilot". func (a *ModeApi) Get(ctx context.Context) (*SessionMode, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.mode.get", req) @@ -3449,9 +3319,6 @@ func (a *ModeApi) Get(ctx context.Context) (*SessionMode, error) { return &result, nil } -// Set calls session.mode.set. -// -// RPC method: session.mode.set. func (a *ModeApi) Set(ctx context.Context, params *ModeSetRequest) (*ModeSetResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3470,9 +3337,6 @@ func (a *ModeApi) Set(ctx context.Context, params *ModeSetRequest) (*ModeSetResu type ModelApi sessionApi -// GetCurrent calls session.model.getCurrent. -// -// RPC method: session.model.getCurrent. func (a *ModelApi) GetCurrent(ctx context.Context) (*CurrentModel, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.model.getCurrent", req) @@ -3486,9 +3350,6 @@ func (a *ModelApi) GetCurrent(ctx context.Context) (*CurrentModel, error) { return &result, nil } -// SwitchTo calls session.model.switchTo. -// -// RPC method: session.model.switchTo. func (a *ModelApi) SwitchTo(ctx context.Context, params *ModelSwitchToRequest) (*ModelSwitchToResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3513,9 +3374,6 @@ func (a *ModelApi) SwitchTo(ctx context.Context, params *ModelSwitchToRequest) ( type NameApi sessionApi -// Get calls session.name.get. -// -// RPC method: session.name.get. func (a *NameApi) Get(ctx context.Context) (*NameGetResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.name.get", req) @@ -3529,9 +3387,6 @@ func (a *NameApi) Get(ctx context.Context) (*NameGetResult, error) { return &result, nil } -// Set calls session.name.set. -// -// RPC method: session.name.set. func (a *NameApi) Set(ctx context.Context, params *NameSetRequest) (*NameSetResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3550,9 +3405,6 @@ func (a *NameApi) Set(ctx context.Context, params *NameSetRequest) (*NameSetResu type PermissionsApi sessionApi -// HandlePendingPermissionRequest calls session.permissions.handlePendingPermissionRequest. -// -// RPC method: session.permissions.handlePendingPermissionRequest. func (a *PermissionsApi) HandlePendingPermissionRequest(ctx context.Context, params *PermissionDecisionRequest) (*PermissionRequestResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3570,9 +3422,6 @@ func (a *PermissionsApi) HandlePendingPermissionRequest(ctx context.Context, par return &result, nil } -// ResetSessionApprovals calls session.permissions.resetSessionApprovals. -// -// RPC method: session.permissions.resetSessionApprovals. func (a *PermissionsApi) ResetSessionApprovals(ctx context.Context) (*PermissionsResetSessionApprovalsResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.permissions.resetSessionApprovals", req) @@ -3586,9 +3435,6 @@ func (a *PermissionsApi) ResetSessionApprovals(ctx context.Context) (*Permission return &result, nil } -// SetApproveAll calls session.permissions.setApproveAll. -// -// RPC method: session.permissions.setApproveAll. func (a *PermissionsApi) SetApproveAll(ctx context.Context, params *PermissionsSetApproveAllRequest) (*PermissionsSetApproveAllResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3607,9 +3453,6 @@ func (a *PermissionsApi) SetApproveAll(ctx context.Context, params *PermissionsS type PlanApi sessionApi -// Delete calls session.plan.delete. -// -// RPC method: session.plan.delete. func (a *PlanApi) Delete(ctx context.Context) (*PlanDeleteResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.plan.delete", req) @@ -3623,9 +3466,6 @@ func (a *PlanApi) Delete(ctx context.Context) (*PlanDeleteResult, error) { return &result, nil } -// Read calls session.plan.read. -// -// RPC method: session.plan.read. func (a *PlanApi) Read(ctx context.Context) (*PlanReadResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.plan.read", req) @@ -3639,9 +3479,6 @@ func (a *PlanApi) Read(ctx context.Context) (*PlanReadResult, error) { return &result, nil } -// Update calls session.plan.update. -// -// RPC method: session.plan.update. func (a *PlanApi) Update(ctx context.Context, params *PlanUpdateRequest) (*PlanUpdateResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3661,9 +3498,6 @@ func (a *PlanApi) Update(ctx context.Context, params *PlanUpdateRequest) (*PlanU // Experimental: PluginsApi contains experimental APIs that may change or be removed. type PluginsApi sessionApi -// List calls session.plugins.list. -// -// RPC method: session.plugins.list. func (a *PluginsApi) List(ctx context.Context) (*PluginList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.plugins.list", req) @@ -3680,9 +3514,6 @@ func (a *PluginsApi) List(ctx context.Context) (*PluginList, error) { // Experimental: RemoteApi contains experimental APIs that may change or be removed. type RemoteApi sessionApi -// Disable calls session.remote.disable. -// -// RPC method: session.remote.disable. func (a *RemoteApi) Disable(ctx context.Context) (*RemoteDisableResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.remote.disable", req) @@ -3696,9 +3527,6 @@ func (a *RemoteApi) Disable(ctx context.Context) (*RemoteDisableResult, error) { return &result, nil } -// Enable calls session.remote.enable. -// -// RPC method: session.remote.enable. func (a *RemoteApi) Enable(ctx context.Context, params *RemoteEnableRequest) (*RemoteEnableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3719,9 +3547,6 @@ func (a *RemoteApi) Enable(ctx context.Context, params *RemoteEnableRequest) (*R type ShellApi sessionApi -// Exec calls session.shell.exec. -// -// RPC method: session.shell.exec. func (a *ShellApi) Exec(ctx context.Context, params *ShellExecRequest) (*ShellExecResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3744,9 +3569,6 @@ func (a *ShellApi) Exec(ctx context.Context, params *ShellExecRequest) (*ShellEx return &result, nil } -// Kill calls session.shell.kill. -// -// RPC method: session.shell.kill. func (a *ShellApi) Kill(ctx context.Context, params *ShellKillRequest) (*ShellKillResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3769,9 +3591,6 @@ func (a *ShellApi) Kill(ctx context.Context, params *ShellKillRequest) (*ShellKi // Experimental: SkillsApi contains experimental APIs that may change or be removed. type SkillsApi sessionApi -// Disable calls session.skills.disable. -// -// RPC method: session.skills.disable. func (a *SkillsApi) Disable(ctx context.Context, params *SkillsDisableRequest) (*SkillsDisableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3788,9 +3607,6 @@ func (a *SkillsApi) Disable(ctx context.Context, params *SkillsDisableRequest) ( return &result, nil } -// Enable calls session.skills.enable. -// -// RPC method: session.skills.enable. func (a *SkillsApi) Enable(ctx context.Context, params *SkillsEnableRequest) (*SkillsEnableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3807,9 +3623,6 @@ func (a *SkillsApi) Enable(ctx context.Context, params *SkillsEnableRequest) (*S return &result, nil } -// List calls session.skills.list. -// -// RPC method: session.skills.list. func (a *SkillsApi) List(ctx context.Context) (*SkillList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.skills.list", req) @@ -3823,9 +3636,6 @@ func (a *SkillsApi) List(ctx context.Context) (*SkillList, error) { return &result, nil } -// Reload calls session.skills.reload. -// -// RPC method: session.skills.reload. func (a *SkillsApi) Reload(ctx context.Context) (*SkillsLoadDiagnostics, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.skills.reload", req) @@ -3842,9 +3652,6 @@ func (a *SkillsApi) Reload(ctx context.Context) (*SkillsLoadDiagnostics, error) // Experimental: TasksApi contains experimental APIs that may change or be removed. type TasksApi sessionApi -// Cancel calls session.tasks.cancel. -// -// RPC method: session.tasks.cancel. func (a *TasksApi) Cancel(ctx context.Context, params *TasksCancelRequest) (*TasksCancelResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3861,9 +3668,6 @@ func (a *TasksApi) Cancel(ctx context.Context, params *TasksCancelRequest) (*Tas return &result, nil } -// List calls session.tasks.list. -// -// RPC method: session.tasks.list. func (a *TasksApi) List(ctx context.Context) (*TaskList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.tasks.list", req) @@ -3877,9 +3681,6 @@ func (a *TasksApi) List(ctx context.Context) (*TaskList, error) { return &result, nil } -// PromoteToBackground calls session.tasks.promoteToBackground. -// -// RPC method: session.tasks.promoteToBackground. func (a *TasksApi) PromoteToBackground(ctx context.Context, params *TasksPromoteToBackgroundRequest) (*TasksPromoteToBackgroundResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3896,9 +3697,6 @@ func (a *TasksApi) PromoteToBackground(ctx context.Context, params *TasksPromote return &result, nil } -// Remove calls session.tasks.remove. -// -// RPC method: session.tasks.remove. func (a *TasksApi) Remove(ctx context.Context, params *TasksRemoveRequest) (*TasksRemoveResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3915,9 +3713,6 @@ func (a *TasksApi) Remove(ctx context.Context, params *TasksRemoveRequest) (*Tas return &result, nil } -// SendMessage calls session.tasks.sendMessage. -// -// RPC method: session.tasks.sendMessage. func (a *TasksApi) SendMessage(ctx context.Context, params *TasksSendMessageRequest) (*TasksSendMessageResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3938,9 +3733,6 @@ func (a *TasksApi) SendMessage(ctx context.Context, params *TasksSendMessageRequ return &result, nil } -// StartAgent calls session.tasks.startAgent. -// -// RPC method: session.tasks.startAgent. func (a *TasksApi) StartAgent(ctx context.Context, params *TasksStartAgentRequest) (*TasksStartAgentResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3967,9 +3759,6 @@ func (a *TasksApi) StartAgent(ctx context.Context, params *TasksStartAgentReques type ToolsApi sessionApi -// HandlePendingToolCall calls session.tools.handlePendingToolCall. -// -// RPC method: session.tools.handlePendingToolCall. func (a *ToolsApi) HandlePendingToolCall(ctx context.Context, params *HandlePendingToolCallRequest) (*HandlePendingToolCallResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3994,11 +3783,6 @@ func (a *ToolsApi) HandlePendingToolCall(ctx context.Context, params *HandlePend type UIApi sessionApi -// Elicitation calls session.ui.elicitation. -// -// RPC method: session.ui.elicitation. -// -// Returns: The elicitation response (accept with form values, decline, or cancel) func (a *UIApi) Elicitation(ctx context.Context, params *UIElicitationRequest) (*UIElicitationResponse, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -4016,9 +3800,6 @@ func (a *UIApi) Elicitation(ctx context.Context, params *UIElicitationRequest) ( return &result, nil } -// HandlePendingElicitation calls session.ui.handlePendingElicitation. -// -// RPC method: session.ui.handlePendingElicitation. func (a *UIApi) HandlePendingElicitation(ctx context.Context, params *UIHandlePendingElicitationRequest) (*UIElicitationResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -4039,9 +3820,6 @@ func (a *UIApi) HandlePendingElicitation(ctx context.Context, params *UIHandlePe // Experimental: UsageApi contains experimental APIs that may change or be removed. type UsageApi sessionApi -// GetMetrics calls session.usage.getMetrics. -// -// RPC method: session.usage.getMetrics. func (a *UsageApi) GetMetrics(ctx context.Context) (*UsageGetMetricsResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.usage.getMetrics", req) @@ -4057,9 +3835,6 @@ func (a *UsageApi) GetMetrics(ctx context.Context) (*UsageGetMetricsResult, erro type WorkspacesApi sessionApi -// CreateFile calls session.workspaces.createFile. -// -// RPC method: session.workspaces.createFile. func (a *WorkspacesApi) CreateFile(ctx context.Context, params *WorkspacesCreateFileRequest) (*WorkspacesCreateFileResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -4077,9 +3852,6 @@ func (a *WorkspacesApi) CreateFile(ctx context.Context, params *WorkspacesCreate return &result, nil } -// GetWorkspace calls session.workspaces.getWorkspace. -// -// RPC method: session.workspaces.getWorkspace. func (a *WorkspacesApi) GetWorkspace(ctx context.Context) (*WorkspacesGetWorkspaceResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.workspaces.getWorkspace", req) @@ -4093,9 +3865,6 @@ func (a *WorkspacesApi) GetWorkspace(ctx context.Context) (*WorkspacesGetWorkspa return &result, nil } -// ListFiles calls session.workspaces.listFiles. -// -// RPC method: session.workspaces.listFiles. func (a *WorkspacesApi) ListFiles(ctx context.Context) (*WorkspacesListFilesResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.workspaces.listFiles", req) @@ -4109,9 +3878,6 @@ func (a *WorkspacesApi) ListFiles(ctx context.Context) (*WorkspacesListFilesResu return &result, nil } -// ReadFile calls session.workspaces.readFile. -// -// RPC method: session.workspaces.readFile. func (a *WorkspacesApi) ReadFile(ctx context.Context, params *WorkspacesReadFileRequest) (*WorkspacesReadFileResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -4157,9 +3923,6 @@ type SessionRpc struct { Workspaces *WorkspacesApi } -// Log calls session.log. -// -// RPC method: session.log. func (a *SessionRpc) Log(ctx context.Context, params *LogRequest) (*LogResult, error) { req := map[string]any{"sessionId": a.common.sessionID} if params != nil { @@ -4185,9 +3948,6 @@ func (a *SessionRpc) Log(ctx context.Context, params *LogRequest) (*LogResult, e return &result, nil } -// Suspend calls session.suspend. -// -// RPC method: session.suspend. func (a *SessionRpc) Suspend(ctx context.Context) (*SuspendResult, error) { req := map[string]any{"sessionId": a.common.sessionID} raw, err := a.common.client.Request("session.suspend", req) @@ -4230,55 +3990,15 @@ func NewSessionRpc(client *jsonrpc2.Client, sessionID string) *SessionRpc { } type SessionFsHandler interface { - // AppendFile handles sessionFs.appendFile. - // - // RPC method: sessionFs.appendFile. - // - // Returns: Describes a filesystem error. AppendFile(request *SessionFsAppendFileRequest) (*SessionFsError, error) - // Exists handles sessionFs.exists. - // - // RPC method: sessionFs.exists. Exists(request *SessionFsExistsRequest) (*SessionFsExistsResult, error) - // Mkdir handles sessionFs.mkdir. - // - // RPC method: sessionFs.mkdir. - // - // Returns: Describes a filesystem error. Mkdir(request *SessionFsMkdirRequest) (*SessionFsError, error) - // Readdir handles sessionFs.readdir. - // - // RPC method: sessionFs.readdir. Readdir(request *SessionFsReaddirRequest) (*SessionFsReaddirResult, error) - // ReaddirWithTypes handles sessionFs.readdirWithTypes. - // - // RPC method: sessionFs.readdirWithTypes. ReaddirWithTypes(request *SessionFsReaddirWithTypesRequest) (*SessionFsReaddirWithTypesResult, error) - // ReadFile handles sessionFs.readFile. - // - // RPC method: sessionFs.readFile. ReadFile(request *SessionFsReadFileRequest) (*SessionFsReadFileResult, error) - // Rename handles sessionFs.rename. - // - // RPC method: sessionFs.rename. - // - // Returns: Describes a filesystem error. Rename(request *SessionFsRenameRequest) (*SessionFsError, error) - // Rm handles sessionFs.rm. - // - // RPC method: sessionFs.rm. - // - // Returns: Describes a filesystem error. Rm(request *SessionFsRmRequest) (*SessionFsError, error) - // Stat handles sessionFs.stat. - // - // RPC method: sessionFs.stat. Stat(request *SessionFsStatRequest) (*SessionFsStatResult, error) - // WriteFile handles sessionFs.writeFile. - // - // RPC method: sessionFs.writeFile. - // - // Returns: Describes a filesystem error. WriteFile(request *SessionFsWriteFileRequest) (*SessionFsError, error) } diff --git a/go/rpc/zsession_encoding.go b/go/rpc/zsession_encoding.go index 15ca55139..3e89f210a 100644 --- a/go/rpc/zsession_encoding.go +++ b/go/rpc/zsession_encoding.go @@ -269,6 +269,12 @@ func (e *SessionEvent) UnmarshalJSON(data []byte) error { return err } e.Data = &d + case SessionEventTypeSessionCustomNotification: + var d SessionCustomNotificationData + if err := json.Unmarshal(raw.Data, &d); err != nil { + return err + } + e.Data = &d case SessionEventTypeSessionError: var d SessionErrorData if err := json.Unmarshal(raw.Data, &d); err != nil { @@ -1979,3 +1985,65 @@ func (r *ElicitationCompletedData) UnmarshalJSON(data []byte) error { r.RequestID = raw.RequestID return nil } + +func (r CustomNotificationPayload) MarshalJSON() ([]byte, error) { + if r.AnyArray != nil { + return json.Marshal(r.AnyArray) + } + if r.AnyMap != nil { + return json.Marshal(r.AnyMap) + } + if r.Bool != nil { + return json.Marshal(r.Bool) + } + if r.Double != nil { + return json.Marshal(r.Double) + } + if r.String != nil { + return json.Marshal(r.String) + } + return []byte("null"), nil +} + +func (r *CustomNotificationPayload) UnmarshalJSON(data []byte) error { + if string(data) == "null" { + *r = CustomNotificationPayload{} + return nil + } + { + var value []any + if err := json.Unmarshal(data, &value); err == nil { + *r = CustomNotificationPayload{AnyArray: value} + return nil + } + } + { + var value map[string]any + if err := json.Unmarshal(data, &value); err == nil { + *r = CustomNotificationPayload{AnyMap: value} + return nil + } + } + { + var value bool + if err := json.Unmarshal(data, &value); err == nil { + *r = CustomNotificationPayload{Bool: &value} + return nil + } + } + { + var value float64 + if err := json.Unmarshal(data, &value); err == nil { + *r = CustomNotificationPayload{Double: &value} + return nil + } + } + { + var value string + if err := json.Unmarshal(data, &value); err == nil { + *r = CustomNotificationPayload{String: &value} + return nil + } + } + return errors.New("data did not match any union variant for CustomNotificationPayload") +} diff --git a/go/rpc/zsession_events.go b/go/rpc/zsession_events.go index 9d2589d95..f9a38fdbc 100644 --- a/go/rpc/zsession_events.go +++ b/go/rpc/zsession_events.go @@ -92,6 +92,7 @@ const ( SessionEventTypeSessionCompactionStart SessionEventType = "session.compaction_start" SessionEventTypeSessionContextChanged SessionEventType = "session.context_changed" SessionEventTypeSessionCustomAgentsUpdated SessionEventType = "session.custom_agents_updated" + SessionEventTypeSessionCustomNotification SessionEventType = "session.custom_notification" SessionEventTypeSessionError SessionEventType = "session.error" SessionEventTypeSessionExtensionsLoaded SessionEventType = "session.extensions_loaded" SessionEventTypeSessionHandoff SessionEventType = "session.handoff" @@ -397,7 +398,7 @@ func (*PendingMessagesModifiedData) Type() SessionEventType { type SessionErrorData struct { // Only set on `errorType: "rate_limit"`. When `true`, the runtime will follow this error with an `auto_mode_switch.requested` event (or silently switch if `continueOnAutoMode` is enabled). UI clients can use this flag to suppress duplicate rendering of the rate-limit error when they show their own auto-mode-switch prompt. EligibleForAutoSwitch *bool `json:"eligibleForAutoSwitch,omitempty"` - // Fine-grained error code from the upstream provider, when available. For `errorType: "rate_limit"`, this is one of the `RateLimitErrorCode` values (e.g., `"user_weekly_rate_limited"`, `"user_global_rate_limited"`, `"rate_limited"`, `"user_model_rate_limited"`, `"integration_rate_limited"`). + // Fine-grained error code from the upstream provider, when available. For `errorType: "rate_limit"`, this is one of the `RateLimitErrorCode` values (e.g., `"user_weekly_rate_limited"`, `"user_global_rate_limited"`, `"rate_limited"`, `"user_model_rate_limited"`, `"integration_rate_limited"`). For `errorType: "quota"`, this is the CAPI quota error code (e.g., `"quota_exceeded"`, `"session_quota_exceeded"`, `"billing_not_configured"`). ErrorCode *string `json:"errorCode,omitempty"` // Category of error (e.g., "authentication", "authorization", "quota", "rate_limit", "context_limit", "query") ErrorType string `json:"errorType"` @@ -614,6 +615,25 @@ type McpOauthRequiredData struct { func (*McpOauthRequiredData) sessionEventData() {} func (*McpOauthRequiredData) Type() SessionEventType { return SessionEventTypeMcpOauthRequired } +// Opaque custom notification data. Consumers may branch on source and name, but payload semantics are source-defined. +type SessionCustomNotificationData struct { + // Source-defined custom notification name + Name string `json:"name"` + // Source-defined JSON payload for the custom notification + Payload CustomNotificationPayload `json:"payload"` + // Namespace for the custom notification producer + Source string `json:"source"` + // Optional source-defined string identifiers describing the payload subject + Subject map[string]string `json:"subject,omitempty"` + // Optional source-defined payload schema version + Version *int64 `json:"version,omitempty"` +} + +func (*SessionCustomNotificationData) sessionEventData() {} +func (*SessionCustomNotificationData) Type() SessionEventType { + return SessionEventTypeSessionCustomNotification +} + // Payload indicating the session is idle with no background agents in flight type SessionIdleData struct { // True when the preceding agentic loop was cancelled via abort signal @@ -1536,6 +1556,15 @@ type CustomAgentsUpdatedAgent struct { UserInvocable bool `json:"userInvocable"` } +// Source-defined JSON payload for the custom notification +type CustomNotificationPayload struct { + AnyArray []any + AnyMap map[string]any + Bool *bool + Double *float64 + String *string +} + type ElicitationCompletedContent interface { elicitationCompletedContent() } diff --git a/go/zsession_events.go b/go/zsession_events.go index 828095122..f871aa483 100644 --- a/go/zsession_events.go +++ b/go/zsession_events.go @@ -40,6 +40,7 @@ type ( CompactionCompleteCompactionTokensUsedCopilotUsage = rpc.CompactionCompleteCompactionTokensUsedCopilotUsage CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail = rpc.CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail CustomAgentsUpdatedAgent = rpc.CustomAgentsUpdatedAgent + CustomNotificationPayload = rpc.CustomNotificationPayload ElicitationCompletedAction = rpc.ElicitationCompletedAction ElicitationCompletedBooleanContent = rpc.ElicitationCompletedBooleanContent ElicitationCompletedContent = rpc.ElicitationCompletedContent @@ -139,6 +140,7 @@ type ( SessionCompactionStartData = rpc.SessionCompactionStartData SessionContextChangedData = rpc.SessionContextChangedData SessionCustomAgentsUpdatedData = rpc.SessionCustomAgentsUpdatedData + SessionCustomNotificationData = rpc.SessionCustomNotificationData SessionErrorData = rpc.SessionErrorData SessionEvent = rpc.SessionEvent SessionEventData = rpc.SessionEventData @@ -372,6 +374,7 @@ const ( SessionEventTypeSessionCompactionStart = rpc.SessionEventTypeSessionCompactionStart SessionEventTypeSessionContextChanged = rpc.SessionEventTypeSessionContextChanged SessionEventTypeSessionCustomAgentsUpdated = rpc.SessionEventTypeSessionCustomAgentsUpdated + SessionEventTypeSessionCustomNotification = rpc.SessionEventTypeSessionCustomNotification SessionEventTypeSessionError = rpc.SessionEventTypeSessionError SessionEventTypeSessionExtensionsLoaded = rpc.SessionEventTypeSessionExtensionsLoaded SessionEventTypeSessionHandoff = rpc.SessionEventTypeSessionHandoff diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index 4a45d8f02..4822407aa 100644 --- a/nodejs/package-lock.json +++ b/nodejs/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.8", "license": "MIT", "dependencies": { - "@github/copilot": "^1.0.48-1", + "@github/copilot": "^1.0.48", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, @@ -663,26 +663,26 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.48-1.tgz", - "integrity": "sha512-8Y+Lf26h5Qq6ADXQ7wUAEvMil8BXKHDv9omlKXrFCmmAUzk+a36Y+LpvdSUBPxDyf4h/A8gUq6qJ63649a5sWg==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.48.tgz", + "integrity": "sha512-U5SzyTEq376UU9A4Sd3TEKz+Y2nRUd90cLO4Hc1otaB8yFSy9Ur2UVGcI2/wCoodL3a39k6WbdgNzFxr0gWFRQ==", "license": "SEE LICENSE IN LICENSE.md", "bin": { "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.48-1", - "@github/copilot-darwin-x64": "1.0.48-1", - "@github/copilot-linux-arm64": "1.0.48-1", - "@github/copilot-linux-x64": "1.0.48-1", - "@github/copilot-win32-arm64": "1.0.48-1", - "@github/copilot-win32-x64": "1.0.48-1" + "@github/copilot-darwin-arm64": "1.0.48", + "@github/copilot-darwin-x64": "1.0.48", + "@github/copilot-linux-arm64": "1.0.48", + "@github/copilot-linux-x64": "1.0.48", + "@github/copilot-win32-arm64": "1.0.48", + "@github/copilot-win32-x64": "1.0.48" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.48-1.tgz", - "integrity": "sha512-ZaacHYawrFD22LgfIBpVUqlfj6d6IogVPnyQVXjAWDvZ3JLXWCzX7OpTGJ/BWgU5HJwUkmr0ZyVqBTrfTrdCZQ==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.48.tgz", + "integrity": "sha512-82MLoMQwPVVFM8EYssihFxSEPUYtZADE8rMzQ3jG9HgRg2qjQSfnHQS1mKe64dlXswZUK/onw6/8kjnW5I4pPg==", "cpu": [ "arm64" ], @@ -696,9 +696,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.48-1.tgz", - "integrity": "sha512-cHpz8onmXlABNm8jBUON0fUm/7Koe853zHK349qq8mhZkdlNN3zCn0zkZQuzrJZfJbxrjFOV863N0+F3zGBU1w==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.48.tgz", + "integrity": "sha512-1VQ5r5F0h8GwboXmZTcutqcJT+iCpPXAF27QqodmpKEvW9aYfG8g9X2kFJOzDZoX+SA3Uaka9qXdYKF2xT6Uog==", "cpu": [ "x64" ], @@ -712,9 +712,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.48-1.tgz", - "integrity": "sha512-UADRnVHBWWza4Py0EUp7XO2712aoFemlpvsKwhnNIe0/o1ttwVeqdOHHeUuH/BUBY/Xx8QG+YB17bNztraiP8Q==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.48.tgz", + "integrity": "sha512-PmsGnb0DZlI+Bf53l9HM1PAHHkUcMyB4y8v/7tnC/jDOV5dGF124n0HnDNfJLOLiJGiQGodthIif6QtPaAxpeA==", "cpu": [ "arm64" ], @@ -728,9 +728,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.48-1.tgz", - "integrity": "sha512-FnOTLPwWht7l2UnXxhpVwT+tSPTC9UqBzjhAoC5y68qJ1bQYXE8TG6cm1qsCo3pfwSAyxEhO7leyuslEO2mIYA==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.48.tgz", + "integrity": "sha512-b2cc4euSlke9fYHXXsS2EL9UYbctN0h4lZvtAcKUDY+RCnpYAQOVBZK+c1R9dQrtsT6Z/yUv7PuFPSs8qdtc2Q==", "cpu": [ "x64" ], @@ -744,9 +744,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.48-1.tgz", - "integrity": "sha512-FIenlc2v04D7yCgm516piivbMfwpQqQ1gsZG4g2en8WxLQFjVfm2Szlk1NYwzo9K2gBmNc5+zpdTZH6kb7Hsng==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.48.tgz", + "integrity": "sha512-VEEOwddtpJ3DTbXGhnK6K8im4ofl9m08q1m/K++sNvWV8wkkOSOQBTiPdyUsuU/TXAoFhb8tZMIJv+6NnMBtMw==", "cpu": [ "arm64" ], @@ -760,9 +760,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.48-1.tgz", - "integrity": "sha512-d47QHwB89rNInhNpZGhh97njorWOmUXdrMExlM/lb5zcuBnH/QmIQHUeL9CJv970Ujs7gPHtwZcPhvZVuKd16A==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.48.tgz", + "integrity": "sha512-93BzvXLPHTyy1gWBXQY/IWIHor4IAwZuuo7/obG80/Qa6U0WeaN9slz/FBJvrsgVNrrRfEID5Xm3At+S6Kj67Q==", "cpu": [ "x64" ], diff --git a/nodejs/package.json b/nodejs/package.json index 51b07aeaf..ff90fbad7 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -56,7 +56,7 @@ "author": "GitHub", "license": "MIT", "dependencies": { - "@github/copilot": "^1.0.48-1", + "@github/copilot": "^1.0.48", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, diff --git a/nodejs/samples/package-lock.json b/nodejs/samples/package-lock.json index 2eff63e9c..4c968bfdd 100644 --- a/nodejs/samples/package-lock.json +++ b/nodejs/samples/package-lock.json @@ -18,7 +18,7 @@ "version": "0.1.8", "license": "MIT", "dependencies": { - "@github/copilot": "^1.0.48-1", + "@github/copilot": "^1.0.48", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, diff --git a/nodejs/src/generated/rpc.ts b/nodejs/src/generated/rpc.ts index 7d702af0c..5189f620f 100644 --- a/nodejs/src/generated/rpc.ts +++ b/nodejs/src/generated/rpc.ts @@ -2803,97 +2803,52 @@ export interface WorkspacesReadFileResult { /** Create typed server-scoped RPC methods (no session required). */ export function createServerRpc(connection: MessageConnection) { return { - /** - * Calls `ping`. - */ ping: async (params: PingRequest): Promise => connection.sendRequest("ping", params), models: { - /** - * Calls `models.list`. - */ - list: async (params?: ModelsListRequest): Promise => + list: async (params: ModelsListRequest): Promise => connection.sendRequest("models.list", params), }, tools: { - /** - * Calls `tools.list`. - */ list: async (params: ToolsListRequest): Promise => connection.sendRequest("tools.list", params), }, account: { - /** - * Calls `account.getQuota`. - */ - getQuota: async (params?: AccountGetQuotaRequest): Promise => + getQuota: async (params: AccountGetQuotaRequest): Promise => connection.sendRequest("account.getQuota", params), }, mcp: { config: { - /** - * Calls `mcp.config.list`. - */ list: async (): Promise => connection.sendRequest("mcp.config.list", {}), - /** - * Calls `mcp.config.add`. - */ add: async (params: McpConfigAddRequest): Promise => connection.sendRequest("mcp.config.add", params), - /** - * Calls `mcp.config.update`. - */ update: async (params: McpConfigUpdateRequest): Promise => connection.sendRequest("mcp.config.update", params), - /** - * Calls `mcp.config.remove`. - */ remove: async (params: McpConfigRemoveRequest): Promise => connection.sendRequest("mcp.config.remove", params), - /** - * Calls `mcp.config.enable`. - */ enable: async (params: McpConfigEnableRequest): Promise => connection.sendRequest("mcp.config.enable", params), - /** - * Calls `mcp.config.disable`. - */ disable: async (params: McpConfigDisableRequest): Promise => connection.sendRequest("mcp.config.disable", params), }, - /** - * Calls `mcp.discover`. - */ discover: async (params: McpDiscoverRequest): Promise => connection.sendRequest("mcp.discover", params), }, skills: { config: { - /** - * Calls `skills.config.setDisabledSkills`. - */ setDisabledSkills: async (params: SkillsConfigSetDisabledSkillsRequest): Promise => connection.sendRequest("skills.config.setDisabledSkills", params), }, - /** - * Calls `skills.discover`. - */ discover: async (params: SkillsDiscoverRequest): Promise => connection.sendRequest("skills.discover", params), }, sessionFs: { - /** - * Calls `sessionFs.setProvider`. - */ setProvider: async (params: SessionFsSetProviderRequest): Promise => connection.sendRequest("sessionFs.setProvider", params), }, /** @experimental */ sessions: { - /** - * Calls `sessions.fork`. - */ fork: async (params: SessionsForkRequest): Promise => connection.sendRequest("sessions.fork", params), }, @@ -2907,9 +2862,6 @@ export function createServerRpc(connection: MessageConnection) { */ export function createInternalServerRpc(connection: MessageConnection) { return { - /** - * Calls `connect`. - */ connect: async (params: ConnectRequest): Promise => connection.sendRequest("connect", params), }; @@ -2918,364 +2870,180 @@ export function createInternalServerRpc(connection: MessageConnection) { /** Create typed session-scoped RPC methods. */ export function createSessionRpc(connection: MessageConnection, sessionId: string) { return { - /** - * Calls `session.suspend`. - */ suspend: async (): Promise => connection.sendRequest("session.suspend", { sessionId }), auth: { - /** - * Calls `session.auth.getStatus`. - */ getStatus: async (): Promise => connection.sendRequest("session.auth.getStatus", { sessionId }), }, model: { - /** - * Calls `session.model.getCurrent`. - */ getCurrent: async (): Promise => connection.sendRequest("session.model.getCurrent", { sessionId }), - /** - * Calls `session.model.switchTo`. - */ switchTo: async (params: ModelSwitchToRequest): Promise => connection.sendRequest("session.model.switchTo", { sessionId, ...params }), }, mode: { - /** - * Calls `session.mode.get`. - * - * @returns The agent mode. Valid values: "interactive", "plan", "autopilot". - */ get: async (): Promise => connection.sendRequest("session.mode.get", { sessionId }), - /** - * Calls `session.mode.set`. - */ set: async (params: ModeSetRequest): Promise => connection.sendRequest("session.mode.set", { sessionId, ...params }), }, name: { - /** - * Calls `session.name.get`. - */ get: async (): Promise => connection.sendRequest("session.name.get", { sessionId }), - /** - * Calls `session.name.set`. - */ set: async (params: NameSetRequest): Promise => connection.sendRequest("session.name.set", { sessionId, ...params }), }, plan: { - /** - * Calls `session.plan.read`. - */ read: async (): Promise => connection.sendRequest("session.plan.read", { sessionId }), - /** - * Calls `session.plan.update`. - */ update: async (params: PlanUpdateRequest): Promise => connection.sendRequest("session.plan.update", { sessionId, ...params }), - /** - * Calls `session.plan.delete`. - */ delete: async (): Promise => connection.sendRequest("session.plan.delete", { sessionId }), }, workspaces: { - /** - * Calls `session.workspaces.getWorkspace`. - */ getWorkspace: async (): Promise => connection.sendRequest("session.workspaces.getWorkspace", { sessionId }), - /** - * Calls `session.workspaces.listFiles`. - */ listFiles: async (): Promise => connection.sendRequest("session.workspaces.listFiles", { sessionId }), - /** - * Calls `session.workspaces.readFile`. - */ readFile: async (params: WorkspacesReadFileRequest): Promise => connection.sendRequest("session.workspaces.readFile", { sessionId, ...params }), - /** - * Calls `session.workspaces.createFile`. - */ createFile: async (params: WorkspacesCreateFileRequest): Promise => connection.sendRequest("session.workspaces.createFile", { sessionId, ...params }), }, instructions: { - /** - * Calls `session.instructions.getSources`. - */ getSources: async (): Promise => connection.sendRequest("session.instructions.getSources", { sessionId }), }, /** @experimental */ fleet: { - /** - * Calls `session.fleet.start`. - */ start: async (params: FleetStartRequest): Promise => connection.sendRequest("session.fleet.start", { sessionId, ...params }), }, /** @experimental */ agent: { - /** - * Calls `session.agent.list`. - */ list: async (): Promise => connection.sendRequest("session.agent.list", { sessionId }), - /** - * Calls `session.agent.getCurrent`. - */ getCurrent: async (): Promise => connection.sendRequest("session.agent.getCurrent", { sessionId }), - /** - * Calls `session.agent.select`. - */ select: async (params: AgentSelectRequest): Promise => connection.sendRequest("session.agent.select", { sessionId, ...params }), - /** - * Calls `session.agent.deselect`. - */ deselect: async (): Promise => connection.sendRequest("session.agent.deselect", { sessionId }), - /** - * Calls `session.agent.reload`. - */ reload: async (): Promise => connection.sendRequest("session.agent.reload", { sessionId }), }, /** @experimental */ tasks: { - /** - * Calls `session.tasks.startAgent`. - */ startAgent: async (params: TasksStartAgentRequest): Promise => connection.sendRequest("session.tasks.startAgent", { sessionId, ...params }), - /** - * Calls `session.tasks.list`. - */ list: async (): Promise => connection.sendRequest("session.tasks.list", { sessionId }), - /** - * Calls `session.tasks.promoteToBackground`. - */ promoteToBackground: async (params: TasksPromoteToBackgroundRequest): Promise => connection.sendRequest("session.tasks.promoteToBackground", { sessionId, ...params }), - /** - * Calls `session.tasks.cancel`. - */ cancel: async (params: TasksCancelRequest): Promise => connection.sendRequest("session.tasks.cancel", { sessionId, ...params }), - /** - * Calls `session.tasks.remove`. - */ remove: async (params: TasksRemoveRequest): Promise => connection.sendRequest("session.tasks.remove", { sessionId, ...params }), - /** - * Calls `session.tasks.sendMessage`. - */ sendMessage: async (params: TasksSendMessageRequest): Promise => connection.sendRequest("session.tasks.sendMessage", { sessionId, ...params }), }, /** @experimental */ skills: { - /** - * Calls `session.skills.list`. - */ list: async (): Promise => connection.sendRequest("session.skills.list", { sessionId }), - /** - * Calls `session.skills.enable`. - */ enable: async (params: SkillsEnableRequest): Promise => connection.sendRequest("session.skills.enable", { sessionId, ...params }), - /** - * Calls `session.skills.disable`. - */ disable: async (params: SkillsDisableRequest): Promise => connection.sendRequest("session.skills.disable", { sessionId, ...params }), - /** - * Calls `session.skills.reload`. - */ reload: async (): Promise => connection.sendRequest("session.skills.reload", { sessionId }), }, /** @experimental */ mcp: { - /** - * Calls `session.mcp.list`. - */ list: async (): Promise => connection.sendRequest("session.mcp.list", { sessionId }), - /** - * Calls `session.mcp.enable`. - */ enable: async (params: McpEnableRequest): Promise => connection.sendRequest("session.mcp.enable", { sessionId, ...params }), - /** - * Calls `session.mcp.disable`. - */ disable: async (params: McpDisableRequest): Promise => connection.sendRequest("session.mcp.disable", { sessionId, ...params }), - /** - * Calls `session.mcp.reload`. - */ reload: async (): Promise => connection.sendRequest("session.mcp.reload", { sessionId }), /** @experimental */ oauth: { - /** - * Calls `session.mcp.oauth.login`. - */ login: async (params: McpOauthLoginRequest): Promise => connection.sendRequest("session.mcp.oauth.login", { sessionId, ...params }), }, }, /** @experimental */ plugins: { - /** - * Calls `session.plugins.list`. - */ list: async (): Promise => connection.sendRequest("session.plugins.list", { sessionId }), }, /** @experimental */ extensions: { - /** - * Calls `session.extensions.list`. - */ list: async (): Promise => connection.sendRequest("session.extensions.list", { sessionId }), - /** - * Calls `session.extensions.enable`. - */ enable: async (params: ExtensionsEnableRequest): Promise => connection.sendRequest("session.extensions.enable", { sessionId, ...params }), - /** - * Calls `session.extensions.disable`. - */ disable: async (params: ExtensionsDisableRequest): Promise => connection.sendRequest("session.extensions.disable", { sessionId, ...params }), - /** - * Calls `session.extensions.reload`. - */ reload: async (): Promise => connection.sendRequest("session.extensions.reload", { sessionId }), }, tools: { - /** - * Calls `session.tools.handlePendingToolCall`. - */ handlePendingToolCall: async (params: HandlePendingToolCallRequest): Promise => connection.sendRequest("session.tools.handlePendingToolCall", { sessionId, ...params }), }, commands: { - /** - * Calls `session.commands.list`. - */ list: async (params?: CommandsListRequest): Promise => connection.sendRequest("session.commands.list", { sessionId, ...params }), - /** - * Calls `session.commands.invoke`. - */ invoke: async (params: CommandsInvokeRequest): Promise => connection.sendRequest("session.commands.invoke", { sessionId, ...params }), - /** - * Calls `session.commands.handlePendingCommand`. - */ handlePendingCommand: async (params: CommandsHandlePendingCommandRequest): Promise => connection.sendRequest("session.commands.handlePendingCommand", { sessionId, ...params }), - /** - * Calls `session.commands.respondToQueuedCommand`. - */ respondToQueuedCommand: async (params: CommandsRespondToQueuedCommandRequest): Promise => connection.sendRequest("session.commands.respondToQueuedCommand", { sessionId, ...params }), }, ui: { - /** - * Calls `session.ui.elicitation`. - * - * @returns The elicitation response (accept with form values, decline, or cancel) - */ elicitation: async (params: UIElicitationRequest): Promise => connection.sendRequest("session.ui.elicitation", { sessionId, ...params }), - /** - * Calls `session.ui.handlePendingElicitation`. - */ handlePendingElicitation: async (params: UIHandlePendingElicitationRequest): Promise => connection.sendRequest("session.ui.handlePendingElicitation", { sessionId, ...params }), }, permissions: { - /** - * Calls `session.permissions.handlePendingPermissionRequest`. - */ handlePendingPermissionRequest: async (params: PermissionDecisionRequest): Promise => connection.sendRequest("session.permissions.handlePendingPermissionRequest", { sessionId, ...params }), - /** - * Calls `session.permissions.setApproveAll`. - */ setApproveAll: async (params: PermissionsSetApproveAllRequest): Promise => connection.sendRequest("session.permissions.setApproveAll", { sessionId, ...params }), - /** - * Calls `session.permissions.resetSessionApprovals`. - */ resetSessionApprovals: async (): Promise => connection.sendRequest("session.permissions.resetSessionApprovals", { sessionId }), }, - /** - * Calls `session.log`. - */ log: async (params: LogRequest): Promise => connection.sendRequest("session.log", { sessionId, ...params }), shell: { - /** - * Calls `session.shell.exec`. - */ exec: async (params: ShellExecRequest): Promise => connection.sendRequest("session.shell.exec", { sessionId, ...params }), - /** - * Calls `session.shell.kill`. - */ kill: async (params: ShellKillRequest): Promise => connection.sendRequest("session.shell.kill", { sessionId, ...params }), }, /** @experimental */ history: { - /** - * Calls `session.history.compact`. - */ compact: async (): Promise => connection.sendRequest("session.history.compact", { sessionId }), - /** - * Calls `session.history.truncate`. - */ truncate: async (params: HistoryTruncateRequest): Promise => connection.sendRequest("session.history.truncate", { sessionId, ...params }), }, /** @experimental */ usage: { - /** - * Calls `session.usage.getMetrics`. - */ getMetrics: async (): Promise => connection.sendRequest("session.usage.getMetrics", { sessionId }), }, /** @experimental */ remote: { - /** - * Calls `session.remote.enable`. - */ enable: async (params: RemoteEnableRequest): Promise => connection.sendRequest("session.remote.enable", { sessionId, ...params }), - /** - * Calls `session.remote.disable`. - */ disable: async (): Promise => connection.sendRequest("session.remote.disable", { sessionId }), }, @@ -3284,55 +3052,15 @@ export function createSessionRpc(connection: MessageConnection, sessionId: strin /** Handler for `sessionFs` client session API methods. */ export interface SessionFsHandler { - /** - * Handles `sessionFs.readFile`. - */ readFile(params: SessionFsReadFileRequest): Promise; - /** - * Handles `sessionFs.writeFile`. - * - * @returns Describes a filesystem error. - */ writeFile(params: SessionFsWriteFileRequest): Promise; - /** - * Handles `sessionFs.appendFile`. - * - * @returns Describes a filesystem error. - */ appendFile(params: SessionFsAppendFileRequest): Promise; - /** - * Handles `sessionFs.exists`. - */ exists(params: SessionFsExistsRequest): Promise; - /** - * Handles `sessionFs.stat`. - */ stat(params: SessionFsStatRequest): Promise; - /** - * Handles `sessionFs.mkdir`. - * - * @returns Describes a filesystem error. - */ mkdir(params: SessionFsMkdirRequest): Promise; - /** - * Handles `sessionFs.readdir`. - */ readdir(params: SessionFsReaddirRequest): Promise; - /** - * Handles `sessionFs.readdirWithTypes`. - */ readdirWithTypes(params: SessionFsReaddirWithTypesRequest): Promise; - /** - * Handles `sessionFs.rm`. - * - * @returns Describes a filesystem error. - */ rm(params: SessionFsRmRequest): Promise; - /** - * Handles `sessionFs.rename`. - * - * @returns Describes a filesystem error. - */ rename(params: SessionFsRenameRequest): Promise; } diff --git a/nodejs/src/generated/session-events.ts b/nodejs/src/generated/session-events.ts index 4218d78c2..e90f9e7a3 100644 --- a/nodejs/src/generated/session-events.ts +++ b/nodejs/src/generated/session-events.ts @@ -66,6 +66,7 @@ export type SessionEvent = | SamplingCompletedEvent | McpOauthRequiredEvent | McpOauthCompletedEvent + | CustomNotificationEvent | ExternalToolRequestedEvent | ExternalToolCompletedEvent | CommandQueuedEvent @@ -256,6 +257,18 @@ export type ElicitationRequestedMode = "form" | "url"; */ export type ElicitationCompletedAction = "accept" | "decline" | "cancel"; export type ElicitationCompletedContent = string | number | boolean | string[]; +/** + * Source-defined JSON payload for the custom notification + */ +export type CustomNotificationPayload = + | string + | number + | boolean + | null + | unknown[] + | { + [k: string]: unknown; + }; /** * Connection status: connected, failed, needs-auth, pending, disabled, or not_configured */ @@ -517,7 +530,7 @@ export interface ErrorData { */ eligibleForAutoSwitch?: boolean; /** - * Fine-grained error code from the upstream provider, when available. For `errorType: "rate_limit"`, this is one of the `RateLimitErrorCode` values (e.g., `"user_weekly_rate_limited"`, `"user_global_rate_limited"`, `"rate_limited"`, `"user_model_rate_limited"`, `"integration_rate_limited"`). + * Fine-grained error code from the upstream provider, when available. For `errorType: "rate_limit"`, this is one of the `RateLimitErrorCode` values (e.g., `"user_weekly_rate_limited"`, `"user_global_rate_limited"`, `"rate_limited"`, `"user_model_rate_limited"`, `"integration_rate_limited"`). For `errorType: "quota"`, this is the CAPI quota error code (e.g., `"quota_exceeded"`, `"session_quota_exceeded"`, `"billing_not_configured"`). */ errorCode?: string; /** @@ -4622,6 +4635,52 @@ export interface McpOauthCompletedData { */ requestId: string; } +export interface CustomNotificationEvent { + /** + * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events. + */ + agentId?: string; + data: CustomNotificationData; + ephemeral: true; + /** + * Unique event identifier (UUID v4), generated when the event is emitted + */ + id: string; + /** + * ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event. + */ + parentId: string | null; + /** + * ISO 8601 timestamp when the event was created + */ + timestamp: string; + type: "session.custom_notification"; +} +/** + * Opaque custom notification data. Consumers may branch on source and name, but payload semantics are source-defined. + */ +export interface CustomNotificationData { + /** + * Source-defined custom notification name + */ + name: string; + payload: CustomNotificationPayload; + /** + * Namespace for the custom notification producer + */ + source: string; + subject?: CustomNotificationSubject; + /** + * Optional source-defined payload schema version + */ + version?: number; +} +/** + * Optional source-defined string identifiers describing the payload subject + */ +export interface CustomNotificationSubject { + [k: string]: string; +} export interface ExternalToolRequestedEvent { /** * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events. diff --git a/python/copilot/generated/rpc.py b/python/copilot/generated/rpc.py index eb1a837a2..b75a30ca5 100644 --- a/python/copilot/generated/rpc.py +++ b/python/copilot/generated/rpc.py @@ -7094,9 +7094,8 @@ class ServerModelsApi: def __init__(self, client: "JsonRpcClient"): self._client = client - async def list(self, params: ModelsListRequest | None = None, *, timeout: float | None = None) -> ModelList: - "Calls models.list." - params_dict = {k: v for k, v in params.to_dict().items() if v is not None} if params is not None else {} + async def list(self, params: ModelsListRequest, *, timeout: float | None = None) -> ModelList: + params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return ModelList.from_dict(_patch_model_capabilities(await self._client.request("models.list", params_dict, **_timeout_kwargs(timeout)))) @@ -7105,7 +7104,6 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def list(self, params: ToolsListRequest, *, timeout: float | None = None) -> ToolList: - "Calls tools.list." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return ToolList.from_dict(await self._client.request("tools.list", params_dict, **_timeout_kwargs(timeout))) @@ -7114,9 +7112,8 @@ class ServerAccountApi: def __init__(self, client: "JsonRpcClient"): self._client = client - async def get_quota(self, params: AccountGetQuotaRequest | None = None, *, timeout: float | None = None) -> AccountGetQuotaResult: - "Calls account.getQuota." - params_dict = {k: v for k, v in params.to_dict().items() if v is not None} if params is not None else {} + async def get_quota(self, params: AccountGetQuotaRequest, *, timeout: float | None = None) -> AccountGetQuotaResult: + params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return AccountGetQuotaResult.from_dict(await self._client.request("account.getQuota", params_dict, **_timeout_kwargs(timeout))) @@ -7125,31 +7122,25 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def list(self, *, timeout: float | None = None) -> MCPConfigList: - "Calls mcp.config.list." return MCPConfigList.from_dict(await self._client.request("mcp.config.list", {}, **_timeout_kwargs(timeout))) async def add(self, params: MCPConfigAddRequest, *, timeout: float | None = None) -> None: - "Calls mcp.config.add." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.add", params_dict, **_timeout_kwargs(timeout)) async def update(self, params: MCPConfigUpdateRequest, *, timeout: float | None = None) -> None: - "Calls mcp.config.update." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.update", params_dict, **_timeout_kwargs(timeout)) async def remove(self, params: MCPConfigRemoveRequest, *, timeout: float | None = None) -> None: - "Calls mcp.config.remove." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.remove", params_dict, **_timeout_kwargs(timeout)) async def enable(self, params: MCPConfigEnableRequest, *, timeout: float | None = None) -> None: - "Calls mcp.config.enable." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.enable", params_dict, **_timeout_kwargs(timeout)) async def disable(self, params: MCPConfigDisableRequest, *, timeout: float | None = None) -> None: - "Calls mcp.config.disable." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.disable", params_dict, **_timeout_kwargs(timeout)) @@ -7160,7 +7151,6 @@ def __init__(self, client: "JsonRpcClient"): self.config = ServerMcpConfigApi(client) async def discover(self, params: MCPDiscoverRequest, *, timeout: float | None = None) -> MCPDiscoverResult: - "Calls mcp.discover." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return MCPDiscoverResult.from_dict(await self._client.request("mcp.discover", params_dict, **_timeout_kwargs(timeout))) @@ -7170,7 +7160,6 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def set_disabled_skills(self, params: SkillsConfigSetDisabledSkillsRequest, *, timeout: float | None = None) -> None: - "Calls skills.config.setDisabledSkills." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("skills.config.setDisabledSkills", params_dict, **_timeout_kwargs(timeout)) @@ -7181,7 +7170,6 @@ def __init__(self, client: "JsonRpcClient"): self.config = ServerSkillsConfigApi(client) async def discover(self, params: SkillsDiscoverRequest, *, timeout: float | None = None) -> ServerSkillList: - "Calls skills.discover." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return ServerSkillList.from_dict(await self._client.request("skills.discover", params_dict, **_timeout_kwargs(timeout))) @@ -7191,7 +7179,6 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def set_provider(self, params: SessionFSSetProviderRequest, *, timeout: float | None = None) -> SessionFSSetProviderResult: - "Calls sessionFs.setProvider." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return SessionFSSetProviderResult.from_dict(await self._client.request("sessionFs.setProvider", params_dict, **_timeout_kwargs(timeout))) @@ -7202,7 +7189,6 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def fork(self, params: SessionsForkRequest, *, timeout: float | None = None) -> SessionsForkResult: - "Calls sessions.fork." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return SessionsForkResult.from_dict(await self._client.request("sessions.fork", params_dict, **_timeout_kwargs(timeout))) @@ -7220,7 +7206,6 @@ def __init__(self, client: "JsonRpcClient"): self.sessions = ServerSessionsApi(client) async def ping(self, params: PingRequest, *, timeout: float | None = None) -> PingResult: - "Calls ping." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return PingResult.from_dict(await self._client.request("ping", params_dict, **_timeout_kwargs(timeout))) @@ -7231,7 +7216,7 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def connect(self, params: ConnectRequest, *, timeout: float | None = None) -> ConnectResult: - "Calls connect.\n\n:meta private:\n\nInternal SDK API; not part of the public surface." + """:meta private: Internal SDK API; not part of the public surface.""" params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return ConnectResult.from_dict(await self._client.request("connect", params_dict, **_timeout_kwargs(timeout))) @@ -7242,7 +7227,6 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_status(self, *, timeout: float | None = None) -> SessionAuthStatus: - "Calls session.auth.getStatus." return SessionAuthStatus.from_dict(await self._client.request("session.auth.getStatus", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7252,11 +7236,9 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_current(self, *, timeout: float | None = None) -> CurrentModel: - "Calls session.model.getCurrent." return CurrentModel.from_dict(await self._client.request("session.model.getCurrent", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def switch_to(self, params: ModelSwitchToRequest, *, timeout: float | None = None) -> ModelSwitchToResult: - "Calls session.model.switchTo." 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 ModelSwitchToResult.from_dict(await self._client.request("session.model.switchTo", params_dict, **_timeout_kwargs(timeout))) @@ -7268,11 +7250,9 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get(self, *, timeout: float | None = None) -> Mode: - "Calls session.mode.get.\n\nReturns:\n The agent mode. Valid values: \"interactive\", \"plan\", \"autopilot\"." return Mode(await self._client.request("session.mode.get", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def set(self, params: ModeSetRequest, *, timeout: float | None = None) -> None: - "Calls session.mode.set." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.mode.set", params_dict, **_timeout_kwargs(timeout)) @@ -7284,11 +7264,9 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get(self, *, timeout: float | None = None) -> NameGetResult: - "Calls session.name.get." return NameGetResult.from_dict(await self._client.request("session.name.get", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def set(self, params: NameSetRequest, *, timeout: float | None = None) -> None: - "Calls session.name.set." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.name.set", params_dict, **_timeout_kwargs(timeout)) @@ -7300,17 +7278,14 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def read(self, *, timeout: float | None = None) -> PlanReadResult: - "Calls session.plan.read." return PlanReadResult.from_dict(await self._client.request("session.plan.read", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def update(self, params: PlanUpdateRequest, *, timeout: float | None = None) -> None: - "Calls session.plan.update." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.plan.update", params_dict, **_timeout_kwargs(timeout)) async def delete(self, *, timeout: float | None = None) -> None: - "Calls session.plan.delete." await self._client.request("session.plan.delete", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) @@ -7320,21 +7295,17 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_workspace(self, *, timeout: float | None = None) -> WorkspacesGetWorkspaceResult: - "Calls session.workspaces.getWorkspace." return WorkspacesGetWorkspaceResult.from_dict(await self._client.request("session.workspaces.getWorkspace", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def list_files(self, *, timeout: float | None = None) -> WorkspacesListFilesResult: - "Calls session.workspaces.listFiles." return WorkspacesListFilesResult.from_dict(await self._client.request("session.workspaces.listFiles", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def read_file(self, params: WorkspacesReadFileRequest, *, timeout: float | None = None) -> WorkspacesReadFileResult: - "Calls session.workspaces.readFile." 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 WorkspacesReadFileResult.from_dict(await self._client.request("session.workspaces.readFile", params_dict, **_timeout_kwargs(timeout))) async def create_file(self, params: WorkspacesCreateFileRequest, *, timeout: float | None = None) -> None: - "Calls session.workspaces.createFile." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.workspaces.createFile", params_dict, **_timeout_kwargs(timeout)) @@ -7346,7 +7317,6 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_sources(self, *, timeout: float | None = None) -> InstructionsGetSourcesResult: - "Calls session.instructions.getSources." return InstructionsGetSourcesResult.from_dict(await self._client.request("session.instructions.getSources", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7357,7 +7327,6 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def start(self, params: FleetStartRequest, *, timeout: float | None = None) -> FleetStartResult: - "Calls session.fleet.start." 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 FleetStartResult.from_dict(await self._client.request("session.fleet.start", params_dict, **_timeout_kwargs(timeout))) @@ -7370,25 +7339,20 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, *, timeout: float | None = None) -> AgentList: - "Calls session.agent.list." return AgentList.from_dict(await self._client.request("session.agent.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def get_current(self, *, timeout: float | None = None) -> AgentGetCurrentResult: - "Calls session.agent.getCurrent." return AgentGetCurrentResult.from_dict(await self._client.request("session.agent.getCurrent", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def select(self, params: AgentSelectRequest, *, timeout: float | None = None) -> AgentSelectResult: - "Calls session.agent.select." 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 AgentSelectResult.from_dict(await self._client.request("session.agent.select", params_dict, **_timeout_kwargs(timeout))) async def deselect(self, *, timeout: float | None = None) -> None: - "Calls session.agent.deselect." await self._client.request("session.agent.deselect", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) async def reload(self, *, timeout: float | None = None) -> AgentReloadResult: - "Calls session.agent.reload." return AgentReloadResult.from_dict(await self._client.request("session.agent.reload", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7399,35 +7363,29 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def start_agent(self, params: TasksStartAgentRequest, *, timeout: float | None = None) -> TasksStartAgentResult: - "Calls session.tasks.startAgent." 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 TasksStartAgentResult.from_dict(await self._client.request("session.tasks.startAgent", params_dict, **_timeout_kwargs(timeout))) async def list(self, *, timeout: float | None = None) -> TaskList: - "Calls session.tasks.list." return TaskList.from_dict(await self._client.request("session.tasks.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def promote_to_background(self, params: TasksPromoteToBackgroundRequest, *, timeout: float | None = None) -> TasksPromoteToBackgroundResult: - "Calls session.tasks.promoteToBackground." 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 TasksPromoteToBackgroundResult.from_dict(await self._client.request("session.tasks.promoteToBackground", params_dict, **_timeout_kwargs(timeout))) async def cancel(self, params: TasksCancelRequest, *, timeout: float | None = None) -> TasksCancelResult: - "Calls session.tasks.cancel." 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 TasksCancelResult.from_dict(await self._client.request("session.tasks.cancel", params_dict, **_timeout_kwargs(timeout))) async def remove(self, params: TasksRemoveRequest, *, timeout: float | None = None) -> TasksRemoveResult: - "Calls session.tasks.remove." 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 TasksRemoveResult.from_dict(await self._client.request("session.tasks.remove", params_dict, **_timeout_kwargs(timeout))) async def send_message(self, params: TasksSendMessageRequest, *, timeout: float | None = None) -> TasksSendMessageResult: - "Calls session.tasks.sendMessage." 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 TasksSendMessageResult.from_dict(await self._client.request("session.tasks.sendMessage", params_dict, **_timeout_kwargs(timeout))) @@ -7440,23 +7398,19 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, *, timeout: float | None = None) -> SkillList: - "Calls session.skills.list." return SkillList.from_dict(await self._client.request("session.skills.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def enable(self, params: SkillsEnableRequest, *, timeout: float | None = None) -> None: - "Calls session.skills.enable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.skills.enable", params_dict, **_timeout_kwargs(timeout)) async def disable(self, params: SkillsDisableRequest, *, timeout: float | None = None) -> None: - "Calls session.skills.disable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.skills.disable", params_dict, **_timeout_kwargs(timeout)) async def reload(self, *, timeout: float | None = None) -> SkillsLoadDiagnostics: - "Calls session.skills.reload." return SkillsLoadDiagnostics.from_dict(await self._client.request("session.skills.reload", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7467,7 +7421,6 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def login(self, params: MCPOauthLoginRequest, *, timeout: float | None = None) -> MCPOauthLoginResult: - "Calls session.mcp.oauth.login." 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 MCPOauthLoginResult.from_dict(await self._client.request("session.mcp.oauth.login", params_dict, **_timeout_kwargs(timeout))) @@ -7481,23 +7434,19 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self.oauth = McpOauthApi(client, session_id) async def list(self, *, timeout: float | None = None) -> MCPServerList: - "Calls session.mcp.list." return MCPServerList.from_dict(await self._client.request("session.mcp.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def enable(self, params: MCPEnableRequest, *, timeout: float | None = None) -> None: - "Calls session.mcp.enable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.mcp.enable", params_dict, **_timeout_kwargs(timeout)) async def disable(self, params: MCPDisableRequest, *, timeout: float | None = None) -> None: - "Calls session.mcp.disable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.mcp.disable", params_dict, **_timeout_kwargs(timeout)) async def reload(self, *, timeout: float | None = None) -> None: - "Calls session.mcp.reload." await self._client.request("session.mcp.reload", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) @@ -7508,7 +7457,6 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, *, timeout: float | None = None) -> PluginList: - "Calls session.plugins.list." return PluginList.from_dict(await self._client.request("session.plugins.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7519,23 +7467,19 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, *, timeout: float | None = None) -> ExtensionList: - "Calls session.extensions.list." return ExtensionList.from_dict(await self._client.request("session.extensions.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def enable(self, params: ExtensionsEnableRequest, *, timeout: float | None = None) -> None: - "Calls session.extensions.enable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.extensions.enable", params_dict, **_timeout_kwargs(timeout)) async def disable(self, params: ExtensionsDisableRequest, *, timeout: float | None = None) -> None: - "Calls session.extensions.disable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.extensions.disable", params_dict, **_timeout_kwargs(timeout)) async def reload(self, *, timeout: float | None = None) -> None: - "Calls session.extensions.reload." await self._client.request("session.extensions.reload", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) @@ -7545,7 +7489,6 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def handle_pending_tool_call(self, params: HandlePendingToolCallRequest, *, timeout: float | None = None) -> HandlePendingToolCallResult: - "Calls session.tools.handlePendingToolCall." 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 HandlePendingToolCallResult.from_dict(await self._client.request("session.tools.handlePendingToolCall", params_dict, **_timeout_kwargs(timeout))) @@ -7557,25 +7500,21 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, params: CommandsListRequest | None = None, *, timeout: float | None = None) -> CommandList: - "Calls session.commands.list." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} if params is not None else {} params_dict["sessionId"] = self._session_id return CommandList.from_dict(await self._client.request("session.commands.list", params_dict, **_timeout_kwargs(timeout))) async def invoke(self, params: CommandsInvokeRequest, *, timeout: float | None = None) -> SlashCommandInvocationResult: - "Calls session.commands.invoke." 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 SlashCommandInvocationResult.from_dict(await self._client.request("session.commands.invoke", params_dict, **_timeout_kwargs(timeout))) async def handle_pending_command(self, params: CommandsHandlePendingCommandRequest, *, timeout: float | None = None) -> CommandsHandlePendingCommandResult: - "Calls session.commands.handlePendingCommand." 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 CommandsHandlePendingCommandResult.from_dict(await self._client.request("session.commands.handlePendingCommand", params_dict, **_timeout_kwargs(timeout))) async def respond_to_queued_command(self, params: CommandsRespondToQueuedCommandRequest, *, timeout: float | None = None) -> CommandsRespondToQueuedCommandResult: - "Calls session.commands.respondToQueuedCommand." 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 CommandsRespondToQueuedCommandResult.from_dict(await self._client.request("session.commands.respondToQueuedCommand", params_dict, **_timeout_kwargs(timeout))) @@ -7587,13 +7526,11 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def elicitation(self, params: UIElicitationRequest, *, timeout: float | None = None) -> UIElicitationResponse: - "Calls session.ui.elicitation.\n\nReturns:\n The elicitation response (accept with form values, decline, or cancel)" 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 UIElicitationResponse.from_dict(await self._client.request("session.ui.elicitation", params_dict, **_timeout_kwargs(timeout))) async def handle_pending_elicitation(self, params: UIHandlePendingElicitationRequest, *, timeout: float | None = None) -> UIElicitationResult: - "Calls session.ui.handlePendingElicitation." 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 UIElicitationResult.from_dict(await self._client.request("session.ui.handlePendingElicitation", params_dict, **_timeout_kwargs(timeout))) @@ -7605,19 +7542,16 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def handle_pending_permission_request(self, params: PermissionDecisionRequest, *, timeout: float | None = None) -> PermissionRequestResult: - "Calls session.permissions.handlePendingPermissionRequest." 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 PermissionRequestResult.from_dict(await self._client.request("session.permissions.handlePendingPermissionRequest", params_dict, **_timeout_kwargs(timeout))) async def set_approve_all(self, params: PermissionsSetApproveAllRequest, *, timeout: float | None = None) -> PermissionsSetApproveAllResult: - "Calls session.permissions.setApproveAll." 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 PermissionsSetApproveAllResult.from_dict(await self._client.request("session.permissions.setApproveAll", params_dict, **_timeout_kwargs(timeout))) async def reset_session_approvals(self, *, timeout: float | None = None) -> PermissionsResetSessionApprovalsResult: - "Calls session.permissions.resetSessionApprovals." return PermissionsResetSessionApprovalsResult.from_dict(await self._client.request("session.permissions.resetSessionApprovals", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7627,13 +7561,11 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def exec(self, params: ShellExecRequest, *, timeout: float | None = None) -> ShellExecResult: - "Calls session.shell.exec." 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 ShellExecResult.from_dict(await self._client.request("session.shell.exec", params_dict, **_timeout_kwargs(timeout))) async def kill(self, params: ShellKillRequest, *, timeout: float | None = None) -> ShellKillResult: - "Calls session.shell.kill." 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 ShellKillResult.from_dict(await self._client.request("session.shell.kill", params_dict, **_timeout_kwargs(timeout))) @@ -7646,11 +7578,9 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def compact(self, *, timeout: float | None = None) -> HistoryCompactResult: - "Calls session.history.compact." return HistoryCompactResult.from_dict(await self._client.request("session.history.compact", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def truncate(self, params: HistoryTruncateRequest, *, timeout: float | None = None) -> HistoryTruncateResult: - "Calls session.history.truncate." 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 HistoryTruncateResult.from_dict(await self._client.request("session.history.truncate", params_dict, **_timeout_kwargs(timeout))) @@ -7663,7 +7593,6 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_metrics(self, *, timeout: float | None = None) -> UsageGetMetricsResult: - "Calls session.usage.getMetrics." return UsageGetMetricsResult.from_dict(await self._client.request("session.usage.getMetrics", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7674,13 +7603,11 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def enable(self, params: RemoteEnableRequest, *, timeout: float | None = None) -> RemoteEnableResult: - "Calls session.remote.enable." 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 RemoteEnableResult.from_dict(await self._client.request("session.remote.enable", params_dict, **_timeout_kwargs(timeout))) async def disable(self, *, timeout: float | None = None) -> None: - "Calls session.remote.disable." await self._client.request("session.remote.disable", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) @@ -7713,11 +7640,9 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self.remote = RemoteApi(client, session_id) async def suspend(self, *, timeout: float | None = None) -> None: - "Calls session.suspend." await self._client.request("session.suspend", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) async def log(self, params: LogRequest, *, timeout: float | None = None) -> LogResult: - "Calls session.log." 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 LogResult.from_dict(await self._client.request("session.log", params_dict, **_timeout_kwargs(timeout))) @@ -7725,34 +7650,24 @@ async def log(self, params: LogRequest, *, timeout: float | None = None) -> LogR class SessionFsHandler(Protocol): async def read_file(self, params: SessionFSReadFileRequest) -> SessionFSReadFileResult: - "Calls sessionFs.readFile." pass async def write_file(self, params: SessionFSWriteFileRequest) -> SessionFSError | None: - "Calls sessionFs.writeFile.\n\nReturns:\n Describes a filesystem error." pass async def append_file(self, params: SessionFSAppendFileRequest) -> SessionFSError | None: - "Calls sessionFs.appendFile.\n\nReturns:\n Describes a filesystem error." pass async def exists(self, params: SessionFSExistsRequest) -> SessionFSExistsResult: - "Calls sessionFs.exists." pass async def stat(self, params: SessionFSStatRequest) -> SessionFSStatResult: - "Calls sessionFs.stat." pass async def mkdir(self, params: SessionFSMkdirRequest) -> SessionFSError | None: - "Calls sessionFs.mkdir.\n\nReturns:\n Describes a filesystem error." pass async def readdir(self, params: SessionFSReaddirRequest) -> SessionFSReaddirResult: - "Calls sessionFs.readdir." pass async def readdir_with_types(self, params: SessionFSReaddirWithTypesRequest) -> SessionFSReaddirWithTypesResult: - "Calls sessionFs.readdirWithTypes." pass async def rm(self, params: SessionFSRmRequest) -> SessionFSError | None: - "Calls sessionFs.rm.\n\nReturns:\n Describes a filesystem error." pass async def rename(self, params: SessionFSRenameRequest) -> SessionFSError | None: - "Calls sessionFs.rename.\n\nReturns:\n Describes a filesystem error." pass @dataclass diff --git a/python/copilot/generated/session_events.py b/python/copilot/generated/session_events.py index 947793bda..11142d608 100644 --- a/python/copilot/generated/session_events.py +++ b/python/copilot/generated/session_events.py @@ -166,6 +166,7 @@ class SessionEventType(Enum): SAMPLING_COMPLETED = "sampling.completed" MCP_OAUTH_REQUIRED = "mcp.oauth_required" MCP_OAUTH_COMPLETED = "mcp.oauth_completed" + SESSION_CUSTOM_NOTIFICATION = "session.custom_notification" EXTERNAL_TOOL_REQUESTED = "external_tool.requested" EXTERNAL_TOOL_COMPLETED = "external_tool.completed" COMMAND_QUEUED = "command.queued" @@ -2566,6 +2567,43 @@ def to_dict(self) -> dict: return result +@dataclass +class SessionCustomNotificationData: + "Opaque custom notification data. Consumers may branch on source and name, but payload semantics are source-defined." + name: str + payload: Any + source: str + subject: dict[str, str] | None = None + version: int | None = None + + @staticmethod + def from_dict(obj: Any) -> "SessionCustomNotificationData": + assert isinstance(obj, dict) + name = from_str(obj.get("name")) + payload = obj.get("payload") + source = from_str(obj.get("source")) + subject = from_union([from_none, lambda x: from_dict(from_str, x)], obj.get("subject")) + version = from_union([from_none, from_int], obj.get("version")) + return SessionCustomNotificationData( + name=name, + payload=payload, + source=source, + subject=subject, + version=version, + ) + + def to_dict(self) -> dict: + result: dict = {} + result["name"] = from_str(self.name) + result["payload"] = self.payload + result["source"] = from_str(self.source) + if self.subject is not None: + result["subject"] = from_union([from_none, lambda x: from_dict(from_str, x)], self.subject) + if self.version is not None: + result["version"] = from_union([from_none, to_int], self.version) + return result + + @dataclass class SessionErrorData: "Error details for timeline display including message and optional diagnostic information" @@ -4976,7 +5014,7 @@ class WorkspaceFileChangedOperation(Enum): UPDATE = "update" -SessionEventData = SessionStartData | SessionResumeData | SessionRemoteSteerableChangedData | SessionErrorData | SessionIdleData | SessionTitleChangedData | SessionScheduleCreatedData | SessionScheduleCancelledData | SessionInfoData | SessionWarningData | SessionModelChangeData | SessionModeChangedData | SessionPlanChangedData | SessionWorkspaceFileChangedData | SessionHandoffData | SessionTruncationData | SessionSnapshotRewindData | SessionShutdownData | SessionContextChangedData | SessionUsageInfoData | SessionCompactionStartData | SessionCompactionCompleteData | SessionTaskCompleteData | UserMessageData | PendingMessagesModifiedData | AssistantTurnStartData | AssistantIntentData | AssistantReasoningData | AssistantReasoningDeltaData | AssistantStreamingDeltaData | AssistantMessageData | AssistantMessageStartData | AssistantMessageDeltaData | AssistantTurnEndData | AssistantUsageData | ModelCallFailureData | AbortData | ToolUserRequestedData | ToolExecutionStartData | ToolExecutionPartialResultData | ToolExecutionProgressData | ToolExecutionCompleteData | SkillInvokedData | SubagentStartedData | SubagentCompletedData | SubagentFailedData | SubagentSelectedData | SubagentDeselectedData | HookStartData | HookEndData | SystemMessageData | SystemNotificationData | PermissionRequestedData | PermissionCompletedData | UserInputRequestedData | UserInputCompletedData | ElicitationRequestedData | ElicitationCompletedData | SamplingRequestedData | SamplingCompletedData | McpOauthRequiredData | McpOauthCompletedData | ExternalToolRequestedData | ExternalToolCompletedData | CommandQueuedData | CommandExecuteData | CommandCompletedData | AutoModeSwitchRequestedData | AutoModeSwitchCompletedData | CommandsChangedData | CapabilitiesChangedData | ExitPlanModeRequestedData | ExitPlanModeCompletedData | SessionToolsUpdatedData | SessionBackgroundTasksChangedData | SessionSkillsLoadedData | SessionCustomAgentsUpdatedData | SessionMcpServersLoadedData | SessionMcpServerStatusChangedData | SessionExtensionsLoadedData | RawSessionEventData | Data +SessionEventData = SessionStartData | SessionResumeData | SessionRemoteSteerableChangedData | SessionErrorData | SessionIdleData | SessionTitleChangedData | SessionScheduleCreatedData | SessionScheduleCancelledData | SessionInfoData | SessionWarningData | SessionModelChangeData | SessionModeChangedData | SessionPlanChangedData | SessionWorkspaceFileChangedData | SessionHandoffData | SessionTruncationData | SessionSnapshotRewindData | SessionShutdownData | SessionContextChangedData | SessionUsageInfoData | SessionCompactionStartData | SessionCompactionCompleteData | SessionTaskCompleteData | UserMessageData | PendingMessagesModifiedData | AssistantTurnStartData | AssistantIntentData | AssistantReasoningData | AssistantReasoningDeltaData | AssistantStreamingDeltaData | AssistantMessageData | AssistantMessageStartData | AssistantMessageDeltaData | AssistantTurnEndData | AssistantUsageData | ModelCallFailureData | AbortData | ToolUserRequestedData | ToolExecutionStartData | ToolExecutionPartialResultData | ToolExecutionProgressData | ToolExecutionCompleteData | SkillInvokedData | SubagentStartedData | SubagentCompletedData | SubagentFailedData | SubagentSelectedData | SubagentDeselectedData | HookStartData | HookEndData | SystemMessageData | SystemNotificationData | PermissionRequestedData | PermissionCompletedData | UserInputRequestedData | UserInputCompletedData | ElicitationRequestedData | ElicitationCompletedData | SamplingRequestedData | SamplingCompletedData | McpOauthRequiredData | McpOauthCompletedData | SessionCustomNotificationData | ExternalToolRequestedData | ExternalToolCompletedData | CommandQueuedData | CommandExecuteData | CommandCompletedData | AutoModeSwitchRequestedData | AutoModeSwitchCompletedData | CommandsChangedData | CapabilitiesChangedData | ExitPlanModeRequestedData | ExitPlanModeCompletedData | SessionToolsUpdatedData | SessionBackgroundTasksChangedData | SessionSkillsLoadedData | SessionCustomAgentsUpdatedData | SessionMcpServersLoadedData | SessionMcpServerStatusChangedData | SessionExtensionsLoadedData | RawSessionEventData | Data @dataclass @@ -5064,6 +5102,7 @@ def from_dict(obj: Any) -> "SessionEvent": case SessionEventType.SAMPLING_COMPLETED: data = SamplingCompletedData.from_dict(data_obj) case SessionEventType.MCP_OAUTH_REQUIRED: data = McpOauthRequiredData.from_dict(data_obj) case SessionEventType.MCP_OAUTH_COMPLETED: data = McpOauthCompletedData.from_dict(data_obj) + case SessionEventType.SESSION_CUSTOM_NOTIFICATION: data = SessionCustomNotificationData.from_dict(data_obj) case SessionEventType.EXTERNAL_TOOL_REQUESTED: data = ExternalToolRequestedData.from_dict(data_obj) case SessionEventType.EXTERNAL_TOOL_COMPLETED: data = ExternalToolCompletedData.from_dict(data_obj) case SessionEventType.COMMAND_QUEUED: data = CommandQueuedData.from_dict(data_obj) diff --git a/rust/src/generated/api_types.rs b/rust/src/generated/api_types.rs index 2f74abb48..a0e7429d0 100644 --- a/rust/src/generated/api_types.rs +++ b/rust/src/generated/api_types.rs @@ -187,14 +187,6 @@ pub mod rpc_methods { pub const SESSIONFS_RENAME: &str = "sessionFs.rename"; } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct AccountGetQuotaRequest { - /// GitHub token for per-user quota lookup. When provided, resolves this token to determine the user's quota instead of using the global auth. - #[serde(skip_serializing_if = "Option::is_none")] - pub git_hub_token: Option, -} - #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AccountQuotaSnapshot { @@ -346,20 +338,6 @@ pub struct CommandsInvokeRequest { pub name: String, } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct CommandsListRequest { - /// Include runtime built-in commands - #[serde(skip_serializing_if = "Option::is_none")] - pub include_builtins: Option, - /// Include commands registered by protocol clients, including SDK clients and extensions - #[serde(skip_serializing_if = "Option::is_none")] - pub include_client_commands: Option, - /// Include enabled user-invocable skills and commands - #[serde(skip_serializing_if = "Option::is_none")] - pub include_skills: Option, -} - #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CommandsRespondToQueuedCommandRequest { @@ -1083,14 +1061,6 @@ pub struct ModelList { pub models: Vec, } -#[derive(Debug, Clone, Default, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ModelsListRequest { - /// GitHub token for per-user model listing. When provided, resolves this token to determine the user's Copilot plan and available models instead of using the global auth. - #[serde(skip_serializing_if = "Option::is_none")] - pub git_hub_token: Option, -} - #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ModelSwitchToRequest { diff --git a/rust/src/generated/rpc.rs b/rust/src/generated/rpc.rs index b55f9d501..b07736676 100644 --- a/rust/src/generated/rpc.rs +++ b/rust/src/generated/rpc.rs @@ -68,8 +68,6 @@ impl<'a> ClientRpc<'a> { } } - /// Calls `ping`. - /// /// Wire method: `ping`. pub async fn ping(&self, params: PingRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -80,8 +78,6 @@ impl<'a> ClientRpc<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `connect`. - /// /// Wire method: `connect`. pub async fn connect(&self, params: ConnectRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -100,22 +96,8 @@ pub struct ClientRpcAccount<'a> { } impl<'a> ClientRpcAccount<'a> { - /// Calls `account.getQuota`. - /// - /// Wire method: `account.getQuota`. - pub async fn get_quota(&self) -> Result { - let wire_params = serde_json::json!({}); - let _value = self - .client - .call(rpc_methods::ACCOUNT_GETQUOTA, Some(wire_params)) - .await?; - Ok(serde_json::from_value(_value)?) - } - - /// Calls `account.getQuota`. - /// /// Wire method: `account.getQuota`. - pub async fn get_quota_with_params( + pub async fn get_quota( &self, params: AccountGetQuotaRequest, ) -> Result { @@ -142,8 +124,6 @@ impl<'a> ClientRpcMcp<'a> { } } - /// Calls `mcp.discover`. - /// /// Wire method: `mcp.discover`. pub async fn discover(&self, params: McpDiscoverRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -162,8 +142,6 @@ pub struct ClientRpcMcpConfig<'a> { } impl<'a> ClientRpcMcpConfig<'a> { - /// Calls `mcp.config.list`. - /// /// Wire method: `mcp.config.list`. pub async fn list(&self) -> Result { let wire_params = serde_json::json!({}); @@ -174,8 +152,6 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `mcp.config.add`. - /// /// Wire method: `mcp.config.add`. pub async fn add(&self, params: McpConfigAddRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -186,8 +162,6 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(()) } - /// Calls `mcp.config.update`. - /// /// Wire method: `mcp.config.update`. pub async fn update(&self, params: McpConfigUpdateRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -198,8 +172,6 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(()) } - /// Calls `mcp.config.remove`. - /// /// Wire method: `mcp.config.remove`. pub async fn remove(&self, params: McpConfigRemoveRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -210,8 +182,6 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(()) } - /// Calls `mcp.config.enable`. - /// /// Wire method: `mcp.config.enable`. pub async fn enable(&self, params: McpConfigEnableRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -222,8 +192,6 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(()) } - /// Calls `mcp.config.disable`. - /// /// Wire method: `mcp.config.disable`. pub async fn disable(&self, params: McpConfigDisableRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -242,22 +210,8 @@ pub struct ClientRpcModels<'a> { } impl<'a> ClientRpcModels<'a> { - /// Calls `models.list`. - /// /// Wire method: `models.list`. - pub async fn list(&self) -> Result { - let wire_params = serde_json::json!({}); - let _value = self - .client - .call(rpc_methods::MODELS_LIST, Some(wire_params)) - .await?; - Ok(serde_json::from_value(_value)?) - } - - /// Calls `models.list`. - /// - /// Wire method: `models.list`. - pub async fn list_with_params(&self, params: ModelsListRequest) -> Result { + pub async fn list(&self, params: ModelsListRequest) -> Result { let wire_params = serde_json::to_value(params)?; let _value = self .client @@ -274,8 +228,6 @@ pub struct ClientRpcSessionFs<'a> { } impl<'a> ClientRpcSessionFs<'a> { - /// Calls `sessionFs.setProvider`. - /// /// Wire method: `sessionFs.setProvider`. pub async fn set_provider( &self, @@ -297,8 +249,6 @@ pub struct ClientRpcSessions<'a> { } impl<'a> ClientRpcSessions<'a> { - /// Calls `sessions.fork`. - /// /// Wire method: `sessions.fork`. /// ///
@@ -332,8 +282,6 @@ impl<'a> ClientRpcSkills<'a> { } } - /// Calls `skills.discover`. - /// /// Wire method: `skills.discover`. pub async fn discover(&self, params: SkillsDiscoverRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -352,8 +300,6 @@ pub struct ClientRpcSkillsConfig<'a> { } impl<'a> ClientRpcSkillsConfig<'a> { - /// Calls `skills.config.setDisabledSkills`. - /// /// Wire method: `skills.config.setDisabledSkills`. pub async fn set_disabled_skills( &self, @@ -378,8 +324,6 @@ pub struct ClientRpcTools<'a> { } impl<'a> ClientRpcTools<'a> { - /// Calls `tools.list`. - /// /// Wire method: `tools.list`. pub async fn list(&self, params: ToolsListRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -552,8 +496,6 @@ impl<'a> SessionRpc<'a> { } } - /// Calls `session.suspend`. - /// /// Wire method: `session.suspend`. pub async fn suspend(&self) -> Result<(), Error> { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -565,8 +507,6 @@ impl<'a> SessionRpc<'a> { Ok(()) } - /// Calls `session.log`. - /// /// Wire method: `session.log`. pub async fn log(&self, params: LogRequest) -> Result { let mut wire_params = serde_json::to_value(params)?; @@ -587,8 +527,6 @@ pub struct SessionRpcAgent<'a> { } impl<'a> SessionRpcAgent<'a> { - /// Calls `session.agent.list`. - /// /// Wire method: `session.agent.list`. /// ///
@@ -608,8 +546,6 @@ impl<'a> SessionRpcAgent<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.agent.getCurrent`. - /// /// Wire method: `session.agent.getCurrent`. /// ///
@@ -629,8 +565,6 @@ impl<'a> SessionRpcAgent<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.agent.select`. - /// /// Wire method: `session.agent.select`. /// ///
@@ -651,8 +585,6 @@ impl<'a> SessionRpcAgent<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.agent.deselect`. - /// /// Wire method: `session.agent.deselect`. /// ///
@@ -672,8 +604,6 @@ impl<'a> SessionRpcAgent<'a> { Ok(()) } - /// Calls `session.agent.reload`. - /// /// Wire method: `session.agent.reload`. /// ///
@@ -701,8 +631,6 @@ pub struct SessionRpcAuth<'a> { } impl<'a> SessionRpcAuth<'a> { - /// Calls `session.auth.getStatus`. - /// /// Wire method: `session.auth.getStatus`. pub async fn get_status(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -722,8 +650,6 @@ pub struct SessionRpcCommands<'a> { } impl<'a> SessionRpcCommands<'a> { - /// Calls `session.commands.list`. - /// /// Wire method: `session.commands.list`. pub async fn list(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -735,8 +661,6 @@ impl<'a> SessionRpcCommands<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.commands.list`. - /// /// Wire method: `session.commands.list`. pub async fn list_with_params( &self, @@ -752,8 +676,6 @@ impl<'a> SessionRpcCommands<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.commands.invoke`. - /// /// Wire method: `session.commands.invoke`. pub async fn invoke( &self, @@ -769,8 +691,6 @@ impl<'a> SessionRpcCommands<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.commands.handlePendingCommand`. - /// /// Wire method: `session.commands.handlePendingCommand`. pub async fn handle_pending_command( &self, @@ -789,8 +709,6 @@ impl<'a> SessionRpcCommands<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.commands.respondToQueuedCommand`. - /// /// Wire method: `session.commands.respondToQueuedCommand`. pub async fn respond_to_queued_command( &self, @@ -817,8 +735,6 @@ pub struct SessionRpcExtensions<'a> { } impl<'a> SessionRpcExtensions<'a> { - /// Calls `session.extensions.list`. - /// /// Wire method: `session.extensions.list`. /// ///
@@ -838,8 +754,6 @@ impl<'a> SessionRpcExtensions<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.extensions.enable`. - /// /// Wire method: `session.extensions.enable`. /// ///
@@ -860,8 +774,6 @@ impl<'a> SessionRpcExtensions<'a> { Ok(()) } - /// Calls `session.extensions.disable`. - /// /// Wire method: `session.extensions.disable`. /// ///
@@ -882,8 +794,6 @@ impl<'a> SessionRpcExtensions<'a> { Ok(()) } - /// Calls `session.extensions.reload`. - /// /// Wire method: `session.extensions.reload`. /// ///
@@ -911,8 +821,6 @@ pub struct SessionRpcFleet<'a> { } impl<'a> SessionRpcFleet<'a> { - /// Calls `session.fleet.start`. - /// /// Wire method: `session.fleet.start`. /// ///
@@ -941,8 +849,6 @@ pub struct SessionRpcHistory<'a> { } impl<'a> SessionRpcHistory<'a> { - /// Calls `session.history.compact`. - /// /// Wire method: `session.history.compact`. /// ///
@@ -962,8 +868,6 @@ impl<'a> SessionRpcHistory<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.history.truncate`. - /// /// Wire method: `session.history.truncate`. /// ///
@@ -995,8 +899,6 @@ pub struct SessionRpcInstructions<'a> { } impl<'a> SessionRpcInstructions<'a> { - /// Calls `session.instructions.getSources`. - /// /// Wire method: `session.instructions.getSources`. pub async fn get_sources(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1026,8 +928,6 @@ impl<'a> SessionRpcMcp<'a> { } } - /// Calls `session.mcp.list`. - /// /// Wire method: `session.mcp.list`. /// ///
@@ -1047,8 +947,6 @@ impl<'a> SessionRpcMcp<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.mcp.enable`. - /// /// Wire method: `session.mcp.enable`. /// ///
@@ -1069,8 +967,6 @@ impl<'a> SessionRpcMcp<'a> { Ok(()) } - /// Calls `session.mcp.disable`. - /// /// Wire method: `session.mcp.disable`. /// ///
@@ -1091,8 +987,6 @@ impl<'a> SessionRpcMcp<'a> { Ok(()) } - /// Calls `session.mcp.reload`. - /// /// Wire method: `session.mcp.reload`. /// ///
@@ -1120,8 +1014,6 @@ pub struct SessionRpcMcpOauth<'a> { } impl<'a> SessionRpcMcpOauth<'a> { - /// Calls `session.mcp.oauth.login`. - /// /// Wire method: `session.mcp.oauth.login`. /// ///
@@ -1150,13 +1042,7 @@ pub struct SessionRpcMode<'a> { } impl<'a> SessionRpcMode<'a> { - /// Calls `session.mode.get`. - /// /// Wire method: `session.mode.get`. - /// - /// # Returns - /// - /// The agent mode. Valid values: "interactive", "plan", "autopilot". pub async fn get(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); let _value = self @@ -1167,8 +1053,6 @@ impl<'a> SessionRpcMode<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.mode.set`. - /// /// Wire method: `session.mode.set`. pub async fn set(&self, params: ModeSetRequest) -> Result<(), Error> { let mut wire_params = serde_json::to_value(params)?; @@ -1189,8 +1073,6 @@ pub struct SessionRpcModel<'a> { } impl<'a> SessionRpcModel<'a> { - /// Calls `session.model.getCurrent`. - /// /// Wire method: `session.model.getCurrent`. pub async fn get_current(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1202,8 +1084,6 @@ impl<'a> SessionRpcModel<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.model.switchTo`. - /// /// Wire method: `session.model.switchTo`. pub async fn switch_to( &self, @@ -1227,8 +1107,6 @@ pub struct SessionRpcName<'a> { } impl<'a> SessionRpcName<'a> { - /// Calls `session.name.get`. - /// /// Wire method: `session.name.get`. pub async fn get(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1240,8 +1118,6 @@ impl<'a> SessionRpcName<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.name.set`. - /// /// Wire method: `session.name.set`. pub async fn set(&self, params: NameSetRequest) -> Result<(), Error> { let mut wire_params = serde_json::to_value(params)?; @@ -1262,8 +1138,6 @@ pub struct SessionRpcPermissions<'a> { } impl<'a> SessionRpcPermissions<'a> { - /// Calls `session.permissions.handlePendingPermissionRequest`. - /// /// Wire method: `session.permissions.handlePendingPermissionRequest`. pub async fn handle_pending_permission_request( &self, @@ -1282,8 +1156,6 @@ impl<'a> SessionRpcPermissions<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.permissions.setApproveAll`. - /// /// Wire method: `session.permissions.setApproveAll`. pub async fn set_approve_all( &self, @@ -1302,8 +1174,6 @@ impl<'a> SessionRpcPermissions<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.permissions.resetSessionApprovals`. - /// /// Wire method: `session.permissions.resetSessionApprovals`. pub async fn reset_session_approvals( &self, @@ -1328,8 +1198,6 @@ pub struct SessionRpcPlan<'a> { } impl<'a> SessionRpcPlan<'a> { - /// Calls `session.plan.read`. - /// /// Wire method: `session.plan.read`. pub async fn read(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1341,8 +1209,6 @@ impl<'a> SessionRpcPlan<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.plan.update`. - /// /// Wire method: `session.plan.update`. pub async fn update(&self, params: PlanUpdateRequest) -> Result<(), Error> { let mut wire_params = serde_json::to_value(params)?; @@ -1355,8 +1221,6 @@ impl<'a> SessionRpcPlan<'a> { Ok(()) } - /// Calls `session.plan.delete`. - /// /// Wire method: `session.plan.delete`. pub async fn delete(&self) -> Result<(), Error> { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1376,8 +1240,6 @@ pub struct SessionRpcPlugins<'a> { } impl<'a> SessionRpcPlugins<'a> { - /// Calls `session.plugins.list`. - /// /// Wire method: `session.plugins.list`. /// ///
@@ -1405,8 +1267,6 @@ pub struct SessionRpcRemote<'a> { } impl<'a> SessionRpcRemote<'a> { - /// Calls `session.remote.enable`. - /// /// Wire method: `session.remote.enable`. /// ///
@@ -1427,8 +1287,6 @@ impl<'a> SessionRpcRemote<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.remote.disable`. - /// /// Wire method: `session.remote.disable`. /// ///
@@ -1456,8 +1314,6 @@ pub struct SessionRpcShell<'a> { } impl<'a> SessionRpcShell<'a> { - /// Calls `session.shell.exec`. - /// /// Wire method: `session.shell.exec`. pub async fn exec(&self, params: ShellExecRequest) -> Result { let mut wire_params = serde_json::to_value(params)?; @@ -1470,8 +1326,6 @@ impl<'a> SessionRpcShell<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.shell.kill`. - /// /// Wire method: `session.shell.kill`. pub async fn kill(&self, params: ShellKillRequest) -> Result { let mut wire_params = serde_json::to_value(params)?; @@ -1492,8 +1346,6 @@ pub struct SessionRpcSkills<'a> { } impl<'a> SessionRpcSkills<'a> { - /// Calls `session.skills.list`. - /// /// Wire method: `session.skills.list`. /// ///
@@ -1513,8 +1365,6 @@ impl<'a> SessionRpcSkills<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.skills.enable`. - /// /// Wire method: `session.skills.enable`. /// ///
@@ -1535,8 +1385,6 @@ impl<'a> SessionRpcSkills<'a> { Ok(()) } - /// Calls `session.skills.disable`. - /// /// Wire method: `session.skills.disable`. /// ///
@@ -1557,8 +1405,6 @@ impl<'a> SessionRpcSkills<'a> { Ok(()) } - /// Calls `session.skills.reload`. - /// /// Wire method: `session.skills.reload`. /// ///
@@ -1586,8 +1432,6 @@ pub struct SessionRpcTasks<'a> { } impl<'a> SessionRpcTasks<'a> { - /// Calls `session.tasks.startAgent`. - /// /// Wire method: `session.tasks.startAgent`. /// ///
@@ -1611,8 +1455,6 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.tasks.list`. - /// /// Wire method: `session.tasks.list`. /// ///
@@ -1632,8 +1474,6 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.tasks.promoteToBackground`. - /// /// Wire method: `session.tasks.promoteToBackground`. /// ///
@@ -1660,8 +1500,6 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.tasks.cancel`. - /// /// Wire method: `session.tasks.cancel`. /// ///
@@ -1682,8 +1520,6 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.tasks.remove`. - /// /// Wire method: `session.tasks.remove`. /// ///
@@ -1704,8 +1540,6 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.tasks.sendMessage`. - /// /// Wire method: `session.tasks.sendMessage`. /// ///
@@ -1737,8 +1571,6 @@ pub struct SessionRpcTools<'a> { } impl<'a> SessionRpcTools<'a> { - /// Calls `session.tools.handlePendingToolCall`. - /// /// Wire method: `session.tools.handlePendingToolCall`. pub async fn handle_pending_tool_call( &self, @@ -1765,13 +1597,7 @@ pub struct SessionRpcUi<'a> { } impl<'a> SessionRpcUi<'a> { - /// Calls `session.ui.elicitation`. - /// /// Wire method: `session.ui.elicitation`. - /// - /// # Returns - /// - /// The elicitation response (accept with form values, decline, or cancel) pub async fn elicitation( &self, params: UIElicitationRequest, @@ -1786,8 +1612,6 @@ impl<'a> SessionRpcUi<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.ui.handlePendingElicitation`. - /// /// Wire method: `session.ui.handlePendingElicitation`. pub async fn handle_pending_elicitation( &self, @@ -1814,8 +1638,6 @@ pub struct SessionRpcUsage<'a> { } impl<'a> SessionRpcUsage<'a> { - /// Calls `session.usage.getMetrics`. - /// /// Wire method: `session.usage.getMetrics`. /// ///
@@ -1843,8 +1665,6 @@ pub struct SessionRpcWorkspaces<'a> { } impl<'a> SessionRpcWorkspaces<'a> { - /// Calls `session.workspaces.getWorkspace`. - /// /// Wire method: `session.workspaces.getWorkspace`. pub async fn get_workspace(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1859,8 +1679,6 @@ impl<'a> SessionRpcWorkspaces<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.workspaces.listFiles`. - /// /// Wire method: `session.workspaces.listFiles`. pub async fn list_files(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1872,8 +1690,6 @@ impl<'a> SessionRpcWorkspaces<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.workspaces.readFile`. - /// /// Wire method: `session.workspaces.readFile`. pub async fn read_file( &self, @@ -1889,8 +1705,6 @@ impl<'a> SessionRpcWorkspaces<'a> { Ok(serde_json::from_value(_value)?) } - /// Calls `session.workspaces.createFile`. - /// /// Wire method: `session.workspaces.createFile`. pub async fn create_file(&self, params: WorkspacesCreateFileRequest) -> Result<(), Error> { let mut wire_params = serde_json::to_value(params)?; diff --git a/rust/src/generated/session_events.rs b/rust/src/generated/session_events.rs index feca17f89..9142dfd40 100644 --- a/rust/src/generated/session_events.rs +++ b/rust/src/generated/session_events.rs @@ -133,6 +133,8 @@ pub enum SessionEventType { McpOauthRequired, #[serde(rename = "mcp.oauth_completed")] McpOauthCompleted, + #[serde(rename = "session.custom_notification")] + SessionCustomNotification, #[serde(rename = "external_tool.requested")] ExternalToolRequested, #[serde(rename = "external_tool.completed")] @@ -305,6 +307,8 @@ pub enum SessionEventData { McpOauthRequired(McpOauthRequiredData), #[serde(rename = "mcp.oauth_completed")] McpOauthCompleted(McpOauthCompletedData), + #[serde(rename = "session.custom_notification")] + SessionCustomNotification(SessionCustomNotificationData), #[serde(rename = "external_tool.requested")] ExternalToolRequested(ExternalToolRequestedData), #[serde(rename = "external_tool.completed")] @@ -479,7 +483,7 @@ pub struct SessionErrorData { /// Only set on `errorType: "rate_limit"`. When `true`, the runtime will follow this error with an `auto_mode_switch.requested` event (or silently switch if `continueOnAutoMode` is enabled). UI clients can use this flag to suppress duplicate rendering of the rate-limit error when they show their own auto-mode-switch prompt. #[serde(skip_serializing_if = "Option::is_none")] pub eligible_for_auto_switch: Option, - /// Fine-grained error code from the upstream provider, when available. For `errorType: "rate_limit"`, this is one of the `RateLimitErrorCode` values (e.g., `"user_weekly_rate_limited"`, `"user_global_rate_limited"`, `"rate_limited"`, `"user_model_rate_limited"`, `"integration_rate_limited"`). + /// Fine-grained error code from the upstream provider, when available. For `errorType: "rate_limit"`, this is one of the `RateLimitErrorCode` values (e.g., `"user_weekly_rate_limited"`, `"user_global_rate_limited"`, `"rate_limited"`, `"user_model_rate_limited"`, `"integration_rate_limited"`). For `errorType: "quota"`, this is the CAPI quota error code (e.g., `"quota_exceeded"`, `"session_quota_exceeded"`, `"billing_not_configured"`). #[serde(skip_serializing_if = "Option::is_none")] pub error_code: Option, /// Category of error (e.g., "authentication", "authorization", "quota", "rate_limit", "context_limit", "query") @@ -2516,6 +2520,24 @@ pub struct McpOauthCompletedData { pub request_id: RequestId, } +/// Opaque custom notification data. Consumers may branch on source and name, but payload semantics are source-defined. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SessionCustomNotificationData { + /// Source-defined custom notification name + pub name: String, + /// Source-defined JSON payload for the custom notification + pub payload: serde_json::Value, + /// Namespace for the custom notification producer + pub source: String, + /// Optional source-defined string identifiers describing the payload subject + #[serde(default)] + pub subject: HashMap, + /// Optional source-defined payload schema version + #[serde(skip_serializing_if = "Option::is_none")] + pub version: Option, +} + /// External tool invocation request for client-side tool execution #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] diff --git a/test/harness/package-lock.json b/test/harness/package-lock.json index e72caae70..60d645230 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.48-1", + "@github/copilot": "^1.0.48", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14", @@ -464,27 +464,27 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.48-1.tgz", - "integrity": "sha512-8Y+Lf26h5Qq6ADXQ7wUAEvMil8BXKHDv9omlKXrFCmmAUzk+a36Y+LpvdSUBPxDyf4h/A8gUq6qJ63649a5sWg==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.48.tgz", + "integrity": "sha512-U5SzyTEq376UU9A4Sd3TEKz+Y2nRUd90cLO4Hc1otaB8yFSy9Ur2UVGcI2/wCoodL3a39k6WbdgNzFxr0gWFRQ==", "dev": true, "license": "SEE LICENSE IN LICENSE.md", "bin": { "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.48-1", - "@github/copilot-darwin-x64": "1.0.48-1", - "@github/copilot-linux-arm64": "1.0.48-1", - "@github/copilot-linux-x64": "1.0.48-1", - "@github/copilot-win32-arm64": "1.0.48-1", - "@github/copilot-win32-x64": "1.0.48-1" + "@github/copilot-darwin-arm64": "1.0.48", + "@github/copilot-darwin-x64": "1.0.48", + "@github/copilot-linux-arm64": "1.0.48", + "@github/copilot-linux-x64": "1.0.48", + "@github/copilot-win32-arm64": "1.0.48", + "@github/copilot-win32-x64": "1.0.48" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.48-1.tgz", - "integrity": "sha512-ZaacHYawrFD22LgfIBpVUqlfj6d6IogVPnyQVXjAWDvZ3JLXWCzX7OpTGJ/BWgU5HJwUkmr0ZyVqBTrfTrdCZQ==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.48.tgz", + "integrity": "sha512-82MLoMQwPVVFM8EYssihFxSEPUYtZADE8rMzQ3jG9HgRg2qjQSfnHQS1mKe64dlXswZUK/onw6/8kjnW5I4pPg==", "cpu": [ "arm64" ], @@ -499,9 +499,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.48-1.tgz", - "integrity": "sha512-cHpz8onmXlABNm8jBUON0fUm/7Koe853zHK349qq8mhZkdlNN3zCn0zkZQuzrJZfJbxrjFOV863N0+F3zGBU1w==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.48.tgz", + "integrity": "sha512-1VQ5r5F0h8GwboXmZTcutqcJT+iCpPXAF27QqodmpKEvW9aYfG8g9X2kFJOzDZoX+SA3Uaka9qXdYKF2xT6Uog==", "cpu": [ "x64" ], @@ -516,9 +516,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.48-1.tgz", - "integrity": "sha512-UADRnVHBWWza4Py0EUp7XO2712aoFemlpvsKwhnNIe0/o1ttwVeqdOHHeUuH/BUBY/Xx8QG+YB17bNztraiP8Q==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.48.tgz", + "integrity": "sha512-PmsGnb0DZlI+Bf53l9HM1PAHHkUcMyB4y8v/7tnC/jDOV5dGF124n0HnDNfJLOLiJGiQGodthIif6QtPaAxpeA==", "cpu": [ "arm64" ], @@ -533,9 +533,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.48-1.tgz", - "integrity": "sha512-FnOTLPwWht7l2UnXxhpVwT+tSPTC9UqBzjhAoC5y68qJ1bQYXE8TG6cm1qsCo3pfwSAyxEhO7leyuslEO2mIYA==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.48.tgz", + "integrity": "sha512-b2cc4euSlke9fYHXXsS2EL9UYbctN0h4lZvtAcKUDY+RCnpYAQOVBZK+c1R9dQrtsT6Z/yUv7PuFPSs8qdtc2Q==", "cpu": [ "x64" ], @@ -550,9 +550,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.48-1.tgz", - "integrity": "sha512-FIenlc2v04D7yCgm516piivbMfwpQqQ1gsZG4g2en8WxLQFjVfm2Szlk1NYwzo9K2gBmNc5+zpdTZH6kb7Hsng==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.48.tgz", + "integrity": "sha512-VEEOwddtpJ3DTbXGhnK6K8im4ofl9m08q1m/K++sNvWV8wkkOSOQBTiPdyUsuU/TXAoFhb8tZMIJv+6NnMBtMw==", "cpu": [ "arm64" ], @@ -567,9 +567,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.48-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.48-1.tgz", - "integrity": "sha512-d47QHwB89rNInhNpZGhh97njorWOmUXdrMExlM/lb5zcuBnH/QmIQHUeL9CJv970Ujs7gPHtwZcPhvZVuKd16A==", + "version": "1.0.48", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.48.tgz", + "integrity": "sha512-93BzvXLPHTyy1gWBXQY/IWIHor4IAwZuuo7/obG80/Qa6U0WeaN9slz/FBJvrsgVNrrRfEID5Xm3At+S6Kj67Q==", "cpu": [ "x64" ], diff --git a/test/harness/package.json b/test/harness/package.json index 0bc06f4ec..40da68d76 100644 --- a/test/harness/package.json +++ b/test/harness/package.json @@ -11,7 +11,7 @@ "test": "vitest run" }, "devDependencies": { - "@github/copilot": "^1.0.48-1", + "@github/copilot": "^1.0.48", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14", From f37f08557e4d0af6952d8db4e0d67d972b198fe7 Mon Sep 17 00:00:00 2001 From: Copilot <223556219+Copilot@users.noreply.github.com> Date: Thu, 14 May 2026 13:51:40 -0400 Subject: [PATCH 2/5] Fix Python and Rust SDK compilation after @github/copilot 1.0.48 update The 1.0.48 codegen made models.list, account.getQuota, and session.commands.list require explicit request params instead of accepting no arguments. Python: - Update test call sites to pass ModelsListRequest() (all fields optional) - Add ModelsListRequest import where needed Rust: - Add missing AccountGetQuotaRequest, ModelsListRequest, and CommandsListRequest structs to generated api_types.rs (all fields optional, matching the Python/Node generated schemas) - Update callers in lib.rs, tests, and README to pass Default::default() Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- python/e2e/test_rpc_e2e.py | 4 ++-- python/e2e/test_rpc_server_e2e.py | 3 ++- python/test_rpc_timeout.py | 5 +++-- rust/README.md | 2 +- rust/src/generated/api_types.rs | 30 ++++++++++++++++++++++++++++++ rust/src/lib.rs | 2 +- rust/tests/e2e/rpc_server.rs | 4 ++-- rust/tests/session_test.rs | 2 +- scripts/codegen/rust.ts | 10 +++++++++- 9 files changed, 51 insertions(+), 11 deletions(-) diff --git a/python/e2e/test_rpc_e2e.py b/python/e2e/test_rpc_e2e.py index c5e9a7b79..e0fe93436 100644 --- a/python/e2e/test_rpc_e2e.py +++ b/python/e2e/test_rpc_e2e.py @@ -4,7 +4,7 @@ from copilot import CopilotClient from copilot.client import SubprocessConfig -from copilot.generated.rpc import PingRequest +from copilot.generated.rpc import PingRequest, ModelsListRequest from copilot.session import PermissionHandler from .testharness import CLI_PATH, E2ETestContext @@ -42,7 +42,7 @@ async def test_should_call_rpc_models_list(self): await client.stop() return - result = await client.rpc.models.list() + result = await client.rpc.models.list(ModelsListRequest()) assert result.models is not None assert isinstance(result.models, list) diff --git a/python/e2e/test_rpc_server_e2e.py b/python/e2e/test_rpc_server_e2e.py index ef2e5501d..67efbe733 100644 --- a/python/e2e/test_rpc_server_e2e.py +++ b/python/e2e/test_rpc_server_e2e.py @@ -17,6 +17,7 @@ from copilot.generated.rpc import ( AccountGetQuotaRequest, MCPDiscoverRequest, + ModelsListRequest, PingRequest, SkillsConfigSetDisabledSkillsRequest, SkillsDiscoverRequest, @@ -96,7 +97,7 @@ async def test_should_call_rpc_models_list_with_typed_result(self, authed_ctx: E client = _make_authed_client(authed_ctx, token) try: await client.start() - result = await client.rpc.models.list() + result = await client.rpc.models.list(ModelsListRequest()) assert result.models is not None assert any(model.id == "claude-sonnet-4.5" for model in result.models) assert all((model.name or "").strip() for model in result.models) diff --git a/python/test_rpc_timeout.py b/python/test_rpc_timeout.py index b6f07caed..a32e7e7f4 100644 --- a/python/test_rpc_timeout.py +++ b/python/test_rpc_timeout.py @@ -9,6 +9,7 @@ FleetStartRequest, ModeApi, ModeSetRequest, + ModelsListRequest, PlanApi, ServerModelsApi, ServerToolsApi, @@ -117,7 +118,7 @@ async def test_timeout_on_server_no_params_method(self): client.request = AsyncMock(return_value={"models": []}) api = ServerModelsApi(client) - await api.list(timeout=45.0) + await api.list(ModelsListRequest(), timeout=45.0) _, kwargs = client.request.call_args assert kwargs["timeout"] == 45.0 @@ -128,7 +129,7 @@ async def test_default_timeout_on_server_no_params_method(self): client.request = AsyncMock(return_value={"models": []}) api = ServerModelsApi(client) - await api.list() + await api.list(ModelsListRequest()) _, kwargs = client.request.call_args assert "timeout" not in kwargs diff --git a/rust/README.md b/rust/README.md index cf9e4b839..8ae3851e1 100644 --- a/rust/README.md +++ b/rust/README.md @@ -157,7 +157,7 @@ response structs. ```rust,ignore // Common generated RPCs. let files = session.rpc().workspaces().list_files().await?.files; -let models = client.rpc().models().list().await?.models; +let models = client.rpc().models().list(Default::default()).await?.models; // Methods with no helper — full schema-typed access. let agents = session.rpc().agent().list().await?.agents; diff --git a/rust/src/generated/api_types.rs b/rust/src/generated/api_types.rs index a0e7429d0..2f74abb48 100644 --- a/rust/src/generated/api_types.rs +++ b/rust/src/generated/api_types.rs @@ -187,6 +187,14 @@ pub mod rpc_methods { pub const SESSIONFS_RENAME: &str = "sessionFs.rename"; } +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct AccountGetQuotaRequest { + /// GitHub token for per-user quota lookup. When provided, resolves this token to determine the user's quota instead of using the global auth. + #[serde(skip_serializing_if = "Option::is_none")] + pub git_hub_token: Option, +} + #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct AccountQuotaSnapshot { @@ -338,6 +346,20 @@ pub struct CommandsInvokeRequest { pub name: String, } +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct CommandsListRequest { + /// Include runtime built-in commands + #[serde(skip_serializing_if = "Option::is_none")] + pub include_builtins: Option, + /// Include commands registered by protocol clients, including SDK clients and extensions + #[serde(skip_serializing_if = "Option::is_none")] + pub include_client_commands: Option, + /// Include enabled user-invocable skills and commands + #[serde(skip_serializing_if = "Option::is_none")] + pub include_skills: Option, +} + #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CommandsRespondToQueuedCommandRequest { @@ -1061,6 +1083,14 @@ pub struct ModelList { pub models: Vec, } +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ModelsListRequest { + /// GitHub token for per-user model listing. When provided, resolves this token to determine the user's Copilot plan and available models instead of using the global auth. + #[serde(skip_serializing_if = "Option::is_none")] + pub git_hub_token: Option, +} + #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ModelSwitchToRequest { diff --git a/rust/src/lib.rs b/rust/src/lib.rs index af30b4191..7cd8461a0 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1787,7 +1787,7 @@ impl Client { if let Some(handler) = &self.inner.on_list_models { handler.list_models().await } else { - Ok(self.rpc().models().list().await?.models) + Ok(self.rpc().models().list(Default::default()).await?.models) } }) .await?; diff --git a/rust/tests/e2e/rpc_server.rs b/rust/tests/e2e/rpc_server.rs index d1508541b..55d151595 100644 --- a/rust/tests/e2e/rpc_server.rs +++ b/rust/tests/e2e/rpc_server.rs @@ -46,7 +46,7 @@ async fn should_call_rpc_models_list_with_typed_result() { .await .expect("start client"); - let result = client.rpc().models().list().await.expect("models list"); + let result = client.rpc().models().list(Default::default()).await.expect("models list"); assert!( result @@ -87,7 +87,7 @@ async fn should_call_rpc_account_get_quota_when_authenticated() { .await .expect("start client"); - let result = client.rpc().account().get_quota().await.expect("quota"); + let result = client.rpc().account().get_quota(Default::default()).await.expect("quota"); let chat = result.quota_snapshots.get("chat").expect("chat quota"); assert_eq!(chat.entitlement_requests, 100); diff --git a/rust/tests/session_test.rs b/rust/tests/session_test.rs index c98c04d89..cd4147a3f 100644 --- a/rust/tests/session_test.rs +++ b/rust/tests/session_test.rs @@ -2470,7 +2470,7 @@ async fn rpc_namespace_client_models_list_dispatches_correctly() { let session = Arc::new(session); let client = session.client().clone(); - let handle = tokio::spawn(async move { client.rpc().models().list().await }); + let handle = tokio::spawn(async move { client.rpc().models().list(Default::default()).await }); let request = server.read_request().await; assert_eq!(request["method"], "models.list"); diff --git a/scripts/codegen/rust.ts b/scripts/codegen/rust.ts index 1a5847033..1fa156219 100644 --- a/scripts/codegen/rust.ts +++ b/scripts/codegen/rust.ts @@ -1276,7 +1276,15 @@ function generateApiTypesCode(apiSchema: ApiSchema): string { schema.description, ); } else if (getUnionVariants(schema)) { - tryEmitRustUnion(schema, name, "", ctx); + // Unwrap nullable anyOf wrappers (e.g. anyOf: [{ not: {} }, { type: "object" }]) + // before falling through to struct generation, since tryEmitRustUnion + // silently drops these. + const nullableInner = getNullableInner(schema); + if (nullableInner && isObjectSchema(nullableInner)) { + emitRustStruct(name, nullableInner, ctx, nullableInner.description ?? schema.description); + } else { + tryEmitRustUnion(schema, name, "", ctx); + } } } From 81f4967a22752e6ff39a0090e5470dd346c029ea Mon Sep 17 00:00:00 2001 From: Copilot <223556219+Copilot@users.noreply.github.com> Date: Thu, 14 May 2026 14:31:26 -0400 Subject: [PATCH 3/5] Regenerate all SDK types after rebase Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- go/rpc/zrpc.go | 272 ++++++++++++++++++++++++++++++++ nodejs/src/generated/rpc.ts | 272 ++++++++++++++++++++++++++++++++ python/copilot/generated/rpc.py | 87 +++++++++- rust/README.md | 2 +- rust/src/generated/rpc.rs | 190 +++++++++++++++++++++- rust/src/lib.rs | 2 +- rust/tests/e2e/rpc_server.rs | 4 +- rust/tests/session_test.rs | 2 +- 8 files changed, 823 insertions(+), 8 deletions(-) diff --git a/go/rpc/zrpc.go b/go/rpc/zrpc.go index 63e6eac41..f114e2382 100644 --- a/go/rpc/zrpc.go +++ b/go/rpc/zrpc.go @@ -2642,6 +2642,9 @@ type serverApi struct { type ServerAccountApi serverApi +// GetQuota calls account.getQuota. +// +// RPC method: account.getQuota. func (a *ServerAccountApi) GetQuota(ctx context.Context, params *AccountGetQuotaRequest) (*AccountGetQuotaResult, error) { raw, err := a.client.Request("account.getQuota", params) if err != nil { @@ -2656,6 +2659,9 @@ func (a *ServerAccountApi) GetQuota(ctx context.Context, params *AccountGetQuota type ServerMcpApi serverApi +// Discover calls mcp.discover. +// +// RPC method: mcp.discover. func (a *ServerMcpApi) Discover(ctx context.Context, params *McpDiscoverRequest) (*McpDiscoverResult, error) { raw, err := a.client.Request("mcp.discover", params) if err != nil { @@ -2670,6 +2676,9 @@ func (a *ServerMcpApi) Discover(ctx context.Context, params *McpDiscoverRequest) type ServerMcpConfigApi serverApi +// Add calls mcp.config.add. +// +// RPC method: mcp.config.add. func (a *ServerMcpConfigApi) Add(ctx context.Context, params *McpConfigAddRequest) (*McpConfigAddResult, error) { raw, err := a.client.Request("mcp.config.add", params) if err != nil { @@ -2682,6 +2691,9 @@ func (a *ServerMcpConfigApi) Add(ctx context.Context, params *McpConfigAddReques return &result, nil } +// Disable calls mcp.config.disable. +// +// RPC method: mcp.config.disable. func (a *ServerMcpConfigApi) Disable(ctx context.Context, params *McpConfigDisableRequest) (*McpConfigDisableResult, error) { raw, err := a.client.Request("mcp.config.disable", params) if err != nil { @@ -2694,6 +2706,9 @@ func (a *ServerMcpConfigApi) Disable(ctx context.Context, params *McpConfigDisab return &result, nil } +// Enable calls mcp.config.enable. +// +// RPC method: mcp.config.enable. func (a *ServerMcpConfigApi) Enable(ctx context.Context, params *McpConfigEnableRequest) (*McpConfigEnableResult, error) { raw, err := a.client.Request("mcp.config.enable", params) if err != nil { @@ -2706,6 +2721,9 @@ func (a *ServerMcpConfigApi) Enable(ctx context.Context, params *McpConfigEnable return &result, nil } +// List calls mcp.config.list. +// +// RPC method: mcp.config.list. func (a *ServerMcpConfigApi) List(ctx context.Context) (*McpConfigList, error) { raw, err := a.client.Request("mcp.config.list", nil) if err != nil { @@ -2718,6 +2736,9 @@ func (a *ServerMcpConfigApi) List(ctx context.Context) (*McpConfigList, error) { return &result, nil } +// Remove calls mcp.config.remove. +// +// RPC method: mcp.config.remove. func (a *ServerMcpConfigApi) Remove(ctx context.Context, params *McpConfigRemoveRequest) (*McpConfigRemoveResult, error) { raw, err := a.client.Request("mcp.config.remove", params) if err != nil { @@ -2730,6 +2751,9 @@ func (a *ServerMcpConfigApi) Remove(ctx context.Context, params *McpConfigRemove return &result, nil } +// Update calls mcp.config.update. +// +// RPC method: mcp.config.update. func (a *ServerMcpConfigApi) Update(ctx context.Context, params *McpConfigUpdateRequest) (*McpConfigUpdateResult, error) { raw, err := a.client.Request("mcp.config.update", params) if err != nil { @@ -2748,6 +2772,9 @@ func (s *ServerMcpApi) Config() *ServerMcpConfigApi { type ServerModelsApi serverApi +// List calls models.list. +// +// RPC method: models.list. func (a *ServerModelsApi) List(ctx context.Context, params *ModelsListRequest) (*ModelList, error) { raw, err := a.client.Request("models.list", params) if err != nil { @@ -2762,6 +2789,9 @@ func (a *ServerModelsApi) List(ctx context.Context, params *ModelsListRequest) ( type ServerSessionFsApi serverApi +// SetProvider calls sessionFs.setProvider. +// +// RPC method: sessionFs.setProvider. func (a *ServerSessionFsApi) SetProvider(ctx context.Context, params *SessionFsSetProviderRequest) (*SessionFsSetProviderResult, error) { raw, err := a.client.Request("sessionFs.setProvider", params) if err != nil { @@ -2777,6 +2807,9 @@ func (a *ServerSessionFsApi) SetProvider(ctx context.Context, params *SessionFsS // Experimental: ServerSessionsApi contains experimental APIs that may change or be removed. type ServerSessionsApi serverApi +// Fork calls sessions.fork. +// +// RPC method: sessions.fork. func (a *ServerSessionsApi) Fork(ctx context.Context, params *SessionsForkRequest) (*SessionsForkResult, error) { raw, err := a.client.Request("sessions.fork", params) if err != nil { @@ -2791,6 +2824,9 @@ func (a *ServerSessionsApi) Fork(ctx context.Context, params *SessionsForkReques type ServerSkillsApi serverApi +// Discover calls skills.discover. +// +// RPC method: skills.discover. func (a *ServerSkillsApi) Discover(ctx context.Context, params *SkillsDiscoverRequest) (*ServerSkillList, error) { raw, err := a.client.Request("skills.discover", params) if err != nil { @@ -2805,6 +2841,9 @@ func (a *ServerSkillsApi) Discover(ctx context.Context, params *SkillsDiscoverRe type ServerSkillsConfigApi serverApi +// SetDisabledSkills calls skills.config.setDisabledSkills. +// +// RPC method: skills.config.setDisabledSkills. func (a *ServerSkillsConfigApi) SetDisabledSkills(ctx context.Context, params *SkillsConfigSetDisabledSkillsRequest) (*SkillsConfigSetDisabledSkillsResult, error) { raw, err := a.client.Request("skills.config.setDisabledSkills", params) if err != nil { @@ -2823,6 +2862,9 @@ func (s *ServerSkillsApi) Config() *ServerSkillsConfigApi { type ServerToolsApi serverApi +// List calls tools.list. +// +// RPC method: tools.list. func (a *ServerToolsApi) List(ctx context.Context, params *ToolsListRequest) (*ToolList, error) { raw, err := a.client.Request("tools.list", params) if err != nil { @@ -2849,6 +2891,9 @@ type ServerRpc struct { Tools *ServerToolsApi } +// Ping calls ping. +// +// RPC method: ping. func (a *ServerRpc) Ping(ctx context.Context, params *PingRequest) (*PingResult, error) { raw, err := a.common.client.Request("ping", params) if err != nil { @@ -2885,6 +2930,9 @@ type InternalServerRpc struct { common internalServerApi } +// Connect calls connect. +// +// RPC method: connect. // Internal: Connect is part of the SDK's internal handshake/plumbing; external callers // should not use it. func (a *InternalServerRpc) Connect(ctx context.Context, params *ConnectRequest) (*ConnectResult, error) { @@ -2913,6 +2961,9 @@ type sessionApi struct { // Experimental: AgentApi contains experimental APIs that may change or be removed. type AgentApi sessionApi +// Deselect calls session.agent.deselect. +// +// RPC method: session.agent.deselect. func (a *AgentApi) Deselect(ctx context.Context) (*AgentDeselectResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.agent.deselect", req) @@ -2926,6 +2977,9 @@ func (a *AgentApi) Deselect(ctx context.Context) (*AgentDeselectResult, error) { return &result, nil } +// GetCurrent calls session.agent.getCurrent. +// +// RPC method: session.agent.getCurrent. func (a *AgentApi) GetCurrent(ctx context.Context) (*AgentGetCurrentResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.agent.getCurrent", req) @@ -2939,6 +2993,9 @@ func (a *AgentApi) GetCurrent(ctx context.Context) (*AgentGetCurrentResult, erro return &result, nil } +// List calls session.agent.list. +// +// RPC method: session.agent.list. func (a *AgentApi) List(ctx context.Context) (*AgentList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.agent.list", req) @@ -2952,6 +3009,9 @@ func (a *AgentApi) List(ctx context.Context) (*AgentList, error) { return &result, nil } +// Reload calls session.agent.reload. +// +// RPC method: session.agent.reload. func (a *AgentApi) Reload(ctx context.Context) (*AgentReloadResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.agent.reload", req) @@ -2965,6 +3025,9 @@ func (a *AgentApi) Reload(ctx context.Context) (*AgentReloadResult, error) { return &result, nil } +// Select calls session.agent.select. +// +// RPC method: session.agent.select. func (a *AgentApi) Select(ctx context.Context, params *AgentSelectRequest) (*AgentSelectResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -2983,6 +3046,9 @@ func (a *AgentApi) Select(ctx context.Context, params *AgentSelectRequest) (*Age type AuthApi sessionApi +// GetStatus calls session.auth.getStatus. +// +// RPC method: session.auth.getStatus. func (a *AuthApi) GetStatus(ctx context.Context) (*SessionAuthStatus, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.auth.getStatus", req) @@ -2998,6 +3064,9 @@ func (a *AuthApi) GetStatus(ctx context.Context) (*SessionAuthStatus, error) { type CommandsApi sessionApi +// HandlePendingCommand calls session.commands.handlePendingCommand. +// +// RPC method: session.commands.handlePendingCommand. func (a *CommandsApi) HandlePendingCommand(ctx context.Context, params *CommandsHandlePendingCommandRequest) (*CommandsHandlePendingCommandResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3017,6 +3086,9 @@ func (a *CommandsApi) HandlePendingCommand(ctx context.Context, params *Commands return &result, nil } +// Invoke calls session.commands.invoke. +// +// RPC method: session.commands.invoke. func (a *CommandsApi) Invoke(ctx context.Context, params *CommandsInvokeRequest) (SlashCommandInvocationResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3036,6 +3108,9 @@ func (a *CommandsApi) Invoke(ctx context.Context, params *CommandsInvokeRequest) return result, nil } +// List calls session.commands.list. +// +// RPC method: session.commands.list. func (a *CommandsApi) List(ctx context.Context, params ...*CommandsListRequest) (*CommandList, error) { var requestParams *CommandsListRequest if len(params) > 0 { @@ -3064,6 +3139,9 @@ func (a *CommandsApi) List(ctx context.Context, params ...*CommandsListRequest) return &result, nil } +// RespondToQueuedCommand calls session.commands.respondToQueuedCommand. +// +// RPC method: session.commands.respondToQueuedCommand. func (a *CommandsApi) RespondToQueuedCommand(ctx context.Context, params *CommandsRespondToQueuedCommandRequest) (*CommandsRespondToQueuedCommandResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3084,6 +3162,9 @@ func (a *CommandsApi) RespondToQueuedCommand(ctx context.Context, params *Comman // Experimental: ExtensionsApi contains experimental APIs that may change or be removed. type ExtensionsApi sessionApi +// Disable calls session.extensions.disable. +// +// RPC method: session.extensions.disable. func (a *ExtensionsApi) Disable(ctx context.Context, params *ExtensionsDisableRequest) (*ExtensionsDisableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3100,6 +3181,9 @@ func (a *ExtensionsApi) Disable(ctx context.Context, params *ExtensionsDisableRe return &result, nil } +// Enable calls session.extensions.enable. +// +// RPC method: session.extensions.enable. func (a *ExtensionsApi) Enable(ctx context.Context, params *ExtensionsEnableRequest) (*ExtensionsEnableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3116,6 +3200,9 @@ func (a *ExtensionsApi) Enable(ctx context.Context, params *ExtensionsEnableRequ return &result, nil } +// List calls session.extensions.list. +// +// RPC method: session.extensions.list. func (a *ExtensionsApi) List(ctx context.Context) (*ExtensionList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.extensions.list", req) @@ -3129,6 +3216,9 @@ func (a *ExtensionsApi) List(ctx context.Context) (*ExtensionList, error) { return &result, nil } +// Reload calls session.extensions.reload. +// +// RPC method: session.extensions.reload. func (a *ExtensionsApi) Reload(ctx context.Context) (*ExtensionsReloadResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.extensions.reload", req) @@ -3145,6 +3235,9 @@ func (a *ExtensionsApi) Reload(ctx context.Context) (*ExtensionsReloadResult, er // Experimental: FleetApi contains experimental APIs that may change or be removed. type FleetApi sessionApi +// Start calls session.fleet.start. +// +// RPC method: session.fleet.start. func (a *FleetApi) Start(ctx context.Context, params *FleetStartRequest) (*FleetStartResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3166,6 +3259,9 @@ func (a *FleetApi) Start(ctx context.Context, params *FleetStartRequest) (*Fleet // Experimental: HistoryApi contains experimental APIs that may change or be removed. type HistoryApi sessionApi +// Compact calls session.history.compact. +// +// RPC method: session.history.compact. func (a *HistoryApi) Compact(ctx context.Context) (*HistoryCompactResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.history.compact", req) @@ -3179,6 +3275,9 @@ func (a *HistoryApi) Compact(ctx context.Context) (*HistoryCompactResult, error) return &result, nil } +// Truncate calls session.history.truncate. +// +// RPC method: session.history.truncate. func (a *HistoryApi) Truncate(ctx context.Context, params *HistoryTruncateRequest) (*HistoryTruncateResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3197,6 +3296,9 @@ func (a *HistoryApi) Truncate(ctx context.Context, params *HistoryTruncateReques type InstructionsApi sessionApi +// GetSources calls session.instructions.getSources. +// +// RPC method: session.instructions.getSources. func (a *InstructionsApi) GetSources(ctx context.Context) (*InstructionsGetSourcesResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.instructions.getSources", req) @@ -3213,6 +3315,9 @@ func (a *InstructionsApi) GetSources(ctx context.Context) (*InstructionsGetSourc // Experimental: McpApi contains experimental APIs that may change or be removed. type McpApi sessionApi +// Disable calls session.mcp.disable. +// +// RPC method: session.mcp.disable. func (a *McpApi) Disable(ctx context.Context, params *McpDisableRequest) (*McpDisableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3229,6 +3334,9 @@ func (a *McpApi) Disable(ctx context.Context, params *McpDisableRequest) (*McpDi return &result, nil } +// Enable calls session.mcp.enable. +// +// RPC method: session.mcp.enable. func (a *McpApi) Enable(ctx context.Context, params *McpEnableRequest) (*McpEnableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3245,6 +3353,9 @@ func (a *McpApi) Enable(ctx context.Context, params *McpEnableRequest) (*McpEnab return &result, nil } +// List calls session.mcp.list. +// +// RPC method: session.mcp.list. func (a *McpApi) List(ctx context.Context) (*McpServerList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.mcp.list", req) @@ -3258,6 +3369,9 @@ func (a *McpApi) List(ctx context.Context) (*McpServerList, error) { return &result, nil } +// Reload calls session.mcp.reload. +// +// RPC method: session.mcp.reload. func (a *McpApi) Reload(ctx context.Context) (*McpReloadResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.mcp.reload", req) @@ -3274,6 +3388,9 @@ func (a *McpApi) Reload(ctx context.Context) (*McpReloadResult, error) { // Experimental: McpOauthApi contains experimental APIs that may change or be removed. type McpOauthApi sessionApi +// Login calls session.mcp.oauth.login. +// +// RPC method: session.mcp.oauth.login. func (a *McpOauthApi) Login(ctx context.Context, params *McpOauthLoginRequest) (*McpOauthLoginResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3306,6 +3423,11 @@ func (s *McpApi) Oauth() *McpOauthApi { type ModeApi sessionApi +// Get calls session.mode.get. +// +// RPC method: session.mode.get. +// +// Returns: The agent mode. Valid values: "interactive", "plan", "autopilot". func (a *ModeApi) Get(ctx context.Context) (*SessionMode, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.mode.get", req) @@ -3319,6 +3441,9 @@ func (a *ModeApi) Get(ctx context.Context) (*SessionMode, error) { return &result, nil } +// Set calls session.mode.set. +// +// RPC method: session.mode.set. func (a *ModeApi) Set(ctx context.Context, params *ModeSetRequest) (*ModeSetResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3337,6 +3462,9 @@ func (a *ModeApi) Set(ctx context.Context, params *ModeSetRequest) (*ModeSetResu type ModelApi sessionApi +// GetCurrent calls session.model.getCurrent. +// +// RPC method: session.model.getCurrent. func (a *ModelApi) GetCurrent(ctx context.Context) (*CurrentModel, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.model.getCurrent", req) @@ -3350,6 +3478,9 @@ func (a *ModelApi) GetCurrent(ctx context.Context) (*CurrentModel, error) { return &result, nil } +// SwitchTo calls session.model.switchTo. +// +// RPC method: session.model.switchTo. func (a *ModelApi) SwitchTo(ctx context.Context, params *ModelSwitchToRequest) (*ModelSwitchToResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3374,6 +3505,9 @@ func (a *ModelApi) SwitchTo(ctx context.Context, params *ModelSwitchToRequest) ( type NameApi sessionApi +// Get calls session.name.get. +// +// RPC method: session.name.get. func (a *NameApi) Get(ctx context.Context) (*NameGetResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.name.get", req) @@ -3387,6 +3521,9 @@ func (a *NameApi) Get(ctx context.Context) (*NameGetResult, error) { return &result, nil } +// Set calls session.name.set. +// +// RPC method: session.name.set. func (a *NameApi) Set(ctx context.Context, params *NameSetRequest) (*NameSetResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3405,6 +3542,9 @@ func (a *NameApi) Set(ctx context.Context, params *NameSetRequest) (*NameSetResu type PermissionsApi sessionApi +// HandlePendingPermissionRequest calls session.permissions.handlePendingPermissionRequest. +// +// RPC method: session.permissions.handlePendingPermissionRequest. func (a *PermissionsApi) HandlePendingPermissionRequest(ctx context.Context, params *PermissionDecisionRequest) (*PermissionRequestResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3422,6 +3562,9 @@ func (a *PermissionsApi) HandlePendingPermissionRequest(ctx context.Context, par return &result, nil } +// ResetSessionApprovals calls session.permissions.resetSessionApprovals. +// +// RPC method: session.permissions.resetSessionApprovals. func (a *PermissionsApi) ResetSessionApprovals(ctx context.Context) (*PermissionsResetSessionApprovalsResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.permissions.resetSessionApprovals", req) @@ -3435,6 +3578,9 @@ func (a *PermissionsApi) ResetSessionApprovals(ctx context.Context) (*Permission return &result, nil } +// SetApproveAll calls session.permissions.setApproveAll. +// +// RPC method: session.permissions.setApproveAll. func (a *PermissionsApi) SetApproveAll(ctx context.Context, params *PermissionsSetApproveAllRequest) (*PermissionsSetApproveAllResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3453,6 +3599,9 @@ func (a *PermissionsApi) SetApproveAll(ctx context.Context, params *PermissionsS type PlanApi sessionApi +// Delete calls session.plan.delete. +// +// RPC method: session.plan.delete. func (a *PlanApi) Delete(ctx context.Context) (*PlanDeleteResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.plan.delete", req) @@ -3466,6 +3615,9 @@ func (a *PlanApi) Delete(ctx context.Context) (*PlanDeleteResult, error) { return &result, nil } +// Read calls session.plan.read. +// +// RPC method: session.plan.read. func (a *PlanApi) Read(ctx context.Context) (*PlanReadResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.plan.read", req) @@ -3479,6 +3631,9 @@ func (a *PlanApi) Read(ctx context.Context) (*PlanReadResult, error) { return &result, nil } +// Update calls session.plan.update. +// +// RPC method: session.plan.update. func (a *PlanApi) Update(ctx context.Context, params *PlanUpdateRequest) (*PlanUpdateResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3498,6 +3653,9 @@ func (a *PlanApi) Update(ctx context.Context, params *PlanUpdateRequest) (*PlanU // Experimental: PluginsApi contains experimental APIs that may change or be removed. type PluginsApi sessionApi +// List calls session.plugins.list. +// +// RPC method: session.plugins.list. func (a *PluginsApi) List(ctx context.Context) (*PluginList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.plugins.list", req) @@ -3514,6 +3672,9 @@ func (a *PluginsApi) List(ctx context.Context) (*PluginList, error) { // Experimental: RemoteApi contains experimental APIs that may change or be removed. type RemoteApi sessionApi +// Disable calls session.remote.disable. +// +// RPC method: session.remote.disable. func (a *RemoteApi) Disable(ctx context.Context) (*RemoteDisableResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.remote.disable", req) @@ -3527,6 +3688,9 @@ func (a *RemoteApi) Disable(ctx context.Context) (*RemoteDisableResult, error) { return &result, nil } +// Enable calls session.remote.enable. +// +// RPC method: session.remote.enable. func (a *RemoteApi) Enable(ctx context.Context, params *RemoteEnableRequest) (*RemoteEnableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3547,6 +3711,9 @@ func (a *RemoteApi) Enable(ctx context.Context, params *RemoteEnableRequest) (*R type ShellApi sessionApi +// Exec calls session.shell.exec. +// +// RPC method: session.shell.exec. func (a *ShellApi) Exec(ctx context.Context, params *ShellExecRequest) (*ShellExecResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3569,6 +3736,9 @@ func (a *ShellApi) Exec(ctx context.Context, params *ShellExecRequest) (*ShellEx return &result, nil } +// Kill calls session.shell.kill. +// +// RPC method: session.shell.kill. func (a *ShellApi) Kill(ctx context.Context, params *ShellKillRequest) (*ShellKillResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3591,6 +3761,9 @@ func (a *ShellApi) Kill(ctx context.Context, params *ShellKillRequest) (*ShellKi // Experimental: SkillsApi contains experimental APIs that may change or be removed. type SkillsApi sessionApi +// Disable calls session.skills.disable. +// +// RPC method: session.skills.disable. func (a *SkillsApi) Disable(ctx context.Context, params *SkillsDisableRequest) (*SkillsDisableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3607,6 +3780,9 @@ func (a *SkillsApi) Disable(ctx context.Context, params *SkillsDisableRequest) ( return &result, nil } +// Enable calls session.skills.enable. +// +// RPC method: session.skills.enable. func (a *SkillsApi) Enable(ctx context.Context, params *SkillsEnableRequest) (*SkillsEnableResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3623,6 +3799,9 @@ func (a *SkillsApi) Enable(ctx context.Context, params *SkillsEnableRequest) (*S return &result, nil } +// List calls session.skills.list. +// +// RPC method: session.skills.list. func (a *SkillsApi) List(ctx context.Context) (*SkillList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.skills.list", req) @@ -3636,6 +3815,9 @@ func (a *SkillsApi) List(ctx context.Context) (*SkillList, error) { return &result, nil } +// Reload calls session.skills.reload. +// +// RPC method: session.skills.reload. func (a *SkillsApi) Reload(ctx context.Context) (*SkillsLoadDiagnostics, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.skills.reload", req) @@ -3652,6 +3834,9 @@ func (a *SkillsApi) Reload(ctx context.Context) (*SkillsLoadDiagnostics, error) // Experimental: TasksApi contains experimental APIs that may change or be removed. type TasksApi sessionApi +// Cancel calls session.tasks.cancel. +// +// RPC method: session.tasks.cancel. func (a *TasksApi) Cancel(ctx context.Context, params *TasksCancelRequest) (*TasksCancelResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3668,6 +3853,9 @@ func (a *TasksApi) Cancel(ctx context.Context, params *TasksCancelRequest) (*Tas return &result, nil } +// List calls session.tasks.list. +// +// RPC method: session.tasks.list. func (a *TasksApi) List(ctx context.Context) (*TaskList, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.tasks.list", req) @@ -3681,6 +3869,9 @@ func (a *TasksApi) List(ctx context.Context) (*TaskList, error) { return &result, nil } +// PromoteToBackground calls session.tasks.promoteToBackground. +// +// RPC method: session.tasks.promoteToBackground. func (a *TasksApi) PromoteToBackground(ctx context.Context, params *TasksPromoteToBackgroundRequest) (*TasksPromoteToBackgroundResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3697,6 +3888,9 @@ func (a *TasksApi) PromoteToBackground(ctx context.Context, params *TasksPromote return &result, nil } +// Remove calls session.tasks.remove. +// +// RPC method: session.tasks.remove. func (a *TasksApi) Remove(ctx context.Context, params *TasksRemoveRequest) (*TasksRemoveResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3713,6 +3907,9 @@ func (a *TasksApi) Remove(ctx context.Context, params *TasksRemoveRequest) (*Tas return &result, nil } +// SendMessage calls session.tasks.sendMessage. +// +// RPC method: session.tasks.sendMessage. func (a *TasksApi) SendMessage(ctx context.Context, params *TasksSendMessageRequest) (*TasksSendMessageResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3733,6 +3930,9 @@ func (a *TasksApi) SendMessage(ctx context.Context, params *TasksSendMessageRequ return &result, nil } +// StartAgent calls session.tasks.startAgent. +// +// RPC method: session.tasks.startAgent. func (a *TasksApi) StartAgent(ctx context.Context, params *TasksStartAgentRequest) (*TasksStartAgentResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3759,6 +3959,9 @@ func (a *TasksApi) StartAgent(ctx context.Context, params *TasksStartAgentReques type ToolsApi sessionApi +// HandlePendingToolCall calls session.tools.handlePendingToolCall. +// +// RPC method: session.tools.handlePendingToolCall. func (a *ToolsApi) HandlePendingToolCall(ctx context.Context, params *HandlePendingToolCallRequest) (*HandlePendingToolCallResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3783,6 +3986,11 @@ func (a *ToolsApi) HandlePendingToolCall(ctx context.Context, params *HandlePend type UIApi sessionApi +// Elicitation calls session.ui.elicitation. +// +// RPC method: session.ui.elicitation. +// +// Returns: The elicitation response (accept with form values, decline, or cancel) func (a *UIApi) Elicitation(ctx context.Context, params *UIElicitationRequest) (*UIElicitationResponse, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3800,6 +4008,9 @@ func (a *UIApi) Elicitation(ctx context.Context, params *UIElicitationRequest) ( return &result, nil } +// HandlePendingElicitation calls session.ui.handlePendingElicitation. +// +// RPC method: session.ui.handlePendingElicitation. func (a *UIApi) HandlePendingElicitation(ctx context.Context, params *UIHandlePendingElicitationRequest) (*UIElicitationResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3820,6 +4031,9 @@ func (a *UIApi) HandlePendingElicitation(ctx context.Context, params *UIHandlePe // Experimental: UsageApi contains experimental APIs that may change or be removed. type UsageApi sessionApi +// GetMetrics calls session.usage.getMetrics. +// +// RPC method: session.usage.getMetrics. func (a *UsageApi) GetMetrics(ctx context.Context) (*UsageGetMetricsResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.usage.getMetrics", req) @@ -3835,6 +4049,9 @@ func (a *UsageApi) GetMetrics(ctx context.Context) (*UsageGetMetricsResult, erro type WorkspacesApi sessionApi +// CreateFile calls session.workspaces.createFile. +// +// RPC method: session.workspaces.createFile. func (a *WorkspacesApi) CreateFile(ctx context.Context, params *WorkspacesCreateFileRequest) (*WorkspacesCreateFileResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3852,6 +4069,9 @@ func (a *WorkspacesApi) CreateFile(ctx context.Context, params *WorkspacesCreate return &result, nil } +// GetWorkspace calls session.workspaces.getWorkspace. +// +// RPC method: session.workspaces.getWorkspace. func (a *WorkspacesApi) GetWorkspace(ctx context.Context) (*WorkspacesGetWorkspaceResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.workspaces.getWorkspace", req) @@ -3865,6 +4085,9 @@ func (a *WorkspacesApi) GetWorkspace(ctx context.Context) (*WorkspacesGetWorkspa return &result, nil } +// ListFiles calls session.workspaces.listFiles. +// +// RPC method: session.workspaces.listFiles. func (a *WorkspacesApi) ListFiles(ctx context.Context) (*WorkspacesListFilesResult, error) { req := map[string]any{"sessionId": a.sessionID} raw, err := a.client.Request("session.workspaces.listFiles", req) @@ -3878,6 +4101,9 @@ func (a *WorkspacesApi) ListFiles(ctx context.Context) (*WorkspacesListFilesResu return &result, nil } +// ReadFile calls session.workspaces.readFile. +// +// RPC method: session.workspaces.readFile. func (a *WorkspacesApi) ReadFile(ctx context.Context, params *WorkspacesReadFileRequest) (*WorkspacesReadFileResult, error) { req := map[string]any{"sessionId": a.sessionID} if params != nil { @@ -3923,6 +4149,9 @@ type SessionRpc struct { Workspaces *WorkspacesApi } +// Log calls session.log. +// +// RPC method: session.log. func (a *SessionRpc) Log(ctx context.Context, params *LogRequest) (*LogResult, error) { req := map[string]any{"sessionId": a.common.sessionID} if params != nil { @@ -3948,6 +4177,9 @@ func (a *SessionRpc) Log(ctx context.Context, params *LogRequest) (*LogResult, e return &result, nil } +// Suspend calls session.suspend. +// +// RPC method: session.suspend. func (a *SessionRpc) Suspend(ctx context.Context) (*SuspendResult, error) { req := map[string]any{"sessionId": a.common.sessionID} raw, err := a.common.client.Request("session.suspend", req) @@ -3990,15 +4222,55 @@ func NewSessionRpc(client *jsonrpc2.Client, sessionID string) *SessionRpc { } type SessionFsHandler interface { + // AppendFile handles sessionFs.appendFile. + // + // RPC method: sessionFs.appendFile. + // + // Returns: Describes a filesystem error. AppendFile(request *SessionFsAppendFileRequest) (*SessionFsError, error) + // Exists handles sessionFs.exists. + // + // RPC method: sessionFs.exists. Exists(request *SessionFsExistsRequest) (*SessionFsExistsResult, error) + // Mkdir handles sessionFs.mkdir. + // + // RPC method: sessionFs.mkdir. + // + // Returns: Describes a filesystem error. Mkdir(request *SessionFsMkdirRequest) (*SessionFsError, error) + // Readdir handles sessionFs.readdir. + // + // RPC method: sessionFs.readdir. Readdir(request *SessionFsReaddirRequest) (*SessionFsReaddirResult, error) + // ReaddirWithTypes handles sessionFs.readdirWithTypes. + // + // RPC method: sessionFs.readdirWithTypes. ReaddirWithTypes(request *SessionFsReaddirWithTypesRequest) (*SessionFsReaddirWithTypesResult, error) + // ReadFile handles sessionFs.readFile. + // + // RPC method: sessionFs.readFile. ReadFile(request *SessionFsReadFileRequest) (*SessionFsReadFileResult, error) + // Rename handles sessionFs.rename. + // + // RPC method: sessionFs.rename. + // + // Returns: Describes a filesystem error. Rename(request *SessionFsRenameRequest) (*SessionFsError, error) + // Rm handles sessionFs.rm. + // + // RPC method: sessionFs.rm. + // + // Returns: Describes a filesystem error. Rm(request *SessionFsRmRequest) (*SessionFsError, error) + // Stat handles sessionFs.stat. + // + // RPC method: sessionFs.stat. Stat(request *SessionFsStatRequest) (*SessionFsStatResult, error) + // WriteFile handles sessionFs.writeFile. + // + // RPC method: sessionFs.writeFile. + // + // Returns: Describes a filesystem error. WriteFile(request *SessionFsWriteFileRequest) (*SessionFsError, error) } diff --git a/nodejs/src/generated/rpc.ts b/nodejs/src/generated/rpc.ts index 5189f620f..b6cded9c2 100644 --- a/nodejs/src/generated/rpc.ts +++ b/nodejs/src/generated/rpc.ts @@ -2803,52 +2803,97 @@ export interface WorkspacesReadFileResult { /** Create typed server-scoped RPC methods (no session required). */ export function createServerRpc(connection: MessageConnection) { return { + /** + * Calls `ping`. + */ ping: async (params: PingRequest): Promise => connection.sendRequest("ping", params), models: { + /** + * Calls `models.list`. + */ list: async (params: ModelsListRequest): Promise => connection.sendRequest("models.list", params), }, tools: { + /** + * Calls `tools.list`. + */ list: async (params: ToolsListRequest): Promise => connection.sendRequest("tools.list", params), }, account: { + /** + * Calls `account.getQuota`. + */ getQuota: async (params: AccountGetQuotaRequest): Promise => connection.sendRequest("account.getQuota", params), }, mcp: { config: { + /** + * Calls `mcp.config.list`. + */ list: async (): Promise => connection.sendRequest("mcp.config.list", {}), + /** + * Calls `mcp.config.add`. + */ add: async (params: McpConfigAddRequest): Promise => connection.sendRequest("mcp.config.add", params), + /** + * Calls `mcp.config.update`. + */ update: async (params: McpConfigUpdateRequest): Promise => connection.sendRequest("mcp.config.update", params), + /** + * Calls `mcp.config.remove`. + */ remove: async (params: McpConfigRemoveRequest): Promise => connection.sendRequest("mcp.config.remove", params), + /** + * Calls `mcp.config.enable`. + */ enable: async (params: McpConfigEnableRequest): Promise => connection.sendRequest("mcp.config.enable", params), + /** + * Calls `mcp.config.disable`. + */ disable: async (params: McpConfigDisableRequest): Promise => connection.sendRequest("mcp.config.disable", params), }, + /** + * Calls `mcp.discover`. + */ discover: async (params: McpDiscoverRequest): Promise => connection.sendRequest("mcp.discover", params), }, skills: { config: { + /** + * Calls `skills.config.setDisabledSkills`. + */ setDisabledSkills: async (params: SkillsConfigSetDisabledSkillsRequest): Promise => connection.sendRequest("skills.config.setDisabledSkills", params), }, + /** + * Calls `skills.discover`. + */ discover: async (params: SkillsDiscoverRequest): Promise => connection.sendRequest("skills.discover", params), }, sessionFs: { + /** + * Calls `sessionFs.setProvider`. + */ setProvider: async (params: SessionFsSetProviderRequest): Promise => connection.sendRequest("sessionFs.setProvider", params), }, /** @experimental */ sessions: { + /** + * Calls `sessions.fork`. + */ fork: async (params: SessionsForkRequest): Promise => connection.sendRequest("sessions.fork", params), }, @@ -2862,6 +2907,9 @@ export function createServerRpc(connection: MessageConnection) { */ export function createInternalServerRpc(connection: MessageConnection) { return { + /** + * Calls `connect`. + */ connect: async (params: ConnectRequest): Promise => connection.sendRequest("connect", params), }; @@ -2870,180 +2918,364 @@ export function createInternalServerRpc(connection: MessageConnection) { /** Create typed session-scoped RPC methods. */ export function createSessionRpc(connection: MessageConnection, sessionId: string) { return { + /** + * Calls `session.suspend`. + */ suspend: async (): Promise => connection.sendRequest("session.suspend", { sessionId }), auth: { + /** + * Calls `session.auth.getStatus`. + */ getStatus: async (): Promise => connection.sendRequest("session.auth.getStatus", { sessionId }), }, model: { + /** + * Calls `session.model.getCurrent`. + */ getCurrent: async (): Promise => connection.sendRequest("session.model.getCurrent", { sessionId }), + /** + * Calls `session.model.switchTo`. + */ switchTo: async (params: ModelSwitchToRequest): Promise => connection.sendRequest("session.model.switchTo", { sessionId, ...params }), }, mode: { + /** + * Calls `session.mode.get`. + * + * @returns The agent mode. Valid values: "interactive", "plan", "autopilot". + */ get: async (): Promise => connection.sendRequest("session.mode.get", { sessionId }), + /** + * Calls `session.mode.set`. + */ set: async (params: ModeSetRequest): Promise => connection.sendRequest("session.mode.set", { sessionId, ...params }), }, name: { + /** + * Calls `session.name.get`. + */ get: async (): Promise => connection.sendRequest("session.name.get", { sessionId }), + /** + * Calls `session.name.set`. + */ set: async (params: NameSetRequest): Promise => connection.sendRequest("session.name.set", { sessionId, ...params }), }, plan: { + /** + * Calls `session.plan.read`. + */ read: async (): Promise => connection.sendRequest("session.plan.read", { sessionId }), + /** + * Calls `session.plan.update`. + */ update: async (params: PlanUpdateRequest): Promise => connection.sendRequest("session.plan.update", { sessionId, ...params }), + /** + * Calls `session.plan.delete`. + */ delete: async (): Promise => connection.sendRequest("session.plan.delete", { sessionId }), }, workspaces: { + /** + * Calls `session.workspaces.getWorkspace`. + */ getWorkspace: async (): Promise => connection.sendRequest("session.workspaces.getWorkspace", { sessionId }), + /** + * Calls `session.workspaces.listFiles`. + */ listFiles: async (): Promise => connection.sendRequest("session.workspaces.listFiles", { sessionId }), + /** + * Calls `session.workspaces.readFile`. + */ readFile: async (params: WorkspacesReadFileRequest): Promise => connection.sendRequest("session.workspaces.readFile", { sessionId, ...params }), + /** + * Calls `session.workspaces.createFile`. + */ createFile: async (params: WorkspacesCreateFileRequest): Promise => connection.sendRequest("session.workspaces.createFile", { sessionId, ...params }), }, instructions: { + /** + * Calls `session.instructions.getSources`. + */ getSources: async (): Promise => connection.sendRequest("session.instructions.getSources", { sessionId }), }, /** @experimental */ fleet: { + /** + * Calls `session.fleet.start`. + */ start: async (params: FleetStartRequest): Promise => connection.sendRequest("session.fleet.start", { sessionId, ...params }), }, /** @experimental */ agent: { + /** + * Calls `session.agent.list`. + */ list: async (): Promise => connection.sendRequest("session.agent.list", { sessionId }), + /** + * Calls `session.agent.getCurrent`. + */ getCurrent: async (): Promise => connection.sendRequest("session.agent.getCurrent", { sessionId }), + /** + * Calls `session.agent.select`. + */ select: async (params: AgentSelectRequest): Promise => connection.sendRequest("session.agent.select", { sessionId, ...params }), + /** + * Calls `session.agent.deselect`. + */ deselect: async (): Promise => connection.sendRequest("session.agent.deselect", { sessionId }), + /** + * Calls `session.agent.reload`. + */ reload: async (): Promise => connection.sendRequest("session.agent.reload", { sessionId }), }, /** @experimental */ tasks: { + /** + * Calls `session.tasks.startAgent`. + */ startAgent: async (params: TasksStartAgentRequest): Promise => connection.sendRequest("session.tasks.startAgent", { sessionId, ...params }), + /** + * Calls `session.tasks.list`. + */ list: async (): Promise => connection.sendRequest("session.tasks.list", { sessionId }), + /** + * Calls `session.tasks.promoteToBackground`. + */ promoteToBackground: async (params: TasksPromoteToBackgroundRequest): Promise => connection.sendRequest("session.tasks.promoteToBackground", { sessionId, ...params }), + /** + * Calls `session.tasks.cancel`. + */ cancel: async (params: TasksCancelRequest): Promise => connection.sendRequest("session.tasks.cancel", { sessionId, ...params }), + /** + * Calls `session.tasks.remove`. + */ remove: async (params: TasksRemoveRequest): Promise => connection.sendRequest("session.tasks.remove", { sessionId, ...params }), + /** + * Calls `session.tasks.sendMessage`. + */ sendMessage: async (params: TasksSendMessageRequest): Promise => connection.sendRequest("session.tasks.sendMessage", { sessionId, ...params }), }, /** @experimental */ skills: { + /** + * Calls `session.skills.list`. + */ list: async (): Promise => connection.sendRequest("session.skills.list", { sessionId }), + /** + * Calls `session.skills.enable`. + */ enable: async (params: SkillsEnableRequest): Promise => connection.sendRequest("session.skills.enable", { sessionId, ...params }), + /** + * Calls `session.skills.disable`. + */ disable: async (params: SkillsDisableRequest): Promise => connection.sendRequest("session.skills.disable", { sessionId, ...params }), + /** + * Calls `session.skills.reload`. + */ reload: async (): Promise => connection.sendRequest("session.skills.reload", { sessionId }), }, /** @experimental */ mcp: { + /** + * Calls `session.mcp.list`. + */ list: async (): Promise => connection.sendRequest("session.mcp.list", { sessionId }), + /** + * Calls `session.mcp.enable`. + */ enable: async (params: McpEnableRequest): Promise => connection.sendRequest("session.mcp.enable", { sessionId, ...params }), + /** + * Calls `session.mcp.disable`. + */ disable: async (params: McpDisableRequest): Promise => connection.sendRequest("session.mcp.disable", { sessionId, ...params }), + /** + * Calls `session.mcp.reload`. + */ reload: async (): Promise => connection.sendRequest("session.mcp.reload", { sessionId }), /** @experimental */ oauth: { + /** + * Calls `session.mcp.oauth.login`. + */ login: async (params: McpOauthLoginRequest): Promise => connection.sendRequest("session.mcp.oauth.login", { sessionId, ...params }), }, }, /** @experimental */ plugins: { + /** + * Calls `session.plugins.list`. + */ list: async (): Promise => connection.sendRequest("session.plugins.list", { sessionId }), }, /** @experimental */ extensions: { + /** + * Calls `session.extensions.list`. + */ list: async (): Promise => connection.sendRequest("session.extensions.list", { sessionId }), + /** + * Calls `session.extensions.enable`. + */ enable: async (params: ExtensionsEnableRequest): Promise => connection.sendRequest("session.extensions.enable", { sessionId, ...params }), + /** + * Calls `session.extensions.disable`. + */ disable: async (params: ExtensionsDisableRequest): Promise => connection.sendRequest("session.extensions.disable", { sessionId, ...params }), + /** + * Calls `session.extensions.reload`. + */ reload: async (): Promise => connection.sendRequest("session.extensions.reload", { sessionId }), }, tools: { + /** + * Calls `session.tools.handlePendingToolCall`. + */ handlePendingToolCall: async (params: HandlePendingToolCallRequest): Promise => connection.sendRequest("session.tools.handlePendingToolCall", { sessionId, ...params }), }, commands: { + /** + * Calls `session.commands.list`. + */ list: async (params?: CommandsListRequest): Promise => connection.sendRequest("session.commands.list", { sessionId, ...params }), + /** + * Calls `session.commands.invoke`. + */ invoke: async (params: CommandsInvokeRequest): Promise => connection.sendRequest("session.commands.invoke", { sessionId, ...params }), + /** + * Calls `session.commands.handlePendingCommand`. + */ handlePendingCommand: async (params: CommandsHandlePendingCommandRequest): Promise => connection.sendRequest("session.commands.handlePendingCommand", { sessionId, ...params }), + /** + * Calls `session.commands.respondToQueuedCommand`. + */ respondToQueuedCommand: async (params: CommandsRespondToQueuedCommandRequest): Promise => connection.sendRequest("session.commands.respondToQueuedCommand", { sessionId, ...params }), }, ui: { + /** + * Calls `session.ui.elicitation`. + * + * @returns The elicitation response (accept with form values, decline, or cancel) + */ elicitation: async (params: UIElicitationRequest): Promise => connection.sendRequest("session.ui.elicitation", { sessionId, ...params }), + /** + * Calls `session.ui.handlePendingElicitation`. + */ handlePendingElicitation: async (params: UIHandlePendingElicitationRequest): Promise => connection.sendRequest("session.ui.handlePendingElicitation", { sessionId, ...params }), }, permissions: { + /** + * Calls `session.permissions.handlePendingPermissionRequest`. + */ handlePendingPermissionRequest: async (params: PermissionDecisionRequest): Promise => connection.sendRequest("session.permissions.handlePendingPermissionRequest", { sessionId, ...params }), + /** + * Calls `session.permissions.setApproveAll`. + */ setApproveAll: async (params: PermissionsSetApproveAllRequest): Promise => connection.sendRequest("session.permissions.setApproveAll", { sessionId, ...params }), + /** + * Calls `session.permissions.resetSessionApprovals`. + */ resetSessionApprovals: async (): Promise => connection.sendRequest("session.permissions.resetSessionApprovals", { sessionId }), }, + /** + * Calls `session.log`. + */ log: async (params: LogRequest): Promise => connection.sendRequest("session.log", { sessionId, ...params }), shell: { + /** + * Calls `session.shell.exec`. + */ exec: async (params: ShellExecRequest): Promise => connection.sendRequest("session.shell.exec", { sessionId, ...params }), + /** + * Calls `session.shell.kill`. + */ kill: async (params: ShellKillRequest): Promise => connection.sendRequest("session.shell.kill", { sessionId, ...params }), }, /** @experimental */ history: { + /** + * Calls `session.history.compact`. + */ compact: async (): Promise => connection.sendRequest("session.history.compact", { sessionId }), + /** + * Calls `session.history.truncate`. + */ truncate: async (params: HistoryTruncateRequest): Promise => connection.sendRequest("session.history.truncate", { sessionId, ...params }), }, /** @experimental */ usage: { + /** + * Calls `session.usage.getMetrics`. + */ getMetrics: async (): Promise => connection.sendRequest("session.usage.getMetrics", { sessionId }), }, /** @experimental */ remote: { + /** + * Calls `session.remote.enable`. + */ enable: async (params: RemoteEnableRequest): Promise => connection.sendRequest("session.remote.enable", { sessionId, ...params }), + /** + * Calls `session.remote.disable`. + */ disable: async (): Promise => connection.sendRequest("session.remote.disable", { sessionId }), }, @@ -3052,15 +3284,55 @@ export function createSessionRpc(connection: MessageConnection, sessionId: strin /** Handler for `sessionFs` client session API methods. */ export interface SessionFsHandler { + /** + * Handles `sessionFs.readFile`. + */ readFile(params: SessionFsReadFileRequest): Promise; + /** + * Handles `sessionFs.writeFile`. + * + * @returns Describes a filesystem error. + */ writeFile(params: SessionFsWriteFileRequest): Promise; + /** + * Handles `sessionFs.appendFile`. + * + * @returns Describes a filesystem error. + */ appendFile(params: SessionFsAppendFileRequest): Promise; + /** + * Handles `sessionFs.exists`. + */ exists(params: SessionFsExistsRequest): Promise; + /** + * Handles `sessionFs.stat`. + */ stat(params: SessionFsStatRequest): Promise; + /** + * Handles `sessionFs.mkdir`. + * + * @returns Describes a filesystem error. + */ mkdir(params: SessionFsMkdirRequest): Promise; + /** + * Handles `sessionFs.readdir`. + */ readdir(params: SessionFsReaddirRequest): Promise; + /** + * Handles `sessionFs.readdirWithTypes`. + */ readdirWithTypes(params: SessionFsReaddirWithTypesRequest): Promise; + /** + * Handles `sessionFs.rm`. + * + * @returns Describes a filesystem error. + */ rm(params: SessionFsRmRequest): Promise; + /** + * Handles `sessionFs.rename`. + * + * @returns Describes a filesystem error. + */ rename(params: SessionFsRenameRequest): Promise; } diff --git a/python/copilot/generated/rpc.py b/python/copilot/generated/rpc.py index b75a30ca5..ee5583ab6 100644 --- a/python/copilot/generated/rpc.py +++ b/python/copilot/generated/rpc.py @@ -7095,6 +7095,7 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def list(self, params: ModelsListRequest, *, timeout: float | None = None) -> ModelList: + "Calls models.list." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return ModelList.from_dict(_patch_model_capabilities(await self._client.request("models.list", params_dict, **_timeout_kwargs(timeout)))) @@ -7104,6 +7105,7 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def list(self, params: ToolsListRequest, *, timeout: float | None = None) -> ToolList: + "Calls tools.list." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return ToolList.from_dict(await self._client.request("tools.list", params_dict, **_timeout_kwargs(timeout))) @@ -7113,6 +7115,7 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def get_quota(self, params: AccountGetQuotaRequest, *, timeout: float | None = None) -> AccountGetQuotaResult: + "Calls account.getQuota." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return AccountGetQuotaResult.from_dict(await self._client.request("account.getQuota", params_dict, **_timeout_kwargs(timeout))) @@ -7122,25 +7125,31 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def list(self, *, timeout: float | None = None) -> MCPConfigList: + "Calls mcp.config.list." return MCPConfigList.from_dict(await self._client.request("mcp.config.list", {}, **_timeout_kwargs(timeout))) async def add(self, params: MCPConfigAddRequest, *, timeout: float | None = None) -> None: + "Calls mcp.config.add." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.add", params_dict, **_timeout_kwargs(timeout)) async def update(self, params: MCPConfigUpdateRequest, *, timeout: float | None = None) -> None: + "Calls mcp.config.update." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.update", params_dict, **_timeout_kwargs(timeout)) async def remove(self, params: MCPConfigRemoveRequest, *, timeout: float | None = None) -> None: + "Calls mcp.config.remove." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.remove", params_dict, **_timeout_kwargs(timeout)) async def enable(self, params: MCPConfigEnableRequest, *, timeout: float | None = None) -> None: + "Calls mcp.config.enable." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.enable", params_dict, **_timeout_kwargs(timeout)) async def disable(self, params: MCPConfigDisableRequest, *, timeout: float | None = None) -> None: + "Calls mcp.config.disable." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("mcp.config.disable", params_dict, **_timeout_kwargs(timeout)) @@ -7151,6 +7160,7 @@ def __init__(self, client: "JsonRpcClient"): self.config = ServerMcpConfigApi(client) async def discover(self, params: MCPDiscoverRequest, *, timeout: float | None = None) -> MCPDiscoverResult: + "Calls mcp.discover." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return MCPDiscoverResult.from_dict(await self._client.request("mcp.discover", params_dict, **_timeout_kwargs(timeout))) @@ -7160,6 +7170,7 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def set_disabled_skills(self, params: SkillsConfigSetDisabledSkillsRequest, *, timeout: float | None = None) -> None: + "Calls skills.config.setDisabledSkills." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} await self._client.request("skills.config.setDisabledSkills", params_dict, **_timeout_kwargs(timeout)) @@ -7170,6 +7181,7 @@ def __init__(self, client: "JsonRpcClient"): self.config = ServerSkillsConfigApi(client) async def discover(self, params: SkillsDiscoverRequest, *, timeout: float | None = None) -> ServerSkillList: + "Calls skills.discover." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return ServerSkillList.from_dict(await self._client.request("skills.discover", params_dict, **_timeout_kwargs(timeout))) @@ -7179,6 +7191,7 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def set_provider(self, params: SessionFSSetProviderRequest, *, timeout: float | None = None) -> SessionFSSetProviderResult: + "Calls sessionFs.setProvider." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return SessionFSSetProviderResult.from_dict(await self._client.request("sessionFs.setProvider", params_dict, **_timeout_kwargs(timeout))) @@ -7189,6 +7202,7 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def fork(self, params: SessionsForkRequest, *, timeout: float | None = None) -> SessionsForkResult: + "Calls sessions.fork." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return SessionsForkResult.from_dict(await self._client.request("sessions.fork", params_dict, **_timeout_kwargs(timeout))) @@ -7206,6 +7220,7 @@ def __init__(self, client: "JsonRpcClient"): self.sessions = ServerSessionsApi(client) async def ping(self, params: PingRequest, *, timeout: float | None = None) -> PingResult: + "Calls ping." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return PingResult.from_dict(await self._client.request("ping", params_dict, **_timeout_kwargs(timeout))) @@ -7216,7 +7231,7 @@ def __init__(self, client: "JsonRpcClient"): self._client = client async def connect(self, params: ConnectRequest, *, timeout: float | None = None) -> ConnectResult: - """:meta private: Internal SDK API; not part of the public surface.""" + "Calls connect.\n\n:meta private:\n\nInternal SDK API; not part of the public surface." params_dict = {k: v for k, v in params.to_dict().items() if v is not None} return ConnectResult.from_dict(await self._client.request("connect", params_dict, **_timeout_kwargs(timeout))) @@ -7227,6 +7242,7 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_status(self, *, timeout: float | None = None) -> SessionAuthStatus: + "Calls session.auth.getStatus." return SessionAuthStatus.from_dict(await self._client.request("session.auth.getStatus", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7236,9 +7252,11 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_current(self, *, timeout: float | None = None) -> CurrentModel: + "Calls session.model.getCurrent." return CurrentModel.from_dict(await self._client.request("session.model.getCurrent", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def switch_to(self, params: ModelSwitchToRequest, *, timeout: float | None = None) -> ModelSwitchToResult: + "Calls session.model.switchTo." 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 ModelSwitchToResult.from_dict(await self._client.request("session.model.switchTo", params_dict, **_timeout_kwargs(timeout))) @@ -7250,9 +7268,11 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get(self, *, timeout: float | None = None) -> Mode: + "Calls session.mode.get.\n\nReturns:\n The agent mode. Valid values: \"interactive\", \"plan\", \"autopilot\"." return Mode(await self._client.request("session.mode.get", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def set(self, params: ModeSetRequest, *, timeout: float | None = None) -> None: + "Calls session.mode.set." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.mode.set", params_dict, **_timeout_kwargs(timeout)) @@ -7264,9 +7284,11 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get(self, *, timeout: float | None = None) -> NameGetResult: + "Calls session.name.get." return NameGetResult.from_dict(await self._client.request("session.name.get", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def set(self, params: NameSetRequest, *, timeout: float | None = None) -> None: + "Calls session.name.set." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.name.set", params_dict, **_timeout_kwargs(timeout)) @@ -7278,14 +7300,17 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def read(self, *, timeout: float | None = None) -> PlanReadResult: + "Calls session.plan.read." return PlanReadResult.from_dict(await self._client.request("session.plan.read", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def update(self, params: PlanUpdateRequest, *, timeout: float | None = None) -> None: + "Calls session.plan.update." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.plan.update", params_dict, **_timeout_kwargs(timeout)) async def delete(self, *, timeout: float | None = None) -> None: + "Calls session.plan.delete." await self._client.request("session.plan.delete", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) @@ -7295,17 +7320,21 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_workspace(self, *, timeout: float | None = None) -> WorkspacesGetWorkspaceResult: + "Calls session.workspaces.getWorkspace." return WorkspacesGetWorkspaceResult.from_dict(await self._client.request("session.workspaces.getWorkspace", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def list_files(self, *, timeout: float | None = None) -> WorkspacesListFilesResult: + "Calls session.workspaces.listFiles." return WorkspacesListFilesResult.from_dict(await self._client.request("session.workspaces.listFiles", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def read_file(self, params: WorkspacesReadFileRequest, *, timeout: float | None = None) -> WorkspacesReadFileResult: + "Calls session.workspaces.readFile." 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 WorkspacesReadFileResult.from_dict(await self._client.request("session.workspaces.readFile", params_dict, **_timeout_kwargs(timeout))) async def create_file(self, params: WorkspacesCreateFileRequest, *, timeout: float | None = None) -> None: + "Calls session.workspaces.createFile." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.workspaces.createFile", params_dict, **_timeout_kwargs(timeout)) @@ -7317,6 +7346,7 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_sources(self, *, timeout: float | None = None) -> InstructionsGetSourcesResult: + "Calls session.instructions.getSources." return InstructionsGetSourcesResult.from_dict(await self._client.request("session.instructions.getSources", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7327,6 +7357,7 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def start(self, params: FleetStartRequest, *, timeout: float | None = None) -> FleetStartResult: + "Calls session.fleet.start." 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 FleetStartResult.from_dict(await self._client.request("session.fleet.start", params_dict, **_timeout_kwargs(timeout))) @@ -7339,20 +7370,25 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, *, timeout: float | None = None) -> AgentList: + "Calls session.agent.list." return AgentList.from_dict(await self._client.request("session.agent.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def get_current(self, *, timeout: float | None = None) -> AgentGetCurrentResult: + "Calls session.agent.getCurrent." return AgentGetCurrentResult.from_dict(await self._client.request("session.agent.getCurrent", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def select(self, params: AgentSelectRequest, *, timeout: float | None = None) -> AgentSelectResult: + "Calls session.agent.select." 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 AgentSelectResult.from_dict(await self._client.request("session.agent.select", params_dict, **_timeout_kwargs(timeout))) async def deselect(self, *, timeout: float | None = None) -> None: + "Calls session.agent.deselect." await self._client.request("session.agent.deselect", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) async def reload(self, *, timeout: float | None = None) -> AgentReloadResult: + "Calls session.agent.reload." return AgentReloadResult.from_dict(await self._client.request("session.agent.reload", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7363,29 +7399,35 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def start_agent(self, params: TasksStartAgentRequest, *, timeout: float | None = None) -> TasksStartAgentResult: + "Calls session.tasks.startAgent." 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 TasksStartAgentResult.from_dict(await self._client.request("session.tasks.startAgent", params_dict, **_timeout_kwargs(timeout))) async def list(self, *, timeout: float | None = None) -> TaskList: + "Calls session.tasks.list." return TaskList.from_dict(await self._client.request("session.tasks.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def promote_to_background(self, params: TasksPromoteToBackgroundRequest, *, timeout: float | None = None) -> TasksPromoteToBackgroundResult: + "Calls session.tasks.promoteToBackground." 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 TasksPromoteToBackgroundResult.from_dict(await self._client.request("session.tasks.promoteToBackground", params_dict, **_timeout_kwargs(timeout))) async def cancel(self, params: TasksCancelRequest, *, timeout: float | None = None) -> TasksCancelResult: + "Calls session.tasks.cancel." 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 TasksCancelResult.from_dict(await self._client.request("session.tasks.cancel", params_dict, **_timeout_kwargs(timeout))) async def remove(self, params: TasksRemoveRequest, *, timeout: float | None = None) -> TasksRemoveResult: + "Calls session.tasks.remove." 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 TasksRemoveResult.from_dict(await self._client.request("session.tasks.remove", params_dict, **_timeout_kwargs(timeout))) async def send_message(self, params: TasksSendMessageRequest, *, timeout: float | None = None) -> TasksSendMessageResult: + "Calls session.tasks.sendMessage." 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 TasksSendMessageResult.from_dict(await self._client.request("session.tasks.sendMessage", params_dict, **_timeout_kwargs(timeout))) @@ -7398,19 +7440,23 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, *, timeout: float | None = None) -> SkillList: + "Calls session.skills.list." return SkillList.from_dict(await self._client.request("session.skills.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def enable(self, params: SkillsEnableRequest, *, timeout: float | None = None) -> None: + "Calls session.skills.enable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.skills.enable", params_dict, **_timeout_kwargs(timeout)) async def disable(self, params: SkillsDisableRequest, *, timeout: float | None = None) -> None: + "Calls session.skills.disable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.skills.disable", params_dict, **_timeout_kwargs(timeout)) async def reload(self, *, timeout: float | None = None) -> SkillsLoadDiagnostics: + "Calls session.skills.reload." return SkillsLoadDiagnostics.from_dict(await self._client.request("session.skills.reload", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7421,6 +7467,7 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def login(self, params: MCPOauthLoginRequest, *, timeout: float | None = None) -> MCPOauthLoginResult: + "Calls session.mcp.oauth.login." 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 MCPOauthLoginResult.from_dict(await self._client.request("session.mcp.oauth.login", params_dict, **_timeout_kwargs(timeout))) @@ -7434,19 +7481,23 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self.oauth = McpOauthApi(client, session_id) async def list(self, *, timeout: float | None = None) -> MCPServerList: + "Calls session.mcp.list." return MCPServerList.from_dict(await self._client.request("session.mcp.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def enable(self, params: MCPEnableRequest, *, timeout: float | None = None) -> None: + "Calls session.mcp.enable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.mcp.enable", params_dict, **_timeout_kwargs(timeout)) async def disable(self, params: MCPDisableRequest, *, timeout: float | None = None) -> None: + "Calls session.mcp.disable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.mcp.disable", params_dict, **_timeout_kwargs(timeout)) async def reload(self, *, timeout: float | None = None) -> None: + "Calls session.mcp.reload." await self._client.request("session.mcp.reload", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) @@ -7457,6 +7508,7 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, *, timeout: float | None = None) -> PluginList: + "Calls session.plugins.list." return PluginList.from_dict(await self._client.request("session.plugins.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7467,19 +7519,23 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, *, timeout: float | None = None) -> ExtensionList: + "Calls session.extensions.list." return ExtensionList.from_dict(await self._client.request("session.extensions.list", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def enable(self, params: ExtensionsEnableRequest, *, timeout: float | None = None) -> None: + "Calls session.extensions.enable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.extensions.enable", params_dict, **_timeout_kwargs(timeout)) async def disable(self, params: ExtensionsDisableRequest, *, timeout: float | None = None) -> None: + "Calls session.extensions.disable." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} params_dict["sessionId"] = self._session_id await self._client.request("session.extensions.disable", params_dict, **_timeout_kwargs(timeout)) async def reload(self, *, timeout: float | None = None) -> None: + "Calls session.extensions.reload." await self._client.request("session.extensions.reload", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) @@ -7489,6 +7545,7 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def handle_pending_tool_call(self, params: HandlePendingToolCallRequest, *, timeout: float | None = None) -> HandlePendingToolCallResult: + "Calls session.tools.handlePendingToolCall." 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 HandlePendingToolCallResult.from_dict(await self._client.request("session.tools.handlePendingToolCall", params_dict, **_timeout_kwargs(timeout))) @@ -7500,21 +7557,25 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def list(self, params: CommandsListRequest | None = None, *, timeout: float | None = None) -> CommandList: + "Calls session.commands.list." params_dict: dict[str, Any] = {k: v for k, v in params.to_dict().items() if v is not None} if params is not None else {} params_dict["sessionId"] = self._session_id return CommandList.from_dict(await self._client.request("session.commands.list", params_dict, **_timeout_kwargs(timeout))) async def invoke(self, params: CommandsInvokeRequest, *, timeout: float | None = None) -> SlashCommandInvocationResult: + "Calls session.commands.invoke." 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 SlashCommandInvocationResult.from_dict(await self._client.request("session.commands.invoke", params_dict, **_timeout_kwargs(timeout))) async def handle_pending_command(self, params: CommandsHandlePendingCommandRequest, *, timeout: float | None = None) -> CommandsHandlePendingCommandResult: + "Calls session.commands.handlePendingCommand." 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 CommandsHandlePendingCommandResult.from_dict(await self._client.request("session.commands.handlePendingCommand", params_dict, **_timeout_kwargs(timeout))) async def respond_to_queued_command(self, params: CommandsRespondToQueuedCommandRequest, *, timeout: float | None = None) -> CommandsRespondToQueuedCommandResult: + "Calls session.commands.respondToQueuedCommand." 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 CommandsRespondToQueuedCommandResult.from_dict(await self._client.request("session.commands.respondToQueuedCommand", params_dict, **_timeout_kwargs(timeout))) @@ -7526,11 +7587,13 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def elicitation(self, params: UIElicitationRequest, *, timeout: float | None = None) -> UIElicitationResponse: + "Calls session.ui.elicitation.\n\nReturns:\n The elicitation response (accept with form values, decline, or cancel)" 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 UIElicitationResponse.from_dict(await self._client.request("session.ui.elicitation", params_dict, **_timeout_kwargs(timeout))) async def handle_pending_elicitation(self, params: UIHandlePendingElicitationRequest, *, timeout: float | None = None) -> UIElicitationResult: + "Calls session.ui.handlePendingElicitation." 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 UIElicitationResult.from_dict(await self._client.request("session.ui.handlePendingElicitation", params_dict, **_timeout_kwargs(timeout))) @@ -7542,16 +7605,19 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def handle_pending_permission_request(self, params: PermissionDecisionRequest, *, timeout: float | None = None) -> PermissionRequestResult: + "Calls session.permissions.handlePendingPermissionRequest." 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 PermissionRequestResult.from_dict(await self._client.request("session.permissions.handlePendingPermissionRequest", params_dict, **_timeout_kwargs(timeout))) async def set_approve_all(self, params: PermissionsSetApproveAllRequest, *, timeout: float | None = None) -> PermissionsSetApproveAllResult: + "Calls session.permissions.setApproveAll." 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 PermissionsSetApproveAllResult.from_dict(await self._client.request("session.permissions.setApproveAll", params_dict, **_timeout_kwargs(timeout))) async def reset_session_approvals(self, *, timeout: float | None = None) -> PermissionsResetSessionApprovalsResult: + "Calls session.permissions.resetSessionApprovals." return PermissionsResetSessionApprovalsResult.from_dict(await self._client.request("session.permissions.resetSessionApprovals", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7561,11 +7627,13 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def exec(self, params: ShellExecRequest, *, timeout: float | None = None) -> ShellExecResult: + "Calls session.shell.exec." 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 ShellExecResult.from_dict(await self._client.request("session.shell.exec", params_dict, **_timeout_kwargs(timeout))) async def kill(self, params: ShellKillRequest, *, timeout: float | None = None) -> ShellKillResult: + "Calls session.shell.kill." 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 ShellKillResult.from_dict(await self._client.request("session.shell.kill", params_dict, **_timeout_kwargs(timeout))) @@ -7578,9 +7646,11 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def compact(self, *, timeout: float | None = None) -> HistoryCompactResult: + "Calls session.history.compact." return HistoryCompactResult.from_dict(await self._client.request("session.history.compact", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) async def truncate(self, params: HistoryTruncateRequest, *, timeout: float | None = None) -> HistoryTruncateResult: + "Calls session.history.truncate." 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 HistoryTruncateResult.from_dict(await self._client.request("session.history.truncate", params_dict, **_timeout_kwargs(timeout))) @@ -7593,6 +7663,7 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def get_metrics(self, *, timeout: float | None = None) -> UsageGetMetricsResult: + "Calls session.usage.getMetrics." return UsageGetMetricsResult.from_dict(await self._client.request("session.usage.getMetrics", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) @@ -7603,11 +7674,13 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self._session_id = session_id async def enable(self, params: RemoteEnableRequest, *, timeout: float | None = None) -> RemoteEnableResult: + "Calls session.remote.enable." 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 RemoteEnableResult.from_dict(await self._client.request("session.remote.enable", params_dict, **_timeout_kwargs(timeout))) async def disable(self, *, timeout: float | None = None) -> None: + "Calls session.remote.disable." await self._client.request("session.remote.disable", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) @@ -7640,9 +7713,11 @@ def __init__(self, client: "JsonRpcClient", session_id: str): self.remote = RemoteApi(client, session_id) async def suspend(self, *, timeout: float | None = None) -> None: + "Calls session.suspend." await self._client.request("session.suspend", {"sessionId": self._session_id}, **_timeout_kwargs(timeout)) async def log(self, params: LogRequest, *, timeout: float | None = None) -> LogResult: + "Calls session.log." 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 LogResult.from_dict(await self._client.request("session.log", params_dict, **_timeout_kwargs(timeout))) @@ -7650,24 +7725,34 @@ async def log(self, params: LogRequest, *, timeout: float | None = None) -> LogR class SessionFsHandler(Protocol): async def read_file(self, params: SessionFSReadFileRequest) -> SessionFSReadFileResult: + "Calls sessionFs.readFile." pass async def write_file(self, params: SessionFSWriteFileRequest) -> SessionFSError | None: + "Calls sessionFs.writeFile.\n\nReturns:\n Describes a filesystem error." pass async def append_file(self, params: SessionFSAppendFileRequest) -> SessionFSError | None: + "Calls sessionFs.appendFile.\n\nReturns:\n Describes a filesystem error." pass async def exists(self, params: SessionFSExistsRequest) -> SessionFSExistsResult: + "Calls sessionFs.exists." pass async def stat(self, params: SessionFSStatRequest) -> SessionFSStatResult: + "Calls sessionFs.stat." pass async def mkdir(self, params: SessionFSMkdirRequest) -> SessionFSError | None: + "Calls sessionFs.mkdir.\n\nReturns:\n Describes a filesystem error." pass async def readdir(self, params: SessionFSReaddirRequest) -> SessionFSReaddirResult: + "Calls sessionFs.readdir." pass async def readdir_with_types(self, params: SessionFSReaddirWithTypesRequest) -> SessionFSReaddirWithTypesResult: + "Calls sessionFs.readdirWithTypes." pass async def rm(self, params: SessionFSRmRequest) -> SessionFSError | None: + "Calls sessionFs.rm.\n\nReturns:\n Describes a filesystem error." pass async def rename(self, params: SessionFSRenameRequest) -> SessionFSError | None: + "Calls sessionFs.rename.\n\nReturns:\n Describes a filesystem error." pass @dataclass diff --git a/rust/README.md b/rust/README.md index 8ae3851e1..cf9e4b839 100644 --- a/rust/README.md +++ b/rust/README.md @@ -157,7 +157,7 @@ response structs. ```rust,ignore // Common generated RPCs. let files = session.rpc().workspaces().list_files().await?.files; -let models = client.rpc().models().list(Default::default()).await?.models; +let models = client.rpc().models().list().await?.models; // Methods with no helper — full schema-typed access. let agents = session.rpc().agent().list().await?.agents; diff --git a/rust/src/generated/rpc.rs b/rust/src/generated/rpc.rs index b07736676..b55f9d501 100644 --- a/rust/src/generated/rpc.rs +++ b/rust/src/generated/rpc.rs @@ -68,6 +68,8 @@ impl<'a> ClientRpc<'a> { } } + /// Calls `ping`. + /// /// Wire method: `ping`. pub async fn ping(&self, params: PingRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -78,6 +80,8 @@ impl<'a> ClientRpc<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `connect`. + /// /// Wire method: `connect`. pub async fn connect(&self, params: ConnectRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -96,8 +100,22 @@ pub struct ClientRpcAccount<'a> { } impl<'a> ClientRpcAccount<'a> { + /// Calls `account.getQuota`. + /// + /// Wire method: `account.getQuota`. + pub async fn get_quota(&self) -> Result { + let wire_params = serde_json::json!({}); + let _value = self + .client + .call(rpc_methods::ACCOUNT_GETQUOTA, Some(wire_params)) + .await?; + Ok(serde_json::from_value(_value)?) + } + + /// Calls `account.getQuota`. + /// /// Wire method: `account.getQuota`. - pub async fn get_quota( + pub async fn get_quota_with_params( &self, params: AccountGetQuotaRequest, ) -> Result { @@ -124,6 +142,8 @@ impl<'a> ClientRpcMcp<'a> { } } + /// Calls `mcp.discover`. + /// /// Wire method: `mcp.discover`. pub async fn discover(&self, params: McpDiscoverRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -142,6 +162,8 @@ pub struct ClientRpcMcpConfig<'a> { } impl<'a> ClientRpcMcpConfig<'a> { + /// Calls `mcp.config.list`. + /// /// Wire method: `mcp.config.list`. pub async fn list(&self) -> Result { let wire_params = serde_json::json!({}); @@ -152,6 +174,8 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `mcp.config.add`. + /// /// Wire method: `mcp.config.add`. pub async fn add(&self, params: McpConfigAddRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -162,6 +186,8 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(()) } + /// Calls `mcp.config.update`. + /// /// Wire method: `mcp.config.update`. pub async fn update(&self, params: McpConfigUpdateRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -172,6 +198,8 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(()) } + /// Calls `mcp.config.remove`. + /// /// Wire method: `mcp.config.remove`. pub async fn remove(&self, params: McpConfigRemoveRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -182,6 +210,8 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(()) } + /// Calls `mcp.config.enable`. + /// /// Wire method: `mcp.config.enable`. pub async fn enable(&self, params: McpConfigEnableRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -192,6 +222,8 @@ impl<'a> ClientRpcMcpConfig<'a> { Ok(()) } + /// Calls `mcp.config.disable`. + /// /// Wire method: `mcp.config.disable`. pub async fn disable(&self, params: McpConfigDisableRequest) -> Result<(), Error> { let wire_params = serde_json::to_value(params)?; @@ -210,8 +242,22 @@ pub struct ClientRpcModels<'a> { } impl<'a> ClientRpcModels<'a> { + /// Calls `models.list`. + /// /// Wire method: `models.list`. - pub async fn list(&self, params: ModelsListRequest) -> Result { + pub async fn list(&self) -> Result { + let wire_params = serde_json::json!({}); + let _value = self + .client + .call(rpc_methods::MODELS_LIST, Some(wire_params)) + .await?; + Ok(serde_json::from_value(_value)?) + } + + /// Calls `models.list`. + /// + /// Wire method: `models.list`. + pub async fn list_with_params(&self, params: ModelsListRequest) -> Result { let wire_params = serde_json::to_value(params)?; let _value = self .client @@ -228,6 +274,8 @@ pub struct ClientRpcSessionFs<'a> { } impl<'a> ClientRpcSessionFs<'a> { + /// Calls `sessionFs.setProvider`. + /// /// Wire method: `sessionFs.setProvider`. pub async fn set_provider( &self, @@ -249,6 +297,8 @@ pub struct ClientRpcSessions<'a> { } impl<'a> ClientRpcSessions<'a> { + /// Calls `sessions.fork`. + /// /// Wire method: `sessions.fork`. /// ///
@@ -282,6 +332,8 @@ impl<'a> ClientRpcSkills<'a> { } } + /// Calls `skills.discover`. + /// /// Wire method: `skills.discover`. pub async fn discover(&self, params: SkillsDiscoverRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -300,6 +352,8 @@ pub struct ClientRpcSkillsConfig<'a> { } impl<'a> ClientRpcSkillsConfig<'a> { + /// Calls `skills.config.setDisabledSkills`. + /// /// Wire method: `skills.config.setDisabledSkills`. pub async fn set_disabled_skills( &self, @@ -324,6 +378,8 @@ pub struct ClientRpcTools<'a> { } impl<'a> ClientRpcTools<'a> { + /// Calls `tools.list`. + /// /// Wire method: `tools.list`. pub async fn list(&self, params: ToolsListRequest) -> Result { let wire_params = serde_json::to_value(params)?; @@ -496,6 +552,8 @@ impl<'a> SessionRpc<'a> { } } + /// Calls `session.suspend`. + /// /// Wire method: `session.suspend`. pub async fn suspend(&self) -> Result<(), Error> { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -507,6 +565,8 @@ impl<'a> SessionRpc<'a> { Ok(()) } + /// Calls `session.log`. + /// /// Wire method: `session.log`. pub async fn log(&self, params: LogRequest) -> Result { let mut wire_params = serde_json::to_value(params)?; @@ -527,6 +587,8 @@ pub struct SessionRpcAgent<'a> { } impl<'a> SessionRpcAgent<'a> { + /// Calls `session.agent.list`. + /// /// Wire method: `session.agent.list`. /// ///
@@ -546,6 +608,8 @@ impl<'a> SessionRpcAgent<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.agent.getCurrent`. + /// /// Wire method: `session.agent.getCurrent`. /// ///
@@ -565,6 +629,8 @@ impl<'a> SessionRpcAgent<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.agent.select`. + /// /// Wire method: `session.agent.select`. /// ///
@@ -585,6 +651,8 @@ impl<'a> SessionRpcAgent<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.agent.deselect`. + /// /// Wire method: `session.agent.deselect`. /// ///
@@ -604,6 +672,8 @@ impl<'a> SessionRpcAgent<'a> { Ok(()) } + /// Calls `session.agent.reload`. + /// /// Wire method: `session.agent.reload`. /// ///
@@ -631,6 +701,8 @@ pub struct SessionRpcAuth<'a> { } impl<'a> SessionRpcAuth<'a> { + /// Calls `session.auth.getStatus`. + /// /// Wire method: `session.auth.getStatus`. pub async fn get_status(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -650,6 +722,8 @@ pub struct SessionRpcCommands<'a> { } impl<'a> SessionRpcCommands<'a> { + /// Calls `session.commands.list`. + /// /// Wire method: `session.commands.list`. pub async fn list(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -661,6 +735,8 @@ impl<'a> SessionRpcCommands<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.commands.list`. + /// /// Wire method: `session.commands.list`. pub async fn list_with_params( &self, @@ -676,6 +752,8 @@ impl<'a> SessionRpcCommands<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.commands.invoke`. + /// /// Wire method: `session.commands.invoke`. pub async fn invoke( &self, @@ -691,6 +769,8 @@ impl<'a> SessionRpcCommands<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.commands.handlePendingCommand`. + /// /// Wire method: `session.commands.handlePendingCommand`. pub async fn handle_pending_command( &self, @@ -709,6 +789,8 @@ impl<'a> SessionRpcCommands<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.commands.respondToQueuedCommand`. + /// /// Wire method: `session.commands.respondToQueuedCommand`. pub async fn respond_to_queued_command( &self, @@ -735,6 +817,8 @@ pub struct SessionRpcExtensions<'a> { } impl<'a> SessionRpcExtensions<'a> { + /// Calls `session.extensions.list`. + /// /// Wire method: `session.extensions.list`. /// ///
@@ -754,6 +838,8 @@ impl<'a> SessionRpcExtensions<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.extensions.enable`. + /// /// Wire method: `session.extensions.enable`. /// ///
@@ -774,6 +860,8 @@ impl<'a> SessionRpcExtensions<'a> { Ok(()) } + /// Calls `session.extensions.disable`. + /// /// Wire method: `session.extensions.disable`. /// ///
@@ -794,6 +882,8 @@ impl<'a> SessionRpcExtensions<'a> { Ok(()) } + /// Calls `session.extensions.reload`. + /// /// Wire method: `session.extensions.reload`. /// ///
@@ -821,6 +911,8 @@ pub struct SessionRpcFleet<'a> { } impl<'a> SessionRpcFleet<'a> { + /// Calls `session.fleet.start`. + /// /// Wire method: `session.fleet.start`. /// ///
@@ -849,6 +941,8 @@ pub struct SessionRpcHistory<'a> { } impl<'a> SessionRpcHistory<'a> { + /// Calls `session.history.compact`. + /// /// Wire method: `session.history.compact`. /// ///
@@ -868,6 +962,8 @@ impl<'a> SessionRpcHistory<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.history.truncate`. + /// /// Wire method: `session.history.truncate`. /// ///
@@ -899,6 +995,8 @@ pub struct SessionRpcInstructions<'a> { } impl<'a> SessionRpcInstructions<'a> { + /// Calls `session.instructions.getSources`. + /// /// Wire method: `session.instructions.getSources`. pub async fn get_sources(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -928,6 +1026,8 @@ impl<'a> SessionRpcMcp<'a> { } } + /// Calls `session.mcp.list`. + /// /// Wire method: `session.mcp.list`. /// ///
@@ -947,6 +1047,8 @@ impl<'a> SessionRpcMcp<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.mcp.enable`. + /// /// Wire method: `session.mcp.enable`. /// ///
@@ -967,6 +1069,8 @@ impl<'a> SessionRpcMcp<'a> { Ok(()) } + /// Calls `session.mcp.disable`. + /// /// Wire method: `session.mcp.disable`. /// ///
@@ -987,6 +1091,8 @@ impl<'a> SessionRpcMcp<'a> { Ok(()) } + /// Calls `session.mcp.reload`. + /// /// Wire method: `session.mcp.reload`. /// ///
@@ -1014,6 +1120,8 @@ pub struct SessionRpcMcpOauth<'a> { } impl<'a> SessionRpcMcpOauth<'a> { + /// Calls `session.mcp.oauth.login`. + /// /// Wire method: `session.mcp.oauth.login`. /// ///
@@ -1042,7 +1150,13 @@ pub struct SessionRpcMode<'a> { } impl<'a> SessionRpcMode<'a> { + /// Calls `session.mode.get`. + /// /// Wire method: `session.mode.get`. + /// + /// # Returns + /// + /// The agent mode. Valid values: "interactive", "plan", "autopilot". pub async fn get(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); let _value = self @@ -1053,6 +1167,8 @@ impl<'a> SessionRpcMode<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.mode.set`. + /// /// Wire method: `session.mode.set`. pub async fn set(&self, params: ModeSetRequest) -> Result<(), Error> { let mut wire_params = serde_json::to_value(params)?; @@ -1073,6 +1189,8 @@ pub struct SessionRpcModel<'a> { } impl<'a> SessionRpcModel<'a> { + /// Calls `session.model.getCurrent`. + /// /// Wire method: `session.model.getCurrent`. pub async fn get_current(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1084,6 +1202,8 @@ impl<'a> SessionRpcModel<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.model.switchTo`. + /// /// Wire method: `session.model.switchTo`. pub async fn switch_to( &self, @@ -1107,6 +1227,8 @@ pub struct SessionRpcName<'a> { } impl<'a> SessionRpcName<'a> { + /// Calls `session.name.get`. + /// /// Wire method: `session.name.get`. pub async fn get(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1118,6 +1240,8 @@ impl<'a> SessionRpcName<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.name.set`. + /// /// Wire method: `session.name.set`. pub async fn set(&self, params: NameSetRequest) -> Result<(), Error> { let mut wire_params = serde_json::to_value(params)?; @@ -1138,6 +1262,8 @@ pub struct SessionRpcPermissions<'a> { } impl<'a> SessionRpcPermissions<'a> { + /// Calls `session.permissions.handlePendingPermissionRequest`. + /// /// Wire method: `session.permissions.handlePendingPermissionRequest`. pub async fn handle_pending_permission_request( &self, @@ -1156,6 +1282,8 @@ impl<'a> SessionRpcPermissions<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.permissions.setApproveAll`. + /// /// Wire method: `session.permissions.setApproveAll`. pub async fn set_approve_all( &self, @@ -1174,6 +1302,8 @@ impl<'a> SessionRpcPermissions<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.permissions.resetSessionApprovals`. + /// /// Wire method: `session.permissions.resetSessionApprovals`. pub async fn reset_session_approvals( &self, @@ -1198,6 +1328,8 @@ pub struct SessionRpcPlan<'a> { } impl<'a> SessionRpcPlan<'a> { + /// Calls `session.plan.read`. + /// /// Wire method: `session.plan.read`. pub async fn read(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1209,6 +1341,8 @@ impl<'a> SessionRpcPlan<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.plan.update`. + /// /// Wire method: `session.plan.update`. pub async fn update(&self, params: PlanUpdateRequest) -> Result<(), Error> { let mut wire_params = serde_json::to_value(params)?; @@ -1221,6 +1355,8 @@ impl<'a> SessionRpcPlan<'a> { Ok(()) } + /// Calls `session.plan.delete`. + /// /// Wire method: `session.plan.delete`. pub async fn delete(&self) -> Result<(), Error> { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1240,6 +1376,8 @@ pub struct SessionRpcPlugins<'a> { } impl<'a> SessionRpcPlugins<'a> { + /// Calls `session.plugins.list`. + /// /// Wire method: `session.plugins.list`. /// ///
@@ -1267,6 +1405,8 @@ pub struct SessionRpcRemote<'a> { } impl<'a> SessionRpcRemote<'a> { + /// Calls `session.remote.enable`. + /// /// Wire method: `session.remote.enable`. /// ///
@@ -1287,6 +1427,8 @@ impl<'a> SessionRpcRemote<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.remote.disable`. + /// /// Wire method: `session.remote.disable`. /// ///
@@ -1314,6 +1456,8 @@ pub struct SessionRpcShell<'a> { } impl<'a> SessionRpcShell<'a> { + /// Calls `session.shell.exec`. + /// /// Wire method: `session.shell.exec`. pub async fn exec(&self, params: ShellExecRequest) -> Result { let mut wire_params = serde_json::to_value(params)?; @@ -1326,6 +1470,8 @@ impl<'a> SessionRpcShell<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.shell.kill`. + /// /// Wire method: `session.shell.kill`. pub async fn kill(&self, params: ShellKillRequest) -> Result { let mut wire_params = serde_json::to_value(params)?; @@ -1346,6 +1492,8 @@ pub struct SessionRpcSkills<'a> { } impl<'a> SessionRpcSkills<'a> { + /// Calls `session.skills.list`. + /// /// Wire method: `session.skills.list`. /// ///
@@ -1365,6 +1513,8 @@ impl<'a> SessionRpcSkills<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.skills.enable`. + /// /// Wire method: `session.skills.enable`. /// ///
@@ -1385,6 +1535,8 @@ impl<'a> SessionRpcSkills<'a> { Ok(()) } + /// Calls `session.skills.disable`. + /// /// Wire method: `session.skills.disable`. /// ///
@@ -1405,6 +1557,8 @@ impl<'a> SessionRpcSkills<'a> { Ok(()) } + /// Calls `session.skills.reload`. + /// /// Wire method: `session.skills.reload`. /// ///
@@ -1432,6 +1586,8 @@ pub struct SessionRpcTasks<'a> { } impl<'a> SessionRpcTasks<'a> { + /// Calls `session.tasks.startAgent`. + /// /// Wire method: `session.tasks.startAgent`. /// ///
@@ -1455,6 +1611,8 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.tasks.list`. + /// /// Wire method: `session.tasks.list`. /// ///
@@ -1474,6 +1632,8 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.tasks.promoteToBackground`. + /// /// Wire method: `session.tasks.promoteToBackground`. /// ///
@@ -1500,6 +1660,8 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.tasks.cancel`. + /// /// Wire method: `session.tasks.cancel`. /// ///
@@ -1520,6 +1682,8 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.tasks.remove`. + /// /// Wire method: `session.tasks.remove`. /// ///
@@ -1540,6 +1704,8 @@ impl<'a> SessionRpcTasks<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.tasks.sendMessage`. + /// /// Wire method: `session.tasks.sendMessage`. /// ///
@@ -1571,6 +1737,8 @@ pub struct SessionRpcTools<'a> { } impl<'a> SessionRpcTools<'a> { + /// Calls `session.tools.handlePendingToolCall`. + /// /// Wire method: `session.tools.handlePendingToolCall`. pub async fn handle_pending_tool_call( &self, @@ -1597,7 +1765,13 @@ pub struct SessionRpcUi<'a> { } impl<'a> SessionRpcUi<'a> { + /// Calls `session.ui.elicitation`. + /// /// Wire method: `session.ui.elicitation`. + /// + /// # Returns + /// + /// The elicitation response (accept with form values, decline, or cancel) pub async fn elicitation( &self, params: UIElicitationRequest, @@ -1612,6 +1786,8 @@ impl<'a> SessionRpcUi<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.ui.handlePendingElicitation`. + /// /// Wire method: `session.ui.handlePendingElicitation`. pub async fn handle_pending_elicitation( &self, @@ -1638,6 +1814,8 @@ pub struct SessionRpcUsage<'a> { } impl<'a> SessionRpcUsage<'a> { + /// Calls `session.usage.getMetrics`. + /// /// Wire method: `session.usage.getMetrics`. /// ///
@@ -1665,6 +1843,8 @@ pub struct SessionRpcWorkspaces<'a> { } impl<'a> SessionRpcWorkspaces<'a> { + /// Calls `session.workspaces.getWorkspace`. + /// /// Wire method: `session.workspaces.getWorkspace`. pub async fn get_workspace(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1679,6 +1859,8 @@ impl<'a> SessionRpcWorkspaces<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.workspaces.listFiles`. + /// /// Wire method: `session.workspaces.listFiles`. pub async fn list_files(&self) -> Result { let wire_params = serde_json::json!({ "sessionId": self.session.id() }); @@ -1690,6 +1872,8 @@ impl<'a> SessionRpcWorkspaces<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.workspaces.readFile`. + /// /// Wire method: `session.workspaces.readFile`. pub async fn read_file( &self, @@ -1705,6 +1889,8 @@ impl<'a> SessionRpcWorkspaces<'a> { Ok(serde_json::from_value(_value)?) } + /// Calls `session.workspaces.createFile`. + /// /// Wire method: `session.workspaces.createFile`. pub async fn create_file(&self, params: WorkspacesCreateFileRequest) -> Result<(), Error> { let mut wire_params = serde_json::to_value(params)?; diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 7cd8461a0..af30b4191 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1787,7 +1787,7 @@ impl Client { if let Some(handler) = &self.inner.on_list_models { handler.list_models().await } else { - Ok(self.rpc().models().list(Default::default()).await?.models) + Ok(self.rpc().models().list().await?.models) } }) .await?; diff --git a/rust/tests/e2e/rpc_server.rs b/rust/tests/e2e/rpc_server.rs index 55d151595..d1508541b 100644 --- a/rust/tests/e2e/rpc_server.rs +++ b/rust/tests/e2e/rpc_server.rs @@ -46,7 +46,7 @@ async fn should_call_rpc_models_list_with_typed_result() { .await .expect("start client"); - let result = client.rpc().models().list(Default::default()).await.expect("models list"); + let result = client.rpc().models().list().await.expect("models list"); assert!( result @@ -87,7 +87,7 @@ async fn should_call_rpc_account_get_quota_when_authenticated() { .await .expect("start client"); - let result = client.rpc().account().get_quota(Default::default()).await.expect("quota"); + let result = client.rpc().account().get_quota().await.expect("quota"); let chat = result.quota_snapshots.get("chat").expect("chat quota"); assert_eq!(chat.entitlement_requests, 100); diff --git a/rust/tests/session_test.rs b/rust/tests/session_test.rs index cd4147a3f..c98c04d89 100644 --- a/rust/tests/session_test.rs +++ b/rust/tests/session_test.rs @@ -2470,7 +2470,7 @@ async fn rpc_namespace_client_models_list_dispatches_correctly() { let session = Arc::new(session); let client = session.client().clone(); - let handle = tokio::spawn(async move { client.rpc().models().list(Default::default()).await }); + let handle = tokio::spawn(async move { client.rpc().models().list().await }); let request = server.read_request().await; assert_eq!(request["method"], "models.list"); From c34a068bd1e9a133d22576a32be5aae169d39c42 Mon Sep 17 00:00:00 2001 From: Copilot <223556219+Copilot@users.noreply.github.com> Date: Thu, 14 May 2026 14:38:14 -0400 Subject: [PATCH 4/5] Fix Python SDK test failures after 1.0.48 update Fix ruff I001 import sorting violations in test_rpc_e2e.py and test_rpc_timeout.py caused by newly added ModelsListRequest import. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- python/e2e/test_rpc_e2e.py | 2 +- python/test_rpc_timeout.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python/e2e/test_rpc_e2e.py b/python/e2e/test_rpc_e2e.py index e0fe93436..50dfecc3b 100644 --- a/python/e2e/test_rpc_e2e.py +++ b/python/e2e/test_rpc_e2e.py @@ -4,7 +4,7 @@ from copilot import CopilotClient from copilot.client import SubprocessConfig -from copilot.generated.rpc import PingRequest, ModelsListRequest +from copilot.generated.rpc import ModelsListRequest, PingRequest from copilot.session import PermissionHandler from .testharness import CLI_PATH, E2ETestContext diff --git a/python/test_rpc_timeout.py b/python/test_rpc_timeout.py index a32e7e7f4..17254b08e 100644 --- a/python/test_rpc_timeout.py +++ b/python/test_rpc_timeout.py @@ -8,8 +8,8 @@ FleetApi, FleetStartRequest, ModeApi, - ModeSetRequest, ModelsListRequest, + ModeSetRequest, PlanApi, ServerModelsApi, ServerToolsApi, From 59982a4ce9a52f8558dd25c59c59de885e45a371 Mon Sep 17 00:00:00 2001 From: Copilot <223556219+Copilot@users.noreply.github.com> Date: Thu, 14 May 2026 15:00:41 -0400 Subject: [PATCH 5/5] Fix Python SDK Windows test failure Increase timeout for test_both_clients_see_tool_request_and_completion_events from 10s to 30s. On Windows CI, the first multi-client TCP test needs extra time for CLI subprocess and TCP connection establishment. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- python/e2e/test_multi_client_e2e.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/e2e/test_multi_client_e2e.py b/python/e2e/test_multi_client_e2e.py index 922ca3279..17b663865 100644 --- a/python/e2e/test_multi_client_e2e.py +++ b/python/e2e/test_multi_client_e2e.py @@ -215,7 +215,8 @@ def magic_number(params: SeedParams, invocation: ToolInvocation) -> str: # Send a prompt that triggers the custom tool await session1.send("Use the magic_number tool with seed 'hello' and tell me the result") - response = await get_final_assistant_message(session1) + # Use a longer timeout: first multi-client TCP test on Windows CI needs extra time + response = await get_final_assistant_message(session1, timeout=30.0) assert "MAGIC_hello_42" in (response.data.content or "") # Both clients should have seen the external_tool.requested event