/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. *--------------------------------------------------------------------------------------------*/ // AUTO-GENERATED FILE - DO NOT EDIT // Generated from: api.schema.json using System.Text.Json; using System.Text.Json.Serialization; using StreamJsonRpc; namespace GitHub.Copilot.SDK.Rpc; public class PingResult { /// Echoed message (or default greeting) [JsonPropertyName("message")] public string Message { get; set; } = string.Empty; /// Server timestamp in milliseconds [JsonPropertyName("timestamp")] public double Timestamp { get; set; } /// Server protocol version number [JsonPropertyName("protocolVersion")] public double ProtocolVersion { get; set; } } internal class PingRequest { [JsonPropertyName("message")] public string? Message { get; set; } } public class ModelCapabilitiesSupports { [JsonPropertyName("vision")] public bool Vision { get; set; } /// Whether this model supports reasoning effort configuration [JsonPropertyName("reasoningEffort")] public bool ReasoningEffort { get; set; } } public class ModelCapabilitiesLimits { [JsonPropertyName("max_prompt_tokens")] public double? MaxPromptTokens { get; set; } [JsonPropertyName("max_output_tokens")] public double? MaxOutputTokens { get; set; } [JsonPropertyName("max_context_window_tokens")] public double MaxContextWindowTokens { get; set; } } /// Model capabilities and limits public class ModelCapabilities { [JsonPropertyName("supports")] public ModelCapabilitiesSupports Supports { get; set; } = new(); [JsonPropertyName("limits")] public ModelCapabilitiesLimits Limits { get; set; } = new(); } /// Policy state (if applicable) public class ModelPolicy { [JsonPropertyName("state")] public string State { get; set; } = string.Empty; [JsonPropertyName("terms")] public string Terms { get; set; } = string.Empty; } /// Billing information public class ModelBilling { [JsonPropertyName("multiplier")] public double Multiplier { get; set; } } public class Model { /// Model identifier (e.g., "claude-sonnet-4.5") [JsonPropertyName("id")] public string Id { get; set; } = string.Empty; /// Display name [JsonPropertyName("name")] public string Name { get; set; } = string.Empty; /// Model capabilities and limits [JsonPropertyName("capabilities")] public ModelCapabilities Capabilities { get; set; } = new(); /// Policy state (if applicable) [JsonPropertyName("policy")] public ModelPolicy? Policy { get; set; } /// Billing information [JsonPropertyName("billing")] public ModelBilling? Billing { get; set; } /// Supported reasoning effort levels (only present if model supports reasoning effort) [JsonPropertyName("supportedReasoningEfforts")] public List? SupportedReasoningEfforts { get; set; } /// Default reasoning effort level (only present if model supports reasoning effort) [JsonPropertyName("defaultReasoningEffort")] public string? DefaultReasoningEffort { get; set; } } public class ModelsListResult { /// List of available models with full metadata [JsonPropertyName("models")] public List Models { get; set; } = new(); } public class Tool { /// Tool identifier (e.g., "bash", "grep", "str_replace_editor") [JsonPropertyName("name")] public string Name { get; set; } = string.Empty; /// Optional namespaced name for declarative filtering (e.g., "playwright/navigate" for MCP tools) [JsonPropertyName("namespacedName")] public string? NamespacedName { get; set; } /// Description of what the tool does [JsonPropertyName("description")] public string Description { get; set; } = string.Empty; /// JSON Schema for the tool's input parameters [JsonPropertyName("parameters")] public Dictionary? Parameters { get; set; } /// Optional instructions for how to use this tool effectively [JsonPropertyName("instructions")] public string? Instructions { get; set; } } public class ToolsListResult { /// List of available built-in tools with metadata [JsonPropertyName("tools")] public List Tools { get; set; } = new(); } internal class ToolsListRequest { [JsonPropertyName("model")] public string? Model { get; set; } } public class AccountGetQuotaResultQuotaSnapshotsValue { /// Number of requests included in the entitlement [JsonPropertyName("entitlementRequests")] public double EntitlementRequests { get; set; } /// Number of requests used so far this period [JsonPropertyName("usedRequests")] public double UsedRequests { get; set; } /// Percentage of entitlement remaining [JsonPropertyName("remainingPercentage")] public double RemainingPercentage { get; set; } /// Number of overage requests made this period [JsonPropertyName("overage")] public double Overage { get; set; } /// Whether pay-per-request usage is allowed when quota is exhausted [JsonPropertyName("overageAllowedWithExhaustedQuota")] public bool OverageAllowedWithExhaustedQuota { get; set; } /// Date when the quota resets (ISO 8601) [JsonPropertyName("resetDate")] public string? ResetDate { get; set; } } public class AccountGetQuotaResult { /// Quota snapshots keyed by type (e.g., chat, completions, premium_interactions) [JsonPropertyName("quotaSnapshots")] public Dictionary QuotaSnapshots { get; set; } = new(); } public class SessionModelGetCurrentResult { [JsonPropertyName("modelId")] public string? ModelId { get; set; } } internal class SessionModelGetCurrentRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; } public class SessionModelSwitchToResult { [JsonPropertyName("modelId")] public string? ModelId { get; set; } } internal class SessionModelSwitchToRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; [JsonPropertyName("modelId")] public string ModelId { get; set; } = string.Empty; } public class SessionModeGetResult { /// The current agent mode. [JsonPropertyName("mode")] public SessionModeGetResultMode Mode { get; set; } } internal class SessionModeGetRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; } public class SessionModeSetResult { /// The agent mode after switching. [JsonPropertyName("mode")] public SessionModeGetResultMode Mode { get; set; } } internal class SessionModeSetRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; [JsonPropertyName("mode")] public SessionModeGetResultMode Mode { get; set; } } public class SessionPlanReadResult { /// Whether plan.md exists in the workspace [JsonPropertyName("exists")] public bool Exists { get; set; } /// The content of plan.md, or null if it does not exist [JsonPropertyName("content")] public string? Content { get; set; } } internal class SessionPlanReadRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; } public class SessionPlanUpdateResult { } internal class SessionPlanUpdateRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; [JsonPropertyName("content")] public string Content { get; set; } = string.Empty; } public class SessionPlanDeleteResult { } internal class SessionPlanDeleteRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; } public class SessionWorkspaceListFilesResult { /// Relative file paths in the workspace files directory [JsonPropertyName("files")] public List Files { get; set; } = new(); } internal class SessionWorkspaceListFilesRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; } public class SessionWorkspaceReadFileResult { /// File content as a UTF-8 string [JsonPropertyName("content")] public string Content { get; set; } = string.Empty; } internal class SessionWorkspaceReadFileRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; [JsonPropertyName("path")] public string Path { get; set; } = string.Empty; } public class SessionWorkspaceCreateFileResult { } internal class SessionWorkspaceCreateFileRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; [JsonPropertyName("path")] public string Path { get; set; } = string.Empty; [JsonPropertyName("content")] public string Content { get; set; } = string.Empty; } public class SessionFleetStartResult { /// Whether fleet mode was successfully activated [JsonPropertyName("started")] public bool Started { get; set; } } internal class SessionFleetStartRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; [JsonPropertyName("prompt")] public string? Prompt { get; set; } } public class Agent { /// Unique identifier of the custom agent [JsonPropertyName("name")] public string Name { get; set; } = string.Empty; /// Human-readable display name [JsonPropertyName("displayName")] public string DisplayName { get; set; } = string.Empty; /// Description of the agent's purpose [JsonPropertyName("description")] public string Description { get; set; } = string.Empty; } public class SessionAgentListResult { /// Available custom agents [JsonPropertyName("agents")] public List Agents { get; set; } = new(); } internal class SessionAgentListRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; } public class SessionAgentGetCurrentResultAgent { /// Unique identifier of the custom agent [JsonPropertyName("name")] public string Name { get; set; } = string.Empty; /// Human-readable display name [JsonPropertyName("displayName")] public string DisplayName { get; set; } = string.Empty; /// Description of the agent's purpose [JsonPropertyName("description")] public string Description { get; set; } = string.Empty; } public class SessionAgentGetCurrentResult { /// Currently selected custom agent, or null if using the default agent [JsonPropertyName("agent")] public SessionAgentGetCurrentResultAgent? Agent { get; set; } } internal class SessionAgentGetCurrentRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; } /// The newly selected custom agent public class SessionAgentSelectResultAgent { /// Unique identifier of the custom agent [JsonPropertyName("name")] public string Name { get; set; } = string.Empty; /// Human-readable display name [JsonPropertyName("displayName")] public string DisplayName { get; set; } = string.Empty; /// Description of the agent's purpose [JsonPropertyName("description")] public string Description { get; set; } = string.Empty; } public class SessionAgentSelectResult { /// The newly selected custom agent [JsonPropertyName("agent")] public SessionAgentSelectResultAgent Agent { get; set; } = new(); } internal class SessionAgentSelectRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; [JsonPropertyName("name")] public string Name { get; set; } = string.Empty; } public class SessionAgentDeselectResult { } internal class SessionAgentDeselectRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; } public class SessionCompactionCompactResult { /// Whether compaction completed successfully [JsonPropertyName("success")] public bool Success { get; set; } /// Number of tokens freed by compaction [JsonPropertyName("tokensRemoved")] public double TokensRemoved { get; set; } /// Number of messages removed during compaction [JsonPropertyName("messagesRemoved")] public double MessagesRemoved { get; set; } } internal class SessionCompactionCompactRequest { [JsonPropertyName("sessionId")] public string SessionId { get; set; } = string.Empty; } [JsonConverter(typeof(JsonStringEnumConverter))] public enum SessionModeGetResultMode { [JsonStringEnumMemberName("interactive")] Interactive, [JsonStringEnumMemberName("plan")] Plan, [JsonStringEnumMemberName("autopilot")] Autopilot, } /// Typed server-scoped RPC methods (no session required). public class ServerRpc { private readonly JsonRpc _rpc; internal ServerRpc(JsonRpc rpc) { _rpc = rpc; Models = new ModelsApi(rpc); Tools = new ToolsApi(rpc); Account = new AccountApi(rpc); } /// Calls "ping". public async Task PingAsync(string? message = null, CancellationToken cancellationToken = default) { var request = new PingRequest { Message = message }; return await CopilotClient.InvokeRpcAsync(_rpc, "ping", [request], cancellationToken); } /// Models APIs. public ModelsApi Models { get; } /// Tools APIs. public ToolsApi Tools { get; } /// Account APIs. public AccountApi Account { get; } } /// Server-scoped Models APIs. public class ModelsApi { private readonly JsonRpc _rpc; internal ModelsApi(JsonRpc rpc) { _rpc = rpc; } /// Calls "models.list". public async Task ListAsync(CancellationToken cancellationToken = default) { return await CopilotClient.InvokeRpcAsync(_rpc, "models.list", [], cancellationToken); } } /// Server-scoped Tools APIs. public class ToolsApi { private readonly JsonRpc _rpc; internal ToolsApi(JsonRpc rpc) { _rpc = rpc; } /// Calls "tools.list". public async Task ListAsync(string? model = null, CancellationToken cancellationToken = default) { var request = new ToolsListRequest { Model = model }; return await CopilotClient.InvokeRpcAsync(_rpc, "tools.list", [request], cancellationToken); } } /// Server-scoped Account APIs. public class AccountApi { private readonly JsonRpc _rpc; internal AccountApi(JsonRpc rpc) { _rpc = rpc; } /// Calls "account.getQuota". public async Task GetQuotaAsync(CancellationToken cancellationToken = default) { return await CopilotClient.InvokeRpcAsync(_rpc, "account.getQuota", [], cancellationToken); } } /// Typed session-scoped RPC methods. public class SessionRpc { private readonly JsonRpc _rpc; private readonly string _sessionId; internal SessionRpc(JsonRpc rpc, string sessionId) { _rpc = rpc; _sessionId = sessionId; Model = new ModelApi(rpc, sessionId); Mode = new ModeApi(rpc, sessionId); Plan = new PlanApi(rpc, sessionId); Workspace = new WorkspaceApi(rpc, sessionId); Fleet = new FleetApi(rpc, sessionId); Agent = new AgentApi(rpc, sessionId); Compaction = new CompactionApi(rpc, sessionId); } public ModelApi Model { get; } public ModeApi Mode { get; } public PlanApi Plan { get; } public WorkspaceApi Workspace { get; } public FleetApi Fleet { get; } public AgentApi Agent { get; } public CompactionApi Compaction { get; } } public class ModelApi { private readonly JsonRpc _rpc; private readonly string _sessionId; internal ModelApi(JsonRpc rpc, string sessionId) { _rpc = rpc; _sessionId = sessionId; } /// Calls "session.model.getCurrent". public async Task GetCurrentAsync(CancellationToken cancellationToken = default) { var request = new SessionModelGetCurrentRequest { SessionId = _sessionId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.model.getCurrent", [request], cancellationToken); } /// Calls "session.model.switchTo". public async Task SwitchToAsync(string modelId, CancellationToken cancellationToken = default) { var request = new SessionModelSwitchToRequest { SessionId = _sessionId, ModelId = modelId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.model.switchTo", [request], cancellationToken); } } public class ModeApi { private readonly JsonRpc _rpc; private readonly string _sessionId; internal ModeApi(JsonRpc rpc, string sessionId) { _rpc = rpc; _sessionId = sessionId; } /// Calls "session.mode.get". public async Task GetAsync(CancellationToken cancellationToken = default) { var request = new SessionModeGetRequest { SessionId = _sessionId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.mode.get", [request], cancellationToken); } /// Calls "session.mode.set". public async Task SetAsync(SessionModeGetResultMode mode, CancellationToken cancellationToken = default) { var request = new SessionModeSetRequest { SessionId = _sessionId, Mode = mode }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.mode.set", [request], cancellationToken); } } public class PlanApi { private readonly JsonRpc _rpc; private readonly string _sessionId; internal PlanApi(JsonRpc rpc, string sessionId) { _rpc = rpc; _sessionId = sessionId; } /// Calls "session.plan.read". public async Task ReadAsync(CancellationToken cancellationToken = default) { var request = new SessionPlanReadRequest { SessionId = _sessionId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.plan.read", [request], cancellationToken); } /// Calls "session.plan.update". public async Task UpdateAsync(string content, CancellationToken cancellationToken = default) { var request = new SessionPlanUpdateRequest { SessionId = _sessionId, Content = content }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.plan.update", [request], cancellationToken); } /// Calls "session.plan.delete". public async Task DeleteAsync(CancellationToken cancellationToken = default) { var request = new SessionPlanDeleteRequest { SessionId = _sessionId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.plan.delete", [request], cancellationToken); } } public class WorkspaceApi { private readonly JsonRpc _rpc; private readonly string _sessionId; internal WorkspaceApi(JsonRpc rpc, string sessionId) { _rpc = rpc; _sessionId = sessionId; } /// Calls "session.workspace.listFiles". public async Task ListFilesAsync(CancellationToken cancellationToken = default) { var request = new SessionWorkspaceListFilesRequest { SessionId = _sessionId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.workspace.listFiles", [request], cancellationToken); } /// Calls "session.workspace.readFile". public async Task ReadFileAsync(string path, CancellationToken cancellationToken = default) { var request = new SessionWorkspaceReadFileRequest { SessionId = _sessionId, Path = path }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.workspace.readFile", [request], cancellationToken); } /// Calls "session.workspace.createFile". public async Task CreateFileAsync(string path, string content, CancellationToken cancellationToken = default) { var request = new SessionWorkspaceCreateFileRequest { SessionId = _sessionId, Path = path, Content = content }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.workspace.createFile", [request], cancellationToken); } } public class FleetApi { private readonly JsonRpc _rpc; private readonly string _sessionId; internal FleetApi(JsonRpc rpc, string sessionId) { _rpc = rpc; _sessionId = sessionId; } /// Calls "session.fleet.start". public async Task StartAsync(string? prompt, CancellationToken cancellationToken = default) { var request = new SessionFleetStartRequest { SessionId = _sessionId, Prompt = prompt }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.fleet.start", [request], cancellationToken); } } public class AgentApi { private readonly JsonRpc _rpc; private readonly string _sessionId; internal AgentApi(JsonRpc rpc, string sessionId) { _rpc = rpc; _sessionId = sessionId; } /// Calls "session.agent.list". public async Task ListAsync(CancellationToken cancellationToken = default) { var request = new SessionAgentListRequest { SessionId = _sessionId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.agent.list", [request], cancellationToken); } /// Calls "session.agent.getCurrent". public async Task GetCurrentAsync(CancellationToken cancellationToken = default) { var request = new SessionAgentGetCurrentRequest { SessionId = _sessionId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.agent.getCurrent", [request], cancellationToken); } /// Calls "session.agent.select". public async Task SelectAsync(string name, CancellationToken cancellationToken = default) { var request = new SessionAgentSelectRequest { SessionId = _sessionId, Name = name }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.agent.select", [request], cancellationToken); } /// Calls "session.agent.deselect". public async Task DeselectAsync(CancellationToken cancellationToken = default) { var request = new SessionAgentDeselectRequest { SessionId = _sessionId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.agent.deselect", [request], cancellationToken); } } public class CompactionApi { private readonly JsonRpc _rpc; private readonly string _sessionId; internal CompactionApi(JsonRpc rpc, string sessionId) { _rpc = rpc; _sessionId = sessionId; } /// Calls "session.compaction.compact". public async Task CompactAsync(CancellationToken cancellationToken = default) { var request = new SessionCompactionCompactRequest { SessionId = _sessionId }; return await CopilotClient.InvokeRpcAsync(_rpc, "session.compaction.compact", [request], cancellationToken); } } [JsonSourceGenerationOptions( JsonSerializerDefaults.Web, AllowOutOfOrderMetadataProperties = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)] [JsonSerializable(typeof(AccountGetQuotaResult))] [JsonSerializable(typeof(AccountGetQuotaResultQuotaSnapshotsValue))] [JsonSerializable(typeof(Agent))] [JsonSerializable(typeof(Model))] [JsonSerializable(typeof(ModelBilling))] [JsonSerializable(typeof(ModelCapabilities))] [JsonSerializable(typeof(ModelCapabilitiesLimits))] [JsonSerializable(typeof(ModelCapabilitiesSupports))] [JsonSerializable(typeof(ModelPolicy))] [JsonSerializable(typeof(ModelsListResult))] [JsonSerializable(typeof(PingRequest))] [JsonSerializable(typeof(PingResult))] [JsonSerializable(typeof(SessionAgentDeselectRequest))] [JsonSerializable(typeof(SessionAgentDeselectResult))] [JsonSerializable(typeof(SessionAgentGetCurrentRequest))] [JsonSerializable(typeof(SessionAgentGetCurrentResult))] [JsonSerializable(typeof(SessionAgentGetCurrentResultAgent))] [JsonSerializable(typeof(SessionAgentListRequest))] [JsonSerializable(typeof(SessionAgentListResult))] [JsonSerializable(typeof(SessionAgentSelectRequest))] [JsonSerializable(typeof(SessionAgentSelectResult))] [JsonSerializable(typeof(SessionAgentSelectResultAgent))] [JsonSerializable(typeof(SessionCompactionCompactRequest))] [JsonSerializable(typeof(SessionCompactionCompactResult))] [JsonSerializable(typeof(SessionFleetStartRequest))] [JsonSerializable(typeof(SessionFleetStartResult))] [JsonSerializable(typeof(SessionModeGetRequest))] [JsonSerializable(typeof(SessionModeGetResult))] [JsonSerializable(typeof(SessionModeSetRequest))] [JsonSerializable(typeof(SessionModeSetResult))] [JsonSerializable(typeof(SessionModelGetCurrentRequest))] [JsonSerializable(typeof(SessionModelGetCurrentResult))] [JsonSerializable(typeof(SessionModelSwitchToRequest))] [JsonSerializable(typeof(SessionModelSwitchToResult))] [JsonSerializable(typeof(SessionPlanDeleteRequest))] [JsonSerializable(typeof(SessionPlanDeleteResult))] [JsonSerializable(typeof(SessionPlanReadRequest))] [JsonSerializable(typeof(SessionPlanReadResult))] [JsonSerializable(typeof(SessionPlanUpdateRequest))] [JsonSerializable(typeof(SessionPlanUpdateResult))] [JsonSerializable(typeof(SessionWorkspaceCreateFileRequest))] [JsonSerializable(typeof(SessionWorkspaceCreateFileResult))] [JsonSerializable(typeof(SessionWorkspaceListFilesRequest))] [JsonSerializable(typeof(SessionWorkspaceListFilesResult))] [JsonSerializable(typeof(SessionWorkspaceReadFileRequest))] [JsonSerializable(typeof(SessionWorkspaceReadFileResult))] [JsonSerializable(typeof(Tool))] [JsonSerializable(typeof(ToolsListRequest))] [JsonSerializable(typeof(ToolsListResult))] internal partial class RpcJsonContext : JsonSerializerContext;