diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index b058535bad..57a0bbcd71 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -28,6 +28,8 @@ - .NET: `cd dotnet && dotnet test test/GitHub.Copilot.SDK.Test.csproj` - **.NET testing note:** Never add `InternalsVisibleTo` to any project file when writing tests. Tests must only access public APIs. - Java: `cd java && mvn clean verify` (full build + tests), `mvn spotless:apply` (format code before commit) + - Java single test: `cd java && mvn test -Dtest=CopilotClientTest` | single method: `mvn test -Dtest=ToolsTest#testToolInvocation` + - Java format check only: `mvn spotless:check` | Build without tests: `mvn clean package -DskipTests` - **Java testing note:** Always use `mvn verify` without `-q` and without piping through `grep`. Never add `InternalsVisibleTo` equivalent — tests must only access public APIs. ## Testing & E2E tips ⚙️ @@ -36,6 +38,7 @@ - Tests rely on YAML snapshot exchanges under `test/snapshots/` — to add test scenarios, add or edit the appropriate YAML files and update tests. - The harness prints `Listening: http://...` — tests parse this URL to configure CLI or proxy. - Java E2E tests use `E2ETestContext` which manages a `CapiProxy` (Node.js replaying proxy). The harness is cloned during Maven's `generate-test-resources` phase to `java/target/copilot-sdk/`. +- Java test method names are converted to lowercase snake_case for snapshot filenames (avoids case collisions on macOS/Windows). ## Project-specific conventions & patterns ✅ @@ -43,6 +46,8 @@ - Infinite sessions are enabled by default and persist workspace state to `~/.copilot/session-state/{sessionId}`; compaction events are emitted (`session.compaction_start`, `session.compaction_complete`). See language READMEs for usage. - Streaming: when `streaming`/`Streaming=true` you receive delta events (`assistant.message_delta`, `assistant.reasoning_delta`) and final events (`assistant.message`, `assistant.reasoning`) — tests expect this behavior. - Type generation is centralized in `nodejs/scripts/generate-session-types.ts` and requires the `@github/copilot` schema to be present (often via `npm link` or installed package). +- Java code style: 4-space indent (Spotless + Eclipse formatter), fluent setter pattern for config classes, Javadoc required on public APIs (enforced by Checkstyle, except `json`/`events` packages). +- Java handlers return `CompletableFuture` (the Java equivalent of C# `async/await`). When porting from .NET: convert properties → getters/fluent setters, use Jackson (`ObjectMapper`, `@JsonProperty`) for serialization. ## Integration & environment notes ⚠️ @@ -50,6 +55,7 @@ - Some scripts (typegen, formatting) call external tools: `gofmt`, `dotnet format`, `tsx` (available via npm), `quicktype`/`quicktype-core` (used by the Node typegen script), and `prettier` (provided as an npm devDependency). Most of these are available through the repo's package scripts or devDependencies—run `just install` (and `cd nodejs && npm ci`) to install them. Ensure the required tools are available in CI / developer machines. - Tests may assume `node >= 18`, `python >= 3.9`, platform differences handled (Windows uses `shell=True` for npx in harness). - Java requires JDK 17+ and Maven 3.9+. Java E2E tests also require Node.js (for the replay proxy). +- Java pre-commit hook runs `mvn spotless:check`. Enable with `git config core.hooksPath .githooks` (auto-enabled in Copilot coding agent environment via `copilot-setup-steps.yml`). ## Where to add new code or tests 🧭 @@ -57,3 +63,9 @@ - Unit tests: `nodejs/test`, `python/*`, `go/*`, `dotnet/test`, `rust/tests`, `java/src/test/java` - E2E tests: `*/e2e/` folders that use the shared replay proxy and `test/snapshots/`, `java/src/test/java/**/e2e/` - Generated types: update schema in `@github/copilot` then run `cd nodejs && npm run generate:session-types` and commit generated files in `src/generated` or language generated location. Java generated types: `java/src/generated/java` + +## Boundaries — files you must NOT hand-edit ⛔ + +- `java/src/generated/java/` — auto-generated by `scripts/codegen/java.ts`; regenerate with `cd java && mvn generate-sources -Pcodegen`. +- `nodejs/src/generated/` — auto-generated by `npm run generate:session-types`. +- `test/snapshots/` — authoritative test fixtures; add/edit YAML here to change E2E behavior, but don't delete without understanding downstream impact. diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 5b0e39e3ff..7b6d738671 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -76,7 +76,7 @@ jobs: # Install gh-aw extension for advanced GitHub CLI features - name: Install gh-aw extension - uses: github/gh-aw/actions/setup-cli@4d44d0e89851a877f4ddc0cb6c0197e42b1016c5 # v0.73.0 + uses: github/gh-aw/actions/setup-cli@0feed75a980b06f247abbbf80127f8eb2c19e2c5 # v0.74.8 with: version: v0.74.4 diff --git a/dotnet/src/Generated/Rpc.cs b/dotnet/src/Generated/Rpc.cs index cafc03f207..3fac45256f 100644 --- a/dotnet/src/Generated/Rpc.cs +++ b/dotnet/src/Generated/Rpc.cs @@ -66,6 +66,26 @@ internal sealed class ConnectRequest public string? Token { get; set; } } +/// Long context tier pricing (available for models with extended context windows). +public sealed class ModelBillingTokenPricesLongContext +{ + /// AI Credits cost per billing batch of cached tokens. + [JsonPropertyName("cachePrice")] + public double? CachePrice { get; set; } + + /// Maximum context window tokens for the long context tier. + [JsonPropertyName("contextMax")] + public long? ContextMax { get; set; } + + /// AI Credits cost per billing batch of input tokens. + [JsonPropertyName("inputPrice")] + public double? InputPrice { get; set; } + + /// AI Credits cost per billing batch of output tokens. + [JsonPropertyName("outputPrice")] + public double? OutputPrice { get; set; } +} + /// Token-level pricing information for this model. public sealed class ModelBillingTokenPrices { @@ -73,17 +93,25 @@ public sealed class ModelBillingTokenPrices [JsonPropertyName("batchSize")] public long? BatchSize { get; set; } - /// Price per billing batch of cached tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU = $0.01 USD). + /// AI Credits cost per billing batch of cached tokens. [JsonPropertyName("cachePrice")] - public long? CachePrice { get; set; } + public double? CachePrice { get; set; } + + /// Maximum context window tokens for the default tier. + [JsonPropertyName("contextMax")] + public long? ContextMax { get; set; } - /// Price per billing batch of input tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU = $0.01 USD). + /// AI Credits cost per billing batch of input tokens. [JsonPropertyName("inputPrice")] - public long? InputPrice { get; set; } + public double? InputPrice { get; set; } - /// Price per billing batch of output tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU = $0.01 USD). + /// Long context tier pricing (available for models with extended context windows). + [JsonPropertyName("longContext")] + public ModelBillingTokenPricesLongContext? LongContext { get; set; } + + /// AI Credits cost per billing batch of output tokens. [JsonPropertyName("outputPrice")] - public long? OutputPrice { get; set; } + public double? OutputPrice { get; set; } } /// Billing information. @@ -352,7 +380,7 @@ public sealed class DiscoveredMcpServer [JsonPropertyName("source")] public McpServerSource Source { get; set; } - /// Server transport type: stdio, http, sse, or memory. + /// Server transport type: stdio, http, sse (deprecated), or memory. [JsonPropertyName("type")] public DiscoveredMcpServerType? Type { get; set; } } @@ -3596,6 +3624,287 @@ internal sealed class McpOauthLoginRequest public string SessionId { get; set; } = string.Empty; } +/// Schema for the `McpAppsResourceContent` type. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsResourceContent +{ + /// Resource-level metadata (CSP, permissions, etc.). + [JsonPropertyName("_meta")] + public IDictionary? _meta { get; set; } + + /// Base64-encoded binary content. + [JsonPropertyName("blob")] + public string? Blob { get; set; } + + /// MIME type of the content. + [JsonPropertyName("mimeType")] + public string? MimeType { get; set; } + + /// Text content (e.g. HTML). + [JsonPropertyName("text")] + public string? Text { get; set; } + + /// The resource URI (typically ui://...). + [JsonPropertyName("uri")] + public string Uri { get; set; } = string.Empty; +} + +/// Resource contents returned by the MCP server. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsReadResourceResult +{ + /// Resource contents returned by the server. + [JsonPropertyName("contents")] + public IList Contents { get => field ??= []; set; } +} + +/// MCP server and resource URI to fetch. +[Experimental(Diagnostics.Experimental)] +internal sealed class McpAppsReadResourceRequest +{ + /// Name of the MCP server hosting the resource. + [RegularExpression("^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$")] + [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("serverName")] + public string ServerName { get; set; } = string.Empty; + + /// Target session identifier. + [JsonPropertyName("sessionId")] + public string SessionId { get; set; } = string.Empty; + + /// Resource URI (typically ui://...). + [JsonPropertyName("uri")] + public string Uri { get; set; } = string.Empty; +} + +/// App-callable tools from the named MCP server. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsListToolsResult +{ + /// App-callable tools from the server. + [JsonPropertyName("tools")] + public IList> Tools { get => field ??= []; set; } +} + +/// MCP server to list app-callable tools for. +[Experimental(Diagnostics.Experimental)] +internal sealed class McpAppsListToolsRequest +{ + /// **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the app from this server only'), the call is rejected when this differs from `serverName`, and rejected outright when missing. + [RegularExpression("^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$")] + [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("originServerName")] + public string OriginServerName { get; set; } = string.Empty; + + /// MCP server hosting the app. + [RegularExpression("^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$")] + [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("serverName")] + public string ServerName { get; set; } = string.Empty; + + /// Target session identifier. + [JsonPropertyName("sessionId")] + public string SessionId { get; set; } = string.Empty; +} + +/// MCP server, tool name, and arguments to invoke from an MCP App view. +[Experimental(Diagnostics.Experimental)] +internal sealed class McpAppsCallToolRequest +{ + /// Tool arguments. + [JsonPropertyName("arguments")] + public IDictionary? Arguments { get; set; } + + /// **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the app from this server only'), the call is rejected when this differs from `serverName`, and rejected outright when missing. + [RegularExpression("^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$")] + [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("originServerName")] + public string OriginServerName { get; set; } = string.Empty; + + /// MCP server hosting the tool. + [RegularExpression("^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$")] + [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("serverName")] + public string ServerName { get; set; } = string.Empty; + + /// Target session identifier. + [JsonPropertyName("sessionId")] + public string SessionId { get; set; } = string.Empty; + + /// MCP tool name. + [JsonPropertyName("toolName")] + public string ToolName { get; set; } = string.Empty; +} + +/// Host context advertised to MCP App guests. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsSetHostContextDetails +{ + /// Display modes the host supports. + [JsonPropertyName("availableDisplayModes")] + public IList? AvailableDisplayModes { get; set; } + + /// Current display mode (SEP-1865). + [JsonPropertyName("displayMode")] + public McpAppsSetHostContextDetailsDisplayMode? DisplayMode { get; set; } + + /// BCP-47 locale, e.g. 'en-US'. + [JsonPropertyName("locale")] + public string? Locale { get; set; } + + /// Platform type for responsive design. + [JsonPropertyName("platform")] + public McpAppsSetHostContextDetailsPlatform? Platform { get; set; } + + /// UI theme preference per SEP-1865. + [JsonPropertyName("theme")] + public McpAppsSetHostContextDetailsTheme? Theme { get; set; } + + /// IANA timezone, e.g. 'America/New_York'. + [JsonPropertyName("timeZone")] + public string? TimeZone { get; set; } + + /// Host application identifier. + [JsonPropertyName("userAgent")] + public string? UserAgent { get; set; } +} + +/// Host context to advertise to MCP App guests. +[Experimental(Diagnostics.Experimental)] +internal sealed class McpAppsSetHostContextRequest +{ + /// Host context advertised to MCP App guests. + [JsonPropertyName("context")] + public McpAppsSetHostContextDetails Context { get => field ??= new(); set; } + + /// Target session identifier. + [JsonPropertyName("sessionId")] + public string SessionId { get; set; } = string.Empty; +} + +/// Current host context. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsHostContextDetails +{ + /// Display modes the host supports. + [JsonPropertyName("availableDisplayModes")] + public IList? AvailableDisplayModes { get; set; } + + /// Current display mode (SEP-1865). + [JsonPropertyName("displayMode")] + public McpAppsHostContextDetailsDisplayMode? DisplayMode { get; set; } + + /// BCP-47 locale, e.g. 'en-US'. + [JsonPropertyName("locale")] + public string? Locale { get; set; } + + /// Platform type for responsive design. + [JsonPropertyName("platform")] + public McpAppsHostContextDetailsPlatform? Platform { get; set; } + + /// UI theme preference per SEP-1865. + [JsonPropertyName("theme")] + public McpAppsHostContextDetailsTheme? Theme { get; set; } + + /// IANA timezone, e.g. 'America/New_York'. + [JsonPropertyName("timeZone")] + public string? TimeZone { get; set; } + + /// Host application identifier. + [JsonPropertyName("userAgent")] + public string? UserAgent { get; set; } +} + +/// Current host context advertised to MCP App guests. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsHostContext +{ + /// Current host context. + [JsonPropertyName("context")] + public McpAppsHostContextDetails Context { get => field ??= new(); set; } +} + +/// Identifies the target session. +[Experimental(Diagnostics.Experimental)] +internal sealed class SessionMcpAppsGetHostContextRequest +{ + /// Target session identifier. + [JsonPropertyName("sessionId")] + public string SessionId { get; set; } = string.Empty; +} + +/// Capability negotiation snapshot. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsDiagnoseCapability +{ + /// Whether the runtime advertises `extensions.io.modelcontextprotocol/ui` to MCP servers. + [JsonPropertyName("advertised")] + public bool Advertised { get; set; } + + /// Whether the MCP_APPS feature flag (or COPILOT_MCP_APPS env override) is on. + [JsonPropertyName("featureFlagEnabled")] + public bool FeatureFlagEnabled { get; set; } + + /// Whether the session has the `mcp-apps` capability. + [JsonPropertyName("sessionHasMcpApps")] + public bool SessionHasMcpApps { get; set; } +} + +/// What the server returned for this session. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsDiagnoseServer +{ + /// Whether the named server is currently connected. + [JsonPropertyName("connected")] + public bool Connected { get; set; } + + /// Up to 5 tool names with `_meta.ui` for quick inspection. + [JsonPropertyName("sampleToolNames")] + public IList SampleToolNames { get => field ??= []; set; } + + /// Total tools returned by the server's tools/list. + [JsonPropertyName("toolCount")] + public double ToolCount { get; set; } + + /// Tools whose `_meta.ui` is populated (resourceUri and/or visibility set). + [JsonPropertyName("toolsWithUiMeta")] + public double ToolsWithUiMeta { get; set; } +} + +/// Diagnostic snapshot of MCP Apps wiring for the named server. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsDiagnoseResult +{ + /// Capability negotiation snapshot. + [JsonPropertyName("capability")] + public McpAppsDiagnoseCapability Capability { get => field ??= new(); set; } + + /// What the server returned for this session. + [JsonPropertyName("server")] + public McpAppsDiagnoseServer Server { get => field ??= new(); set; } +} + +/// MCP server to diagnose MCP Apps wiring for. +[Experimental(Diagnostics.Experimental)] +internal sealed class McpAppsDiagnoseRequest +{ + /// MCP server to probe. + [RegularExpression("^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$")] + [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("serverName")] + public string ServerName { get; set; } = string.Empty; + + /// Target session identifier. + [JsonPropertyName("sessionId")] + public string SessionId { get; set; } = string.Empty; +} + /// Schema for the `Plugin` type. [Experimental(Diagnostics.Experimental)] public sealed class Plugin @@ -7385,7 +7694,7 @@ public override void Write(Utf8JsonWriter writer, ModelPolicyState value, JsonSe } -/// Server transport type: stdio, http, sse, or memory. +/// Server transport type: stdio, http, sse (deprecated), or memory. [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] public readonly struct DiscoveredMcpServerType : IEquatable @@ -7410,7 +7719,7 @@ public DiscoveredMcpServerType(string value) /// Server communicates over streamable HTTP. public static DiscoveredMcpServerType Http { get; } = new("http"); - /// Server communicates over Server-Sent Events. + /// Server communicates over Server-Sent Events (deprecated). public static DiscoveredMcpServerType Sse { get; } = new("sse"); /// Server is backed by an in-memory runtime implementation. @@ -8595,43 +8904,46 @@ public override void Write(Utf8JsonWriter writer, McpSetEnvValueModeDetails valu } -/// How env values are passed to MCP servers (`direct` inlines literal values; `indirect` resolves at launch). +/// Allowed values for the `McpAppsSetHostContextDetailsAvailableDisplayMode` enumeration. [Experimental(Diagnostics.Experimental)] [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] -public readonly struct OptionsUpdateEnvValueMode : IEquatable +public readonly struct McpAppsSetHostContextDetailsAvailableDisplayMode : IEquatable { private readonly string? _value; - /// Initializes a new instance of the struct. - /// The value to associate with this . + /// Initializes a new instance of the struct. + /// The value to associate with this . [JsonConstructor] - public OptionsUpdateEnvValueMode(string value) + public McpAppsSetHostContextDetailsAvailableDisplayMode(string value) { ArgumentException.ThrowIfNullOrWhiteSpace(value); _value = value; } - /// Gets the value associated with this . + /// Gets the value associated with this . public string Value => _value ?? string.Empty; - /// Pass MCP server environment values as literal strings. - public static OptionsUpdateEnvValueMode Direct { get; } = new("direct"); + /// Rendered inline within the host conversation surface. + public static McpAppsSetHostContextDetailsAvailableDisplayMode Inline { get; } = new("inline"); - /// Resolve MCP server environment values from host-side references. - public static OptionsUpdateEnvValueMode Indirect { get; } = new("indirect"); + /// Rendered as a fullscreen overlay. + public static McpAppsSetHostContextDetailsAvailableDisplayMode Fullscreen { get; } = new("fullscreen"); - /// Returns a value indicating whether two instances are equivalent. - public static bool operator ==(OptionsUpdateEnvValueMode left, OptionsUpdateEnvValueMode right) => left.Equals(right); + /// Rendered as a picture-in-picture floating panel. + public static McpAppsSetHostContextDetailsAvailableDisplayMode Pip { get; } = new("pip"); - /// Returns a value indicating whether two instances are not equivalent. - public static bool operator !=(OptionsUpdateEnvValueMode left, OptionsUpdateEnvValueMode right) => !(left == right); + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(McpAppsSetHostContextDetailsAvailableDisplayMode left, McpAppsSetHostContextDetailsAvailableDisplayMode right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(McpAppsSetHostContextDetailsAvailableDisplayMode left, McpAppsSetHostContextDetailsAvailableDisplayMode right) => !(left == right); /// - public override bool Equals(object? obj) => obj is OptionsUpdateEnvValueMode other && Equals(other); + public override bool Equals(object? obj) => obj is McpAppsSetHostContextDetailsAvailableDisplayMode other && Equals(other); /// - public bool Equals(OptionsUpdateEnvValueMode other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + public bool Equals(McpAppsSetHostContextDetailsAvailableDisplayMode other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); /// public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); @@ -8639,62 +8951,65 @@ public OptionsUpdateEnvValueMode(string value) /// public override string ToString() => Value; - /// Provides a for serializing instances. + /// Provides a for serializing instances. [EditorBrowsable(EditorBrowsableState.Never)] - public sealed class Converter : JsonConverter + public sealed class Converter : JsonConverter { /// - public override OptionsUpdateEnvValueMode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + public override McpAppsSetHostContextDetailsAvailableDisplayMode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); } /// - public override void Write(Utf8JsonWriter writer, OptionsUpdateEnvValueMode value, JsonSerializerOptions options) + public override void Write(Utf8JsonWriter writer, McpAppsSetHostContextDetailsAvailableDisplayMode value, JsonSerializerOptions options) { - GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(OptionsUpdateEnvValueMode)); + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(McpAppsSetHostContextDetailsAvailableDisplayMode)); } } } -/// Discovery source: project (.github/extensions/) or user (~/.copilot/extensions/). +/// Current display mode (SEP-1865). [Experimental(Diagnostics.Experimental)] [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] -public readonly struct ExtensionSource : IEquatable +public readonly struct McpAppsSetHostContextDetailsDisplayMode : IEquatable { private readonly string? _value; - /// Initializes a new instance of the struct. - /// The value to associate with this . + /// Initializes a new instance of the struct. + /// The value to associate with this . [JsonConstructor] - public ExtensionSource(string value) + public McpAppsSetHostContextDetailsDisplayMode(string value) { ArgumentException.ThrowIfNullOrWhiteSpace(value); _value = value; } - /// Gets the value associated with this . + /// Gets the value associated with this . public string Value => _value ?? string.Empty; - /// Extension discovered from the current project's .github/extensions directory. - public static ExtensionSource Project { get; } = new("project"); + /// Rendered inline within the host conversation surface. + public static McpAppsSetHostContextDetailsDisplayMode Inline { get; } = new("inline"); - /// Extension discovered from the user's ~/.copilot/extensions directory. - public static ExtensionSource User { get; } = new("user"); + /// Rendered as a fullscreen overlay. + public static McpAppsSetHostContextDetailsDisplayMode Fullscreen { get; } = new("fullscreen"); - /// Returns a value indicating whether two instances are equivalent. - public static bool operator ==(ExtensionSource left, ExtensionSource right) => left.Equals(right); + /// Rendered as a picture-in-picture floating panel. + public static McpAppsSetHostContextDetailsDisplayMode Pip { get; } = new("pip"); - /// Returns a value indicating whether two instances are not equivalent. - public static bool operator !=(ExtensionSource left, ExtensionSource right) => !(left == right); + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(McpAppsSetHostContextDetailsDisplayMode left, McpAppsSetHostContextDetailsDisplayMode right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(McpAppsSetHostContextDetailsDisplayMode left, McpAppsSetHostContextDetailsDisplayMode right) => !(left == right); /// - public override bool Equals(object? obj) => obj is ExtensionSource other && Equals(other); + public override bool Equals(object? obj) => obj is McpAppsSetHostContextDetailsDisplayMode other && Equals(other); /// - public bool Equals(ExtensionSource other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + public bool Equals(McpAppsSetHostContextDetailsDisplayMode other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); /// public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); @@ -8702,68 +9017,65 @@ public ExtensionSource(string value) /// public override string ToString() => Value; - /// Provides a for serializing instances. + /// Provides a for serializing instances. [EditorBrowsable(EditorBrowsableState.Never)] - public sealed class Converter : JsonConverter + public sealed class Converter : JsonConverter { /// - public override ExtensionSource Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + public override McpAppsSetHostContextDetailsDisplayMode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); } /// - public override void Write(Utf8JsonWriter writer, ExtensionSource value, JsonSerializerOptions options) + public override void Write(Utf8JsonWriter writer, McpAppsSetHostContextDetailsDisplayMode value, JsonSerializerOptions options) { - GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(ExtensionSource)); + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(McpAppsSetHostContextDetailsDisplayMode)); } } } -/// Current status: running, disabled, failed, or starting. +/// Platform type for responsive design. [Experimental(Diagnostics.Experimental)] [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] -public readonly struct ExtensionStatus : IEquatable +public readonly struct McpAppsSetHostContextDetailsPlatform : IEquatable { private readonly string? _value; - /// Initializes a new instance of the struct. - /// The value to associate with this . + /// Initializes a new instance of the struct. + /// The value to associate with this . [JsonConstructor] - public ExtensionStatus(string value) + public McpAppsSetHostContextDetailsPlatform(string value) { ArgumentException.ThrowIfNullOrWhiteSpace(value); _value = value; } - /// Gets the value associated with this . + /// Gets the value associated with this . public string Value => _value ?? string.Empty; - /// The extension process is running. - public static ExtensionStatus Running { get; } = new("running"); - - /// The extension is installed but disabled. - public static ExtensionStatus Disabled { get; } = new("disabled"); + /// Host runs in a web browser. + public static McpAppsSetHostContextDetailsPlatform Web { get; } = new("web"); - /// The extension failed to start or crashed. - public static ExtensionStatus Failed { get; } = new("failed"); + /// Host runs as a desktop application. + public static McpAppsSetHostContextDetailsPlatform Desktop { get; } = new("desktop"); - /// The extension process is starting. - public static ExtensionStatus Starting { get; } = new("starting"); + /// Host runs on a mobile device. + public static McpAppsSetHostContextDetailsPlatform Mobile { get; } = new("mobile"); - /// Returns a value indicating whether two instances are equivalent. - public static bool operator ==(ExtensionStatus left, ExtensionStatus right) => left.Equals(right); + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(McpAppsSetHostContextDetailsPlatform left, McpAppsSetHostContextDetailsPlatform right) => left.Equals(right); - /// Returns a value indicating whether two instances are not equivalent. - public static bool operator !=(ExtensionStatus left, ExtensionStatus right) => !(left == right); + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(McpAppsSetHostContextDetailsPlatform left, McpAppsSetHostContextDetailsPlatform right) => !(left == right); /// - public override bool Equals(object? obj) => obj is ExtensionStatus other && Equals(other); + public override bool Equals(object? obj) => obj is McpAppsSetHostContextDetailsPlatform other && Equals(other); /// - public bool Equals(ExtensionStatus other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + public bool Equals(McpAppsSetHostContextDetailsPlatform other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); /// public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); @@ -8771,59 +9083,62 @@ public ExtensionStatus(string value) /// public override string ToString() => Value; - /// Provides a for serializing instances. + /// Provides a for serializing instances. [EditorBrowsable(EditorBrowsableState.Never)] - public sealed class Converter : JsonConverter + public sealed class Converter : JsonConverter { /// - public override ExtensionStatus Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + public override McpAppsSetHostContextDetailsPlatform Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); } /// - public override void Write(Utf8JsonWriter writer, ExtensionStatus value, JsonSerializerOptions options) + public override void Write(Utf8JsonWriter writer, McpAppsSetHostContextDetailsPlatform value, JsonSerializerOptions options) { - GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(ExtensionStatus)); + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(McpAppsSetHostContextDetailsPlatform)); } } } -/// Optional completion hint for the input (e.g. 'directory' for filesystem path completion). +/// UI theme preference per SEP-1865. [Experimental(Diagnostics.Experimental)] [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] -public readonly struct SlashCommandInputCompletion : IEquatable +public readonly struct McpAppsSetHostContextDetailsTheme : IEquatable { private readonly string? _value; - /// Initializes a new instance of the struct. - /// The value to associate with this . + /// Initializes a new instance of the struct. + /// The value to associate with this . [JsonConstructor] - public SlashCommandInputCompletion(string value) + public McpAppsSetHostContextDetailsTheme(string value) { ArgumentException.ThrowIfNullOrWhiteSpace(value); _value = value; } - /// Gets the value associated with this . + /// Gets the value associated with this . public string Value => _value ?? string.Empty; - /// Input should complete filesystem directories. - public static SlashCommandInputCompletion Directory { get; } = new("directory"); + /// Light UI theme. + public static McpAppsSetHostContextDetailsTheme Light { get; } = new("light"); - /// Returns a value indicating whether two instances are equivalent. - public static bool operator ==(SlashCommandInputCompletion left, SlashCommandInputCompletion right) => left.Equals(right); + /// Dark UI theme. + public static McpAppsSetHostContextDetailsTheme Dark { get; } = new("dark"); - /// Returns a value indicating whether two instances are not equivalent. - public static bool operator !=(SlashCommandInputCompletion left, SlashCommandInputCompletion right) => !(left == right); + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(McpAppsSetHostContextDetailsTheme left, McpAppsSetHostContextDetailsTheme right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(McpAppsSetHostContextDetailsTheme left, McpAppsSetHostContextDetailsTheme right) => !(left == right); /// - public override bool Equals(object? obj) => obj is SlashCommandInputCompletion other && Equals(other); + public override bool Equals(object? obj) => obj is McpAppsSetHostContextDetailsTheme other && Equals(other); /// - public bool Equals(SlashCommandInputCompletion other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + public bool Equals(McpAppsSetHostContextDetailsTheme other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); /// public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); @@ -8831,53 +9146,569 @@ public SlashCommandInputCompletion(string value) /// public override string ToString() => Value; - /// Provides a for serializing instances. + /// Provides a for serializing instances. [EditorBrowsable(EditorBrowsableState.Never)] - public sealed class Converter : JsonConverter + public sealed class Converter : JsonConverter { /// - public override SlashCommandInputCompletion Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + public override McpAppsSetHostContextDetailsTheme Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); } /// - public override void Write(Utf8JsonWriter writer, SlashCommandInputCompletion value, JsonSerializerOptions options) + public override void Write(Utf8JsonWriter writer, McpAppsSetHostContextDetailsTheme value, JsonSerializerOptions options) { - GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(SlashCommandInputCompletion)); + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(McpAppsSetHostContextDetailsTheme)); } } } -/// Coarse command category for grouping and behavior: runtime built-in, skill-backed command, or SDK/client-owned command. +/// Allowed values for the `McpAppsHostContextDetailsAvailableDisplayMode` enumeration. [Experimental(Diagnostics.Experimental)] [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] -public readonly struct SlashCommandKind : IEquatable +public readonly struct McpAppsHostContextDetailsAvailableDisplayMode : IEquatable { private readonly string? _value; - /// Initializes a new instance of the struct. - /// The value to associate with this . + /// Initializes a new instance of the struct. + /// The value to associate with this . [JsonConstructor] - public SlashCommandKind(string value) + public McpAppsHostContextDetailsAvailableDisplayMode(string value) { ArgumentException.ThrowIfNullOrWhiteSpace(value); _value = value; } - /// Gets the value associated with this . + /// Gets the value associated with this . public string Value => _value ?? string.Empty; - /// Command implemented by the runtime. - public static SlashCommandKind Builtin { get; } = new("builtin"); + /// Rendered inline within the host conversation surface. + public static McpAppsHostContextDetailsAvailableDisplayMode Inline { get; } = new("inline"); - /// Command backed by a skill. - public static SlashCommandKind Skill { get; } = new("skill"); + /// Rendered as a fullscreen overlay. + public static McpAppsHostContextDetailsAvailableDisplayMode Fullscreen { get; } = new("fullscreen"); - /// Command registered by an SDK client or extension. - public static SlashCommandKind Client { get; } = new("client"); + /// Rendered as a picture-in-picture floating panel. + public static McpAppsHostContextDetailsAvailableDisplayMode Pip { get; } = new("pip"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(McpAppsHostContextDetailsAvailableDisplayMode left, McpAppsHostContextDetailsAvailableDisplayMode right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(McpAppsHostContextDetailsAvailableDisplayMode left, McpAppsHostContextDetailsAvailableDisplayMode right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is McpAppsHostContextDetailsAvailableDisplayMode other && Equals(other); + + /// + public bool Equals(McpAppsHostContextDetailsAvailableDisplayMode other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override McpAppsHostContextDetailsAvailableDisplayMode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, McpAppsHostContextDetailsAvailableDisplayMode value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(McpAppsHostContextDetailsAvailableDisplayMode)); + } + } +} + + +/// Current display mode (SEP-1865). +[Experimental(Diagnostics.Experimental)] +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct McpAppsHostContextDetailsDisplayMode : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public McpAppsHostContextDetailsDisplayMode(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Rendered inline within the host conversation surface. + public static McpAppsHostContextDetailsDisplayMode Inline { get; } = new("inline"); + + /// Rendered as a fullscreen overlay. + public static McpAppsHostContextDetailsDisplayMode Fullscreen { get; } = new("fullscreen"); + + /// Rendered as a picture-in-picture floating panel. + public static McpAppsHostContextDetailsDisplayMode Pip { get; } = new("pip"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(McpAppsHostContextDetailsDisplayMode left, McpAppsHostContextDetailsDisplayMode right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(McpAppsHostContextDetailsDisplayMode left, McpAppsHostContextDetailsDisplayMode right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is McpAppsHostContextDetailsDisplayMode other && Equals(other); + + /// + public bool Equals(McpAppsHostContextDetailsDisplayMode other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override McpAppsHostContextDetailsDisplayMode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, McpAppsHostContextDetailsDisplayMode value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(McpAppsHostContextDetailsDisplayMode)); + } + } +} + + +/// Platform type for responsive design. +[Experimental(Diagnostics.Experimental)] +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct McpAppsHostContextDetailsPlatform : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public McpAppsHostContextDetailsPlatform(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Host runs in a web browser. + public static McpAppsHostContextDetailsPlatform Web { get; } = new("web"); + + /// Host runs as a desktop application. + public static McpAppsHostContextDetailsPlatform Desktop { get; } = new("desktop"); + + /// Host runs on a mobile device. + public static McpAppsHostContextDetailsPlatform Mobile { get; } = new("mobile"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(McpAppsHostContextDetailsPlatform left, McpAppsHostContextDetailsPlatform right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(McpAppsHostContextDetailsPlatform left, McpAppsHostContextDetailsPlatform right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is McpAppsHostContextDetailsPlatform other && Equals(other); + + /// + public bool Equals(McpAppsHostContextDetailsPlatform other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override McpAppsHostContextDetailsPlatform Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, McpAppsHostContextDetailsPlatform value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(McpAppsHostContextDetailsPlatform)); + } + } +} + + +/// UI theme preference per SEP-1865. +[Experimental(Diagnostics.Experimental)] +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct McpAppsHostContextDetailsTheme : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public McpAppsHostContextDetailsTheme(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Light UI theme. + public static McpAppsHostContextDetailsTheme Light { get; } = new("light"); + + /// Dark UI theme. + public static McpAppsHostContextDetailsTheme Dark { get; } = new("dark"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(McpAppsHostContextDetailsTheme left, McpAppsHostContextDetailsTheme right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(McpAppsHostContextDetailsTheme left, McpAppsHostContextDetailsTheme right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is McpAppsHostContextDetailsTheme other && Equals(other); + + /// + public bool Equals(McpAppsHostContextDetailsTheme other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override McpAppsHostContextDetailsTheme Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, McpAppsHostContextDetailsTheme value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(McpAppsHostContextDetailsTheme)); + } + } +} + + +/// How env values are passed to MCP servers (`direct` inlines literal values; `indirect` resolves at launch). +[Experimental(Diagnostics.Experimental)] +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct OptionsUpdateEnvValueMode : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public OptionsUpdateEnvValueMode(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Pass MCP server environment values as literal strings. + public static OptionsUpdateEnvValueMode Direct { get; } = new("direct"); + + /// Resolve MCP server environment values from host-side references. + public static OptionsUpdateEnvValueMode Indirect { get; } = new("indirect"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(OptionsUpdateEnvValueMode left, OptionsUpdateEnvValueMode right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(OptionsUpdateEnvValueMode left, OptionsUpdateEnvValueMode right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is OptionsUpdateEnvValueMode other && Equals(other); + + /// + public bool Equals(OptionsUpdateEnvValueMode other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override OptionsUpdateEnvValueMode Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, OptionsUpdateEnvValueMode value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(OptionsUpdateEnvValueMode)); + } + } +} + + +/// Discovery source: project (.github/extensions/) or user (~/.copilot/extensions/). +[Experimental(Diagnostics.Experimental)] +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct ExtensionSource : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public ExtensionSource(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Extension discovered from the current project's .github/extensions directory. + public static ExtensionSource Project { get; } = new("project"); + + /// Extension discovered from the user's ~/.copilot/extensions directory. + public static ExtensionSource User { get; } = new("user"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(ExtensionSource left, ExtensionSource right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(ExtensionSource left, ExtensionSource right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is ExtensionSource other && Equals(other); + + /// + public bool Equals(ExtensionSource other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override ExtensionSource Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, ExtensionSource value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(ExtensionSource)); + } + } +} + + +/// Current status: running, disabled, failed, or starting. +[Experimental(Diagnostics.Experimental)] +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct ExtensionStatus : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public ExtensionStatus(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// The extension process is running. + public static ExtensionStatus Running { get; } = new("running"); + + /// The extension is installed but disabled. + public static ExtensionStatus Disabled { get; } = new("disabled"); + + /// The extension failed to start or crashed. + public static ExtensionStatus Failed { get; } = new("failed"); + + /// The extension process is starting. + public static ExtensionStatus Starting { get; } = new("starting"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(ExtensionStatus left, ExtensionStatus right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(ExtensionStatus left, ExtensionStatus right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is ExtensionStatus other && Equals(other); + + /// + public bool Equals(ExtensionStatus other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override ExtensionStatus Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, ExtensionStatus value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(ExtensionStatus)); + } + } +} + + +/// Optional completion hint for the input (e.g. 'directory' for filesystem path completion). +[Experimental(Diagnostics.Experimental)] +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct SlashCommandInputCompletion : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public SlashCommandInputCompletion(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Input should complete filesystem directories. + public static SlashCommandInputCompletion Directory { get; } = new("directory"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(SlashCommandInputCompletion left, SlashCommandInputCompletion right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(SlashCommandInputCompletion left, SlashCommandInputCompletion right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is SlashCommandInputCompletion other && Equals(other); + + /// + public bool Equals(SlashCommandInputCompletion other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override SlashCommandInputCompletion Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, SlashCommandInputCompletion value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(SlashCommandInputCompletion)); + } + } +} + + +/// Coarse command category for grouping and behavior: runtime built-in, skill-backed command, or SDK/client-owned command. +[Experimental(Diagnostics.Experimental)] +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct SlashCommandKind : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public SlashCommandKind(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Command implemented by the runtime. + public static SlashCommandKind Builtin { get; } = new("builtin"); + + /// Command backed by a skill. + public static SlashCommandKind Skill { get; } = new("skill"); + + /// Command registered by an SDK client or extension. + public static SlashCommandKind Client { get; } = new("client"); /// Returns a value indicating whether two instances are equivalent. public static bool operator ==(SlashCommandKind left, SlashCommandKind right) => left.Equals(right); @@ -11768,6 +12599,12 @@ public async Task RemoveGitHubAsync(CancellationToken can field ?? Interlocked.CompareExchange(ref field, new(_session), null) ?? field; + + /// Apps APIs. + public McpAppsApi Apps => + field ?? + Interlocked.CompareExchange(ref field, new(_session), null) ?? + field; } /// Provides session-scoped McpOauth APIs. @@ -11798,6 +12635,102 @@ public async Task LoginAsync(string serverName, bool? force } } +/// Provides session-scoped McpApps APIs. +[Experimental(Diagnostics.Experimental)] +public sealed class McpAppsApi +{ + private readonly CopilotSession _session; + + internal McpAppsApi(CopilotSession session) + { + _session = session; + } + + /// Fetch an MCP resource (typically a `ui://` MCP App bundle, per SEP-1865) from a connected server. Requires the `mcp-apps` session capability. + /// Name of the MCP server hosting the resource. + /// Resource URI (typically ui://...). + /// The to monitor for cancellation requests. The default is . + /// Resource contents returned by the MCP server. + public async Task ReadResourceAsync(string serverName, string uri, CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(serverName); + ArgumentNullException.ThrowIfNull(uri); + _session.ThrowIfDisposed(); + + var request = new McpAppsReadResourceRequest { SessionId = _session.SessionId, ServerName = serverName, Uri = uri }; + return await CopilotClient.InvokeRpcAsync(_session.Rpc, "session.mcp.apps.readResource", [request], cancellationToken); + } + + /// List tools that an MCP App view is allowed to call (SEP-1865 visibility filter). Returns tools whose `_meta.ui.visibility` is unset (default `["model","app"]`) or includes `"app"`. + /// MCP server hosting the app. + /// **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the app from this server only'), the call is rejected when this differs from `serverName`, and rejected outright when missing. + /// The to monitor for cancellation requests. The default is . + /// App-callable tools from the named MCP server. + public async Task ListToolsAsync(string serverName, string originServerName, CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(serverName); + ArgumentNullException.ThrowIfNull(originServerName); + _session.ThrowIfDisposed(); + + var request = new McpAppsListToolsRequest { SessionId = _session.SessionId, ServerName = serverName, OriginServerName = originServerName }; + return await CopilotClient.InvokeRpcAsync(_session.Rpc, "session.mcp.apps.listTools", [request], cancellationToken); + } + + /// Call an MCP tool from an MCP App view (SEP-1865). Enforces the visibility check that prevents an app iframe from invoking model-only tools. Returns the standard MCP `CallToolResult`. + /// MCP server hosting the tool. + /// MCP tool name. + /// **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the app from this server only'), the call is rejected when this differs from `serverName`, and rejected outright when missing. + /// Tool arguments. + /// The to monitor for cancellation requests. The default is . + /// Standard MCP CallToolResult. + public async Task> CallToolAsync(string serverName, string toolName, string originServerName, IDictionary? arguments = null, CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(serverName); + ArgumentNullException.ThrowIfNull(toolName); + ArgumentNullException.ThrowIfNull(originServerName); + _session.ThrowIfDisposed(); + + var request = new McpAppsCallToolRequest { SessionId = _session.SessionId, ServerName = serverName, ToolName = toolName, OriginServerName = originServerName, Arguments = arguments }; + return await CopilotClient.InvokeRpcAsync>(_session.Rpc, "session.mcp.apps.callTool", [request], cancellationToken); + } + + /// Replace the host context returned to MCP App guests on `ui/initialize`. Hosts use this to advertise theme, locale, or other metadata to the guest UI. + /// Host context advertised to MCP App guests. + /// The to monitor for cancellation requests. The default is . + public async Task SetHostContextAsync(McpAppsSetHostContextDetails context, CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(context); + _session.ThrowIfDisposed(); + + var request = new McpAppsSetHostContextRequest { SessionId = _session.SessionId, Context = context }; + await CopilotClient.InvokeRpcAsync(_session.Rpc, "session.mcp.apps.setHostContext", [request], cancellationToken); + } + + /// Read the current host context advertised to MCP App guests. + /// The to monitor for cancellation requests. The default is . + /// Current host context advertised to MCP App guests. + public async Task GetHostContextAsync(CancellationToken cancellationToken = default) + { + _session.ThrowIfDisposed(); + + var request = new SessionMcpAppsGetHostContextRequest { SessionId = _session.SessionId }; + return await CopilotClient.InvokeRpcAsync(_session.Rpc, "session.mcp.apps.getHostContext", [request], cancellationToken); + } + + /// Diagnose MCP Apps wiring for a specific MCP server. Reports the session capability, feature-flag state, advertised extension, and how many tools have `_meta.ui` populated. + /// MCP server to probe. + /// The to monitor for cancellation requests. The default is . + /// Diagnostic snapshot of MCP Apps wiring for the named server. + public async Task DiagnoseAsync(string serverName, CancellationToken cancellationToken = default) + { + ArgumentNullException.ThrowIfNull(serverName); + _session.ThrowIfDisposed(); + + var request = new McpAppsDiagnoseRequest { SessionId = _session.SessionId, ServerName = serverName }; + return await CopilotClient.InvokeRpcAsync(_session.Rpc, "session.mcp.apps.diagnose", [request], cancellationToken); + } +} + /// Provides session-scoped Plugins APIs. [Experimental(Diagnostics.Experimental)] public sealed class PluginsApi @@ -13228,6 +14161,11 @@ public static void RegisterClientSessionApiHandlers(JsonRpc rpc, FuncMCP App view called a tool on a connected MCP server (SEP-1865). +/// Represents the mcp_app.tool_call_complete event. +public sealed partial class McpAppToolCallCompleteEvent : SessionEvent +{ + /// + [JsonIgnore] + public override string Type => "mcp_app.tool_call_complete"; + + /// The mcp_app.tool_call_complete event payload. + [JsonPropertyName("data")] + public required McpAppToolCallCompleteData Data { get; set; } +} + /// Session initialization metadata including context and configuration. public sealed partial class SessionStartData { @@ -1345,6 +1359,11 @@ public sealed partial class SessionErrorData [JsonPropertyName("providerCallId")] public string? ProviderCallId { get; set; } + /// Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("serviceRequestId")] + public string? ServiceRequestId { get; set; } + /// Error stack trace, when available. [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("stack")] @@ -1460,6 +1479,11 @@ public sealed partial class SessionModelChangeData [JsonPropertyName("cause")] public string? Cause { get; set; } + /// Context tier after the model change; null explicitly clears a previously selected tier. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("contextTier")] + public SessionModelChangeDataContextTier? ContextTier { get; set; } + /// Newly selected model identifier. [JsonPropertyName("newModel")] public required string NewModel { get; set; } @@ -1835,6 +1859,11 @@ public sealed partial class SessionCompactionCompleteData [JsonPropertyName("requestId")] public string? RequestId { get; set; } + /// Copilot service request ID (x-copilot-service-request-id header) for the compaction LLM call. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("serviceRequestId")] + public string? ServiceRequestId { get; set; } + /// Whether compaction completed successfully. [JsonPropertyName("success")] public required bool Success { get; set; } @@ -2055,6 +2084,11 @@ public sealed partial class AssistantMessageData [JsonPropertyName("requestId")] public string? RequestId { get; set; } + /// Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("serviceRequestId")] + public string? ServiceRequestId { get; set; } + /// Tool invocations requested by the assistant in this message. [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("toolRequests")] @@ -2200,6 +2234,11 @@ public sealed partial class AssistantUsageData [JsonPropertyName("reasoningTokens")] public long? ReasoningTokens { get; set; } + /// Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("serviceRequestId")] + public string? ServiceRequestId { get; set; } + /// Time to first token in milliseconds. Only available for streaming requests. [JsonConverter(typeof(MillisecondsTimeSpanConverter))] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] @@ -2241,6 +2280,11 @@ public sealed partial class ModelCallFailureData [JsonPropertyName("providerCallId")] public string? ProviderCallId { get; set; } + /// Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("serviceRequestId")] + public string? ServiceRequestId { get; set; } + /// Where the failed model call originated. [JsonPropertyName("source")] public required ModelCallFailureSource Source { get; set; } @@ -2387,6 +2431,11 @@ public sealed partial class ToolExecutionCompleteData [JsonPropertyName("toolCallId")] public required string ToolCallId { get; set; } + /// Tool definition metadata, present for MCP tools with MCP Apps support. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("toolDescription")] + public ToolExecutionCompleteToolDescription? ToolDescription { get; set; } + /// Tool-specific telemetry data (e.g., CodeQL check counts, grep match counts). [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("toolTelemetry")] @@ -2432,6 +2481,16 @@ public sealed partial class SkillInvokedData [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("pluginVersion")] public string? PluginVersion { get; set; } + + /// Source identifier for where the skill was discovered. Known values include: project (workspace skill), inherited (parent-directory skill), personal-copilot (~/.copilot/skills), personal-agents (~/.agents/skills), personal-claude (~/.claude/skills), custom (configured directory), plugin (installed plugin), builtin (bundled runtime skill), and remote (org/enterprise skill). + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("source")] + public string? Source { get; set; } + + /// What triggered the skill invocation: `user-invoked` (explicit user action, such as via a slash command or UI affordance), `agent-invoked` (agent requested the skill), or `context-load` (loaded as part of another context, such as preloading skills configured on a custom agent or subagent). + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("trigger")] + public SkillInvokedTrigger? Trigger { get; set; } } /// Sub-agent startup details including parent tool call and agent information. @@ -3087,6 +3146,11 @@ public sealed partial class SessionMcpServersLoadedData /// Schema for the `McpServerStatusChangedData` type. public sealed partial class SessionMcpServerStatusChangedData { + /// Error message if the server entered a failed state. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("error")] + public string? Error { get; set; } + /// Name of the MCP server whose status changed. [JsonPropertyName("serverName")] public required string ServerName { get; set; } @@ -3104,6 +3168,46 @@ public sealed partial class SessionExtensionsLoadedData public required ExtensionsLoadedExtension[] Extensions { get; set; } } +/// MCP App view called a tool on a connected MCP server (SEP-1865). +public sealed partial class McpAppToolCallCompleteData +{ + /// Arguments passed to the tool by the app view, if any. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("arguments")] + public IDictionary? Arguments { get; set; } + + /// Wall-clock duration of the underlying tools/call in milliseconds. + [JsonPropertyName("durationMs")] + public required double DurationMs { get; set; } + + /// Set when the underlying tools/call threw an error before returning a CallToolResult. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("error")] + public McpAppToolCallCompleteError? Error { get; set; } + + /// Standard MCP CallToolResult returned by the server. Present whether or not the call set isError. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("result")] + public IDictionary? Result { get; set; } + + /// Name of the MCP server hosting the tool. + [JsonPropertyName("serverName")] + public required string ServerName { get; set; } + + /// True when the call completed without throwing AND the MCP CallToolResult did not set isError. + [JsonPropertyName("success")] + public required bool Success { get; set; } + + /// The tool's `_meta.ui` block at the time of the call, so consumers can decide whether to forward the result to the model without re-listing tools. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("toolMeta")] + public McpAppToolCallCompleteToolMeta? ToolMeta { get; set; } + + /// MCP tool name that was invoked. + [JsonPropertyName("toolName")] + public required string ToolName { get; set; } +} + /// Working directory and git context at session start. /// Nested data type for WorkingDirectoryContext. public sealed partial class WorkingDirectoryContext @@ -3952,6 +4056,143 @@ public partial class ToolExecutionCompleteContent } +/// Schema for the `ToolExecutionCompleteUIResourceMetaUICsp` type. +/// Nested data type for ToolExecutionCompleteUIResourceMetaUICsp. +public sealed partial class ToolExecutionCompleteUIResourceMetaUICsp +{ + /// Gets or sets the baseUriDomains value. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("baseUriDomains")] + public string[]? BaseUriDomains { get; set; } + + /// Gets or sets the connectDomains value. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("connectDomains")] + public string[]? ConnectDomains { get; set; } + + /// Gets or sets the frameDomains value. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("frameDomains")] + public string[]? FrameDomains { get; set; } + + /// Gets or sets the resourceDomains value. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("resourceDomains")] + public string[]? ResourceDomains { get; set; } +} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsCamera` type. +/// Nested data type for ToolExecutionCompleteUIResourceMetaUIPermissionsCamera. +public sealed partial class ToolExecutionCompleteUIResourceMetaUIPermissionsCamera +{ +} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite` type. +/// Nested data type for ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite. +public sealed partial class ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite +{ +} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation` type. +/// Nested data type for ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation. +public sealed partial class ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation +{ +} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone` type. +/// Nested data type for ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone. +public sealed partial class ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone +{ +} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissions` type. +/// Nested data type for ToolExecutionCompleteUIResourceMetaUIPermissions. +public sealed partial class ToolExecutionCompleteUIResourceMetaUIPermissions +{ + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsCamera` type. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("camera")] + public ToolExecutionCompleteUIResourceMetaUIPermissionsCamera? Camera { get; set; } + + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite` type. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("clipboardWrite")] + public ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite? ClipboardWrite { get; set; } + + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation` type. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("geolocation")] + public ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation? Geolocation { get; set; } + + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone` type. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("microphone")] + public ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone? Microphone { get; set; } +} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUI` type. +/// Nested data type for ToolExecutionCompleteUIResourceMetaUI. +public sealed partial class ToolExecutionCompleteUIResourceMetaUI +{ + /// Schema for the `ToolExecutionCompleteUIResourceMetaUICsp` type. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("csp")] + public ToolExecutionCompleteUIResourceMetaUICsp? Csp { get; set; } + + /// Gets or sets the domain value. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("domain")] + public string? Domain { get; set; } + + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissions` type. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("permissions")] + public ToolExecutionCompleteUIResourceMetaUIPermissions? Permissions { get; set; } + + /// Gets or sets the prefersBorder value. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("prefersBorder")] + public bool? PrefersBorder { get; set; } +} + +/// Resource-level UI metadata (CSP, permissions, visual preferences). +/// Nested data type for ToolExecutionCompleteUIResourceMeta. +public sealed partial class ToolExecutionCompleteUIResourceMeta +{ + /// Schema for the `ToolExecutionCompleteUIResourceMetaUI` type. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("ui")] + public ToolExecutionCompleteUIResourceMetaUI? Ui { get; set; } +} + +/// MCP Apps UI resource content for rendering in a sandboxed iframe. +/// Nested data type for ToolExecutionCompleteUIResource. +public sealed partial class ToolExecutionCompleteUIResource +{ + /// Resource-level UI metadata (CSP, permissions, visual preferences). + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("_meta")] + public ToolExecutionCompleteUIResourceMeta? _meta { get; set; } + + /// Base64-encoded HTML content. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("blob")] + public string? Blob { get; set; } + + /// MIME type of the content. + [JsonPropertyName("mimeType")] + public required string MimeType { get; set; } + + /// HTML content as a string. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("text")] + public string? Text { get; set; } + + /// The ui:// URI of the resource. + [JsonPropertyName("uri")] + public required string Uri { get; set; } +} + /// Tool execution result on success. /// Nested data type for ToolExecutionCompleteResult. public sealed partial class ToolExecutionCompleteResult @@ -3969,6 +4210,55 @@ public sealed partial class ToolExecutionCompleteResult [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("detailedContent")] public string? DetailedContent { get; set; } + + /// MCP Apps UI resource content for rendering in a sandboxed iframe. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("uiResource")] + public ToolExecutionCompleteUIResource? UiResource { get; set; } +} + +/// Schema for the `ToolExecutionCompleteToolDescriptionMetaUI` type. +/// Nested data type for ToolExecutionCompleteToolDescriptionMetaUI. +public sealed partial class ToolExecutionCompleteToolDescriptionMetaUI +{ + /// URI of the UI resource. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("resourceUri")] + public string? ResourceUri { get; set; } + + /// Who can access this tool. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("visibility")] + public ToolExecutionCompleteToolDescriptionMetaUIVisibility[]? Visibility { get; set; } +} + +/// MCP Apps metadata for UI resource association. +/// Nested data type for ToolExecutionCompleteToolDescriptionMeta. +public sealed partial class ToolExecutionCompleteToolDescriptionMeta +{ + /// Schema for the `ToolExecutionCompleteToolDescriptionMetaUI` type. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("ui")] + public ToolExecutionCompleteToolDescriptionMetaUI? Ui { get; set; } +} + +/// Tool definition metadata, present for MCP tools with MCP Apps support. +/// Nested data type for ToolExecutionCompleteToolDescription. +public sealed partial class ToolExecutionCompleteToolDescription +{ + /// MCP Apps metadata for UI resource association. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("_meta")] + public ToolExecutionCompleteToolDescriptionMeta? _meta { get; set; } + + /// Tool description. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("description")] + public string? Description { get; set; } + + /// Tool name. + [JsonPropertyName("name")] + public required string Name { get; set; } } /// Error details when the hook failed. @@ -5189,6 +5479,11 @@ public sealed partial class CapabilitiesChangedUI [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("elicitation")] public bool? Elicitation { get; set; } + + /// Whether MCP Apps (SEP-1865) UI passthrough is now supported. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("mcpApps")] + public bool? McpApps { get; set; } } /// Schema for the `SkillsLoadedSkill` type. @@ -5272,6 +5567,16 @@ public sealed partial class McpServersLoadedServer [JsonPropertyName("name")] public required string Name { get; set; } + /// Name of the plugin that supplied the effective MCP server config, only when source is plugin. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("pluginName")] + public string? PluginName { get; set; } + + /// Version of the plugin that supplied the effective MCP server config, only when source is plugin. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("pluginVersion")] + public string? PluginVersion { get; set; } + /// Configuration source: user, workspace, plugin, or builtin. [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("source")] @@ -5280,6 +5585,11 @@ public sealed partial class McpServersLoadedServer /// Connection status: connected, failed, needs-auth, pending, disabled, or not_configured. [JsonPropertyName("status")] public required McpServerStatus Status { get; set; } + + /// Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server). + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("transport")] + public McpServerTransport? Transport { get; set; } } /// Schema for the `ExtensionsLoadedExtension` type. @@ -5303,6 +5613,40 @@ public sealed partial class ExtensionsLoadedExtension public required ExtensionsLoadedExtensionStatus Status { get; set; } } +/// Set when the underlying tools/call threw an error before returning a CallToolResult. +/// Nested data type for McpAppToolCallCompleteError. +public sealed partial class McpAppToolCallCompleteError +{ + /// Human-readable error message. + [JsonPropertyName("message")] + public required string Message { get; set; } +} + +/// Schema for the `McpAppToolCallCompleteToolMetaUI` type. +/// Nested data type for McpAppToolCallCompleteToolMetaUI. +public sealed partial class McpAppToolCallCompleteToolMetaUI +{ + /// `ui://` URI declared by the tool's `_meta.ui.resourceUri`. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("resourceUri")] + public string? ResourceUri { get; set; } + + /// Tool visibility per SEP-1865 (typically a subset of `["model","app"]`). + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("visibility")] + public string[]? Visibility { get; set; } +} + +/// The tool's `_meta.ui` block at the time of the call, so consumers can decide whether to forward the result to the model without re-listing tools. +/// Nested data type for McpAppToolCallCompleteToolMeta. +public sealed partial class McpAppToolCallCompleteToolMeta +{ + /// Schema for the `McpAppToolCallCompleteToolMetaUI` type. + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + [JsonPropertyName("ui")] + public McpAppToolCallCompleteToolMetaUI? Ui { get; set; } +} + /// Hosting platform type of the repository (github or ado). [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] @@ -5428,6 +5772,67 @@ public override void Write(Utf8JsonWriter writer, ReasoningSummary value, JsonSe } } +/// Defines the allowed values. +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct SessionModelChangeDataContextTier : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public SessionModelChangeDataContextTier(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Default context tier with standard context window size. + public static SessionModelChangeDataContextTier Default { get; } = new("default"); + + /// Extended context tier with a larger context window. + public static SessionModelChangeDataContextTier LongContext { get; } = new("long_context"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(SessionModelChangeDataContextTier left, SessionModelChangeDataContextTier right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(SessionModelChangeDataContextTier left, SessionModelChangeDataContextTier right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is SessionModelChangeDataContextTier other && Equals(other); + + /// + public bool Equals(SessionModelChangeDataContextTier other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override SessionModelChangeDataContextTier Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, SessionModelChangeDataContextTier value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(SessionModelChangeDataContextTier)); + } + } +} + /// The session mode the agent is operating in. [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] @@ -6187,6 +6592,131 @@ public override void Write(Utf8JsonWriter writer, ToolExecutionCompleteContentRe } } +/// Allowed values for the `ToolExecutionCompleteToolDescriptionMetaUIVisibility` enumeration. +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct ToolExecutionCompleteToolDescriptionMetaUIVisibility : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public ToolExecutionCompleteToolDescriptionMetaUIVisibility(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Tool is callable by the model (LLM tool surface). + public static ToolExecutionCompleteToolDescriptionMetaUIVisibility Model { get; } = new("model"); + + /// Tool is callable by the MCP App view (iframe) via session.mcp.apps.callTool. + public static ToolExecutionCompleteToolDescriptionMetaUIVisibility App { get; } = new("app"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(ToolExecutionCompleteToolDescriptionMetaUIVisibility left, ToolExecutionCompleteToolDescriptionMetaUIVisibility right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(ToolExecutionCompleteToolDescriptionMetaUIVisibility left, ToolExecutionCompleteToolDescriptionMetaUIVisibility right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is ToolExecutionCompleteToolDescriptionMetaUIVisibility other && Equals(other); + + /// + public bool Equals(ToolExecutionCompleteToolDescriptionMetaUIVisibility other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override ToolExecutionCompleteToolDescriptionMetaUIVisibility Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, ToolExecutionCompleteToolDescriptionMetaUIVisibility value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(ToolExecutionCompleteToolDescriptionMetaUIVisibility)); + } + } +} + +/// What triggered the skill invocation: `user-invoked` (explicit user action, such as via a slash command or UI affordance), `agent-invoked` (agent requested the skill), or `context-load` (loaded as part of another context, such as preloading skills configured on a custom agent or subagent). +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct SkillInvokedTrigger : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public SkillInvokedTrigger(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Skill invocation requested explicitly by the user, such as via a slash command or UI affordance. + public static SkillInvokedTrigger UserInvoked { get; } = new("user-invoked"); + + /// Skill invocation requested by the agent. + public static SkillInvokedTrigger AgentInvoked { get; } = new("agent-invoked"); + + /// Skill content loaded as part of another context, such as a configured custom agent or subagent. + public static SkillInvokedTrigger ContextLoad { get; } = new("context-load"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(SkillInvokedTrigger left, SkillInvokedTrigger right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(SkillInvokedTrigger left, SkillInvokedTrigger right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is SkillInvokedTrigger other && Equals(other); + + /// + public bool Equals(SkillInvokedTrigger other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override SkillInvokedTrigger Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, SkillInvokedTrigger value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(SkillInvokedTrigger)); + } + } +} + /// Message role: "system" for system prompts, "developer" for developer-injected instructions. [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] @@ -6967,6 +7497,73 @@ public override void Write(Utf8JsonWriter writer, McpServerStatus value, JsonSer } } +/// Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server). +[JsonConverter(typeof(Converter))] +[DebuggerDisplay("{Value,nq}")] +public readonly struct McpServerTransport : IEquatable +{ + private readonly string? _value; + + /// Initializes a new instance of the struct. + /// The value to associate with this . + [JsonConstructor] + public McpServerTransport(string value) + { + ArgumentException.ThrowIfNullOrWhiteSpace(value); + _value = value; + } + + /// Gets the value associated with this . + public string Value => _value ?? string.Empty; + + /// Server communicates over stdio with a local child process. + public static McpServerTransport Stdio { get; } = new("stdio"); + + /// Server communicates over streamable HTTP. + public static McpServerTransport Http { get; } = new("http"); + + /// Server communicates over Server-Sent Events (deprecated). + public static McpServerTransport Sse { get; } = new("sse"); + + /// Server is backed by an in-memory runtime implementation. + public static McpServerTransport Memory { get; } = new("memory"); + + /// Returns a value indicating whether two instances are equivalent. + public static bool operator ==(McpServerTransport left, McpServerTransport right) => left.Equals(right); + + /// Returns a value indicating whether two instances are not equivalent. + public static bool operator !=(McpServerTransport left, McpServerTransport right) => !(left == right); + + /// + public override bool Equals(object? obj) => obj is McpServerTransport other && Equals(other); + + /// + public bool Equals(McpServerTransport other) => string.Equals(Value, other.Value, StringComparison.OrdinalIgnoreCase); + + /// + public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Value); + + /// + public override string ToString() => Value; + + /// Provides a for serializing instances. + [EditorBrowsable(EditorBrowsableState.Never)] + public sealed class Converter : JsonConverter + { + /// + public override McpServerTransport Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return new(GeneratedStringEnumJson.ReadValue(ref reader, typeToConvert)); + } + + /// + public override void Write(Utf8JsonWriter writer, McpServerTransport value, JsonSerializerOptions options) + { + GeneratedStringEnumJson.WriteValue(writer, value.Value, typeof(McpServerTransport)); + } + } +} + /// Discovery source. [JsonConverter(typeof(Converter))] [DebuggerDisplay("{Value,nq}")] @@ -7168,6 +7765,11 @@ public override void Write(Utf8JsonWriter writer, ExtensionsLoadedExtensionStatu [JsonSerializable(typeof(HookEndEvent))] [JsonSerializable(typeof(HookStartData))] [JsonSerializable(typeof(HookStartEvent))] +[JsonSerializable(typeof(McpAppToolCallCompleteData))] +[JsonSerializable(typeof(McpAppToolCallCompleteError))] +[JsonSerializable(typeof(McpAppToolCallCompleteEvent))] +[JsonSerializable(typeof(McpAppToolCallCompleteToolMeta))] +[JsonSerializable(typeof(McpAppToolCallCompleteToolMetaUI))] [JsonSerializable(typeof(McpOauthCompletedData))] [JsonSerializable(typeof(McpOauthCompletedEvent))] [JsonSerializable(typeof(McpOauthRequiredData))] @@ -7329,6 +7931,18 @@ public override void Write(Utf8JsonWriter writer, ExtensionsLoadedExtensionStatu [JsonSerializable(typeof(ToolExecutionCompleteError))] [JsonSerializable(typeof(ToolExecutionCompleteEvent))] [JsonSerializable(typeof(ToolExecutionCompleteResult))] +[JsonSerializable(typeof(ToolExecutionCompleteToolDescription))] +[JsonSerializable(typeof(ToolExecutionCompleteToolDescriptionMeta))] +[JsonSerializable(typeof(ToolExecutionCompleteToolDescriptionMetaUI))] +[JsonSerializable(typeof(ToolExecutionCompleteUIResource))] +[JsonSerializable(typeof(ToolExecutionCompleteUIResourceMeta))] +[JsonSerializable(typeof(ToolExecutionCompleteUIResourceMetaUI))] +[JsonSerializable(typeof(ToolExecutionCompleteUIResourceMetaUICsp))] +[JsonSerializable(typeof(ToolExecutionCompleteUIResourceMetaUIPermissions))] +[JsonSerializable(typeof(ToolExecutionCompleteUIResourceMetaUIPermissionsCamera))] +[JsonSerializable(typeof(ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite))] +[JsonSerializable(typeof(ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation))] +[JsonSerializable(typeof(ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone))] [JsonSerializable(typeof(ToolExecutionPartialResultData))] [JsonSerializable(typeof(ToolExecutionPartialResultEvent))] [JsonSerializable(typeof(ToolExecutionProgressData))] diff --git a/go/rpc/zrpc.go b/go/rpc/zrpc.go index 36a5e1831f..85d6e63648 100644 --- a/go/rpc/zrpc.go +++ b/go/rpc/zrpc.go @@ -551,7 +551,7 @@ type DiscoveredMcpServer struct { Name string `json:"name"` // Configuration source: user, workspace, plugin, or builtin Source McpServerSource `json:"source"` - // Server transport type: stdio, http, sse, or memory + // Server transport type: stdio, http, sse (deprecated), or memory Type *DiscoveredMcpServerType `json:"type,omitempty"` } @@ -747,6 +747,8 @@ type ExternalToolTextResultForLlmBinaryResultsForLlm struct { Data string `json:"data"` // Human-readable description of the binary data Description *string `json:"description,omitempty"` + // Optional metadata from the producing tool. + Metadata map[string]any `json:"metadata,omitempty"` // MIME type of the binary data MIMEType string `json:"mimeType"` // Binary result type discriminator. Use "image" for images and "resource" for other binary @@ -1222,6 +1224,176 @@ type LspInitializeRequest struct { WorkingDirectory *string `json:"workingDirectory,omitempty"` } +// MCP server, tool name, and arguments to invoke from an MCP App view. +// Experimental: McpAppsCallToolRequest is part of an experimental API and may change or be +// removed. +type McpAppsCallToolRequest struct { + // Tool arguments + Arguments map[string]any `json:"arguments,omitempty"` + // **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the + // app from this server only'), the call is rejected when this differs from `serverName`, + // and rejected outright when missing. + OriginServerName string `json:"originServerName"` + // MCP server hosting the tool + ServerName string `json:"serverName"` + // MCP tool name + ToolName string `json:"toolName"` +} + +// Capability negotiation snapshot +// Experimental: McpAppsDiagnoseCapability is part of an experimental API and may change or +// be removed. +type McpAppsDiagnoseCapability struct { + // Whether the runtime advertises `extensions.io.modelcontextprotocol/ui` to MCP servers + Advertised bool `json:"advertised"` + // Whether the MCP_APPS feature flag (or COPILOT_MCP_APPS env override) is on + FeatureFlagEnabled bool `json:"featureFlagEnabled"` + // Whether the session has the `mcp-apps` capability + SessionHasMcpApps bool `json:"sessionHasMcpApps"` +} + +// MCP server to diagnose MCP Apps wiring for. +// Experimental: McpAppsDiagnoseRequest is part of an experimental API and may change or be +// removed. +type McpAppsDiagnoseRequest struct { + // MCP server to probe + ServerName string `json:"serverName"` +} + +// Diagnostic snapshot of MCP Apps wiring for the named server. +// Experimental: McpAppsDiagnoseResult is part of an experimental API and may change or be +// removed. +type McpAppsDiagnoseResult struct { + // Capability negotiation snapshot + Capability McpAppsDiagnoseCapability `json:"capability"` + // What the server returned for this session + Server McpAppsDiagnoseServer `json:"server"` +} + +// What the server returned for this session +// Experimental: McpAppsDiagnoseServer is part of an experimental API and may change or be +// removed. +type McpAppsDiagnoseServer struct { + // Whether the named server is currently connected + Connected bool `json:"connected"` + // Up to 5 tool names with `_meta.ui` for quick inspection + SampleToolNames []string `json:"sampleToolNames"` + // Total tools returned by the server's tools/list + ToolCount float64 `json:"toolCount"` + // Tools whose `_meta.ui` is populated (resourceUri and/or visibility set) + ToolsWithUIMeta float64 `json:"toolsWithUiMeta"` +} + +// Current host context advertised to MCP App guests. +// Experimental: McpAppsHostContext is part of an experimental API and may change or be +// removed. +type McpAppsHostContext struct { + // Current host context + Context McpAppsHostContextDetails `json:"context"` +} + +// Current host context +// Experimental: McpAppsHostContextDetails is part of an experimental API and may change or +// be removed. +type McpAppsHostContextDetails struct { + // Display modes the host supports + AvailableDisplayModes []McpAppsHostContextDetailsAvailableDisplayMode `json:"availableDisplayModes,omitempty"` + // Current display mode (SEP-1865) + DisplayMode *McpAppsHostContextDetailsDisplayMode `json:"displayMode,omitempty"` + // BCP-47 locale, e.g. 'en-US' + Locale *string `json:"locale,omitempty"` + // Platform type for responsive design + Platform *McpAppsHostContextDetailsPlatform `json:"platform,omitempty"` + // UI theme preference per SEP-1865 + Theme *McpAppsHostContextDetailsTheme `json:"theme,omitempty"` + // IANA timezone, e.g. 'America/New_York' + TimeZone *string `json:"timeZone,omitempty"` + // Host application identifier + UserAgent *string `json:"userAgent,omitempty"` +} + +// MCP server to list app-callable tools for. +// Experimental: McpAppsListToolsRequest is part of an experimental API and may change or be +// removed. +type McpAppsListToolsRequest struct { + // **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the + // app from this server only'), the call is rejected when this differs from `serverName`, + // and rejected outright when missing. + OriginServerName string `json:"originServerName"` + // MCP server hosting the app + ServerName string `json:"serverName"` +} + +// App-callable tools from the named MCP server. +// Experimental: McpAppsListToolsResult is part of an experimental API and may change or be +// removed. +type McpAppsListToolsResult struct { + // App-callable tools from the server + Tools []map[string]any `json:"tools"` +} + +// MCP server and resource URI to fetch. +// Experimental: McpAppsReadResourceRequest is part of an experimental API and may change or +// be removed. +type McpAppsReadResourceRequest struct { + // Name of the MCP server hosting the resource + ServerName string `json:"serverName"` + // Resource URI (typically ui://...) + URI string `json:"uri"` +} + +// Resource contents returned by the MCP server. +// Experimental: McpAppsReadResourceResult is part of an experimental API and may change or +// be removed. +type McpAppsReadResourceResult struct { + // Resource contents returned by the server + Contents []McpAppsResourceContent `json:"contents"` +} + +// Schema for the `McpAppsResourceContent` type. +// Experimental: McpAppsResourceContent is part of an experimental API and may change or be +// removed. +type McpAppsResourceContent struct { + // Base64-encoded binary content + Blob *string `json:"blob,omitempty"` + // Resource-level metadata (CSP, permissions, etc.) + Meta map[string]any `json:"_meta,omitempty"` + // MIME type of the content + MIMEType *string `json:"mimeType,omitempty"` + // Text content (e.g. HTML) + Text *string `json:"text,omitempty"` + // The resource URI (typically ui://...) + URI string `json:"uri"` +} + +// Host context advertised to MCP App guests +// Experimental: McpAppsSetHostContextDetails is part of an experimental API and may change +// or be removed. +type McpAppsSetHostContextDetails struct { + // Display modes the host supports + AvailableDisplayModes []McpAppsSetHostContextDetailsAvailableDisplayMode `json:"availableDisplayModes,omitempty"` + // Current display mode (SEP-1865) + DisplayMode *McpAppsSetHostContextDetailsDisplayMode `json:"displayMode,omitempty"` + // BCP-47 locale, e.g. 'en-US' + Locale *string `json:"locale,omitempty"` + // Platform type for responsive design + Platform *McpAppsSetHostContextDetailsPlatform `json:"platform,omitempty"` + // UI theme preference per SEP-1865 + Theme *McpAppsSetHostContextDetailsTheme `json:"theme,omitempty"` + // IANA timezone, e.g. 'America/New_York' + TimeZone *string `json:"timeZone,omitempty"` + // Host application identifier + UserAgent *string `json:"userAgent,omitempty"` +} + +// Host context to advertise to MCP App guests. +// Experimental: McpAppsSetHostContextRequest is part of an experimental API and may change +// or be removed. +type McpAppsSetHostContextRequest struct { + // Host context advertised to MCP App guests + Context McpAppsSetHostContextDetails `json:"context"` +} + // The requestId previously passed to executeSampling that should be cancelled. // Experimental: McpCancelSamplingExecutionParams is part of an experimental API and may // change or be removed. @@ -1697,15 +1869,28 @@ type ModelBilling struct { type ModelBillingTokenPrices struct { // Number of tokens per standard billing batch BatchSize *int64 `json:"batchSize,omitempty"` - // Price per billing batch of cached tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 - // AIU = $0.01 USD) - CachePrice *int64 `json:"cachePrice,omitempty"` - // Price per billing batch of input tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU - // = $0.01 USD) - InputPrice *int64 `json:"inputPrice,omitempty"` - // Price per billing batch of output tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 - // AIU = $0.01 USD) - OutputPrice *int64 `json:"outputPrice,omitempty"` + // AI Credits cost per billing batch of cached tokens + CachePrice *float64 `json:"cachePrice,omitempty"` + // Maximum context window tokens for the default tier + ContextMax *int64 `json:"contextMax,omitempty"` + // AI Credits cost per billing batch of input tokens + InputPrice *float64 `json:"inputPrice,omitempty"` + // Long context tier pricing (available for models with extended context windows) + LongContext *ModelBillingTokenPricesLongContext `json:"longContext,omitempty"` + // AI Credits cost per billing batch of output tokens + OutputPrice *float64 `json:"outputPrice,omitempty"` +} + +// Long context tier pricing (available for models with extended context windows) +type ModelBillingTokenPricesLongContext struct { + // AI Credits cost per billing batch of cached tokens + CachePrice *float64 `json:"cachePrice,omitempty"` + // Maximum context window tokens for the long context tier + ContextMax *int64 `json:"contextMax,omitempty"` + // AI Credits cost per billing batch of input tokens + InputPrice *float64 `json:"inputPrice,omitempty"` + // AI Credits cost per billing batch of output tokens + OutputPrice *float64 `json:"outputPrice,omitempty"` } // Model capabilities and limits @@ -3876,6 +4061,16 @@ type SessionLoadDeferredRepoHooksResult struct { type SessionLspInitializeResult struct { } +// Standard MCP CallToolResult +// Experimental: SessionMcpAppsCallToolResult is part of an experimental API and may change +// or be removed. +type SessionMcpAppsCallToolResult map[string]any + +// Experimental: SessionMcpAppsSetHostContextResult is part of an experimental API and may +// change or be removed. +type SessionMcpAppsSetHostContextResult struct { +} + // Experimental: SessionMcpDisableResult is part of an experimental API and may change or be // removed. type SessionMcpDisableResult struct { @@ -5941,7 +6136,7 @@ const ( CopilotAPITokenAuthInfoHostHTTPSGithubCom CopilotAPITokenAuthInfoHost = "https://github.com" ) -// Server transport type: stdio, http, sse, or memory +// Server transport type: stdio, http, sse (deprecated), or memory type DiscoveredMcpServerType string const ( @@ -5949,7 +6144,7 @@ const ( DiscoveredMcpServerTypeHTTP DiscoveredMcpServerType = "http" // Server is backed by an in-memory runtime implementation. DiscoveredMcpServerTypeMemory DiscoveredMcpServerType = "memory" - // Server communicates over Server-Sent Events. + // Server communicates over Server-Sent Events (deprecated). DiscoveredMcpServerTypeSse DiscoveredMcpServerType = "sse" // Server communicates over stdio with a local child process. DiscoveredMcpServerTypeStdio DiscoveredMcpServerType = "stdio" @@ -6119,6 +6314,114 @@ const ( InstructionsSourcesTypeVscode InstructionsSourcesType = "vscode" ) +// Allowed values for the `McpAppsHostContextDetailsAvailableDisplayMode` enumeration. +// Experimental: McpAppsHostContextDetailsAvailableDisplayMode is part of an experimental +// API and may change or be removed. +type McpAppsHostContextDetailsAvailableDisplayMode string + +const ( + // Rendered as a fullscreen overlay + McpAppsHostContextDetailsAvailableDisplayModeFullscreen McpAppsHostContextDetailsAvailableDisplayMode = "fullscreen" + // Rendered inline within the host conversation surface + McpAppsHostContextDetailsAvailableDisplayModeInline McpAppsHostContextDetailsAvailableDisplayMode = "inline" + // Rendered as a picture-in-picture floating panel + McpAppsHostContextDetailsAvailableDisplayModePip McpAppsHostContextDetailsAvailableDisplayMode = "pip" +) + +// Current display mode (SEP-1865) +// Experimental: McpAppsHostContextDetailsDisplayMode is part of an experimental API and may +// change or be removed. +type McpAppsHostContextDetailsDisplayMode string + +const ( + // Rendered as a fullscreen overlay + McpAppsHostContextDetailsDisplayModeFullscreen McpAppsHostContextDetailsDisplayMode = "fullscreen" + // Rendered inline within the host conversation surface + McpAppsHostContextDetailsDisplayModeInline McpAppsHostContextDetailsDisplayMode = "inline" + // Rendered as a picture-in-picture floating panel + McpAppsHostContextDetailsDisplayModePip McpAppsHostContextDetailsDisplayMode = "pip" +) + +// Platform type for responsive design +// Experimental: McpAppsHostContextDetailsPlatform is part of an experimental API and may +// change or be removed. +type McpAppsHostContextDetailsPlatform string + +const ( + // Host runs as a desktop application + McpAppsHostContextDetailsPlatformDesktop McpAppsHostContextDetailsPlatform = "desktop" + // Host runs on a mobile device + McpAppsHostContextDetailsPlatformMobile McpAppsHostContextDetailsPlatform = "mobile" + // Host runs in a web browser + McpAppsHostContextDetailsPlatformWeb McpAppsHostContextDetailsPlatform = "web" +) + +// UI theme preference per SEP-1865 +// Experimental: McpAppsHostContextDetailsTheme is part of an experimental API and may +// change or be removed. +type McpAppsHostContextDetailsTheme string + +const ( + // Dark UI theme + McpAppsHostContextDetailsThemeDark McpAppsHostContextDetailsTheme = "dark" + // Light UI theme + McpAppsHostContextDetailsThemeLight McpAppsHostContextDetailsTheme = "light" +) + +// Allowed values for the `McpAppsSetHostContextDetailsAvailableDisplayMode` enumeration. +// Experimental: McpAppsSetHostContextDetailsAvailableDisplayMode is part of an experimental +// API and may change or be removed. +type McpAppsSetHostContextDetailsAvailableDisplayMode string + +const ( + // Rendered as a fullscreen overlay + McpAppsSetHostContextDetailsAvailableDisplayModeFullscreen McpAppsSetHostContextDetailsAvailableDisplayMode = "fullscreen" + // Rendered inline within the host conversation surface + McpAppsSetHostContextDetailsAvailableDisplayModeInline McpAppsSetHostContextDetailsAvailableDisplayMode = "inline" + // Rendered as a picture-in-picture floating panel + McpAppsSetHostContextDetailsAvailableDisplayModePip McpAppsSetHostContextDetailsAvailableDisplayMode = "pip" +) + +// Current display mode (SEP-1865) +// Experimental: McpAppsSetHostContextDetailsDisplayMode is part of an experimental API and +// may change or be removed. +type McpAppsSetHostContextDetailsDisplayMode string + +const ( + // Rendered as a fullscreen overlay + McpAppsSetHostContextDetailsDisplayModeFullscreen McpAppsSetHostContextDetailsDisplayMode = "fullscreen" + // Rendered inline within the host conversation surface + McpAppsSetHostContextDetailsDisplayModeInline McpAppsSetHostContextDetailsDisplayMode = "inline" + // Rendered as a picture-in-picture floating panel + McpAppsSetHostContextDetailsDisplayModePip McpAppsSetHostContextDetailsDisplayMode = "pip" +) + +// Platform type for responsive design +// Experimental: McpAppsSetHostContextDetailsPlatform is part of an experimental API and may +// change or be removed. +type McpAppsSetHostContextDetailsPlatform string + +const ( + // Host runs as a desktop application + McpAppsSetHostContextDetailsPlatformDesktop McpAppsSetHostContextDetailsPlatform = "desktop" + // Host runs on a mobile device + McpAppsSetHostContextDetailsPlatformMobile McpAppsSetHostContextDetailsPlatform = "mobile" + // Host runs in a web browser + McpAppsSetHostContextDetailsPlatformWeb McpAppsSetHostContextDetailsPlatform = "web" +) + +// UI theme preference per SEP-1865 +// Experimental: McpAppsSetHostContextDetailsTheme is part of an experimental API and may +// change or be removed. +type McpAppsSetHostContextDetailsTheme string + +const ( + // Dark UI theme + McpAppsSetHostContextDetailsThemeDark McpAppsSetHostContextDetailsTheme = "dark" + // Light UI theme + McpAppsSetHostContextDetailsThemeLight McpAppsSetHostContextDetailsTheme = "light" +) + // Outcome of the sampling inference. 'success' produced a response; 'failure' encountered // an error (including agent-side rejection by content filter or criteria); 'cancelled' the // caller cancelled this execution via cancelSamplingExecution. @@ -8526,6 +8829,159 @@ func (a *McpApi) SetEnvValueMode(ctx context.Context, params *McpSetEnvValueMode return &result, nil } +// Experimental: McpAppsApi contains experimental APIs that may change or be removed. +type McpAppsApi sessionApi + +// CallTool call an MCP tool from an MCP App view (SEP-1865). Enforces the visibility check +// that prevents an app iframe from invoking model-only tools. Returns the standard MCP +// `CallToolResult`. +// +// RPC method: session.mcp.apps.callTool. +// +// Parameters: MCP server, tool name, and arguments to invoke from an MCP App view. +// +// Returns: Standard MCP CallToolResult +func (a *McpAppsApi) CallTool(ctx context.Context, params *McpAppsCallToolRequest) (*SessionMcpAppsCallToolResult, error) { + req := map[string]any{"sessionId": a.sessionID} + if params != nil { + if params.Arguments != nil { + req["arguments"] = params.Arguments + } + req["originServerName"] = params.OriginServerName + req["serverName"] = params.ServerName + req["toolName"] = params.ToolName + } + raw, err := a.client.Request("session.mcp.apps.callTool", req) + if err != nil { + return nil, err + } + var result SessionMcpAppsCallToolResult + if err := json.Unmarshal(raw, &result); err != nil { + return nil, err + } + return &result, nil +} + +// Diagnose MCP Apps wiring for a specific MCP server. Reports the session capability, +// feature-flag state, advertised extension, and how many tools have `_meta.ui` populated. +// +// RPC method: session.mcp.apps.diagnose. +// +// Parameters: MCP server to diagnose MCP Apps wiring for. +// +// Returns: Diagnostic snapshot of MCP Apps wiring for the named server. +func (a *McpAppsApi) Diagnose(ctx context.Context, params *McpAppsDiagnoseRequest) (*McpAppsDiagnoseResult, error) { + req := map[string]any{"sessionId": a.sessionID} + if params != nil { + req["serverName"] = params.ServerName + } + raw, err := a.client.Request("session.mcp.apps.diagnose", req) + if err != nil { + return nil, err + } + var result McpAppsDiagnoseResult + if err := json.Unmarshal(raw, &result); err != nil { + return nil, err + } + return &result, nil +} + +// GetHostContext read the current host context advertised to MCP App guests. +// +// RPC method: session.mcp.apps.getHostContext. +// +// Returns: Current host context advertised to MCP App guests. +func (a *McpAppsApi) GetHostContext(ctx context.Context) (*McpAppsHostContext, error) { + req := map[string]any{"sessionId": a.sessionID} + raw, err := a.client.Request("session.mcp.apps.getHostContext", req) + if err != nil { + return nil, err + } + var result McpAppsHostContext + if err := json.Unmarshal(raw, &result); err != nil { + return nil, err + } + return &result, nil +} + +// ListTools list tools that an MCP App view is allowed to call (SEP-1865 visibility +// filter). Returns tools whose `_meta.ui.visibility` is unset (default `["model","app"]`) +// or includes `"app"`. +// +// RPC method: session.mcp.apps.listTools. +// +// Parameters: MCP server to list app-callable tools for. +// +// Returns: App-callable tools from the named MCP server. +func (a *McpAppsApi) ListTools(ctx context.Context, params *McpAppsListToolsRequest) (*McpAppsListToolsResult, error) { + req := map[string]any{"sessionId": a.sessionID} + if params != nil { + req["originServerName"] = params.OriginServerName + req["serverName"] = params.ServerName + } + raw, err := a.client.Request("session.mcp.apps.listTools", req) + if err != nil { + return nil, err + } + var result McpAppsListToolsResult + if err := json.Unmarshal(raw, &result); err != nil { + return nil, err + } + return &result, nil +} + +// ReadResource fetch an MCP resource (typically a `ui://` MCP App bundle, per SEP-1865) +// from a connected server. Requires the `mcp-apps` session capability. +// +// RPC method: session.mcp.apps.readResource. +// +// Parameters: MCP server and resource URI to fetch. +// +// Returns: Resource contents returned by the MCP server. +func (a *McpAppsApi) ReadResource(ctx context.Context, params *McpAppsReadResourceRequest) (*McpAppsReadResourceResult, error) { + req := map[string]any{"sessionId": a.sessionID} + if params != nil { + req["serverName"] = params.ServerName + req["uri"] = params.URI + } + raw, err := a.client.Request("session.mcp.apps.readResource", req) + if err != nil { + return nil, err + } + var result McpAppsReadResourceResult + if err := json.Unmarshal(raw, &result); err != nil { + return nil, err + } + return &result, nil +} + +// SetHostContext replace the host context returned to MCP App guests on `ui/initialize`. +// Hosts use this to advertise theme, locale, or other metadata to the guest UI. +// +// RPC method: session.mcp.apps.setHostContext. +// +// Parameters: Host context to advertise to MCP App guests. +func (a *McpAppsApi) SetHostContext(ctx context.Context, params *McpAppsSetHostContextRequest) (*SessionMcpAppsSetHostContextResult, error) { + req := map[string]any{"sessionId": a.sessionID} + if params != nil { + req["context"] = params.Context + } + raw, err := a.client.Request("session.mcp.apps.setHostContext", req) + if err != nil { + return nil, err + } + var result SessionMcpAppsSetHostContextResult + if err := json.Unmarshal(raw, &result); err != nil { + return nil, err + } + return &result, nil +} + +// Experimental: Apps returns experimental APIs that may change or be removed. +func (s *McpApi) Apps() *McpAppsApi { + return (*McpAppsApi)(s) +} + // Experimental: McpOauthApi contains experimental APIs that may change or be removed. type McpOauthApi sessionApi diff --git a/go/rpc/zsession_encoding.go b/go/rpc/zsession_encoding.go index cc61228ab1..155b53937b 100644 --- a/go/rpc/zsession_encoding.go +++ b/go/rpc/zsession_encoding.go @@ -191,6 +191,12 @@ func (e *SessionEvent) UnmarshalJSON(data []byte) error { return err } e.Data = &d + case SessionEventTypeMcpAppToolCallComplete: + var d McpAppToolCallCompleteData + if err := json.Unmarshal(raw.Data, &d); err != nil { + return err + } + e.Data = &d case SessionEventTypeMcpOauthCompleted: var d McpOauthCompletedData if err := json.Unmarshal(raw.Data, &d); err != nil { @@ -904,9 +910,10 @@ func (r ToolExecutionCompleteContentText) MarshalJSON() ([]byte, error) { func (r *ToolExecutionCompleteResult) UnmarshalJSON(data []byte) error { type rawToolExecutionCompleteResult struct { - Content string `json:"content"` - Contents []json.RawMessage `json:"contents,omitempty"` - DetailedContent *string `json:"detailedContent,omitempty"` + Content string `json:"content"` + Contents []json.RawMessage `json:"contents,omitempty"` + DetailedContent *string `json:"detailedContent,omitempty"` + UIResource *ToolExecutionCompleteUIResource `json:"uiResource,omitempty"` } var raw rawToolExecutionCompleteResult if err := json.Unmarshal(data, &raw); err != nil { @@ -924,6 +931,7 @@ func (r *ToolExecutionCompleteResult) UnmarshalJSON(data []byte) error { } } r.DetailedContent = raw.DetailedContent + r.UIResource = raw.UIResource return nil } diff --git a/go/rpc/zsession_events.go b/go/rpc/zsession_events.go index 9a5636aeb0..10d79c37f9 100644 --- a/go/rpc/zsession_events.go +++ b/go/rpc/zsession_events.go @@ -79,6 +79,7 @@ const ( SessionEventTypeExternalToolRequested SessionEventType = "external_tool.requested" SessionEventTypeHookEnd SessionEventType = "hook.end" SessionEventTypeHookStart SessionEventType = "hook.start" + SessionEventTypeMcpAppToolCallComplete SessionEventType = "mcp_app.tool_call_complete" SessionEventTypeMcpOauthCompleted SessionEventType = "mcp.oauth_completed" SessionEventTypeMcpOauthRequired SessionEventType = "mcp.oauth_required" SessionEventTypeModelCallFailure SessionEventType = "model.call_failure" @@ -198,6 +199,8 @@ type AssistantMessageData struct { ReasoningText *string `json:"reasoningText,omitempty"` // GitHub request tracing ID (x-github-request-id header) for correlating with server-side logs RequestID *string `json:"requestId,omitempty"` + // Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + ServiceRequestID *string `json:"serviceRequestId,omitempty"` // Tool invocations requested by the assistant in this message ToolRequests []AssistantMessageToolRequest `json:"toolRequests,omitempty"` // Identifier for the agent loop turn that produced this message, matching the corresponding assistant.turn_start event @@ -274,6 +277,8 @@ type SessionCompactionCompleteData struct { PreCompactionTokens *int64 `json:"preCompactionTokens,omitempty"` // GitHub request tracing ID (x-github-request-id header) for the compaction LLM call RequestID *string `json:"requestId,omitempty"` + // Copilot service request ID (x-copilot-service-request-id header) for the compaction LLM call + ServiceRequestID *string `json:"serviceRequestId,omitempty"` // Whether compaction completed successfully Success bool `json:"success"` // LLM-generated summary of the compacted conversation history @@ -410,6 +415,8 @@ type SessionErrorData struct { Message string `json:"message"` // GitHub request tracing ID (x-github-request-id header) for correlating with server-side logs ProviderCallID *string `json:"providerCallId,omitempty"` + // Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + ServiceRequestID *string `json:"serviceRequestId,omitempty"` // Error stack trace, when available Stack *string `json:"stack,omitempty"` // HTTP status code from the upstream request, if applicable @@ -469,6 +476,8 @@ type ModelCallFailureData struct { Model *string `json:"model,omitempty"` // GitHub request tracing ID (x-github-request-id header) for server-side log correlation ProviderCallID *string `json:"providerCallId,omitempty"` + // Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + ServiceRequestID *string `json:"serviceRequestId,omitempty"` // Where the failed model call originated Source ModelCallFailureSource `json:"source"` // HTTP status code from the failed request @@ -563,6 +572,8 @@ type AssistantUsageData struct { ReasoningEffort *string `json:"reasoningEffort,omitempty"` // Number of output tokens used for reasoning (e.g., chain-of-thought) ReasoningTokens *int64 `json:"reasoningTokens,omitempty"` + // Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + ServiceRequestID *string `json:"serviceRequestId,omitempty"` // Time to first token in milliseconds. Only available for streaming requests TimeToFirstTokenMs *int64 `json:"timeToFirstTokenMs,omitempty"` } @@ -570,6 +581,31 @@ type AssistantUsageData struct { func (*AssistantUsageData) sessionEventData() {} func (*AssistantUsageData) Type() SessionEventType { return SessionEventTypeAssistantUsage } +// MCP App view called a tool on a connected MCP server (SEP-1865) +type McpAppToolCallCompleteData struct { + // Arguments passed to the tool by the app view, if any + Arguments map[string]any `json:"arguments,omitempty"` + // Wall-clock duration of the underlying tools/call in milliseconds + DurationMs float64 `json:"durationMs"` + // Set when the underlying tools/call threw an error before returning a CallToolResult + Error *McpAppToolCallCompleteError `json:"error,omitempty"` + // Standard MCP CallToolResult returned by the server. Present whether or not the call set isError. + Result map[string]any `json:"result,omitempty"` + // Name of the MCP server hosting the tool + ServerName string `json:"serverName"` + // True when the call completed without throwing AND the MCP CallToolResult did not set isError + Success bool `json:"success"` + // The tool's `_meta.ui` block at the time of the call, so consumers can decide whether to forward the result to the model without re-listing tools. + ToolMeta *McpAppToolCallCompleteToolMeta `json:"toolMeta,omitempty"` + // MCP tool name that was invoked + ToolName string `json:"toolName"` +} + +func (*McpAppToolCallCompleteData) sessionEventData() {} +func (*McpAppToolCallCompleteData) Type() SessionEventType { + return SessionEventTypeMcpAppToolCallComplete +} + // MCP OAuth request completion notification type McpOauthCompletedData struct { // Request ID of the resolved OAuth request @@ -583,6 +619,8 @@ func (*McpOauthCompletedData) Type() SessionEventType { return SessionEventTypeM type SessionModelChangeData struct { // Reason the change happened, when not user-initiated. Currently `"rate_limit_auto_switch"` for changes triggered by the auto-mode-switch rate-limit recovery path. UI clients can use this to render contextual copy. Cause *string `json:"cause,omitempty"` + // Context tier after the model change; null explicitly clears a previously selected tier + ContextTier *SessionModelChangeDataContextTier `json:"contextTier,omitempty"` // Newly selected model identifier NewModel string `json:"newModel"` // Model that was previously selected, if any @@ -862,6 +900,8 @@ func (*SessionExtensionsLoadedData) Type() SessionEventType { // Schema for the `McpServerStatusChangedData` type. type SessionMcpServerStatusChangedData struct { + // Error message if the server entered a failed state + Error *string `json:"error,omitempty"` // Name of the MCP server whose status changed ServerName string `json:"serverName"` // Connection status: connected, failed, needs-auth, pending, disabled, or not_configured @@ -1092,6 +1132,10 @@ type SkillInvokedData struct { PluginName *string `json:"pluginName,omitempty"` // Version of the plugin this skill originated from, when applicable PluginVersion *string `json:"pluginVersion,omitempty"` + // Source identifier for where the skill was discovered. Known values include: project (workspace skill), inherited (parent-directory skill), personal-copilot (~/.copilot/skills), personal-agents (~/.agents/skills), personal-claude (~/.claude/skills), custom (configured directory), plugin (installed plugin), builtin (bundled runtime skill), and remote (org/enterprise skill) + Source *string `json:"source,omitempty"` + // What triggered the skill invocation: `user-invoked` (explicit user action, such as via a slash command or UI affordance), `agent-invoked` (agent requested the skill), or `context-load` (loaded as part of another context, such as preloading skills configured on a custom agent or subagent) + Trigger *SkillInvokedTrigger `json:"trigger,omitempty"` } func (*SkillInvokedData) sessionEventData() {} @@ -1282,6 +1326,8 @@ type ToolExecutionCompleteData struct { Success bool `json:"success"` // Unique identifier for the completed tool call ToolCallID string `json:"toolCallId"` + // Tool definition metadata, present for MCP tools with MCP Apps support + ToolDescription *ToolExecutionCompleteToolDescription `json:"toolDescription,omitempty"` // Tool-specific telemetry data (e.g., CodeQL check counts, grep match counts) ToolTelemetry map[string]any `json:"toolTelemetry,omitempty"` // Identifier for the agent loop turn this tool was invoked in, matching the corresponding assistant.turn_start event @@ -1525,6 +1571,8 @@ type AssistantUsageQuotaSnapshot struct { type CapabilitiesChangedUI struct { // Whether elicitation is now supported Elicitation *bool `json:"elicitation,omitempty"` + // Whether MCP Apps (SEP-1865) UI passthrough is now supported + McpApps *bool `json:"mcpApps,omitempty"` } // Schema for the `CommandsChangedCommand` type. @@ -1665,6 +1713,26 @@ type HookEndError struct { Stack *string `json:"stack,omitempty"` } +// Set when the underlying tools/call threw an error before returning a CallToolResult +type McpAppToolCallCompleteError struct { + // Human-readable error message + Message string `json:"message"` +} + +// The tool's `_meta.ui` block at the time of the call, so consumers can decide whether to forward the result to the model without re-listing tools. +type McpAppToolCallCompleteToolMeta struct { + // Schema for the `McpAppToolCallCompleteToolMetaUI` type. + UI *McpAppToolCallCompleteToolMetaUI `json:"ui,omitempty"` +} + +// Schema for the `McpAppToolCallCompleteToolMetaUI` type. +type McpAppToolCallCompleteToolMetaUI struct { + // `ui://` URI declared by the tool's `_meta.ui.resourceUri` + ResourceURI *string `json:"resourceUri,omitempty"` + // Tool visibility per SEP-1865 (typically a subset of `["model","app"]`) + Visibility []string `json:"visibility,omitempty"` +} + // Static OAuth client configuration, if the server specifies one type McpOauthRequiredStaticClientConfig struct { // OAuth client ID for the server @@ -1681,10 +1749,16 @@ type McpServersLoadedServer struct { Error *string `json:"error,omitempty"` // Server name (config key) Name string `json:"name"` + // Name of the plugin that supplied the effective MCP server config, only when source is plugin + PluginName *string `json:"pluginName,omitempty"` + // Version of the plugin that supplied the effective MCP server config, only when source is plugin + PluginVersion *string `json:"pluginVersion,omitempty"` // Configuration source: user, workspace, plugin, or builtin Source *McpServerSource `json:"source,omitempty"` // Connection status: connected, failed, needs-auth, pending, disabled, or not_configured Status McpServerStatus `json:"status"` + // Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server) + Transport *McpServerTransport `json:"transport,omitempty"` } // Derived user-facing permission prompt details for UI consumers @@ -2562,6 +2636,98 @@ type ToolExecutionCompleteResult struct { Contents []ToolExecutionCompleteContent `json:"contents,omitempty"` // Full detailed tool result for UI/timeline display, preserving complete content such as diffs. Falls back to content when absent. DetailedContent *string `json:"detailedContent,omitempty"` + // MCP Apps UI resource content for rendering in a sandboxed iframe + UIResource *ToolExecutionCompleteUIResource `json:"uiResource,omitempty"` +} + +// Tool definition metadata, present for MCP tools with MCP Apps support +type ToolExecutionCompleteToolDescription struct { + // Tool description + Description *string `json:"description,omitempty"` + // MCP Apps metadata for UI resource association + Meta *ToolExecutionCompleteToolDescriptionMeta `json:"_meta,omitempty"` + // Tool name + Name string `json:"name"` +} + +// MCP Apps metadata for UI resource association +type ToolExecutionCompleteToolDescriptionMeta struct { + // Schema for the `ToolExecutionCompleteToolDescriptionMetaUI` type. + UI *ToolExecutionCompleteToolDescriptionMetaUI `json:"ui,omitempty"` +} + +// Schema for the `ToolExecutionCompleteToolDescriptionMetaUI` type. +type ToolExecutionCompleteToolDescriptionMetaUI struct { + // URI of the UI resource + ResourceURI *string `json:"resourceUri,omitempty"` + // Who can access this tool + Visibility []ToolExecutionCompleteToolDescriptionMetaUIVisibility `json:"visibility,omitempty"` +} + +// MCP Apps UI resource content for rendering in a sandboxed iframe +type ToolExecutionCompleteUIResource struct { + // Base64-encoded HTML content + Blob *string `json:"blob,omitempty"` + // Resource-level UI metadata (CSP, permissions, visual preferences) + Meta *ToolExecutionCompleteUIResourceMeta `json:"_meta,omitempty"` + // MIME type of the content + MIMEType string `json:"mimeType"` + // HTML content as a string + Text *string `json:"text,omitempty"` + // The ui:// URI of the resource + URI string `json:"uri"` +} + +// Resource-level UI metadata (CSP, permissions, visual preferences) +type ToolExecutionCompleteUIResourceMeta struct { + // Schema for the `ToolExecutionCompleteUIResourceMetaUI` type. + UI *ToolExecutionCompleteUIResourceMetaUI `json:"ui,omitempty"` +} + +// Schema for the `ToolExecutionCompleteUIResourceMetaUI` type. +type ToolExecutionCompleteUIResourceMetaUI struct { + // Schema for the `ToolExecutionCompleteUIResourceMetaUICsp` type. + Csp *ToolExecutionCompleteUIResourceMetaUICsp `json:"csp,omitempty"` + Domain *string `json:"domain,omitempty"` + // Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissions` type. + Permissions *ToolExecutionCompleteUIResourceMetaUIPermissions `json:"permissions,omitempty"` + PrefersBorder *bool `json:"prefersBorder,omitempty"` +} + +// Schema for the `ToolExecutionCompleteUIResourceMetaUICsp` type. +type ToolExecutionCompleteUIResourceMetaUICsp struct { + BaseURIDomains []string `json:"baseUriDomains,omitempty"` + ConnectDomains []string `json:"connectDomains,omitempty"` + FrameDomains []string `json:"frameDomains,omitempty"` + ResourceDomains []string `json:"resourceDomains,omitempty"` +} + +// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissions` type. +type ToolExecutionCompleteUIResourceMetaUIPermissions struct { + // Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsCamera` type. + Camera *ToolExecutionCompleteUIResourceMetaUIPermissionsCamera `json:"camera,omitempty"` + // Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite` type. + ClipboardWrite *ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite `json:"clipboardWrite,omitempty"` + // Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation` type. + Geolocation *ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation `json:"geolocation,omitempty"` + // Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone` type. + Microphone *ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone `json:"microphone,omitempty"` +} + +// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsCamera` type. +type ToolExecutionCompleteUIResourceMetaUIPermissionsCamera struct { +} + +// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite` type. +type ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite struct { +} + +// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation` type. +type ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation struct { +} + +// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone` type. +type ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone struct { } // A user message attachment — a file, directory, code selection, blob, or GitHub reference @@ -2831,6 +2997,20 @@ const ( McpOauthRequiredStaticClientConfigGrantTypeClientCredentials McpOauthRequiredStaticClientConfigGrantType = "client_credentials" ) +// Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server) +type McpServerTransport string + +const ( + // Server communicates over streamable HTTP. + McpServerTransportHTTP McpServerTransport = "http" + // Server is backed by an in-memory runtime implementation. + McpServerTransportMemory McpServerTransport = "memory" + // Server communicates over Server-Sent Events (deprecated). + McpServerTransportSse McpServerTransport = "sse" + // Server communicates over stdio with a local child process. + McpServerTransportStdio McpServerTransport = "stdio" +) + // Where the failed model call originated type ModelCallFailureSource string @@ -2935,6 +3115,27 @@ const ( PlanChangedOperationUpdate PlanChangedOperation = "update" ) +type SessionModelChangeDataContextTier string + +const ( + // Default context tier with standard context window size. + SessionModelChangeDataContextTierDefault SessionModelChangeDataContextTier = "default" + // Extended context tier with a larger context window. + SessionModelChangeDataContextTierLongContext SessionModelChangeDataContextTier = "long_context" +) + +// What triggered the skill invocation: `user-invoked` (explicit user action, such as via a slash command or UI affordance), `agent-invoked` (agent requested the skill), or `context-load` (loaded as part of another context, such as preloading skills configured on a custom agent or subagent) +type SkillInvokedTrigger string + +const ( + // Skill invocation requested by the agent. + SkillInvokedTriggerAgentInvoked SkillInvokedTrigger = "agent-invoked" + // Skill content loaded as part of another context, such as a configured custom agent or subagent. + SkillInvokedTriggerContextLoad SkillInvokedTrigger = "context-load" + // Skill invocation requested explicitly by the user, such as via a slash command or UI affordance. + SkillInvokedTriggerUserInvoked SkillInvokedTrigger = "user-invoked" +) + // Message role: "system" for system prompts, "developer" for developer-injected instructions type SystemMessageRole string @@ -2989,6 +3190,16 @@ const ( ToolExecutionCompleteContentTypeText ToolExecutionCompleteContentType = "text" ) +// Allowed values for the `ToolExecutionCompleteToolDescriptionMetaUIVisibility` enumeration. +type ToolExecutionCompleteToolDescriptionMetaUIVisibility string + +const ( + // Tool is callable by the MCP App view (iframe) via session.mcp.apps.callTool + ToolExecutionCompleteToolDescriptionMetaUIVisibilityApp ToolExecutionCompleteToolDescriptionMetaUIVisibility = "app" + // Tool is callable by the model (LLM tool surface) + ToolExecutionCompleteToolDescriptionMetaUIVisibilityModel ToolExecutionCompleteToolDescriptionMetaUIVisibility = "model" +) + // The agent mode that was active when this message was sent type UserMessageAgentMode string diff --git a/go/zsession_events.go b/go/zsession_events.go index d3b246a868..25c002fcbf 100644 --- a/go/zsession_events.go +++ b/go/zsession_events.go @@ -7,240 +7,260 @@ import "github.com/github/copilot-sdk/go/rpc" // Session-event types are generated in the rpc package and aliased here for source compatibility. type ( - AbortData = rpc.AbortData - AbortReason = rpc.AbortReason - AssistantIntentData = rpc.AssistantIntentData - AssistantMessageData = rpc.AssistantMessageData - AssistantMessageDeltaData = rpc.AssistantMessageDeltaData - AssistantMessageStartData = rpc.AssistantMessageStartData - AssistantMessageToolRequest = rpc.AssistantMessageToolRequest - AssistantMessageToolRequestType = rpc.AssistantMessageToolRequestType - AssistantReasoningData = rpc.AssistantReasoningData - AssistantReasoningDeltaData = rpc.AssistantReasoningDeltaData - AssistantStreamingDeltaData = rpc.AssistantStreamingDeltaData - AssistantTurnEndData = rpc.AssistantTurnEndData - AssistantTurnStartData = rpc.AssistantTurnStartData - AssistantUsageAPIEndpoint = rpc.AssistantUsageAPIEndpoint - AssistantUsageCopilotUsageTokenDetail = rpc.AssistantUsageCopilotUsageTokenDetail - AssistantUsageData = rpc.AssistantUsageData - Attachment = rpc.Attachment - AttachmentType = rpc.AttachmentType - AutoModeSwitchCompletedData = rpc.AutoModeSwitchCompletedData - AutoModeSwitchRequestedData = rpc.AutoModeSwitchRequestedData - AutoModeSwitchResponse = rpc.AutoModeSwitchResponse - CapabilitiesChangedData = rpc.CapabilitiesChangedData - CapabilitiesChangedUI = rpc.CapabilitiesChangedUI - CommandCompletedData = rpc.CommandCompletedData - CommandExecuteData = rpc.CommandExecuteData - CommandQueuedData = rpc.CommandQueuedData - CommandsChangedCommand = rpc.CommandsChangedCommand - CommandsChangedData = rpc.CommandsChangedData - CompactionCompleteCompactionTokensUsed = rpc.CompactionCompleteCompactionTokensUsed - CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail = rpc.CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail - CustomAgentsUpdatedAgent = rpc.CustomAgentsUpdatedAgent - CustomNotificationPayload = rpc.CustomNotificationPayload - ElicitationCompletedAction = rpc.ElicitationCompletedAction - ElicitationCompletedBooleanContent = rpc.ElicitationCompletedBooleanContent - ElicitationCompletedContent = rpc.ElicitationCompletedContent - ElicitationCompletedData = rpc.ElicitationCompletedData - ElicitationCompletedNumberContent = rpc.ElicitationCompletedNumberContent - ElicitationCompletedStringArrayContent = rpc.ElicitationCompletedStringArrayContent - ElicitationCompletedStringContent = rpc.ElicitationCompletedStringContent - ElicitationRequestedData = rpc.ElicitationRequestedData - ElicitationRequestedMode = rpc.ElicitationRequestedMode - ElicitationRequestedSchema = rpc.ElicitationRequestedSchema - ElicitationRequestedSchemaType = rpc.ElicitationRequestedSchemaType - EmbeddedBlobResourceContents = rpc.EmbeddedBlobResourceContents - EmbeddedTextResourceContents = rpc.EmbeddedTextResourceContents - ExitPlanModeAction = rpc.ExitPlanModeAction - ExitPlanModeCompletedData = rpc.ExitPlanModeCompletedData - ExitPlanModeRequestedData = rpc.ExitPlanModeRequestedData - ExtensionsLoadedExtension = rpc.ExtensionsLoadedExtension - ExtensionsLoadedExtensionSource = rpc.ExtensionsLoadedExtensionSource - ExtensionsLoadedExtensionStatus = rpc.ExtensionsLoadedExtensionStatus - ExternalToolCompletedData = rpc.ExternalToolCompletedData - ExternalToolRequestedData = rpc.ExternalToolRequestedData - HandoffRepository = rpc.HandoffRepository - HandoffSourceType = rpc.HandoffSourceType - HookEndData = rpc.HookEndData - HookEndError = rpc.HookEndError - HookStartData = rpc.HookStartData - McpOauthCompletedData = rpc.McpOauthCompletedData - McpOauthRequiredData = rpc.McpOauthRequiredData - McpOauthRequiredStaticClientConfig = rpc.McpOauthRequiredStaticClientConfig - McpOauthRequiredStaticClientConfigGrantType = rpc.McpOauthRequiredStaticClientConfigGrantType - McpServersLoadedServer = rpc.McpServersLoadedServer - McpServerSource = rpc.McpServerSource - McpServerStatus = rpc.McpServerStatus - ModelCallFailureData = rpc.ModelCallFailureData - ModelCallFailureSource = rpc.ModelCallFailureSource - PendingMessagesModifiedData = rpc.PendingMessagesModifiedData - PermissionApproved = rpc.PermissionApproved - PermissionApprovedForLocation = rpc.PermissionApprovedForLocation - PermissionApprovedForSession = rpc.PermissionApprovedForSession - PermissionCancelled = rpc.PermissionCancelled - PermissionCompletedData = rpc.PermissionCompletedData - PermissionDeniedByContentExclusionPolicy = rpc.PermissionDeniedByContentExclusionPolicy - PermissionDeniedByPermissionRequestHook = rpc.PermissionDeniedByPermissionRequestHook - PermissionDeniedByRules = rpc.PermissionDeniedByRules - PermissionDeniedInteractivelyByUser = rpc.PermissionDeniedInteractivelyByUser - PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser = rpc.PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser - PermissionPromptRequest = rpc.PermissionPromptRequest - PermissionPromptRequestCommands = rpc.PermissionPromptRequestCommands - PermissionPromptRequestCustomTool = rpc.PermissionPromptRequestCustomTool - PermissionPromptRequestExtensionManagement = rpc.PermissionPromptRequestExtensionManagement - PermissionPromptRequestExtensionPermissionAccess = rpc.PermissionPromptRequestExtensionPermissionAccess - PermissionPromptRequestHook = rpc.PermissionPromptRequestHook - PermissionPromptRequestKind = rpc.PermissionPromptRequestKind - PermissionPromptRequestMcp = rpc.PermissionPromptRequestMcp - PermissionPromptRequestMemory = rpc.PermissionPromptRequestMemory - PermissionPromptRequestPath = rpc.PermissionPromptRequestPath - PermissionPromptRequestPathAccessKind = rpc.PermissionPromptRequestPathAccessKind - PermissionPromptRequestRead = rpc.PermissionPromptRequestRead - PermissionPromptRequestURL = rpc.PermissionPromptRequestURL - PermissionPromptRequestWrite = rpc.PermissionPromptRequestWrite - PermissionRequest = rpc.PermissionRequest - PermissionRequestCommand = rpc.PermissionRequestCommand - PermissionRequestCustomTool = rpc.PermissionRequestCustomTool - PermissionRequestedData = rpc.PermissionRequestedData - PermissionRequestExtensionManagement = rpc.PermissionRequestExtensionManagement - PermissionRequestExtensionPermissionAccess = rpc.PermissionRequestExtensionPermissionAccess - PermissionRequestHook = rpc.PermissionRequestHook - PermissionRequestKind = rpc.PermissionRequestKind - PermissionRequestMcp = rpc.PermissionRequestMcp - PermissionRequestMemory = rpc.PermissionRequestMemory - PermissionRequestMemoryAction = rpc.PermissionRequestMemoryAction - PermissionRequestMemoryDirection = rpc.PermissionRequestMemoryDirection - PermissionRequestRead = rpc.PermissionRequestRead - PermissionRequestShell = rpc.PermissionRequestShell - PermissionRequestShellCommand = rpc.PermissionRequestShellCommand - PermissionRequestShellPossibleURL = rpc.PermissionRequestShellPossibleURL - PermissionRequestURL = rpc.PermissionRequestURL - PermissionRequestWrite = rpc.PermissionRequestWrite - PermissionResult = rpc.PermissionResult - PermissionResultKind = rpc.PermissionResultKind - PermissionRule = rpc.PermissionRule - PlanChangedOperation = rpc.PlanChangedOperation - PossibleURL = rpc.PossibleURL - RawPermissionPromptRequest = rpc.RawPermissionPromptRequest - RawPermissionRequest = rpc.RawPermissionRequest - RawPermissionResult = rpc.RawPermissionResult - RawSessionEventData = rpc.RawSessionEventData - RawSystemNotification = rpc.RawSystemNotification - RawToolExecutionCompleteContent = rpc.RawToolExecutionCompleteContent - RawUserMessageAttachment = rpc.RawUserMessageAttachment - ReasoningSummary = rpc.ReasoningSummary - SamplingCompletedData = rpc.SamplingCompletedData - SamplingRequestedData = rpc.SamplingRequestedData - SessionBackgroundTasksChangedData = rpc.SessionBackgroundTasksChangedData - SessionCompactionCompleteData = rpc.SessionCompactionCompleteData - SessionCompactionStartData = rpc.SessionCompactionStartData - SessionContextChangedData = rpc.SessionContextChangedData - SessionCustomAgentsUpdatedData = rpc.SessionCustomAgentsUpdatedData - SessionCustomNotificationData = rpc.SessionCustomNotificationData - SessionErrorData = rpc.SessionErrorData - SessionEvent = rpc.SessionEvent - SessionEventData = rpc.SessionEventData - SessionEventType = rpc.SessionEventType - SessionExtensionsLoadedData = rpc.SessionExtensionsLoadedData - SessionHandoffData = rpc.SessionHandoffData - SessionIdleData = rpc.SessionIdleData - SessionInfoData = rpc.SessionInfoData - SessionMcpServersLoadedData = rpc.SessionMcpServersLoadedData - SessionMcpServerStatusChangedData = rpc.SessionMcpServerStatusChangedData - SessionMode = rpc.SessionMode - SessionModeChangedData = rpc.SessionModeChangedData - SessionModelChangeData = rpc.SessionModelChangeData - SessionPlanChangedData = rpc.SessionPlanChangedData - SessionRemoteSteerableChangedData = rpc.SessionRemoteSteerableChangedData - SessionResumeData = rpc.SessionResumeData - SessionScheduleCancelledData = rpc.SessionScheduleCancelledData - SessionScheduleCreatedData = rpc.SessionScheduleCreatedData - SessionShutdownData = rpc.SessionShutdownData - SessionSkillsLoadedData = rpc.SessionSkillsLoadedData - SessionSnapshotRewindData = rpc.SessionSnapshotRewindData - SessionStartData = rpc.SessionStartData - SessionTaskCompleteData = rpc.SessionTaskCompleteData - SessionTitleChangedData = rpc.SessionTitleChangedData - SessionToolsUpdatedData = rpc.SessionToolsUpdatedData - SessionTruncationData = rpc.SessionTruncationData - SessionUsageInfoData = rpc.SessionUsageInfoData - SessionWarningData = rpc.SessionWarningData - SessionWorkspaceFileChangedData = rpc.SessionWorkspaceFileChangedData - ShutdownCodeChanges = rpc.ShutdownCodeChanges - ShutdownModelMetric = rpc.ShutdownModelMetric - ShutdownModelMetricRequests = rpc.ShutdownModelMetricRequests - ShutdownModelMetricTokenDetail = rpc.ShutdownModelMetricTokenDetail - ShutdownModelMetricUsage = rpc.ShutdownModelMetricUsage - ShutdownTokenDetail = rpc.ShutdownTokenDetail - ShutdownType = rpc.ShutdownType - SkillInvokedData = rpc.SkillInvokedData - SkillsLoadedSkill = rpc.SkillsLoadedSkill - SkillSource = rpc.SkillSource - SubagentCompletedData = rpc.SubagentCompletedData - SubagentDeselectedData = rpc.SubagentDeselectedData - SubagentFailedData = rpc.SubagentFailedData - SubagentSelectedData = rpc.SubagentSelectedData - SubagentStartedData = rpc.SubagentStartedData - SystemMessageData = rpc.SystemMessageData - SystemMessageMetadata = rpc.SystemMessageMetadata - SystemMessageRole = rpc.SystemMessageRole - SystemNotification = rpc.SystemNotification - SystemNotificationAgentCompleted = rpc.SystemNotificationAgentCompleted - SystemNotificationAgentCompletedStatus = rpc.SystemNotificationAgentCompletedStatus - SystemNotificationAgentIdle = rpc.SystemNotificationAgentIdle - SystemNotificationData = rpc.SystemNotificationData - SystemNotificationInstructionDiscovered = rpc.SystemNotificationInstructionDiscovered - SystemNotificationNewInboxMessage = rpc.SystemNotificationNewInboxMessage - SystemNotificationShellCompleted = rpc.SystemNotificationShellCompleted - SystemNotificationShellDetachedCompleted = rpc.SystemNotificationShellDetachedCompleted - SystemNotificationType = rpc.SystemNotificationType - ToolExecutionCompleteContent = rpc.ToolExecutionCompleteContent - ToolExecutionCompleteContentAudio = rpc.ToolExecutionCompleteContentAudio - ToolExecutionCompleteContentImage = rpc.ToolExecutionCompleteContentImage - ToolExecutionCompleteContentResource = rpc.ToolExecutionCompleteContentResource - ToolExecutionCompleteContentResourceDetails = rpc.ToolExecutionCompleteContentResourceDetails - ToolExecutionCompleteContentResourceLink = rpc.ToolExecutionCompleteContentResourceLink - ToolExecutionCompleteContentResourceLinkIcon = rpc.ToolExecutionCompleteContentResourceLinkIcon - ToolExecutionCompleteContentResourceLinkIconTheme = rpc.ToolExecutionCompleteContentResourceLinkIconTheme - ToolExecutionCompleteContentTerminal = rpc.ToolExecutionCompleteContentTerminal - ToolExecutionCompleteContentText = rpc.ToolExecutionCompleteContentText - ToolExecutionCompleteContentType = rpc.ToolExecutionCompleteContentType - ToolExecutionCompleteData = rpc.ToolExecutionCompleteData - ToolExecutionCompleteError = rpc.ToolExecutionCompleteError - ToolExecutionCompleteResult = rpc.ToolExecutionCompleteResult - ToolExecutionPartialResultData = rpc.ToolExecutionPartialResultData - ToolExecutionProgressData = rpc.ToolExecutionProgressData - ToolExecutionStartData = rpc.ToolExecutionStartData - ToolUserRequestedData = rpc.ToolUserRequestedData - UserInputCompletedData = rpc.UserInputCompletedData - UserInputRequestedData = rpc.UserInputRequestedData - UserMessageAgentMode = rpc.UserMessageAgentMode - UserMessageAttachment = rpc.UserMessageAttachment - UserMessageAttachmentBlob = rpc.UserMessageAttachmentBlob - UserMessageAttachmentDirectory = rpc.UserMessageAttachmentDirectory - UserMessageAttachmentFile = rpc.UserMessageAttachmentFile - UserMessageAttachmentFileLineRange = rpc.UserMessageAttachmentFileLineRange - UserMessageAttachmentGithubReference = rpc.UserMessageAttachmentGithubReference - UserMessageAttachmentGithubReferenceType = rpc.UserMessageAttachmentGithubReferenceType - UserMessageAttachmentSelection = rpc.UserMessageAttachmentSelection - UserMessageAttachmentSelectionDetails = rpc.UserMessageAttachmentSelectionDetails - UserMessageAttachmentSelectionDetailsEnd = rpc.UserMessageAttachmentSelectionDetailsEnd - UserMessageAttachmentSelectionDetailsStart = rpc.UserMessageAttachmentSelectionDetailsStart - UserMessageAttachmentType = rpc.UserMessageAttachmentType - UserMessageData = rpc.UserMessageData - UserToolSessionApproval = rpc.UserToolSessionApproval - UserToolSessionApprovalCommands = rpc.UserToolSessionApprovalCommands - UserToolSessionApprovalCustomTool = rpc.UserToolSessionApprovalCustomTool - UserToolSessionApprovalExtensionManagement = rpc.UserToolSessionApprovalExtensionManagement - UserToolSessionApprovalExtensionPermissionAccess = rpc.UserToolSessionApprovalExtensionPermissionAccess - UserToolSessionApprovalMcp = rpc.UserToolSessionApprovalMcp - UserToolSessionApprovalMemory = rpc.UserToolSessionApprovalMemory - UserToolSessionApprovalRead = rpc.UserToolSessionApprovalRead - UserToolSessionApprovalWrite = rpc.UserToolSessionApprovalWrite - WorkingDirectoryContext = rpc.WorkingDirectoryContext - WorkingDirectoryContextHostType = rpc.WorkingDirectoryContextHostType - WorkspaceFileChangedOperation = rpc.WorkspaceFileChangedOperation + AbortData = rpc.AbortData + AbortReason = rpc.AbortReason + AssistantIntentData = rpc.AssistantIntentData + AssistantMessageData = rpc.AssistantMessageData + AssistantMessageDeltaData = rpc.AssistantMessageDeltaData + AssistantMessageStartData = rpc.AssistantMessageStartData + AssistantMessageToolRequest = rpc.AssistantMessageToolRequest + AssistantMessageToolRequestType = rpc.AssistantMessageToolRequestType + AssistantReasoningData = rpc.AssistantReasoningData + AssistantReasoningDeltaData = rpc.AssistantReasoningDeltaData + AssistantStreamingDeltaData = rpc.AssistantStreamingDeltaData + AssistantTurnEndData = rpc.AssistantTurnEndData + AssistantTurnStartData = rpc.AssistantTurnStartData + AssistantUsageAPIEndpoint = rpc.AssistantUsageAPIEndpoint + AssistantUsageCopilotUsageTokenDetail = rpc.AssistantUsageCopilotUsageTokenDetail + AssistantUsageData = rpc.AssistantUsageData + Attachment = rpc.Attachment + AttachmentType = rpc.AttachmentType + AutoModeSwitchCompletedData = rpc.AutoModeSwitchCompletedData + AutoModeSwitchRequestedData = rpc.AutoModeSwitchRequestedData + AutoModeSwitchResponse = rpc.AutoModeSwitchResponse + CapabilitiesChangedData = rpc.CapabilitiesChangedData + CapabilitiesChangedUI = rpc.CapabilitiesChangedUI + CommandCompletedData = rpc.CommandCompletedData + CommandExecuteData = rpc.CommandExecuteData + CommandQueuedData = rpc.CommandQueuedData + CommandsChangedCommand = rpc.CommandsChangedCommand + CommandsChangedData = rpc.CommandsChangedData + CompactionCompleteCompactionTokensUsed = rpc.CompactionCompleteCompactionTokensUsed + CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail = rpc.CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail + CustomAgentsUpdatedAgent = rpc.CustomAgentsUpdatedAgent + CustomNotificationPayload = rpc.CustomNotificationPayload + ElicitationCompletedAction = rpc.ElicitationCompletedAction + ElicitationCompletedBooleanContent = rpc.ElicitationCompletedBooleanContent + ElicitationCompletedContent = rpc.ElicitationCompletedContent + ElicitationCompletedData = rpc.ElicitationCompletedData + ElicitationCompletedNumberContent = rpc.ElicitationCompletedNumberContent + ElicitationCompletedStringArrayContent = rpc.ElicitationCompletedStringArrayContent + ElicitationCompletedStringContent = rpc.ElicitationCompletedStringContent + ElicitationRequestedData = rpc.ElicitationRequestedData + ElicitationRequestedMode = rpc.ElicitationRequestedMode + ElicitationRequestedSchema = rpc.ElicitationRequestedSchema + ElicitationRequestedSchemaType = rpc.ElicitationRequestedSchemaType + EmbeddedBlobResourceContents = rpc.EmbeddedBlobResourceContents + EmbeddedTextResourceContents = rpc.EmbeddedTextResourceContents + ExitPlanModeAction = rpc.ExitPlanModeAction + ExitPlanModeCompletedData = rpc.ExitPlanModeCompletedData + ExitPlanModeRequestedData = rpc.ExitPlanModeRequestedData + ExtensionsLoadedExtension = rpc.ExtensionsLoadedExtension + ExtensionsLoadedExtensionSource = rpc.ExtensionsLoadedExtensionSource + ExtensionsLoadedExtensionStatus = rpc.ExtensionsLoadedExtensionStatus + ExternalToolCompletedData = rpc.ExternalToolCompletedData + ExternalToolRequestedData = rpc.ExternalToolRequestedData + HandoffRepository = rpc.HandoffRepository + HandoffSourceType = rpc.HandoffSourceType + HookEndData = rpc.HookEndData + HookEndError = rpc.HookEndError + HookStartData = rpc.HookStartData + McpAppToolCallCompleteData = rpc.McpAppToolCallCompleteData + McpAppToolCallCompleteError = rpc.McpAppToolCallCompleteError + McpAppToolCallCompleteToolMeta = rpc.McpAppToolCallCompleteToolMeta + McpAppToolCallCompleteToolMetaUI = rpc.McpAppToolCallCompleteToolMetaUI + McpOauthCompletedData = rpc.McpOauthCompletedData + McpOauthRequiredData = rpc.McpOauthRequiredData + McpOauthRequiredStaticClientConfig = rpc.McpOauthRequiredStaticClientConfig + McpOauthRequiredStaticClientConfigGrantType = rpc.McpOauthRequiredStaticClientConfigGrantType + McpServersLoadedServer = rpc.McpServersLoadedServer + McpServerSource = rpc.McpServerSource + McpServerStatus = rpc.McpServerStatus + McpServerTransport = rpc.McpServerTransport + ModelCallFailureData = rpc.ModelCallFailureData + ModelCallFailureSource = rpc.ModelCallFailureSource + PendingMessagesModifiedData = rpc.PendingMessagesModifiedData + PermissionApproved = rpc.PermissionApproved + PermissionApprovedForLocation = rpc.PermissionApprovedForLocation + PermissionApprovedForSession = rpc.PermissionApprovedForSession + PermissionCancelled = rpc.PermissionCancelled + PermissionCompletedData = rpc.PermissionCompletedData + PermissionDeniedByContentExclusionPolicy = rpc.PermissionDeniedByContentExclusionPolicy + PermissionDeniedByPermissionRequestHook = rpc.PermissionDeniedByPermissionRequestHook + PermissionDeniedByRules = rpc.PermissionDeniedByRules + PermissionDeniedInteractivelyByUser = rpc.PermissionDeniedInteractivelyByUser + PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser = rpc.PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser + PermissionPromptRequest = rpc.PermissionPromptRequest + PermissionPromptRequestCommands = rpc.PermissionPromptRequestCommands + PermissionPromptRequestCustomTool = rpc.PermissionPromptRequestCustomTool + PermissionPromptRequestExtensionManagement = rpc.PermissionPromptRequestExtensionManagement + PermissionPromptRequestExtensionPermissionAccess = rpc.PermissionPromptRequestExtensionPermissionAccess + PermissionPromptRequestHook = rpc.PermissionPromptRequestHook + PermissionPromptRequestKind = rpc.PermissionPromptRequestKind + PermissionPromptRequestMcp = rpc.PermissionPromptRequestMcp + PermissionPromptRequestMemory = rpc.PermissionPromptRequestMemory + PermissionPromptRequestPath = rpc.PermissionPromptRequestPath + PermissionPromptRequestPathAccessKind = rpc.PermissionPromptRequestPathAccessKind + PermissionPromptRequestRead = rpc.PermissionPromptRequestRead + PermissionPromptRequestURL = rpc.PermissionPromptRequestURL + PermissionPromptRequestWrite = rpc.PermissionPromptRequestWrite + PermissionRequest = rpc.PermissionRequest + PermissionRequestCommand = rpc.PermissionRequestCommand + PermissionRequestCustomTool = rpc.PermissionRequestCustomTool + PermissionRequestedData = rpc.PermissionRequestedData + PermissionRequestExtensionManagement = rpc.PermissionRequestExtensionManagement + PermissionRequestExtensionPermissionAccess = rpc.PermissionRequestExtensionPermissionAccess + PermissionRequestHook = rpc.PermissionRequestHook + PermissionRequestKind = rpc.PermissionRequestKind + PermissionRequestMcp = rpc.PermissionRequestMcp + PermissionRequestMemory = rpc.PermissionRequestMemory + PermissionRequestMemoryAction = rpc.PermissionRequestMemoryAction + PermissionRequestMemoryDirection = rpc.PermissionRequestMemoryDirection + PermissionRequestRead = rpc.PermissionRequestRead + PermissionRequestShell = rpc.PermissionRequestShell + PermissionRequestShellCommand = rpc.PermissionRequestShellCommand + PermissionRequestShellPossibleURL = rpc.PermissionRequestShellPossibleURL + PermissionRequestURL = rpc.PermissionRequestURL + PermissionRequestWrite = rpc.PermissionRequestWrite + PermissionResult = rpc.PermissionResult + PermissionResultKind = rpc.PermissionResultKind + PermissionRule = rpc.PermissionRule + PlanChangedOperation = rpc.PlanChangedOperation + PossibleURL = rpc.PossibleURL + RawPermissionPromptRequest = rpc.RawPermissionPromptRequest + RawPermissionRequest = rpc.RawPermissionRequest + RawPermissionResult = rpc.RawPermissionResult + RawSessionEventData = rpc.RawSessionEventData + RawSystemNotification = rpc.RawSystemNotification + RawToolExecutionCompleteContent = rpc.RawToolExecutionCompleteContent + RawUserMessageAttachment = rpc.RawUserMessageAttachment + ReasoningSummary = rpc.ReasoningSummary + SamplingCompletedData = rpc.SamplingCompletedData + SamplingRequestedData = rpc.SamplingRequestedData + SessionBackgroundTasksChangedData = rpc.SessionBackgroundTasksChangedData + SessionCompactionCompleteData = rpc.SessionCompactionCompleteData + SessionCompactionStartData = rpc.SessionCompactionStartData + SessionContextChangedData = rpc.SessionContextChangedData + SessionCustomAgentsUpdatedData = rpc.SessionCustomAgentsUpdatedData + SessionCustomNotificationData = rpc.SessionCustomNotificationData + SessionErrorData = rpc.SessionErrorData + SessionEvent = rpc.SessionEvent + SessionEventData = rpc.SessionEventData + SessionEventType = rpc.SessionEventType + SessionExtensionsLoadedData = rpc.SessionExtensionsLoadedData + SessionHandoffData = rpc.SessionHandoffData + SessionIdleData = rpc.SessionIdleData + SessionInfoData = rpc.SessionInfoData + SessionMcpServersLoadedData = rpc.SessionMcpServersLoadedData + SessionMcpServerStatusChangedData = rpc.SessionMcpServerStatusChangedData + SessionMode = rpc.SessionMode + SessionModeChangedData = rpc.SessionModeChangedData + SessionModelChangeData = rpc.SessionModelChangeData + SessionModelChangeDataContextTier = rpc.SessionModelChangeDataContextTier + SessionPlanChangedData = rpc.SessionPlanChangedData + SessionRemoteSteerableChangedData = rpc.SessionRemoteSteerableChangedData + SessionResumeData = rpc.SessionResumeData + SessionScheduleCancelledData = rpc.SessionScheduleCancelledData + SessionScheduleCreatedData = rpc.SessionScheduleCreatedData + SessionShutdownData = rpc.SessionShutdownData + SessionSkillsLoadedData = rpc.SessionSkillsLoadedData + SessionSnapshotRewindData = rpc.SessionSnapshotRewindData + SessionStartData = rpc.SessionStartData + SessionTaskCompleteData = rpc.SessionTaskCompleteData + SessionTitleChangedData = rpc.SessionTitleChangedData + SessionToolsUpdatedData = rpc.SessionToolsUpdatedData + SessionTruncationData = rpc.SessionTruncationData + SessionUsageInfoData = rpc.SessionUsageInfoData + SessionWarningData = rpc.SessionWarningData + SessionWorkspaceFileChangedData = rpc.SessionWorkspaceFileChangedData + ShutdownCodeChanges = rpc.ShutdownCodeChanges + ShutdownModelMetric = rpc.ShutdownModelMetric + ShutdownModelMetricRequests = rpc.ShutdownModelMetricRequests + ShutdownModelMetricTokenDetail = rpc.ShutdownModelMetricTokenDetail + ShutdownModelMetricUsage = rpc.ShutdownModelMetricUsage + ShutdownTokenDetail = rpc.ShutdownTokenDetail + ShutdownType = rpc.ShutdownType + SkillInvokedData = rpc.SkillInvokedData + SkillInvokedTrigger = rpc.SkillInvokedTrigger + SkillsLoadedSkill = rpc.SkillsLoadedSkill + SkillSource = rpc.SkillSource + SubagentCompletedData = rpc.SubagentCompletedData + SubagentDeselectedData = rpc.SubagentDeselectedData + SubagentFailedData = rpc.SubagentFailedData + SubagentSelectedData = rpc.SubagentSelectedData + SubagentStartedData = rpc.SubagentStartedData + SystemMessageData = rpc.SystemMessageData + SystemMessageMetadata = rpc.SystemMessageMetadata + SystemMessageRole = rpc.SystemMessageRole + SystemNotification = rpc.SystemNotification + SystemNotificationAgentCompleted = rpc.SystemNotificationAgentCompleted + SystemNotificationAgentCompletedStatus = rpc.SystemNotificationAgentCompletedStatus + SystemNotificationAgentIdle = rpc.SystemNotificationAgentIdle + SystemNotificationData = rpc.SystemNotificationData + SystemNotificationInstructionDiscovered = rpc.SystemNotificationInstructionDiscovered + SystemNotificationNewInboxMessage = rpc.SystemNotificationNewInboxMessage + SystemNotificationShellCompleted = rpc.SystemNotificationShellCompleted + SystemNotificationShellDetachedCompleted = rpc.SystemNotificationShellDetachedCompleted + SystemNotificationType = rpc.SystemNotificationType + ToolExecutionCompleteContent = rpc.ToolExecutionCompleteContent + ToolExecutionCompleteContentAudio = rpc.ToolExecutionCompleteContentAudio + ToolExecutionCompleteContentImage = rpc.ToolExecutionCompleteContentImage + ToolExecutionCompleteContentResource = rpc.ToolExecutionCompleteContentResource + ToolExecutionCompleteContentResourceDetails = rpc.ToolExecutionCompleteContentResourceDetails + ToolExecutionCompleteContentResourceLink = rpc.ToolExecutionCompleteContentResourceLink + ToolExecutionCompleteContentResourceLinkIcon = rpc.ToolExecutionCompleteContentResourceLinkIcon + ToolExecutionCompleteContentResourceLinkIconTheme = rpc.ToolExecutionCompleteContentResourceLinkIconTheme + ToolExecutionCompleteContentTerminal = rpc.ToolExecutionCompleteContentTerminal + ToolExecutionCompleteContentText = rpc.ToolExecutionCompleteContentText + ToolExecutionCompleteContentType = rpc.ToolExecutionCompleteContentType + ToolExecutionCompleteData = rpc.ToolExecutionCompleteData + ToolExecutionCompleteError = rpc.ToolExecutionCompleteError + ToolExecutionCompleteResult = rpc.ToolExecutionCompleteResult + ToolExecutionCompleteToolDescription = rpc.ToolExecutionCompleteToolDescription + ToolExecutionCompleteToolDescriptionMeta = rpc.ToolExecutionCompleteToolDescriptionMeta + ToolExecutionCompleteToolDescriptionMetaUI = rpc.ToolExecutionCompleteToolDescriptionMetaUI + ToolExecutionCompleteToolDescriptionMetaUIVisibility = rpc.ToolExecutionCompleteToolDescriptionMetaUIVisibility + ToolExecutionCompleteUIResource = rpc.ToolExecutionCompleteUIResource + ToolExecutionCompleteUIResourceMeta = rpc.ToolExecutionCompleteUIResourceMeta + ToolExecutionCompleteUIResourceMetaUI = rpc.ToolExecutionCompleteUIResourceMetaUI + ToolExecutionCompleteUIResourceMetaUICsp = rpc.ToolExecutionCompleteUIResourceMetaUICsp + ToolExecutionCompleteUIResourceMetaUIPermissions = rpc.ToolExecutionCompleteUIResourceMetaUIPermissions + ToolExecutionCompleteUIResourceMetaUIPermissionsCamera = rpc.ToolExecutionCompleteUIResourceMetaUIPermissionsCamera + ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite = rpc.ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite + ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation = rpc.ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation + ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone = rpc.ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone + ToolExecutionPartialResultData = rpc.ToolExecutionPartialResultData + ToolExecutionProgressData = rpc.ToolExecutionProgressData + ToolExecutionStartData = rpc.ToolExecutionStartData + ToolUserRequestedData = rpc.ToolUserRequestedData + UserInputCompletedData = rpc.UserInputCompletedData + UserInputRequestedData = rpc.UserInputRequestedData + UserMessageAgentMode = rpc.UserMessageAgentMode + UserMessageAttachment = rpc.UserMessageAttachment + UserMessageAttachmentBlob = rpc.UserMessageAttachmentBlob + UserMessageAttachmentDirectory = rpc.UserMessageAttachmentDirectory + UserMessageAttachmentFile = rpc.UserMessageAttachmentFile + UserMessageAttachmentFileLineRange = rpc.UserMessageAttachmentFileLineRange + UserMessageAttachmentGithubReference = rpc.UserMessageAttachmentGithubReference + UserMessageAttachmentGithubReferenceType = rpc.UserMessageAttachmentGithubReferenceType + UserMessageAttachmentSelection = rpc.UserMessageAttachmentSelection + UserMessageAttachmentSelectionDetails = rpc.UserMessageAttachmentSelectionDetails + UserMessageAttachmentSelectionDetailsEnd = rpc.UserMessageAttachmentSelectionDetailsEnd + UserMessageAttachmentSelectionDetailsStart = rpc.UserMessageAttachmentSelectionDetailsStart + UserMessageAttachmentType = rpc.UserMessageAttachmentType + UserMessageData = rpc.UserMessageData + UserToolSessionApproval = rpc.UserToolSessionApproval + UserToolSessionApprovalCommands = rpc.UserToolSessionApprovalCommands + UserToolSessionApprovalCustomTool = rpc.UserToolSessionApprovalCustomTool + UserToolSessionApprovalExtensionManagement = rpc.UserToolSessionApprovalExtensionManagement + UserToolSessionApprovalExtensionPermissionAccess = rpc.UserToolSessionApprovalExtensionPermissionAccess + UserToolSessionApprovalMcp = rpc.UserToolSessionApprovalMcp + UserToolSessionApprovalMemory = rpc.UserToolSessionApprovalMemory + UserToolSessionApprovalRead = rpc.UserToolSessionApprovalRead + UserToolSessionApprovalWrite = rpc.UserToolSessionApprovalWrite + WorkingDirectoryContext = rpc.WorkingDirectoryContext + WorkingDirectoryContextHostType = rpc.WorkingDirectoryContextHostType + WorkspaceFileChangedOperation = rpc.WorkspaceFileChangedOperation ) // Session-event constants are generated in the rpc package and re-exported here for source compatibility. @@ -291,6 +311,10 @@ const ( McpServerStatusNeedsAuth = rpc.McpServerStatusNeedsAuth McpServerStatusNotConfigured = rpc.McpServerStatusNotConfigured McpServerStatusPending = rpc.McpServerStatusPending + McpServerTransportHTTP = rpc.McpServerTransportHTTP + McpServerTransportMemory = rpc.McpServerTransportMemory + McpServerTransportSse = rpc.McpServerTransportSse + McpServerTransportStdio = rpc.McpServerTransportStdio ModelCallFailureSourceMcpSampling = rpc.ModelCallFailureSourceMcpSampling ModelCallFailureSourceSubagent = rpc.ModelCallFailureSourceSubagent ModelCallFailureSourceTopLevel = rpc.ModelCallFailureSourceTopLevel @@ -363,6 +387,7 @@ const ( SessionEventTypeExternalToolRequested = rpc.SessionEventTypeExternalToolRequested SessionEventTypeHookEnd = rpc.SessionEventTypeHookEnd SessionEventTypeHookStart = rpc.SessionEventTypeHookStart + SessionEventTypeMcpAppToolCallComplete = rpc.SessionEventTypeMcpAppToolCallComplete SessionEventTypeMcpOauthCompleted = rpc.SessionEventTypeMcpOauthCompleted SessionEventTypeMcpOauthRequired = rpc.SessionEventTypeMcpOauthRequired SessionEventTypeModelCallFailure = rpc.SessionEventTypeModelCallFailure @@ -420,9 +445,14 @@ const ( SessionEventTypeUserMessage = rpc.SessionEventTypeUserMessage SessionModeAutopilot = rpc.SessionModeAutopilot SessionModeInteractive = rpc.SessionModeInteractive + SessionModelChangeDataContextTierDefault = rpc.SessionModelChangeDataContextTierDefault + SessionModelChangeDataContextTierLongContext = rpc.SessionModelChangeDataContextTierLongContext SessionModePlan = rpc.SessionModePlan ShutdownTypeError = rpc.ShutdownTypeError ShutdownTypeRoutine = rpc.ShutdownTypeRoutine + SkillInvokedTriggerAgentInvoked = rpc.SkillInvokedTriggerAgentInvoked + SkillInvokedTriggerContextLoad = rpc.SkillInvokedTriggerContextLoad + SkillInvokedTriggerUserInvoked = rpc.SkillInvokedTriggerUserInvoked SkillSourceBuiltin = rpc.SkillSourceBuiltin SkillSourceCustom = rpc.SkillSourceCustom SkillSourceInherited = rpc.SkillSourceInherited @@ -448,6 +478,8 @@ const ( ToolExecutionCompleteContentTypeResourceLink = rpc.ToolExecutionCompleteContentTypeResourceLink ToolExecutionCompleteContentTypeTerminal = rpc.ToolExecutionCompleteContentTypeTerminal ToolExecutionCompleteContentTypeText = rpc.ToolExecutionCompleteContentTypeText + ToolExecutionCompleteToolDescriptionMetaUIVisibilityApp = rpc.ToolExecutionCompleteToolDescriptionMetaUIVisibilityApp + ToolExecutionCompleteToolDescriptionMetaUIVisibilityModel = rpc.ToolExecutionCompleteToolDescriptionMetaUIVisibilityModel UserMessageAgentModeAutopilot = rpc.UserMessageAgentModeAutopilot UserMessageAgentModeInteractive = rpc.UserMessageAgentModeInteractive UserMessageAgentModePlan = rpc.UserMessageAgentModePlan diff --git a/java/.lastmerge b/java/.lastmerge index 88ed2a9523..473fef56df 100644 --- a/java/.lastmerge +++ b/java/.lastmerge @@ -1 +1 @@ -f6c1adf8329ad4206e5ed2e8d12fb8082bc841a2 +f4d22d70016c377881d86e4c77f8a3f93746ffae diff --git a/java/pom.xml b/java/pom.xml index 066822acc6..de27271119 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -94,7 +94,7 @@ reference-impl-sync workflow and deal with the subsequent PR. --> - ^1.0.49-1 + ^1.0.52-1 @@ -321,7 +321,7 @@ CompactionTest) where snapshot matching can be sensitive to non-deterministic compaction behaviour. Revisit this once this issue is successfully resolved. - https://github.com/github/copilot-sdk/issues/1227 + https://github.com/github/copilot-sdk/issues/1227 --> 2 diff --git a/java/scripts/codegen/java.ts b/java/scripts/codegen/java.ts index 0a96ab9f14..34bc83a9d5 100644 --- a/java/scripts/codegen/java.ts +++ b/java/scripts/codegen/java.ts @@ -37,9 +37,25 @@ function toJavaClassName(typeName: string): string { return typeName.split(/[._]/).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(""); } +/** Java reserved keywords and Object method names that cannot be used as record component names. */ +const JAVA_RESERVED_IDENTIFIERS = new Set([ + "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", + "continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float", + "for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", + "new", "package", "private", "protected", "public", "return", "short", "static", "strictfp", + "super", "switch", "synchronized", "this", "throw", "throws", "transient", "try", "void", + "volatile", "while", + // Object methods that conflict with record component accessor names + "wait", "notify", "notifyAll", "getClass", "clone", "finalize", "toString", "hashCode", "equals", +]); + function toCamelCase(name: string): string { const pascal = toPascalCase(name); - return pascal.charAt(0).toLowerCase() + pascal.slice(1); + let result = pascal.charAt(0).toLowerCase() + pascal.slice(1); + if (JAVA_RESERVED_IDENTIFIERS.has(result)) { + result = result + "_"; + } + return result; } function toEnumConstant(value: string): string { @@ -102,6 +118,11 @@ interface JavaTypeResult { let currentDefinitions: Record = {}; const pendingStandaloneTypes = new Map(); +// Cross-schema definitions: keyed by schema filename (e.g. "session-events.schema.json"), +// value is the definitions map from that schema. Populated by generateRpcTypes so that +// cross-schema $ref values like "session-events.schema.json#/definitions/Foo" can be resolved. +const crossSchemaDefinitions = new Map>(); + /** * Resolve a $ref in a JSON Schema against the current definitions. * Returns the resolved schema, or the original if no $ref is present. @@ -131,6 +152,28 @@ function schemaTypeToJava( // Resolve $ref first — register standalone types for generation if (schema.$ref) { + // Handle cross-schema $ref (e.g. "session-events.schema.json#/definitions/Foo") + const crossSchemaMatch = schema.$ref.match(/^([^#]+)#\/definitions\/(.+)$/); + if (crossSchemaMatch) { + const [, schemaFile, typeName] = crossSchemaMatch; + const externalDefs = crossSchemaDefinitions.get(schemaFile); + if (externalDefs) { + const resolved = externalDefs[typeName]; + if (resolved) { + // Save and swap currentDefinitions so recursive calls resolve against + // the external schema's definitions. + const savedDefs = currentDefinitions; + currentDefinitions = externalDefs; + const result = schemaTypeToJava(resolved, required, context, propName, nestedTypes); + currentDefinitions = savedDefs; + return result; + } + } + // Fallback: extract just the type name and warn + console.warn(`[codegen] Unresolved cross-schema $ref: ${schema.$ref}`); + return { javaType: typeName, imports }; + } + const name = schema.$ref.replace(/^#\/definitions\//, ""); const resolved = currentDefinitions[name]; if (resolved) { @@ -883,6 +926,19 @@ async function generateRpcTypes(schemaPath: string): Promise { // Set module-level definitions for $ref resolution currentDefinitions = (schema.definitions ?? {}) as Record; pendingStandaloneTypes.clear(); + crossSchemaDefinitions.clear(); + + // Load cross-schema definitions (session-events) so that cross-schema $ref values + // like "session-events.schema.json#/definitions/Foo" can be resolved. + try { + const sessionEventsSchemaPath = await getSessionEventsSchemaPath(); + const sessionEventsContent = await fs.readFile(sessionEventsSchemaPath, "utf-8"); + const sessionEventsSchema = JSON.parse(sessionEventsContent) as JSONSchema7; + crossSchemaDefinitions.set("session-events.schema.json", + (sessionEventsSchema.definitions ?? {}) as Record); + } catch (e) { + console.warn(`[codegen] Could not load session-events schema for cross-ref resolution: ${e}`); + } const packageName = "com.github.copilot.sdk.generated.rpc"; const packageDir = `src/generated/java/com/github/copilot/sdk/generated/rpc`; diff --git a/java/scripts/codegen/package-lock.json b/java/scripts/codegen/package-lock.json index c1d610b39d..436d4f19a4 100644 --- a/java/scripts/codegen/package-lock.json +++ b/java/scripts/codegen/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "copilot-sdk-java-codegen", "dependencies": { - "@github/copilot": "^1.0.49-1", + "@github/copilot": "^1.0.52-1", "json-schema": "^0.4.0", "tsx": "^4.20.6" } @@ -428,28 +428,31 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.49-3", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.49-3.tgz", - "integrity": "sha512-MoaUolkTfeDTeUpKjzLNZLyykdJmhW7xNEzSmM+zz9erZE0St1ACFz3TigJMM05r4L1cPR6j1TY37XfPExqdyg==", + "version": "1.0.52-1", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.52-1.tgz", + "integrity": "sha512-oz6m/dOpTU+FaCWXqYZj5JkJmRT+/RYcrmtGal39V+gOxTA2Nc9wIeLH1SMwMoOXC9Q6DN6keiY0wqWcHirPVg==", "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "detect-libc": "^2.1.2" + }, "bin": { "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.49-3", - "@github/copilot-darwin-x64": "1.0.49-3", - "@github/copilot-linux-arm64": "1.0.49-3", - "@github/copilot-linux-x64": "1.0.49-3", - "@github/copilot-linuxmusl-arm64": "1.0.49-3", - "@github/copilot-linuxmusl-x64": "1.0.49-3", - "@github/copilot-win32-arm64": "1.0.49-3", - "@github/copilot-win32-x64": "1.0.49-3" + "@github/copilot-darwin-arm64": "1.0.52-1", + "@github/copilot-darwin-x64": "1.0.52-1", + "@github/copilot-linux-arm64": "1.0.52-1", + "@github/copilot-linux-x64": "1.0.52-1", + "@github/copilot-linuxmusl-arm64": "1.0.52-1", + "@github/copilot-linuxmusl-x64": "1.0.52-1", + "@github/copilot-win32-arm64": "1.0.52-1", + "@github/copilot-win32-x64": "1.0.52-1" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.49-3", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.49-3.tgz", - "integrity": "sha512-z6WpgoT+aro2nuA2zGfpxsMPtGSS3ZNACXERjfBxBzEoVjTMJi8kD1tpHFIPPCcLfaLniIi01Q6rvxMmZC6iKw==", + "version": "1.0.52-1", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.52-1.tgz", + "integrity": "sha512-DWXtC/yItZVtkSQhPyRMEkFwa2mcY2rg2cu/uwJ15L9ReiYvlKYEZQDe1TMqkT+U6+k9KjA2L2HQfXVm14/vTw==", "cpu": [ "arm64" ], @@ -463,9 +466,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.49-3", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.49-3.tgz", - "integrity": "sha512-ox9zs0uaFroB5SujopKFMz6/1shs2JsI5eIx4Kb/gugDrwU+Y3VVJJLw+dbEElJjQOCsb33kD9n+MsV1T6dubA==", + "version": "1.0.52-1", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.52-1.tgz", + "integrity": "sha512-NFTJkzzlTALMfbj9CDJ7N09PRPTVFq1+71hk+zoNx1uT/pi954liV6tKSaNAihPIXTMQKfJXGwEdjtvACpc8Vg==", "cpu": [ "x64" ], @@ -479,9 +482,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.49-3", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.49-3.tgz", - "integrity": "sha512-1uZaRtTH5H8HcPWKiN7eWJHsmmaW+tq6Eaxdme95Dfup4G9hemZMDHfdTjPXjZ6xykuoVKqWgC6knlk71JTWxQ==", + "version": "1.0.52-1", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.52-1.tgz", + "integrity": "sha512-CZE29v+RPJClHgVE1rU+RpRWSG8lm48koRZ0taKVopqLRD6NWKjBOwFKYJojk08H8/K+BWr/paM5+R8hEZHxZw==", "cpu": [ "arm64" ], @@ -495,9 +498,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.49-3", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.49-3.tgz", - "integrity": "sha512-OebfGDDFFn+KbiEbSHX8TvXRe77JeH1SBJyzle5QRSD/nBqNGEkNClRMGm8M5/cqyke6TbRP2XmmAQAApJmaQA==", + "version": "1.0.52-1", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.52-1.tgz", + "integrity": "sha512-tJhLQV70TJLq3hPXg7P6pHPfE4vaT2nENIXZsHu6fBkOcsSAxX1APSv6Bkyfsiod8EfFHkcG2+n7VXiVg8WqFw==", "cpu": [ "x64" ], @@ -510,6 +513,79 @@ "copilot-linux-x64": "copilot" } }, + "node_modules/@github/copilot-linuxmusl-arm64": { + "version": "1.0.52-1", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.52-1.tgz", + "integrity": "sha512-u24wHsUumldUEPWX/5z5IEuJvixiQEYF82N04P1g65dvOknq+89dpj+GND4Rh3Vr5u13drgj5AJqkJbWB8N+EQ==", + "cpu": [ + "arm64" + ], + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "linux" + ], + "bin": { + "copilot-linuxmusl-arm64": "copilot" + } + }, + "node_modules/@github/copilot-linuxmusl-x64": { + "version": "1.0.52-1", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.52-1.tgz", + "integrity": "sha512-wM22FxcHL8NlnesKKQPPvtk4ojqefN7irU5tQcX+IunpD1izVQl7AOXhZyHoQ21zQnN0De8EapxOUc+WnvlxpA==", + "cpu": [ + "x64" + ], + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "linux" + ], + "bin": { + "copilot-linuxmusl-x64": "copilot" + } + }, + "node_modules/@github/copilot-win32-arm64": { + "version": "1.0.52-1", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.52-1.tgz", + "integrity": "sha512-ecvfl9N7DPSwpiT2ZNUSXR1ZrSKwpkByOU6VcNphh4RptPZ0iNfyRNLhFCwSfFz+FvB6z2LZi+F7jSzQ3SaT3w==", + "cpu": [ + "arm64" + ], + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "win32" + ], + "bin": { + "copilot-win32-arm64": "copilot.exe" + } + }, + "node_modules/@github/copilot-win32-x64": { + "version": "1.0.52-1", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.52-1.tgz", + "integrity": "sha512-a9Ct7krktP+/pfPdh/K57deYzzmL13e5Tb1pf5E152u4o/5xKzfgroNFUOzotFfFhs1jFhdzKCm3WHNLIvVEHA==", + "cpu": [ + "x64" + ], + "license": "SEE LICENSE IN LICENSE.md", + "optional": true, + "os": [ + "win32" + ], + "bin": { + "copilot-win32-x64": "copilot.exe" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/esbuild": { "version": "0.27.7", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", diff --git a/java/scripts/codegen/package.json b/java/scripts/codegen/package.json index 8726bacc12..672b42d654 100644 --- a/java/scripts/codegen/package.json +++ b/java/scripts/codegen/package.json @@ -7,7 +7,7 @@ "generate:java": "tsx java.ts" }, "dependencies": { - "@github/copilot": "^1.0.49-1", + "@github/copilot": "^1.0.52-1", "json-schema": "^0.4.0", "tsx": "^4.20.6" } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantMessageEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantMessageEvent.java index 98af7b90ad..ab58b24e5d 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantMessageEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantMessageEvent.java @@ -53,7 +53,7 @@ public record AssistantMessageEventData( /** Generation phase for phased-output models (e.g., thinking vs. response phases) */ @JsonProperty("phase") String phase, /** Actual output token count from the API response (completion_tokens), used for accurate token accounting */ - @JsonProperty("outputTokens") Double outputTokens, + @JsonProperty("outputTokens") Long outputTokens, /** CAPI interaction ID for correlating this message with upstream telemetry */ @JsonProperty("interactionId") String interactionId, /** GitHub request tracing ID (x-github-request-id header) for correlating with server-side logs */ diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantStreamingDeltaEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantStreamingDeltaEvent.java index 70707a56e3..31acae7c65 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantStreamingDeltaEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantStreamingDeltaEvent.java @@ -36,7 +36,7 @@ public final class AssistantStreamingDeltaEvent extends SessionEvent { @JsonInclude(JsonInclude.Include.NON_NULL) public record AssistantStreamingDeltaEventData( /** Cumulative total bytes received from the streaming response so far */ - @JsonProperty("totalResponseSizeBytes") Double totalResponseSizeBytes + @JsonProperty("totalResponseSizeBytes") Long totalResponseSizeBytes ) { } } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageCopilotUsageTokenDetail.java b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageCopilotUsageTokenDetail.java index 895f19030f..bea7cf162b 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageCopilotUsageTokenDetail.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageCopilotUsageTokenDetail.java @@ -22,11 +22,11 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record AssistantUsageCopilotUsageTokenDetail( /** Number of tokens in this billing batch */ - @JsonProperty("batchSize") Double batchSize, + @JsonProperty("batchSize") Long batchSize, /** Cost per batch of tokens */ - @JsonProperty("costPerBatch") Double costPerBatch, + @JsonProperty("costPerBatch") Long costPerBatch, /** Total token count for this entry */ - @JsonProperty("tokenCount") Double tokenCount, + @JsonProperty("tokenCount") Long tokenCount, /** Token category (e.g., "input", "output") */ @JsonProperty("tokenType") String tokenType ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageEvent.java index d704a862c3..7d06ae9a0c 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageEvent.java @@ -39,21 +39,21 @@ public record AssistantUsageEventData( /** Model identifier used for this API call */ @JsonProperty("model") String model, /** Number of input tokens consumed */ - @JsonProperty("inputTokens") Double inputTokens, + @JsonProperty("inputTokens") Long inputTokens, /** Number of output tokens produced */ - @JsonProperty("outputTokens") Double outputTokens, + @JsonProperty("outputTokens") Long outputTokens, /** Number of tokens read from prompt cache */ - @JsonProperty("cacheReadTokens") Double cacheReadTokens, + @JsonProperty("cacheReadTokens") Long cacheReadTokens, /** Number of tokens written to prompt cache */ - @JsonProperty("cacheWriteTokens") Double cacheWriteTokens, + @JsonProperty("cacheWriteTokens") Long cacheWriteTokens, /** Number of output tokens used for reasoning (e.g., chain-of-thought) */ - @JsonProperty("reasoningTokens") Double reasoningTokens, + @JsonProperty("reasoningTokens") Long reasoningTokens, /** Model multiplier cost for billing purposes */ @JsonProperty("cost") Double cost, /** Duration of the API call in milliseconds */ - @JsonProperty("duration") Double duration, + @JsonProperty("duration") Long duration, /** Time to first token in milliseconds. Only available for streaming requests */ - @JsonProperty("ttftMs") Double ttftMs, + @JsonProperty("timeToFirstTokenMs") Long timeToFirstTokenMs, /** Average inter-token latency in milliseconds. Only available for streaming requests */ @JsonProperty("interTokenLatencyMs") Double interTokenLatencyMs, /** What initiated this API call (e.g., "sub-agent", "mcp-sampling"); absent for user-initiated calls */ diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageQuotaSnapshot.java b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageQuotaSnapshot.java index 9e5675360e..1bfa2c0886 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageQuotaSnapshot.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/AssistantUsageQuotaSnapshot.java @@ -25,16 +25,16 @@ public record AssistantUsageQuotaSnapshot( /** Whether the user has an unlimited usage entitlement */ @JsonProperty("isUnlimitedEntitlement") Boolean isUnlimitedEntitlement, /** Total requests allowed by the entitlement */ - @JsonProperty("entitlementRequests") Double entitlementRequests, + @JsonProperty("entitlementRequests") Long entitlementRequests, /** Number of requests already consumed */ - @JsonProperty("usedRequests") Double usedRequests, + @JsonProperty("usedRequests") Long usedRequests, /** Whether usage is still permitted after quota exhaustion */ @JsonProperty("usageAllowedWithExhaustedQuota") Boolean usageAllowedWithExhaustedQuota, - /** Number of requests over the entitlement limit */ + /** Number of additional usage requests made this period */ @JsonProperty("overage") Double overage, - /** Whether overage is allowed when quota is exhausted */ + /** Whether additional usage is allowed when quota is exhausted */ @JsonProperty("overageAllowedWithExhaustedQuota") Boolean overageAllowedWithExhaustedQuota, - /** Percentage of quota remaining (0.0 to 1.0) */ + /** Percentage of quota remaining (0 to 100) */ @JsonProperty("remainingPercentage") Double remainingPercentage, /** Date when the quota resets */ @JsonProperty("resetDate") OffsetDateTime resetDate diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/AutoModeSwitchRequestedEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/AutoModeSwitchRequestedEvent.java index b1a768adc9..4c68eb746a 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/AutoModeSwitchRequestedEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/AutoModeSwitchRequestedEvent.java @@ -40,7 +40,7 @@ public record AutoModeSwitchRequestedEventData( /** The rate limit error code that triggered this request */ @JsonProperty("errorCode") String errorCode, /** Seconds until the rate limit resets, when known. Lets clients render a humanized reset time alongside the prompt. */ - @JsonProperty("retryAfterSeconds") Double retryAfterSeconds + @JsonProperty("retryAfterSeconds") Long retryAfterSeconds ) { } } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/CompactionCompleteCompactionTokensUsed.java b/java/src/generated/java/com/github/copilot/sdk/generated/CompactionCompleteCompactionTokensUsed.java index 4409793920..c3469eb7b2 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/CompactionCompleteCompactionTokensUsed.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/CompactionCompleteCompactionTokensUsed.java @@ -22,17 +22,17 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record CompactionCompleteCompactionTokensUsed( /** Input tokens consumed by the compaction LLM call */ - @JsonProperty("inputTokens") Double inputTokens, + @JsonProperty("inputTokens") Long inputTokens, /** Output tokens produced by the compaction LLM call */ - @JsonProperty("outputTokens") Double outputTokens, + @JsonProperty("outputTokens") Long outputTokens, /** Cached input tokens reused in the compaction LLM call */ - @JsonProperty("cacheReadTokens") Double cacheReadTokens, + @JsonProperty("cacheReadTokens") Long cacheReadTokens, /** Tokens written to prompt cache in the compaction LLM call */ - @JsonProperty("cacheWriteTokens") Double cacheWriteTokens, + @JsonProperty("cacheWriteTokens") Long cacheWriteTokens, /** Per-request cost and usage data from the CAPI copilot_usage response field */ @JsonProperty("copilotUsage") CompactionCompleteCompactionTokensUsedCopilotUsage copilotUsage, /** Duration of the compaction LLM call in milliseconds */ - @JsonProperty("duration") Double duration, + @JsonProperty("duration") Long duration, /** Model identifier used for the compaction LLM call */ @JsonProperty("model") String model ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail.java b/java/src/generated/java/com/github/copilot/sdk/generated/CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail.java index 3c7fde8ad8..5c368251f0 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail.java @@ -22,11 +22,11 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record CompactionCompleteCompactionTokensUsedCopilotUsageTokenDetail( /** Number of tokens in this billing batch */ - @JsonProperty("batchSize") Double batchSize, + @JsonProperty("batchSize") Long batchSize, /** Cost per batch of tokens */ - @JsonProperty("costPerBatch") Double costPerBatch, + @JsonProperty("costPerBatch") Long costPerBatch, /** Total token count for this entry */ - @JsonProperty("tokenCount") Double tokenCount, + @JsonProperty("tokenCount") Long tokenCount, /** Token category (e.g., "input", "output") */ @JsonProperty("tokenType") String tokenType ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/ModelCallFailureEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/ModelCallFailureEvent.java index 33a3f86189..42de2f1f84 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/ModelCallFailureEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/ModelCallFailureEvent.java @@ -46,7 +46,7 @@ public record ModelCallFailureEventData( /** HTTP status code from the failed request */ @JsonProperty("statusCode") Long statusCode, /** Duration of the failed API call in milliseconds */ - @JsonProperty("durationMs") Double durationMs, + @JsonProperty("durationMs") Long durationMs, /** Where the failed model call originated */ @JsonProperty("source") ModelCallFailureSource source, /** Raw provider/runtime error message for restricted telemetry */ diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SessionCompactionCompleteEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SessionCompactionCompleteEvent.java index b6a3775e9d..3c1252003d 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SessionCompactionCompleteEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SessionCompactionCompleteEvent.java @@ -40,19 +40,21 @@ public record SessionCompactionCompleteEventData( /** Error message if compaction failed */ @JsonProperty("error") String error, /** Total tokens in conversation before compaction */ - @JsonProperty("preCompactionTokens") Double preCompactionTokens, + @JsonProperty("preCompactionTokens") Long preCompactionTokens, /** Total tokens in conversation after compaction */ - @JsonProperty("postCompactionTokens") Double postCompactionTokens, + @JsonProperty("postCompactionTokens") Long postCompactionTokens, /** Number of messages before compaction */ - @JsonProperty("preCompactionMessagesLength") Double preCompactionMessagesLength, + @JsonProperty("preCompactionMessagesLength") Long preCompactionMessagesLength, /** Number of messages removed during compaction */ - @JsonProperty("messagesRemoved") Double messagesRemoved, + @JsonProperty("messagesRemoved") Long messagesRemoved, /** Number of tokens removed during compaction */ - @JsonProperty("tokensRemoved") Double tokensRemoved, + @JsonProperty("tokensRemoved") Long tokensRemoved, + /** User-supplied focus instructions provided to a manual `/compact` invocation. Omitted for automatic compaction and for manual compaction with no focus text. */ + @JsonProperty("customInstructions") String customInstructions, /** LLM-generated summary of the compacted conversation history */ @JsonProperty("summaryContent") String summaryContent, /** Checkpoint snapshot number created for recovery */ - @JsonProperty("checkpointNumber") Double checkpointNumber, + @JsonProperty("checkpointNumber") Long checkpointNumber, /** File path where the checkpoint was stored */ @JsonProperty("checkpointPath") String checkpointPath, /** Token usage breakdown for the compaction LLM call (aligned with assistant.usage format) */ @@ -60,11 +62,11 @@ public record SessionCompactionCompleteEventData( /** GitHub request tracing ID (x-github-request-id header) for the compaction LLM call */ @JsonProperty("requestId") String requestId, /** Token count from system message(s) after compaction */ - @JsonProperty("systemTokens") Double systemTokens, + @JsonProperty("systemTokens") Long systemTokens, /** Token count from non-system messages (user, assistant, tool) after compaction */ - @JsonProperty("conversationTokens") Double conversationTokens, + @JsonProperty("conversationTokens") Long conversationTokens, /** Token count from tool definitions after compaction */ - @JsonProperty("toolDefinitionsTokens") Double toolDefinitionsTokens + @JsonProperty("toolDefinitionsTokens") Long toolDefinitionsTokens ) { } } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SessionCompactionStartEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SessionCompactionStartEvent.java index 2ff7ace484..051f83f4cf 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SessionCompactionStartEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SessionCompactionStartEvent.java @@ -36,11 +36,11 @@ public final class SessionCompactionStartEvent extends SessionEvent { @JsonInclude(JsonInclude.Include.NON_NULL) public record SessionCompactionStartEventData( /** Token count from system message(s) at compaction start */ - @JsonProperty("systemTokens") Double systemTokens, + @JsonProperty("systemTokens") Long systemTokens, /** Token count from non-system messages (user, assistant, tool) at compaction start */ - @JsonProperty("conversationTokens") Double conversationTokens, + @JsonProperty("conversationTokens") Long conversationTokens, /** Token count from tool definitions at compaction start */ - @JsonProperty("toolDefinitionsTokens") Double toolDefinitionsTokens + @JsonProperty("toolDefinitionsTokens") Long toolDefinitionsTokens ) { } } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SessionResumeEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SessionResumeEvent.java index 93316117ba..a5983fc2af 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SessionResumeEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SessionResumeEvent.java @@ -39,7 +39,7 @@ public record SessionResumeEventData( /** ISO 8601 timestamp when the session was resumed */ @JsonProperty("resumeTime") OffsetDateTime resumeTime, /** Total number of persisted events in the session at the time of resume */ - @JsonProperty("eventCount") Double eventCount, + @JsonProperty("eventCount") Long eventCount, /** Model currently selected at resume time */ @JsonProperty("selectedModel") String selectedModel, /** Reasoning effort level used for model calls, if applicable (e.g. "none", "low", "medium", "high", "xhigh", "max") */ diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SessionShutdownEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SessionShutdownEvent.java index 269416994b..e9d3c44323 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SessionShutdownEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SessionShutdownEvent.java @@ -47,9 +47,9 @@ public record SessionShutdownEventData( /** Session-wide per-token-type accumulated token counts */ @JsonProperty("tokenDetails") Map tokenDetails, /** Cumulative time spent in API calls during the session, in milliseconds */ - @JsonProperty("totalApiDurationMs") Double totalApiDurationMs, + @JsonProperty("totalApiDurationMs") Long totalApiDurationMs, /** Unix timestamp (milliseconds) when the session started */ - @JsonProperty("sessionStartTime") Double sessionStartTime, + @JsonProperty("sessionStartTime") Long sessionStartTime, /** Aggregate code change metrics for the session */ @JsonProperty("codeChanges") ShutdownCodeChanges codeChanges, /** Per-model usage breakdown, keyed by model identifier */ @@ -57,13 +57,13 @@ public record SessionShutdownEventData( /** Model that was selected at the time of shutdown */ @JsonProperty("currentModel") String currentModel, /** Total tokens in context window at shutdown */ - @JsonProperty("currentTokens") Double currentTokens, + @JsonProperty("currentTokens") Long currentTokens, /** System message token count at shutdown */ - @JsonProperty("systemTokens") Double systemTokens, + @JsonProperty("systemTokens") Long systemTokens, /** Non-system message token count at shutdown */ - @JsonProperty("conversationTokens") Double conversationTokens, + @JsonProperty("conversationTokens") Long conversationTokens, /** Tool definitions token count at shutdown */ - @JsonProperty("toolDefinitionsTokens") Double toolDefinitionsTokens + @JsonProperty("toolDefinitionsTokens") Long toolDefinitionsTokens ) { } } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SessionSnapshotRewindEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SessionSnapshotRewindEvent.java index 0b564f2910..b121fdff3a 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SessionSnapshotRewindEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SessionSnapshotRewindEvent.java @@ -38,7 +38,7 @@ public record SessionSnapshotRewindEventData( /** Event ID that was rewound to; this event and all after it were removed */ @JsonProperty("upToEventId") String upToEventId, /** Number of events that were removed by the rewind */ - @JsonProperty("eventsRemoved") Double eventsRemoved + @JsonProperty("eventsRemoved") Long eventsRemoved ) { } } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SessionStartEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SessionStartEvent.java index d3484b3e14..0143908f5f 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SessionStartEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SessionStartEvent.java @@ -39,7 +39,7 @@ public record SessionStartEventData( /** Unique identifier for the session */ @JsonProperty("sessionId") String sessionId, /** Schema version number for the session event format */ - @JsonProperty("version") Double version, + @JsonProperty("version") Long version, /** Identifier of the software producing the events (e.g., "copilot-agent") */ @JsonProperty("producer") String producer, /** Version string of the Copilot application */ diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SessionTruncationEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SessionTruncationEvent.java index b2ffad48f0..60e7134e69 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SessionTruncationEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SessionTruncationEvent.java @@ -36,19 +36,19 @@ public final class SessionTruncationEvent extends SessionEvent { @JsonInclude(JsonInclude.Include.NON_NULL) public record SessionTruncationEventData( /** Maximum token count for the model's context window */ - @JsonProperty("tokenLimit") Double tokenLimit, + @JsonProperty("tokenLimit") Long tokenLimit, /** Total tokens in conversation messages before truncation */ - @JsonProperty("preTruncationTokensInMessages") Double preTruncationTokensInMessages, + @JsonProperty("preTruncationTokensInMessages") Long preTruncationTokensInMessages, /** Number of conversation messages before truncation */ - @JsonProperty("preTruncationMessagesLength") Double preTruncationMessagesLength, + @JsonProperty("preTruncationMessagesLength") Long preTruncationMessagesLength, /** Total tokens in conversation messages after truncation */ - @JsonProperty("postTruncationTokensInMessages") Double postTruncationTokensInMessages, + @JsonProperty("postTruncationTokensInMessages") Long postTruncationTokensInMessages, /** Number of conversation messages after truncation */ - @JsonProperty("postTruncationMessagesLength") Double postTruncationMessagesLength, + @JsonProperty("postTruncationMessagesLength") Long postTruncationMessagesLength, /** Number of tokens removed by truncation */ - @JsonProperty("tokensRemovedDuringTruncation") Double tokensRemovedDuringTruncation, + @JsonProperty("tokensRemovedDuringTruncation") Long tokensRemovedDuringTruncation, /** Number of messages removed by truncation */ - @JsonProperty("messagesRemovedDuringTruncation") Double messagesRemovedDuringTruncation, + @JsonProperty("messagesRemovedDuringTruncation") Long messagesRemovedDuringTruncation, /** Identifier of the component that performed truncation (e.g., "BasicTruncator") */ @JsonProperty("performedBy") String performedBy ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SessionUsageInfoEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SessionUsageInfoEvent.java index 7c9c19eafd..84d73703a5 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SessionUsageInfoEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SessionUsageInfoEvent.java @@ -36,17 +36,17 @@ public final class SessionUsageInfoEvent extends SessionEvent { @JsonInclude(JsonInclude.Include.NON_NULL) public record SessionUsageInfoEventData( /** Maximum token count for the model's context window */ - @JsonProperty("tokenLimit") Double tokenLimit, + @JsonProperty("tokenLimit") Long tokenLimit, /** Current number of tokens in the context window */ - @JsonProperty("currentTokens") Double currentTokens, + @JsonProperty("currentTokens") Long currentTokens, /** Current number of messages in the conversation */ - @JsonProperty("messagesLength") Double messagesLength, + @JsonProperty("messagesLength") Long messagesLength, /** Token count from system message(s) */ - @JsonProperty("systemTokens") Double systemTokens, + @JsonProperty("systemTokens") Long systemTokens, /** Token count from non-system messages (user, assistant, tool) */ - @JsonProperty("conversationTokens") Double conversationTokens, + @JsonProperty("conversationTokens") Long conversationTokens, /** Token count from tool definitions */ - @JsonProperty("toolDefinitionsTokens") Double toolDefinitionsTokens, + @JsonProperty("toolDefinitionsTokens") Long toolDefinitionsTokens, /** Whether this is the first usage_info event emitted in this session */ @JsonProperty("isInitial") Boolean isInitial ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownCodeChanges.java b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownCodeChanges.java index 1afb58b69b..9512573bdb 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownCodeChanges.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownCodeChanges.java @@ -23,9 +23,9 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record ShutdownCodeChanges( /** Total number of lines added during the session */ - @JsonProperty("linesAdded") Double linesAdded, + @JsonProperty("linesAdded") Long linesAdded, /** Total number of lines removed during the session */ - @JsonProperty("linesRemoved") Double linesRemoved, + @JsonProperty("linesRemoved") Long linesRemoved, /** List of file paths that were modified during the session */ @JsonProperty("filesModified") List filesModified ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricRequests.java b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricRequests.java index 1872a66038..901d2a3e73 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricRequests.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricRequests.java @@ -22,7 +22,7 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record ShutdownModelMetricRequests( /** Total number of API requests made to this model */ - @JsonProperty("count") Double count, + @JsonProperty("count") Long count, /** Cumulative cost multiplier for requests to this model */ @JsonProperty("cost") Double cost ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricTokenDetail.java b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricTokenDetail.java index 658efe35a7..f179898a3d 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricTokenDetail.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricTokenDetail.java @@ -22,6 +22,6 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record ShutdownModelMetricTokenDetail( /** Accumulated token count for this token type */ - @JsonProperty("tokenCount") Double tokenCount + @JsonProperty("tokenCount") Long tokenCount ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricUsage.java b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricUsage.java index bd47eaeb53..a2301664bd 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricUsage.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownModelMetricUsage.java @@ -22,14 +22,14 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record ShutdownModelMetricUsage( /** Total input tokens consumed across all requests to this model */ - @JsonProperty("inputTokens") Double inputTokens, + @JsonProperty("inputTokens") Long inputTokens, /** Total output tokens produced across all requests to this model */ - @JsonProperty("outputTokens") Double outputTokens, + @JsonProperty("outputTokens") Long outputTokens, /** Total tokens read from prompt cache across all requests */ - @JsonProperty("cacheReadTokens") Double cacheReadTokens, + @JsonProperty("cacheReadTokens") Long cacheReadTokens, /** Total tokens written to prompt cache across all requests */ - @JsonProperty("cacheWriteTokens") Double cacheWriteTokens, + @JsonProperty("cacheWriteTokens") Long cacheWriteTokens, /** Total reasoning tokens produced across all requests to this model */ - @JsonProperty("reasoningTokens") Double reasoningTokens + @JsonProperty("reasoningTokens") Long reasoningTokens ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownTokenDetail.java b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownTokenDetail.java index 6a9b3188a5..856e4d2f68 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownTokenDetail.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/ShutdownTokenDetail.java @@ -22,6 +22,6 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record ShutdownTokenDetail( /** Accumulated token count for this token type */ - @JsonProperty("tokenCount") Double tokenCount + @JsonProperty("tokenCount") Long tokenCount ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SubagentCompletedEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SubagentCompletedEvent.java index f61235b4a8..45bdade9a9 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SubagentCompletedEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SubagentCompletedEvent.java @@ -44,11 +44,11 @@ public record SubagentCompletedEventData( /** Model used by the sub-agent */ @JsonProperty("model") String model, /** Total number of tool calls made by the sub-agent */ - @JsonProperty("totalToolCalls") Double totalToolCalls, + @JsonProperty("totalToolCalls") Long totalToolCalls, /** Total tokens (input + output) consumed by the sub-agent */ - @JsonProperty("totalTokens") Double totalTokens, + @JsonProperty("totalTokens") Long totalTokens, /** Wall-clock duration of the sub-agent execution in milliseconds */ - @JsonProperty("durationMs") Double durationMs + @JsonProperty("durationMs") Long durationMs ) { } } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/SubagentFailedEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/SubagentFailedEvent.java index 19644eee15..3437e93baa 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/SubagentFailedEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/SubagentFailedEvent.java @@ -46,11 +46,11 @@ public record SubagentFailedEventData( /** Model used by the sub-agent (if any model calls succeeded before failure) */ @JsonProperty("model") String model, /** Total number of tool calls made before the sub-agent failed */ - @JsonProperty("totalToolCalls") Double totalToolCalls, + @JsonProperty("totalToolCalls") Long totalToolCalls, /** Total tokens (input + output) consumed before the sub-agent failed */ - @JsonProperty("totalTokens") Double totalTokens, + @JsonProperty("totalTokens") Long totalTokens, /** Wall-clock duration of the sub-agent execution in milliseconds */ - @JsonProperty("durationMs") Double durationMs + @JsonProperty("durationMs") Long durationMs ) { } } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/ToolExecutionCompleteEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/ToolExecutionCompleteEvent.java index b4ac9b7999..8d1c1c5c25 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/ToolExecutionCompleteEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/ToolExecutionCompleteEvent.java @@ -54,6 +54,8 @@ public record ToolExecutionCompleteEventData( @JsonProperty("toolTelemetry") Map toolTelemetry, /** Identifier for the agent loop turn this tool was invoked in, matching the corresponding assistant.turn_start event */ @JsonProperty("turnId") String turnId, + /** Whether this tool execution ran inside a sandbox container */ + @JsonProperty("sandboxed") Boolean sandboxed, /** Tool call ID of the parent tool invocation when this event originates from a sub-agent */ @JsonProperty("parentToolCallId") String parentToolCallId ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/UserMessageEvent.java b/java/src/generated/java/com/github/copilot/sdk/generated/UserMessageEvent.java index bf30633b04..0e0de5dd2e 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/UserMessageEvent.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/UserMessageEvent.java @@ -44,7 +44,7 @@ public record UserMessageEventData( @JsonProperty("attachments") List attachments, /** Normalized document MIME types that were sent natively instead of through tagged_files XML */ @JsonProperty("supportedNativeDocumentMimeTypes") List supportedNativeDocumentMimeTypes, - /** Path-backed native document attachments that stayed on the tagged_files path flow because native upload would exceed the request size limit */ + /** Path-backed native document attachments that stayed on the tagged_files path flow because native upload could not read them or would exceed the request size limit */ @JsonProperty("nativeDocumentPathFallbackPaths") List nativeDocumentPathFallbackPaths, /** Origin of this message, used for timeline filtering (e.g., "skill-pdf" for skill-injected messages that should be hidden from the user) */ @JsonProperty("source") String source, diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AbortReason.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AbortReason.java new file mode 100644 index 0000000000..0d0302fa4a --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AbortReason.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Finite reason code describing why the current turn was aborted + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum AbortReason { + /** The {@code user_initiated} variant. */ + USER_INITIATED("user_initiated"), + /** The {@code remote_command} variant. */ + REMOTE_COMMAND("remote_command"), + /** The {@code user_abort} variant. */ + USER_ABORT("user_abort"); + + private final String value; + AbortReason(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static AbortReason fromValue(String value) { + for (AbortReason v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown AbortReason value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AccountQuotaSnapshot.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AccountQuotaSnapshot.java index 2bd1ac2f6b..a13f011958 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AccountQuotaSnapshot.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AccountQuotaSnapshot.java @@ -32,9 +32,9 @@ public record AccountQuotaSnapshot( @JsonProperty("usageAllowedWithExhaustedQuota") Boolean usageAllowedWithExhaustedQuota, /** Percentage of entitlement remaining */ @JsonProperty("remainingPercentage") Double remainingPercentage, - /** Number of overage requests made this period */ + /** Number of additional usage requests made this period */ @JsonProperty("overage") Double overage, - /** Whether overage is allowed when quota is exhausted */ + /** Whether additional usage is allowed when quota is exhausted */ @JsonProperty("overageAllowedWithExhaustedQuota") Boolean overageAllowedWithExhaustedQuota, /** Date when the quota resets (ISO 8601 string) */ @JsonProperty("resetDate") OffsetDateTime resetDate diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AgentInfo.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AgentInfo.java index 66493bce29..df2a246225 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AgentInfo.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AgentInfo.java @@ -10,6 +10,8 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import java.util.Map; import javax.annotation.processing.Generated; /** @@ -28,6 +30,20 @@ public record AgentInfo( /** Description of the agent's purpose */ @JsonProperty("description") String description, /** Absolute local file path of the agent definition. Only set for file-based agents loaded from disk; remote agents do not have a path. */ - @JsonProperty("path") String path + @JsonProperty("path") String path, + /** Stable identifier for selection. For most agents this is the same as `name`; for plugin/builtin agents it may differ. Always populated; defaults to `name` when no distinct id was assigned. */ + @JsonProperty("id") String id, + /** Where the agent definition was loaded from */ + @JsonProperty("source") AgentInfoSource source, + /** Whether the agent can be selected directly by the user. Agents marked `false` are subagent-only. */ + @JsonProperty("userInvocable") Boolean userInvocable, + /** Allowed tool names for this agent. Empty array means none; omitted means inherit defaults. */ + @JsonProperty("tools") List tools, + /** Preferred model id for this agent. When omitted, inherits the outer agent's model. */ + @JsonProperty("model") String model, + /** MCP server configurations attached to this agent, keyed by server name. Server config shape mirrors the MCP `mcpServers` schema. */ + @JsonProperty("mcpServers") Map mcpServers, + /** Skill names preloaded into this agent's context. Omitted means none. */ + @JsonProperty("skills") List skills ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AgentInfoSource.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AgentInfoSource.java new file mode 100644 index 0000000000..699df17877 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/AgentInfoSource.java @@ -0,0 +1,43 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Where the agent definition was loaded from + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum AgentInfoSource { + /** The {@code user} variant. */ + USER("user"), + /** The {@code project} variant. */ + PROJECT("project"), + /** The {@code inherited} variant. */ + INHERITED("inherited"), + /** The {@code remote} variant. */ + REMOTE("remote"), + /** The {@code plugin} variant. */ + PLUGIN("plugin"), + /** The {@code builtin} variant. */ + BUILTIN("builtin"); + + private final String value; + AgentInfoSource(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static AgentInfoSource fromValue(String value) { + for (AgentInfoSource v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown AgentInfoSource value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/EventsAgentScope.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/EventsAgentScope.java new file mode 100644 index 0000000000..e748df0d30 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/EventsAgentScope.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Agent-scope filter: 'primary' returns only main-agent events plus events whose type starts with 'subagent.' (matching the typed-subscription default behavior); 'all' returns events from all agents (matching wildcard-subscription behavior). Default is 'all' to preserve wildcard semantics for catch-up callers. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum EventsAgentScope { + /** The {@code primary} variant. */ + PRIMARY("primary"), + /** The {@code all} variant. */ + ALL("all"); + + private final String value; + EventsAgentScope(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static EventsAgentScope fromValue(String value) { + for (EventsAgentScope v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown EventsAgentScope value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/EventsCursorStatus.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/EventsCursorStatus.java new file mode 100644 index 0000000000..eb68386adc --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/EventsCursorStatus.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Cursor status: 'ok' means the cursor was applied successfully; 'expired' means the cursor referred to an event that no longer exists in history (e.g. truncated or compacted away) and the read started from the beginning of the remaining history. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum EventsCursorStatus { + /** The {@code ok} variant. */ + OK("ok"), + /** The {@code expired} variant. */ + EXPIRED("expired"); + + private final String value; + EventsCursorStatus(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static EventsCursorStatus fromValue(String value) { + for (EventsCursorStatus v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown EventsCursorStatus value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstalledPlugin.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstalledPlugin.java new file mode 100644 index 0000000000..9f48489da7 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstalledPlugin.java @@ -0,0 +1,39 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `InstalledPlugin` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record InstalledPlugin( + /** Plugin name */ + @JsonProperty("name") String name, + /** Marketplace the plugin came from (empty string for direct repo installs) */ + @JsonProperty("marketplace") String marketplace, + /** Version installed (if available) */ + @JsonProperty("version") String version, + /** Installation timestamp */ + @JsonProperty("installed_at") String installedAt, + /** Whether the plugin is currently enabled */ + @JsonProperty("enabled") Boolean enabled, + /** Path where the plugin is cached locally */ + @JsonProperty("cache_path") String cachePath, + /** Source for direct repo installs (when marketplace is empty) */ + @JsonProperty("source") Object source +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSources.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSources.java index d0a23b337d..0cc669e226 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSources.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSources.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; import javax.annotation.processing.Generated; /** @@ -33,9 +34,11 @@ public record InstructionsSources( @JsonProperty("type") InstructionsSourcesType type, /** Where this source lives — used for UI grouping */ @JsonProperty("location") InstructionsSourcesLocation location, - /** Glob pattern from frontmatter — when set, this instruction applies only to matching files */ - @JsonProperty("applyTo") String applyTo, + /** Glob pattern(s) from frontmatter — when set, this instruction applies only to matching files */ + @JsonProperty("applyTo") List applyTo, /** Short description (body after frontmatter) for use in instruction tables */ - @JsonProperty("description") String description + @JsonProperty("description") String description, + /** When true, this source starts disabled and must be toggled on by the user */ + @JsonProperty("defaultDisabled") Boolean defaultDisabled ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSourcesLocation.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSourcesLocation.java index 01b702cfe8..943591213a 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSourcesLocation.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSourcesLocation.java @@ -21,7 +21,9 @@ public enum InstructionsSourcesLocation { /** The {@code repository} variant. */ REPOSITORY("repository"), /** The {@code working-directory} variant. */ - WORKING_DIRECTORY("working-directory"); + WORKING_DIRECTORY("working-directory"), + /** The {@code plugin} variant. */ + PLUGIN("plugin"); private final String value; InstructionsSourcesLocation(String value) { this.value = value; } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSourcesType.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSourcesType.java index 8de1319422..b451f40c60 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSourcesType.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/InstructionsSourcesType.java @@ -27,7 +27,9 @@ public enum InstructionsSourcesType { /** The {@code nested-agents} variant. */ NESTED_AGENTS("nested-agents"), /** The {@code child-instructions} variant. */ - CHILD_INSTRUCTIONS("child-instructions"); + CHILD_INSTRUCTIONS("child-instructions"), + /** The {@code plugin} variant. */ + PLUGIN("plugin"); private final String value; InstructionsSourcesType(String value) { this.value = value; } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpExecuteSamplingRequest.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpExecuteSamplingRequest.java new file mode 100644 index 0000000000..9dcf307eae --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpExecuteSamplingRequest.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Raw MCP CreateMessageRequest params, as received in the `sampling.requested` event. Treated as opaque at the schema layer; the runtime converts the embedded MCP messages into the OpenAI chat-completion shape internally. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record McpExecuteSamplingRequest() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpExecuteSamplingResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpExecuteSamplingResult.java new file mode 100644 index 0000000000..6524610d03 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpExecuteSamplingResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * MCP CreateMessageResult payload (with optional 'tools' extension), present when action='success'. Treated as opaque at the schema layer; consumers should construct/consume it per the MCP CreateMessageResult shape. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record McpExecuteSamplingResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpSamplingExecutionAction.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpSamplingExecutionAction.java new file mode 100644 index 0000000000..a00f41e824 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpSamplingExecutionAction.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Outcome of the sampling inference. 'success' produced a response; 'failure' encountered an error (including agent-side rejection by content filter or criteria); 'cancelled' the caller cancelled this execution via cancelSamplingExecution. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum McpSamplingExecutionAction { + /** The {@code success} variant. */ + SUCCESS("success"), + /** The {@code failure} variant. */ + FAILURE("failure"), + /** The {@code cancelled} variant. */ + CANCELLED("cancelled"); + + private final String value; + McpSamplingExecutionAction(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static McpSamplingExecutionAction fromValue(String value) { + for (McpSamplingExecutionAction v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown McpSamplingExecutionAction value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpSetEnvValueModeDetails.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpSetEnvValueModeDetails.java new file mode 100644 index 0000000000..d62e10c30d --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/McpSetEnvValueModeDetails.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * How environment-variable values supplied to MCP servers are resolved. "direct" passes literal string values; "indirect" treats values as references (e.g. names of environment variables on the host) that the runtime resolves before launch. Defaults to the runtime's startup mode; clients that intentionally launch MCP servers with literal values (e.g. CLI prompt mode and ACP) set this to "direct". + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum McpSetEnvValueModeDetails { + /** The {@code direct} variant. */ + DIRECT("direct"), + /** The {@code indirect} variant. */ + INDIRECT("indirect"); + + private final String value; + McpSetEnvValueModeDetails(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static McpSetEnvValueModeDetails fromValue(String value) { + for (McpSetEnvValueModeDetails v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown McpSetEnvValueModeDetails value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotCurrentMode.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotCurrentMode.java new file mode 100644 index 0000000000..5d55d1c4b8 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotCurrentMode.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * The current agent mode for this session (e.g., 'interactive', 'plan', 'autopilot') + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum MetadataSnapshotCurrentMode { + /** The {@code interactive} variant. */ + INTERACTIVE("interactive"), + /** The {@code plan} variant. */ + PLAN("plan"), + /** The {@code autopilot} variant. */ + AUTOPILOT("autopilot"); + + private final String value; + MetadataSnapshotCurrentMode(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static MetadataSnapshotCurrentMode fromValue(String value) { + for (MetadataSnapshotCurrentMode v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown MetadataSnapshotCurrentMode value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotRemoteMetadata.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotRemoteMetadata.java new file mode 100644 index 0000000000..b97a5f12c9 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotRemoteMetadata.java @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Remote-session-specific metadata. Populated only when `isRemote` is true. Fields are immutable for the lifetime of the session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record MetadataSnapshotRemoteMetadata( + /** The original resource identifier (task ID or PR node ID), preserved across event-replay reconstructions. Falls back to `sessionId` when absent. */ + @JsonProperty("resourceId") String resourceId, + /** The repository the remote session targets. */ + @JsonProperty("repository") MetadataSnapshotRemoteMetadataRepository repository, + /** The pull request number the remote session is associated with, if any. */ + @JsonProperty("pullRequestNumber") Long pullRequestNumber, + /** Whether the remote task originated from Copilot Coding Agent (cca) or a CLI `--remote` invocation. */ + @JsonProperty("taskType") MetadataSnapshotRemoteMetadataTaskType taskType +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotRemoteMetadataRepository.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotRemoteMetadataRepository.java new file mode 100644 index 0000000000..fb6c62e8ae --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotRemoteMetadataRepository.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * The repository the remote session targets. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record MetadataSnapshotRemoteMetadataRepository( + /** The GitHub owner (user or organization) of the target repository. */ + @JsonProperty("owner") String owner, + /** The GitHub repository name (without owner). */ + @JsonProperty("name") String name, + /** The branch the remote session is operating on. */ + @JsonProperty("branch") String branch +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotRemoteMetadataTaskType.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotRemoteMetadataTaskType.java new file mode 100644 index 0000000000..387d39234b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/MetadataSnapshotRemoteMetadataTaskType.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Whether the remote task originated from Copilot Coding Agent (cca) or a CLI `--remote` invocation. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum MetadataSnapshotRemoteMetadataTaskType { + /** The {@code cca} variant. */ + CCA("cca"), + /** The {@code cli} variant. */ + CLI("cli"); + + private final String value; + MetadataSnapshotRemoteMetadataTaskType(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static MetadataSnapshotRemoteMetadataTaskType fromValue(String value) { + for (MetadataSnapshotRemoteMetadataTaskType v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown MetadataSnapshotRemoteMetadataTaskType value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/OptionsUpdateEnvValueMode.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/OptionsUpdateEnvValueMode.java new file mode 100644 index 0000000000..f75daae610 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/OptionsUpdateEnvValueMode.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * How env values are passed to MCP servers (`direct` inlines literal values; `indirect` resolves at launch). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum OptionsUpdateEnvValueMode { + /** The {@code direct} variant. */ + DIRECT("direct"), + /** The {@code indirect} variant. */ + INDIRECT("indirect"); + + private final String value; + OptionsUpdateEnvValueMode(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static OptionsUpdateEnvValueMode fromValue(String value) { + for (OptionsUpdateEnvValueMode v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown OptionsUpdateEnvValueMode value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PendingPermissionRequest.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PendingPermissionRequest.java new file mode 100644 index 0000000000..f4d84c730d --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PendingPermissionRequest.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `PendingPermissionRequest` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record PendingPermissionRequest( + /** Unique identifier for the pending permission request */ + @JsonProperty("requestId") String requestId, + /** The user-facing permission prompt details (commands, write, read, mcp, url, memory, custom-tool, path, hook) */ + @JsonProperty("request") Object request +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionLocationType.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionLocationType.java new file mode 100644 index 0000000000..c3b368cacb --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionLocationType.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Whether the location is a git repo or directory + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum PermissionLocationType { + /** The {@code repo} variant. */ + REPO("repo"), + /** The {@code dir} variant. */ + DIR("dir"); + + private final String value; + PermissionLocationType(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static PermissionLocationType fromValue(String value) { + for (PermissionLocationType v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown PermissionLocationType value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionPathsConfig.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionPathsConfig.java new file mode 100644 index 0000000000..1ac49881bb --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionPathsConfig.java @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * If specified, replaces the session's path-permission policy. The runtime constructs the appropriate PathManager based on these inputs (rooted at the session's working directory). Omit to leave the current path policy unchanged. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record PermissionPathsConfig( + /** If true, the runtime allows access to all paths without prompting. Equivalent to constructing an UnrestrictedPathManager. */ + @JsonProperty("unrestricted") Boolean unrestricted, + /** Additional directories to allow tool access to (in addition to the session's working directory). When `unrestricted` is true, these are still pre-populated on the UnrestrictedPathManager so they remain visible via getDirectories() (e.g. for @-mention completion). */ + @JsonProperty("additionalDirectories") List additionalDirectories, + /** Whether to include the system temp directory in the allowed list (defaults to true). Ignored when `unrestricted` is true. */ + @JsonProperty("includeTempDirectory") Boolean includeTempDirectory, + /** Workspace root path (special-cased to be allowed even before the directory exists). Ignored when `unrestricted` is true. */ + @JsonProperty("workspacePath") String workspacePath +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionRule.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionRule.java new file mode 100644 index 0000000000..ad8a57d8f6 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionRule.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `PermissionRule` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record PermissionRule( + /** The rule kind, such as Shell or GitHubMCP */ + @JsonProperty("kind") String kind, + /** Argument value matched against the request, or null when the rule kind has no argument (e.g. 'read', 'write', 'memory'). */ + @JsonProperty("argument") String argument +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionRulesSet.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionRulesSet.java new file mode 100644 index 0000000000..c29f11ba46 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionRulesSet.java @@ -0,0 +1,30 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * If specified, replaces the session's approved/denied permission rules. Omit to leave the current rules unchanged. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record PermissionRulesSet( + /** Rules that auto-approve matching requests */ + @JsonProperty("approved") List approved, + /** Rules that auto-deny matching requests */ + @JsonProperty("denied") List denied +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionUrlsConfig.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionUrlsConfig.java new file mode 100644 index 0000000000..46ff5501fb --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionUrlsConfig.java @@ -0,0 +1,30 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * If specified, replaces the session's URL-permission policy. The runtime constructs a fresh DefaultUrlManager based on these inputs. Omit to leave the current URL policy unchanged. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record PermissionUrlsConfig( + /** If true, the runtime allows access to all URLs without prompting. Initial allow-list is ignored when this is true. */ + @JsonProperty("unrestricted") Boolean unrestricted, + /** Initial list of allowed URL/domain patterns. Patterns may include path components. Ignored when `unrestricted` is true. */ + @JsonProperty("initialAllowed") List initialAllowed +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicy.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicy.java new file mode 100644 index 0000000000..2b31068e02 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicy.java @@ -0,0 +1,30 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Schema for the `PermissionsConfigureAdditionalContentExclusionPolicy` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record PermissionsConfigureAdditionalContentExclusionPolicy( + @JsonProperty("rules") List rules, + @JsonProperty("last_updated_at") Object lastUpdatedAt, + /** Allowed values for the `PermissionsConfigureAdditionalContentExclusionPolicyScope` enumeration. */ + @JsonProperty("scope") PermissionsConfigureAdditionalContentExclusionPolicyScope scope +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicyRule.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicyRule.java new file mode 100644 index 0000000000..c41050f1b8 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicyRule.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Schema for the `PermissionsConfigureAdditionalContentExclusionPolicyRule` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record PermissionsConfigureAdditionalContentExclusionPolicyRule( + @JsonProperty("paths") List paths, + @JsonProperty("ifAnyMatch") List ifAnyMatch, + @JsonProperty("ifNoneMatch") List ifNoneMatch, + /** Schema for the `PermissionsConfigureAdditionalContentExclusionPolicyRuleSource` type. */ + @JsonProperty("source") PermissionsConfigureAdditionalContentExclusionPolicyRuleSource source +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicyRuleSource.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicyRuleSource.java new file mode 100644 index 0000000000..372e341da2 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicyRuleSource.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `PermissionsConfigureAdditionalContentExclusionPolicyRuleSource` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record PermissionsConfigureAdditionalContentExclusionPolicyRuleSource( + @JsonProperty("name") String name, + @JsonProperty("type") String type +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicyScope.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicyScope.java new file mode 100644 index 0000000000..1c378ec628 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsConfigureAdditionalContentExclusionPolicyScope.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Allowed values for the `PermissionsConfigureAdditionalContentExclusionPolicyScope` enumeration. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum PermissionsConfigureAdditionalContentExclusionPolicyScope { + /** The {@code repo} variant. */ + REPO("repo"), + /** The {@code all} variant. */ + ALL("all"); + + private final String value; + PermissionsConfigureAdditionalContentExclusionPolicyScope(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static PermissionsConfigureAdditionalContentExclusionPolicyScope fromValue(String value) { + for (PermissionsConfigureAdditionalContentExclusionPolicyScope v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown PermissionsConfigureAdditionalContentExclusionPolicyScope value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsModifyRulesScope.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsModifyRulesScope.java new file mode 100644 index 0000000000..53dc333915 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsModifyRulesScope.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Whether the change applies to ephemeral session-scoped rules (cleared at session end) or to location-scoped rules persisted via the location-permissions config file. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum PermissionsModifyRulesScope { + /** The {@code session} variant. */ + SESSION("session"), + /** The {@code location} variant. */ + LOCATION("location"); + + private final String value; + PermissionsModifyRulesScope(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static PermissionsModifyRulesScope fromValue(String value) { + for (PermissionsModifyRulesScope v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown PermissionsModifyRulesScope value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsSetApproveAllSource.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsSetApproveAllSource.java new file mode 100644 index 0000000000..9e88acc593 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PermissionsSetApproveAllSource.java @@ -0,0 +1,39 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Optional source for allow-all telemetry. Defaults to `rpc` when omitted for SDK callers. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum PermissionsSetApproveAllSource { + /** The {@code cli_flag} variant. */ + CLI_FLAG("cli_flag"), + /** The {@code slash_command} variant. */ + SLASH_COMMAND("slash_command"), + /** The {@code autopilot_confirmation} variant. */ + AUTOPILOT_CONFIRMATION("autopilot_confirmation"), + /** The {@code rpc} variant. */ + RPC("rpc"); + + private final String value; + PermissionsSetApproveAllSource(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static PermissionsSetApproveAllSource fromValue(String value) { + for (PermissionsSetApproveAllSource v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown PermissionsSetApproveAllSource value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PingResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PingResult.java index 299d8f3584..b0ed087bd1 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PingResult.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/PingResult.java @@ -10,10 +10,11 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.OffsetDateTime; import javax.annotation.processing.Generated; /** - * Server liveness response, including the echoed message, current timestamp, and protocol version. + * Server liveness response, including the echoed message, current server timestamp, and protocol version. * * @since 1.0.0 */ @@ -23,8 +24,8 @@ public record PingResult( /** Echoed message (or default greeting) */ @JsonProperty("message") String message, - /** Server timestamp in milliseconds */ - @JsonProperty("timestamp") Long timestamp, + /** ISO 8601 timestamp when the server handled the ping */ + @JsonProperty("timestamp") OffsetDateTime timestamp, /** Server protocol version number */ @JsonProperty("protocolVersion") Long protocolVersion ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/QueuePendingItems.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/QueuePendingItems.java new file mode 100644 index 0000000000..ccffaed7ed --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/QueuePendingItems.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `QueuePendingItems` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record QueuePendingItems( + /** Whether this item is a queued user message or a queued slash command / model change */ + @JsonProperty("kind") QueuePendingItemsKind kind, + /** Human-readable text to display for this queue entry in the UI */ + @JsonProperty("displayText") String displayText +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/QueuePendingItemsKind.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/QueuePendingItemsKind.java new file mode 100644 index 0000000000..90f9e7f62c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/QueuePendingItemsKind.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Whether this item is a queued user message or a queued slash command / model change + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum QueuePendingItemsKind { + /** The {@code message} variant. */ + MESSAGE("message"), + /** The {@code command} variant. */ + COMMAND("command"); + + private final String value; + QueuePendingItemsKind(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static QueuePendingItemsKind fromValue(String value) { + for (QueuePendingItemsKind v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown QueuePendingItemsKind value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ScheduleEntry.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ScheduleEntry.java new file mode 100644 index 0000000000..8038341a8e --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ScheduleEntry.java @@ -0,0 +1,38 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.OffsetDateTime; +import javax.annotation.processing.Generated; + +/** + * Schema for the `ScheduleEntry` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record ScheduleEntry( + /** Sequential id assigned by the runtime within the session. Stable across resumes (rebuilt from the event log). */ + @JsonProperty("id") Long id, + /** Interval between scheduled ticks, in milliseconds. */ + @JsonProperty("intervalMs") Long intervalMs, + /** Prompt text that gets enqueued on every tick. */ + @JsonProperty("prompt") String prompt, + /** Whether the schedule re-arms after each tick (`/every`) or fires once (`/after`). */ + @JsonProperty("recurring") Boolean recurring, + /** Display-only label for the prompt as shown in the UI (e.g. `/skill-name` for a skill-invocation schedule). The actual enqueued prompt is `prompt`. */ + @JsonProperty("displayPrompt") String displayPrompt, + /** ISO 8601 timestamp when the next tick is scheduled to fire. */ + @JsonProperty("nextRunAt") OffsetDateTime nextRunAt +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SecretsAddFilterValuesParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SecretsAddFilterValuesParams.java new file mode 100644 index 0000000000..e8d1b5542e --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SecretsAddFilterValuesParams.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Secret values to add to the redaction filter. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SecretsAddFilterValuesParams( + /** Raw secret values to register for redaction */ + @JsonProperty("values") List values +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SecretsAddFilterValuesResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SecretsAddFilterValuesResult.java new file mode 100644 index 0000000000..7762377ff1 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SecretsAddFilterValuesResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Confirmation that the secret values were registered. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SecretsAddFilterValuesResult( + /** Whether the values were successfully registered */ + @JsonProperty("ok") Boolean ok +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SendAgentMode.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SendAgentMode.java new file mode 100644 index 0000000000..7dee184c9b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SendAgentMode.java @@ -0,0 +1,39 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * The UI mode the agent was in when this message was sent. Defaults to the session's current mode. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum SendAgentMode { + /** The {@code interactive} variant. */ + INTERACTIVE("interactive"), + /** The {@code plan} variant. */ + PLAN("plan"), + /** The {@code autopilot} variant. */ + AUTOPILOT("autopilot"), + /** The {@code shell} variant. */ + SHELL("shell"); + + private final String value; + SendAgentMode(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static SendAgentMode fromValue(String value) { + for (SendAgentMode v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown SendAgentMode value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SendMode.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SendMode.java new file mode 100644 index 0000000000..c424caabc3 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SendMode.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * How to deliver the message. `enqueue` (default) appends to the message queue. `immediate` interjects during an in-progress turn. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum SendMode { + /** The {@code enqueue} variant. */ + ENQUEUE("enqueue"), + /** The {@code immediate} variant. */ + IMMEDIATE("immediate"); + + private final String value; + SendMode(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static SendMode fromValue(String value) { + for (SendMode v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown SendMode value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerRpc.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerRpc.java index 9de3df51c4..436fcc6968 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerRpc.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerRpc.java @@ -30,6 +30,8 @@ public final class ServerRpc { public final ServerToolsApi tools; /** API methods for the {@code account} namespace. */ public final ServerAccountApi account; + /** API methods for the {@code secrets} namespace. */ + public final ServerSecretsApi secrets; /** API methods for the {@code mcp} namespace. */ public final ServerMcpApi mcp; /** API methods for the {@code skills} namespace. */ @@ -49,6 +51,7 @@ public ServerRpc(RpcCaller caller) { this.models = new ServerModelsApi(caller); this.tools = new ServerToolsApi(caller); this.account = new ServerAccountApi(caller); + this.secrets = new ServerSecretsApi(caller); this.mcp = new ServerMcpApi(caller); this.skills = new ServerSkillsApi(caller); this.sessionFs = new ServerSessionFsApi(caller); diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerSecretsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerSecretsApi.java new file mode 100644 index 0000000000..af8f6c3c5d --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerSecretsApi.java @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code secrets} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class ServerSecretsApi { + + private final RpcCaller caller; + + /** @param caller the RPC transport function */ + ServerSecretsApi(RpcCaller caller) { + this.caller = caller; + } + + /** + * Secret values to add to the redaction filter. + * @since 1.0.0 + */ + public CompletableFuture addFilterValues(SecretsAddFilterValuesParams params) { + return caller.invoke("secrets.addFilterValues", params, SecretsAddFilterValuesResult.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerSessionsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerSessionsApi.java index a78a2fbf55..72a13699c2 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerSessionsApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ServerSessionsApi.java @@ -45,4 +45,174 @@ public CompletableFuture connect() { return caller.invoke("sessions.connect", java.util.Map.of(), SessionsConnectResult.class); } + /** + * Optional metadata-load limit and context filter applied to the returned sessions. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture list() { + return caller.invoke("sessions.list", java.util.Map.of(), SessionsListResult.class); + } + + /** + * GitHub task ID to look up. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture findByTaskId(SessionsFindByTaskIdParams params) { + return caller.invoke("sessions.findByTaskId", params, SessionsFindByTaskIdResult.class); + } + + /** + * UUID prefix to resolve to a unique session ID. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture findByPrefix(SessionsFindByPrefixParams params) { + return caller.invoke("sessions.findByPrefix", params, SessionsFindByPrefixResult.class); + } + + /** + * Optional working-directory context used to score session relevance. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture getLastForContext(SessionsGetLastForContextParams params) { + return caller.invoke("sessions.getLastForContext", params, SessionsGetLastForContextResult.class); + } + + /** + * Session ID whose event-log file path to compute. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture getEventFilePath() { + return caller.invoke("sessions.getEventFilePath", java.util.Map.of(), SessionsGetEventFilePathResult.class); + } + + /** + * Map of sessionId -> on-disk size in bytes for each session's workspace directory. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture getSizes() { + return caller.invoke("sessions.getSizes", java.util.Map.of(), SessionsGetSizesResult.class); + } + + /** + * Session IDs to test for live in-use locks. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture checkInUse(SessionsCheckInUseParams params) { + return caller.invoke("sessions.checkInUse", params, SessionsCheckInUseResult.class); + } + + /** + * Session ID to look up the persisted remote-steerable flag for. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture getPersistedRemoteSteerable() { + return caller.invoke("sessions.getPersistedRemoteSteerable", java.util.Map.of(), SessionsGetPersistedRemoteSteerableResult.class); + } + + /** + * Session ID to close. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture close() { + return caller.invoke("sessions.close", java.util.Map.of(), Void.class); + } + + /** + * Session IDs to close, deactivate, and delete from disk. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture bulkDelete(SessionsBulkDeleteParams params) { + return caller.invoke("sessions.bulkDelete", params, SessionsBulkDeleteResult.class); + } + + /** + * Age threshold and optional flags controlling which old sessions are pruned (or simulated when dryRun is true). + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture pruneOld(SessionsPruneOldParams params) { + return caller.invoke("sessions.pruneOld", params, SessionsPruneOldResult.class); + } + + /** + * Session ID whose pending events should be flushed to disk. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture save() { + return caller.invoke("sessions.save", java.util.Map.of(), Void.class); + } + + /** + * Session ID whose in-use lock should be released. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture releaseLock() { + return caller.invoke("sessions.releaseLock", java.util.Map.of(), Void.class); + } + + /** + * Session metadata records to enrich with summary and context information. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture enrichMetadata(SessionsEnrichMetadataParams params) { + return caller.invoke("sessions.enrichMetadata", params, SessionsEnrichMetadataResult.class); + } + + /** + * Active session ID and an optional flag for deferring repo-level hooks until folder trust. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture reloadPluginHooks(SessionsReloadPluginHooksParams params) { + return caller.invoke("sessions.reloadPluginHooks", params, Void.class); + } + + /** + * Active session ID whose deferred repo-level hooks should be loaded. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture loadDeferredRepoHooks() { + return caller.invoke("sessions.loadDeferredRepoHooks", java.util.Map.of(), SessionsLoadDeferredRepoHooksResult.class); + } + + /** + * Manager-wide additional plugins to register; replaces any previously-configured set. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture setAdditionalPlugins(SessionsSetAdditionalPluginsParams params) { + return caller.invoke("sessions.setAdditionalPlugins", params, Void.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAbortParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAbortParams.java new file mode 100644 index 0000000000..8f7c47f7c3 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAbortParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Parameters for aborting the current turn + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionAbortParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Finite reason code describing why the current turn was aborted */ + @JsonProperty("reason") AbortReason reason +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAbortResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAbortResult.java new file mode 100644 index 0000000000..4a8d42c719 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAbortResult.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Result of aborting the current turn + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionAbortResult( + /** Whether the abort completed successfully */ + @JsonProperty("success") Boolean success, + /** Error message if the abort failed */ + @JsonProperty("error") String error +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthApi.java index ceb245027e..5b87bf3b3e 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthApi.java @@ -18,6 +18,8 @@ @javax.annotation.processing.Generated("copilot-sdk-codegen") public final class SessionAuthApi { + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + private final RpcCaller caller; private final String sessionId; @@ -29,10 +31,27 @@ public final class SessionAuthApi { /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture getStatus() { return caller.invoke("session.auth.getStatus", java.util.Map.of("sessionId", this.sessionId), SessionAuthGetStatusResult.class); } + /** + * New auth credentials to install on the session. Omit to leave credentials unchanged. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture setCredentials(SessionAuthSetCredentialsParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.auth.setCredentials", _p, SessionAuthSetCredentialsResult.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthSetCredentialsParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthSetCredentialsParams.java new file mode 100644 index 0000000000..5e5e6b5028 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthSetCredentialsParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * New auth credentials to install on the session. Omit to leave credentials unchanged. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionAuthSetCredentialsParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** The new auth credentials to install on the session. When omitted or `undefined`, the call is a no-op and the session's existing credentials are preserved. The runtime stores the value verbatim and uses it for outbound model/API requests; it does NOT re-validate or re-fetch the associated Copilot user response. Several variants carry secret material; treat this method's params as containing secrets at rest and in transit. */ + @JsonProperty("credentials") Object credentials +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthSetCredentialsResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthSetCredentialsResult.java new file mode 100644 index 0000000000..5aef213a4f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionAuthSetCredentialsResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the credential update succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionAuthSetCredentialsResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsApi.java index df5e6d9f23..7a142ecf99 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsApi.java @@ -31,6 +31,8 @@ public final class SessionCommandsApi { /** * Optional filters controlling which command sources to include in the listing. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture list() { @@ -42,6 +44,8 @@ public CompletableFuture list() { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture invoke(SessionCommandsInvokeParams params) { @@ -55,6 +59,8 @@ public CompletableFuture invoke(SessionCommandsInvokeParams params) { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture handlePendingCommand(SessionCommandsHandlePendingCommandParams params) { @@ -64,10 +70,42 @@ public CompletableFuture handlePendin } /** - * Queued command request ID and the result indicating whether the client handled it. + * Slash command name and argument string to execute synchronously. *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture execute(SessionCommandsExecuteParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.commands.execute", _p, SessionCommandsExecuteResult.class); + } + + /** + * Slash-prefixed command string to enqueue for FIFO processing. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture enqueue(SessionCommandsEnqueueParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.commands.enqueue", _p, SessionCommandsEnqueueResult.class); + } + + /** + * Queued-command request ID and the result indicating whether the host executed it (and whether to stop processing further queued commands). + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture respondToQueuedCommand(SessionCommandsRespondToQueuedCommandParams params) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsEnqueueParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsEnqueueParams.java new file mode 100644 index 0000000000..6ca80d2511 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsEnqueueParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Slash-prefixed command string to enqueue for FIFO processing. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionCommandsEnqueueParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Slash-prefixed command string to enqueue, e.g. '/compact' or '/model gpt-4'. Queued FIFO with any in-flight items; if the session is idle, processing kicks off immediately. */ + @JsonProperty("command") String command +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsEnqueueResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsEnqueueResult.java new file mode 100644 index 0000000000..e968e1df86 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsEnqueueResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the command was accepted into the local execution queue. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionCommandsEnqueueResult( + /** True when the command was accepted into the local execution queue. False when the call targets a session that does not support local command queueing (e.g. remote sessions). */ + @JsonProperty("queued") Boolean queued +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsExecuteParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsExecuteParams.java new file mode 100644 index 0000000000..1f1e73acbe --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsExecuteParams.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Slash command name and argument string to execute synchronously. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionCommandsExecuteParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Name of the slash command to invoke (without the leading '/'). */ + @JsonProperty("commandName") String commandName, + /** Argument string to pass to the command (empty string if none). */ + @JsonProperty("args") String args +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsExecuteResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsExecuteResult.java new file mode 100644 index 0000000000..a03b08c661 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsExecuteResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Error message produced while executing the command, if any. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionCommandsExecuteResult( + /** Error message produced while executing the command, if any. Omitted when the handler succeeded. */ + @JsonProperty("error") String error +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsRespondToQueuedCommandParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsRespondToQueuedCommandParams.java index b5a2e31f2a..8eb5d2dbc0 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsRespondToQueuedCommandParams.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsRespondToQueuedCommandParams.java @@ -13,7 +13,7 @@ import javax.annotation.processing.Generated; /** - * Queued command request ID and the result indicating whether the client handled it. + * Queued-command request ID and the result indicating whether the host executed it (and whether to stop processing further queued commands). * * @since 1.0.0 */ @@ -23,9 +23,9 @@ public record SessionCommandsRespondToQueuedCommandParams( /** Target session identifier */ @JsonProperty("sessionId") String sessionId, - /** Request ID from the queued command event */ + /** Request ID from the `command.queued` event the host is responding to. */ @JsonProperty("requestId") String requestId, - /** Result of the queued command execution */ + /** Result of the queued command execution. */ @JsonProperty("result") Object result ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsRespondToQueuedCommandResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsRespondToQueuedCommandResult.java index eb05c1d9e6..3cf5a6de3e 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsRespondToQueuedCommandResult.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionCommandsRespondToQueuedCommandResult.java @@ -13,7 +13,7 @@ import javax.annotation.processing.Generated; /** - * Indicates whether the queued-command response was accepted by the session. + * Indicates whether the queued-command response was matched to a pending request. * * @since 1.0.0 */ @@ -21,7 +21,7 @@ @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) public record SessionCommandsRespondToQueuedCommandResult( - /** Whether the response was accepted (false if the requestId was not found or already resolved) */ + /** Whether a pending queued command with the given request ID was found and resolved. False when the request was already resolved, cancelled, or unknown. */ @JsonProperty("success") Boolean success ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionContext.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionContext.java new file mode 100644 index 0000000000..1a8c148bd4 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionContext.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `SessionContext` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionContext( + /** Most recent working directory for this session */ + @JsonProperty("cwd") String cwd, + /** Git repository root, if the cwd was inside a git repo */ + @JsonProperty("gitRoot") String gitRoot, + /** Repository slug in `owner/name` form, when known */ + @JsonProperty("repository") String repository, + /** Repository host type */ + @JsonProperty("hostType") SessionContextHostType hostType, + /** Active git branch */ + @JsonProperty("branch") String branch +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionContextHostType.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionContextHostType.java new file mode 100644 index 0000000000..db0945e314 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionContextHostType.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Repository host type + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum SessionContextHostType { + /** The {@code github} variant. */ + GITHUB("github"), + /** The {@code ado} variant. */ + ADO("ado"); + + private final String value; + SessionContextHostType(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static SessionContextHostType fromValue(String value) { + for (SessionContextHostType v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown SessionContextHostType value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogApi.java new file mode 100644 index 0000000000..58351e99a6 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogApi.java @@ -0,0 +1,87 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code eventLog} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionEventLogApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionEventLogApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Cursor, batch size, and optional long-poll/filter parameters for reading session events. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture read(SessionEventLogReadParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.eventLog.read", _p, SessionEventLogReadResult.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture tail() { + return caller.invoke("session.eventLog.tail", java.util.Map.of("sessionId", this.sessionId), SessionEventLogTailResult.class); + } + + /** + * Event type to register consumer interest for, used by runtime gating logic. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture registerInterest(SessionEventLogRegisterInterestParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.eventLog.registerInterest", _p, SessionEventLogRegisterInterestResult.class); + } + + /** + * Opaque handle previously returned by `registerInterest` to release. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture releaseInterest(SessionEventLogReleaseInterestParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.eventLog.releaseInterest", _p, SessionEventLogReleaseInterestResult.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReadParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReadParams.java new file mode 100644 index 0000000000..cad49d4525 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReadParams.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Cursor, batch size, and optional long-poll/filter parameters for reading session events. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionEventLogReadParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Opaque cursor returned by a previous read. Omit on the first call to start from the beginning of the session's persisted history. */ + @JsonProperty("cursor") String cursor, + /** Maximum number of events to return in this batch (1–1000, default 200). */ + @JsonProperty("max") Long max, + /** Milliseconds to wait for new events when the cursor is at the tail of history. 0 (default) returns immediately even if no events are available. Capped at 30000ms. Ephemeral events that arrive during the wait are delivered in this batch but are NOT replayable on a subsequent read (use a non-zero waitMs in your next call to capture future ephemerals as they happen). */ + @JsonProperty("waitMs") Long waitMs, + /** Either '*' to receive all event types, or a non-empty list of event types to receive */ + @JsonProperty("types") Object types, + /** Agent-scope filter: 'primary' returns only main-agent events plus events whose type starts with 'subagent.' (matching the typed-subscription default behavior); 'all' returns events from all agents (matching wildcard-subscription behavior). Default is 'all' to preserve wildcard semantics for catch-up callers. */ + @JsonProperty("agentScope") EventsAgentScope agentScope +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReadResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReadResult.java new file mode 100644 index 0000000000..725a767926 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReadResult.java @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Batch of session events returned by a read, with cursor and continuation metadata. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionEventLogReadResult( + /** Events are delivered in two batches per read: persisted events first (in append order), then ephemeral events (in seq order). When `waitMs > 0` and the catch-up batches were empty, post-wait events follow the same two-batch ordering. Persisted and ephemeral events do not interleave within a single read. */ + @JsonProperty("events") List events, + /** Opaque cursor for the next read. Pass back unchanged in the next read.cursor to continue from where this read left off. Always present, even when no events were returned. */ + @JsonProperty("cursor") String cursor, + /** True when the read returned `max` events and more events are available immediately. When false, the next read with a non-zero `waitMs` will block until a new event arrives or the wait expires. */ + @JsonProperty("hasMore") Boolean hasMore, + /** Cursor status: 'ok' means the cursor was applied successfully; 'expired' means the cursor referred to an event that no longer exists in history (e.g. truncated or compacted away) and the read started from the beginning of the remaining history. */ + @JsonProperty("cursorStatus") EventsCursorStatus cursorStatus +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogRegisterInterestParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogRegisterInterestParams.java new file mode 100644 index 0000000000..3bddc69041 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogRegisterInterestParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Event type to register consumer interest for, used by runtime gating logic. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionEventLogRegisterInterestParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** The event type the consumer wants the runtime to treat as 'observed' for behavior-switching gating. Some runtime code paths inspect whether any consumer is interested in a specific event type and choose a different implementation accordingly (e.g. `mcp.oauth_required`: when interest is registered the runtime delegates the full interactive OAuth flow to the consumer; when no interest is registered the runtime installs a browserless fallback that silently reuses cached tokens). SDK clients that long-poll events do NOT automatically appear as listeners to these gating checks — they must explicitly call `registerInterest` for each event type they want the runtime to count as having a consumer. Multiple registrations for the same event type from the same or different consumers are tracked independently and must each be released. See: `mcp.oauth_required`, `sampling.requested`, `auto_mode_switch.requested`, `user_input.requested`, `elicitation.requested`, `command.queued`, `exit_plan_mode.requested`. */ + @JsonProperty("eventType") String eventType +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogRegisterInterestResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogRegisterInterestResult.java new file mode 100644 index 0000000000..e0a6bb5a5f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogRegisterInterestResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Opaque handle representing an event-type interest registration. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionEventLogRegisterInterestResult( + /** Opaque handle for this registration. Pass to releaseInterest to release. Each call to registerInterest produces a fresh handle, even when the same eventType is registered multiple times. */ + @JsonProperty("handle") String handle +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReleaseInterestParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReleaseInterestParams.java new file mode 100644 index 0000000000..c6bd4efb1e --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReleaseInterestParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Opaque handle previously returned by `registerInterest` to release. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionEventLogReleaseInterestParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Handle returned by a previous `registerInterest` call. Idempotent: releasing an unknown or already-released handle is a no-op (returns success). When the last outstanding handle for an event type is released, the runtime reverts to its 'no consumer' code path for that event type. */ + @JsonProperty("handle") String handle +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReleaseInterestResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReleaseInterestResult.java new file mode 100644 index 0000000000..0ba6b149a2 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogReleaseInterestResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionEventLogReleaseInterestResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogTailParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogTailParams.java new file mode 100644 index 0000000000..270af92dcb --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogTailParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionEventLogTailParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogTailResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogTailResult.java new file mode 100644 index 0000000000..a966cd5913 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionEventLogTailResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Snapshot of the current tail cursor without returning any events. Use this when a consumer wants to subscribe to live events going forward without first paginating through the entire persisted history (which would happen if `read` were called without a cursor on a long-lived session). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionEventLogTailResult( + /** Opaque cursor pointing at the current tail of the session's persisted-events history. Pass back to `read` to receive only events that arrive AFTER this snapshot. When the session has no events, this returns the same sentinel as an unset cursor (i.e. equivalent to omitting the cursor on a first read). */ + @JsonProperty("cursor") String cursor +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionFsSqliteQueryResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionFsSqliteQueryResult.java index df6549a9de..edc1e9c832 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionFsSqliteQueryResult.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionFsSqliteQueryResult.java @@ -29,8 +29,8 @@ public record SessionFsSqliteQueryResult( @JsonProperty("columns") List columns, /** Number of rows affected (for INSERT/UPDATE/DELETE) */ @JsonProperty("rowsAffected") Long rowsAffected, - /** Last inserted row ID (for INSERT) */ - @JsonProperty("lastInsertRowid") Double lastInsertRowid, + /** SQLite last_insert_rowid() value for INSERT. */ + @JsonProperty("lastInsertRowid") Long lastInsertRowid, /** Describes a filesystem error. */ @JsonProperty("error") SessionFsError error ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryAbortManualCompactionParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryAbortManualCompactionParams.java new file mode 100644 index 0000000000..c08926c395 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryAbortManualCompactionParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionHistoryAbortManualCompactionParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryAbortManualCompactionResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryAbortManualCompactionResult.java new file mode 100644 index 0000000000..efefbd1a05 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryAbortManualCompactionResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether an in-progress manual compaction was aborted. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionHistoryAbortManualCompactionResult( + /** Whether an in-progress manual compaction was aborted. False when no manual compaction was running, when its abort controller was already aborted, or when the session is remote. */ + @JsonProperty("aborted") Boolean aborted +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryApi.java index 9988a4a886..143250b0ce 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryApi.java @@ -30,7 +30,7 @@ public final class SessionHistoryApi { } /** - * Identifies the target session. + * Optional compaction parameters. * * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 @@ -54,4 +54,34 @@ public CompletableFuture truncate(SessionHistoryTr return caller.invoke("session.history.truncate", _p, SessionHistoryTruncateResult.class); } + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture cancelBackgroundCompaction() { + return caller.invoke("session.history.cancelBackgroundCompaction", java.util.Map.of("sessionId", this.sessionId), SessionHistoryCancelBackgroundCompactionResult.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture abortManualCompaction() { + return caller.invoke("session.history.abortManualCompaction", java.util.Map.of("sessionId", this.sessionId), SessionHistoryAbortManualCompactionResult.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture summarizeForHandoff() { + return caller.invoke("session.history.summarizeForHandoff", java.util.Map.of("sessionId", this.sessionId), SessionHistorySummarizeForHandoffResult.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCancelBackgroundCompactionParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCancelBackgroundCompactionParams.java new file mode 100644 index 0000000000..faba738ed1 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCancelBackgroundCompactionParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionHistoryCancelBackgroundCompactionParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCancelBackgroundCompactionResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCancelBackgroundCompactionResult.java new file mode 100644 index 0000000000..22d9b926e5 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCancelBackgroundCompactionResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether an in-progress background compaction was cancelled. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionHistoryCancelBackgroundCompactionResult( + /** Whether an in-progress background compaction was cancelled. False when no compaction was running, when the session is remote, or when the underlying processor was unavailable. */ + @JsonProperty("cancelled") Boolean cancelled +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCompactParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCompactParams.java index 8737d590fa..30a3fd3933 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCompactParams.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCompactParams.java @@ -13,7 +13,7 @@ import javax.annotation.processing.Generated; /** - * Identifies the target session. + * Optional compaction parameters. * * @since 1.0.0 */ diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCompactResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCompactResult.java index f7a8664b92..e7546b44cb 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCompactResult.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistoryCompactResult.java @@ -13,7 +13,7 @@ import javax.annotation.processing.Generated; /** - * Compaction outcome with the number of tokens and messages removed and the resulting context window breakdown. + * Compaction outcome with the number of tokens and messages removed, summary text, and the resulting context window breakdown. * * @since 1.0.0 */ @@ -27,6 +27,8 @@ public record SessionHistoryCompactResult( @JsonProperty("tokensRemoved") Long tokensRemoved, /** Number of messages removed during compaction */ @JsonProperty("messagesRemoved") Long messagesRemoved, + /** Summary text produced by compaction. Omitted when compaction did not produce a summary (e.g. failure path). */ + @JsonProperty("summaryContent") String summaryContent, /** Post-compaction context window usage breakdown */ @JsonProperty("contextWindow") HistoryCompactContextWindow contextWindow ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistorySummarizeForHandoffParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistorySummarizeForHandoffParams.java new file mode 100644 index 0000000000..946b9232ff --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistorySummarizeForHandoffParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionHistorySummarizeForHandoffParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistorySummarizeForHandoffResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistorySummarizeForHandoffResult.java new file mode 100644 index 0000000000..d49b225d23 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionHistorySummarizeForHandoffResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Markdown summary of the conversation context (empty when not available). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionHistorySummarizeForHandoffResult( + /** Markdown summary of the conversation context produced by an LLM. Empty string when there are no messages or when the session does not support local summarization. */ + @JsonProperty("summary") String summary +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionInstalledPlugin.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionInstalledPlugin.java new file mode 100644 index 0000000000..8ca95b8b30 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionInstalledPlugin.java @@ -0,0 +1,39 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `SessionInstalledPlugin` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionInstalledPlugin( + /** Plugin name */ + @JsonProperty("name") String name, + /** Marketplace the plugin came from (empty string for direct repo installs) */ + @JsonProperty("marketplace") String marketplace, + /** Installed version, if known */ + @JsonProperty("version") String version, + /** Installation timestamp (ISO-8601) */ + @JsonProperty("installed_at") String installedAt, + /** Whether the plugin is currently enabled */ + @JsonProperty("enabled") Boolean enabled, + /** Path where the plugin is cached locally */ + @JsonProperty("cache_path") String cachePath, + /** Source descriptor for direct repo installs (when marketplace is empty) */ + @JsonProperty("source") Object source +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionInstructionsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionInstructionsApi.java index 23c4cf3b6e..5aec59dfd1 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionInstructionsApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionInstructionsApi.java @@ -29,6 +29,8 @@ public final class SessionInstructionsApi { /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture getSources() { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLogParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLogParams.java index f593c11c2c..66e0d4c855 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLogParams.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLogParams.java @@ -13,7 +13,7 @@ import javax.annotation.processing.Generated; /** - * Message text, optional severity level, persistence flag, and optional follow-up URL. + * Message text, optional severity level, persistence flag, optional follow-up URL, and optional tip. * * @since 1.0.0 */ @@ -27,9 +27,13 @@ public record SessionLogParams( @JsonProperty("message") String message, /** Log severity level. Determines how the message is displayed in the timeline. Defaults to "info". */ @JsonProperty("level") SessionLogLevel level, + /** Domain category for this log entry (e.g., "mcp", "subscription", "policy", "model"). Maps to `infoType`/`warningType`/`errorType` on the emitted event. Defaults to "notification". */ + @JsonProperty("type") String type, /** When true, the message is transient and not persisted to the session event log on disk */ @JsonProperty("ephemeral") Boolean ephemeral, /** Optional URL the user can open in their browser for more details */ - @JsonProperty("url") String url + @JsonProperty("url") String url, + /** Optional actionable tip displayed alongside the message. Only honored on `level: "info"`. */ + @JsonProperty("tip") String tip ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLspApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLspApi.java new file mode 100644 index 0000000000..79aa000555 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLspApi.java @@ -0,0 +1,47 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code lsp} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionLspApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionLspApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Parameters for (re)loading the merged LSP configuration set. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture initialize(SessionLspInitializeParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.lsp.initialize", _p, Void.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLspInitializeParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLspInitializeParams.java new file mode 100644 index 0000000000..37c064aa7c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionLspInitializeParams.java @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Parameters for (re)loading the merged LSP configuration set. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionLspInitializeParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Working directory used to load project-level LSP configs. Defaults to the session working directory when omitted. */ + @JsonProperty("workingDirectory") String workingDirectory, + /** Git root used as the boundary when traversing for project-level LSP configs (supports monorepos). */ + @JsonProperty("gitRoot") String gitRoot, + /** Force re-initialization even when LSP configs were already loaded for the working directory. */ + @JsonProperty("force") Boolean force +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpApi.java index 93714e0688..be2d22d4b2 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpApi.java @@ -83,4 +83,59 @@ public CompletableFuture reload() { return caller.invoke("session.mcp.reload", java.util.Map.of("sessionId", this.sessionId), Void.class); } + /** + * Identifiers and raw MCP CreateMessageRequest params used to run a sampling inference. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture executeSampling(SessionMcpExecuteSamplingParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.mcp.executeSampling", _p, SessionMcpExecuteSamplingResult.class); + } + + /** + * The requestId previously passed to executeSampling that should be cancelled. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture cancelSamplingExecution(SessionMcpCancelSamplingExecutionParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.mcp.cancelSamplingExecution", _p, SessionMcpCancelSamplingExecutionResult.class); + } + + /** + * Mode controlling how MCP server env values are resolved (`direct` or `indirect`). + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture setEnvValueMode(SessionMcpSetEnvValueModeParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.mcp.setEnvValueMode", _p, SessionMcpSetEnvValueModeResult.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture removeGitHub() { + return caller.invoke("session.mcp.removeGitHub", java.util.Map.of("sessionId", this.sessionId), SessionMcpRemoveGitHubResult.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpCancelSamplingExecutionParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpCancelSamplingExecutionParams.java new file mode 100644 index 0000000000..191eeda984 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpCancelSamplingExecutionParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * The requestId previously passed to executeSampling that should be cancelled. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMcpCancelSamplingExecutionParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** The requestId previously passed to executeSampling that should be cancelled */ + @JsonProperty("requestId") String requestId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpCancelSamplingExecutionResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpCancelSamplingExecutionResult.java new file mode 100644 index 0000000000..35147aed20 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpCancelSamplingExecutionResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether an in-flight sampling execution with the given requestId was found and cancelled. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMcpCancelSamplingExecutionResult( + /** True if an in-flight execution with the given requestId was found and signalled to cancel. False when no such execution is in flight (already completed, never started, or cancelled by another caller). */ + @JsonProperty("cancelled") Boolean cancelled +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpExecuteSamplingParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpExecuteSamplingParams.java new file mode 100644 index 0000000000..19a9adffbb --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpExecuteSamplingParams.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifiers and raw MCP CreateMessageRequest params used to run a sampling inference. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMcpExecuteSamplingParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Caller-provided unique identifier for this sampling execution. Use this same ID with cancelSamplingExecution to cancel the in-flight call. Must be unique within the session for the lifetime of the call. */ + @JsonProperty("requestId") String requestId, + /** Name of the MCP server that initiated the sampling request */ + @JsonProperty("serverName") String serverName, + /** The original MCP JSON-RPC request ID (string or number). Used by the runtime to correlate the inference with the originating MCP request for telemetry; this is distinct from `requestId` (which is the schema-level cancellation handle). */ + @JsonProperty("mcpRequestId") Object mcpRequestId, + /** Raw MCP CreateMessageRequest params, as received in the `sampling.requested` event. Treated as opaque at the schema layer; the runtime converts the embedded MCP messages into the OpenAI chat-completion shape internally. */ + @JsonProperty("request") McpExecuteSamplingRequest request +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpExecuteSamplingResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpExecuteSamplingResult.java new file mode 100644 index 0000000000..d22143c531 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpExecuteSamplingResult.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Outcome of an MCP sampling execution: success result, failure error, or cancellation. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMcpExecuteSamplingResult( + /** Outcome of the sampling inference. 'success' produced a response; 'failure' encountered an error (including agent-side rejection by content filter or criteria); 'cancelled' the caller cancelled this execution via cancelSamplingExecution. */ + @JsonProperty("action") McpSamplingExecutionAction action, + /** MCP CreateMessageResult payload (with optional 'tools' extension), present when action='success'. Treated as opaque at the schema layer; consumers should construct/consume it per the MCP CreateMessageResult shape. */ + @JsonProperty("result") McpExecuteSamplingResult result, + /** Error description, present when action='failure'. */ + @JsonProperty("error") String error +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpRemoveGitHubParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpRemoveGitHubParams.java new file mode 100644 index 0000000000..5c7915d9f6 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpRemoveGitHubParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMcpRemoveGitHubParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpRemoveGitHubResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpRemoveGitHubResult.java new file mode 100644 index 0000000000..1f13b31c4d --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpRemoveGitHubResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the auto-managed `github` MCP server was removed (false when nothing to remove). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMcpRemoveGitHubResult( + /** True when the auto-managed `github` MCP server was removed; false when no removal happened (e.g. user has explicitly configured a `github` server, or the server was not registered). */ + @JsonProperty("removed") Boolean removed +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpSetEnvValueModeParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpSetEnvValueModeParams.java new file mode 100644 index 0000000000..01efee3336 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpSetEnvValueModeParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Mode controlling how MCP server env values are resolved (`direct` or `indirect`). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMcpSetEnvValueModeParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** How environment-variable values supplied to MCP servers are resolved. "direct" passes literal string values; "indirect" treats values as references (e.g. names of environment variables on the host) that the runtime resolves before launch. Defaults to the runtime's startup mode; clients that intentionally launch MCP servers with literal values (e.g. CLI prompt mode and ACP) set this to "direct". */ + @JsonProperty("mode") McpSetEnvValueModeDetails mode +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpSetEnvValueModeResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpSetEnvValueModeResult.java new file mode 100644 index 0000000000..9e69732d29 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMcpSetEnvValueModeResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Env-value mode recorded on the session after the update. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMcpSetEnvValueModeResult( + /** Mode recorded on the session after the update */ + @JsonProperty("mode") McpSetEnvValueModeDetails mode +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadata.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadata.java new file mode 100644 index 0000000000..6069f8ab4f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadata.java @@ -0,0 +1,41 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `SessionMetadata` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadata( + /** Stable session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Session creation time as an ISO 8601 timestamp */ + @JsonProperty("startTime") String startTime, + /** Last-modified time of the session's persisted state, as ISO 8601 */ + @JsonProperty("modifiedTime") String modifiedTime, + /** Short summary of the session, when one has been derived */ + @JsonProperty("summary") String summary, + /** Optional human-friendly name set via /rename */ + @JsonProperty("name") String name, + /** True for remote (GitHub) sessions; false for local */ + @JsonProperty("isRemote") Boolean isRemote, + /** Schema for the `SessionContext` type. */ + @JsonProperty("context") SessionContext context, + /** GitHub task ID, when this local session is bound to one. Only present for local sessions exported to remote control. */ + @JsonProperty("mcTaskId") String mcTaskId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataApi.java new file mode 100644 index 0000000000..b0a82347a6 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataApi.java @@ -0,0 +1,112 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code metadata} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionMetadataApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionMetadataApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture snapshot() { + return caller.invoke("session.metadata.snapshot", java.util.Map.of("sessionId", this.sessionId), SessionMetadataSnapshotResult.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture isProcessing() { + return caller.invoke("session.metadata.isProcessing", java.util.Map.of("sessionId", this.sessionId), SessionMetadataIsProcessingResult.class); + } + + /** + * Model identifier and token limits used to compute the context-info breakdown. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture contextInfo(SessionMetadataContextInfoParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.metadata.contextInfo", _p, SessionMetadataContextInfoResult.class); + } + + /** + * Updated working-directory/git context to record on the session. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture recordContextChange(SessionMetadataRecordContextChangeParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.metadata.recordContextChange", _p, Void.class); + } + + /** + * Absolute path to set as the session's new working directory. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture setWorkingDirectory(SessionMetadataSetWorkingDirectoryParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.metadata.setWorkingDirectory", _p, SessionMetadataSetWorkingDirectoryResult.class); + } + + /** + * Model identifier to use when re-tokenizing the session's existing messages. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture recomputeContextTokens(SessionMetadataRecomputeContextTokensParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.metadata.recomputeContextTokens", _p, SessionMetadataRecomputeContextTokensResult.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataContextInfoParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataContextInfoParams.java new file mode 100644 index 0000000000..94176d544a --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataContextInfoParams.java @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Model identifier and token limits used to compute the context-info breakdown. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataContextInfoParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Maximum prompt tokens allowed by the target model. Pass 0 to use the runtime default. */ + @JsonProperty("promptTokenLimit") Long promptTokenLimit, + /** Maximum output tokens allowed by the target model. Pass 0 if unknown. */ + @JsonProperty("outputTokenLimit") Long outputTokenLimit, + /** Model identifier used for tokenization. Omit to use the session default. Used both for token counting and to compute display values. */ + @JsonProperty("selectedModel") String selectedModel +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataContextInfoResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataContextInfoResult.java new file mode 100644 index 0000000000..fe8e15f781 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataContextInfoResult.java @@ -0,0 +1,52 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Token breakdown for the session's current context window, or null if uninitialized. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataContextInfoResult( + /** Token breakdown for the current context window, or null if the session has not yet been initialized (no system prompt or tool metadata cached). */ + @JsonProperty("contextInfo") SessionMetadataContextInfoResultContextInfo contextInfo +) { + + /** Token-usage breakdown for the session's current context window */ + @JsonIgnoreProperties(ignoreUnknown = true) + @JsonInclude(JsonInclude.Include.NON_NULL) + public record SessionMetadataContextInfoResultContextInfo( + /** The model used for token counting */ + @JsonProperty("modelName") String modelName, + /** Tokens consumed by the system prompt */ + @JsonProperty("systemTokens") Long systemTokens, + /** Tokens consumed by user/assistant/tool messages */ + @JsonProperty("conversationTokens") Long conversationTokens, + /** Tokens consumed by tool definitions sent to the model (excludes deferred tools) */ + @JsonProperty("toolDefinitionsTokens") Long toolDefinitionsTokens, + /** Sum of system, conversation and tool-definition tokens */ + @JsonProperty("totalTokens") Long totalTokens, + /** Maximum prompt tokens allowed by the model (or DEFAULT_TOKEN_LIMIT if unspecified) */ + @JsonProperty("promptTokenLimit") Long promptTokenLimit, + /** Token count at which background compaction starts (configurable percentage of promptTokenLimit) */ + @JsonProperty("compactionThreshold") Long compactionThreshold, + /** Total context limit for /context display. promptTokenLimit + min(32k or 64k, outputTokenLimit) depending on model. */ + @JsonProperty("limit") Long limit, + /** Output reserve plus tokens after the buffer-exhaustion blocking threshold (default 95%) */ + @JsonProperty("bufferTokens") Long bufferTokens + ) { + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataIsProcessingParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataIsProcessingParams.java new file mode 100644 index 0000000000..5e86f186ae --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataIsProcessingParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataIsProcessingParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataIsProcessingResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataIsProcessingResult.java new file mode 100644 index 0000000000..fb5d4e59b1 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataIsProcessingResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the local session is currently processing a turn or background continuation. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataIsProcessingResult( + /** Whether the session is currently processing user/agent messages. False for non-local sessions (which don't run a local agentic loop). Reflects an in-flight turn or background continuation. */ + @JsonProperty("processing") Boolean processing +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecomputeContextTokensParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecomputeContextTokensParams.java new file mode 100644 index 0000000000..27824912c9 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecomputeContextTokensParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Model identifier to use when re-tokenizing the session's existing messages. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataRecomputeContextTokensParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Model identifier used for tokenization. The runtime token-counts both chat-context and system-context messages against this model. */ + @JsonProperty("modelId") String modelId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecomputeContextTokensResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecomputeContextTokensResult.java new file mode 100644 index 0000000000..c8d398a4d1 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecomputeContextTokensResult.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Re-tokenize the session's existing messages against `modelId` and return the token totals. Useful for hosts that want an initial estimate of context usage on session resume, before the next agent turn fires `session.context_info_changed` events. Returns zeros for an empty session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataRecomputeContextTokensResult( + /** Sum of tokens across chat-context and system-context messages currently held by the session. */ + @JsonProperty("totalTokens") Long totalTokens, + /** Tokens contributed by user/assistant/tool messages (excludes system/developer prompts). */ + @JsonProperty("messagesTokenCount") Long messagesTokenCount, + /** Tokens contributed by system/developer prompt snapshots. */ + @JsonProperty("systemTokenCount") Long systemTokenCount +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecordContextChangeParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecordContextChangeParams.java new file mode 100644 index 0000000000..24e1c79bae --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecordContextChangeParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Updated working-directory/git context to record on the session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataRecordContextChangeParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Updated working directory and git context. Emitted as the new payload of `session.context_changed`. */ + @JsonProperty("context") SessionWorkingDirectoryContext context +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecordContextChangeResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecordContextChangeResult.java new file mode 100644 index 0000000000..08d780868f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataRecordContextChangeResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Notify the session that its working directory context has changed. Emits a `session.context_changed` event so consumers (telemetry, OTel tracker, ACP, the timeline UI) can react. Use this when the host has detected a cwd/branch/repo change outside the session's normal lifecycle (e.g., after a shell command in interactive mode). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataRecordContextChangeResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSetWorkingDirectoryParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSetWorkingDirectoryParams.java new file mode 100644 index 0000000000..436286f65b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSetWorkingDirectoryParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Absolute path to set as the session's new working directory. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataSetWorkingDirectoryParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Absolute path to set as the session's working directory. The runtime updates the session's recorded cwd so subsequent operations (shell tools, file lookups, telemetry) anchor to it. */ + @JsonProperty("workingDirectory") String workingDirectory +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSetWorkingDirectoryResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSetWorkingDirectoryResult.java new file mode 100644 index 0000000000..b1c0f5fb91 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSetWorkingDirectoryResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Update the session's working directory. Used by the host when the user explicitly changes cwd (e.g., the `/cd` slash command). The host is responsible for `process.chdir` and any related side-effects (file index, etc.); this method only updates the session's own recorded path. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataSetWorkingDirectoryResult( + /** Working directory after the update */ + @JsonProperty("workingDirectory") String workingDirectory +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSnapshotParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSnapshotParams.java new file mode 100644 index 0000000000..ffbad219e7 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSnapshotParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataSnapshotParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSnapshotResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSnapshotResult.java new file mode 100644 index 0000000000..49002659e1 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionMetadataSnapshotResult.java @@ -0,0 +1,77 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.OffsetDateTime; +import javax.annotation.processing.Generated; + +/** + * Point-in-time snapshot of slow-changing session identifier and state fields + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionMetadataSnapshotResult( + /** The unique identifier of the session */ + @JsonProperty("sessionId") String sessionId, + /** ISO 8601 timestamp of when the session started */ + @JsonProperty("startTime") OffsetDateTime startTime, + /** ISO 8601 timestamp of when the session's persisted state was last modified on disk. For new sessions, equals startTime. For resumed sessions, reflects the previous modification time at construction. */ + @JsonProperty("modifiedTime") OffsetDateTime modifiedTime, + /** Whether this is a remote session (i.e., one whose runtime executes elsewhere and is steered through this process) */ + @JsonProperty("isRemote") Boolean isRemote, + /** True when the session was detected to be in use by another process at construction time. Local consumers may surface a confirmation prompt before fully attaching. Always false for new sessions. */ + @JsonProperty("alreadyInUse") Boolean alreadyInUse, + /** Absolute path to the session's workspace directory on disk, or null if the session has no associated workspace */ + @JsonProperty("workspacePath") String workspacePath, + /** User-provided name supplied at session construction (via `--name`), if any. Immutable after construction. */ + @JsonProperty("initialName") String initialName, + /** Remote-session-specific metadata. Populated only when `isRemote` is true. Fields are immutable for the lifetime of the session. */ + @JsonProperty("remoteMetadata") MetadataSnapshotRemoteMetadata remoteMetadata, + /** Short human-readable summary of the session, if known. Omitted when no summary has been generated. */ + @JsonProperty("summary") String summary, + /** Absolute path to the session's current working directory */ + @JsonProperty("workingDirectory") String workingDirectory, + /** The current agent mode for this session (e.g., 'interactive', 'plan', 'autopilot') */ + @JsonProperty("currentMode") MetadataSnapshotCurrentMode currentMode, + /** Currently selected model identifier, if any */ + @JsonProperty("selectedModel") String selectedModel, + /** Public-facing workspace metadata for this session, or null if the session has no associated workspace. Excludes runtime-internal fields (GitHub IDs, summary count, internal flags). */ + @JsonProperty("workspace") SessionMetadataSnapshotResultWorkspace workspace +) { + + /** Public-facing projection of workspace metadata for SDK / TUI consumers */ + @JsonIgnoreProperties(ignoreUnknown = true) + @JsonInclude(JsonInclude.Include.NON_NULL) + public record SessionMetadataSnapshotResultWorkspace( + /** Workspace identifier (1:1 with sessionId) */ + @JsonProperty("id") String id, + /** Current working directory at session start */ + @JsonProperty("cwd") String cwd, + /** Resolved git root for cwd, if any */ + @JsonProperty("git_root") String gitRoot, + /** Repository identifier in 'owner/repo' or 'org/project/repo' format, if any */ + @JsonProperty("repository") String repository, + /** Repository host type, if known */ + @JsonProperty("host_type") WorkspaceSummaryHostType hostType, + /** Branch checked out at session start, if any */ + @JsonProperty("branch") String branch, + /** Display name for the session, if set */ + @JsonProperty("name") String name, + /** ISO 8601 timestamp when the workspace was created */ + @JsonProperty("created_at") OffsetDateTime createdAt, + /** ISO 8601 timestamp when the workspace was last updated */ + @JsonProperty("updated_at") OffsetDateTime updatedAt + ) { + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModeApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModeApi.java index 9e67580dc0..b28cd5d37b 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModeApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModeApi.java @@ -31,6 +31,8 @@ public final class SessionModeApi { /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture get() { @@ -42,6 +44,8 @@ public CompletableFuture get() { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture set(SessionModeSetParams params) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelApi.java index 55b3b18c93..b2c112b662 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelApi.java @@ -31,6 +31,8 @@ public final class SessionModelApi { /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture getCurrent() { @@ -42,6 +44,8 @@ public CompletableFuture getCurrent() { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture switchTo(SessionModelSwitchToParams params) { @@ -50,4 +54,19 @@ public CompletableFuture switchTo(SessionModelSwitch return caller.invoke("session.model.switchTo", _p, SessionModelSwitchToResult.class); } + /** + * Reasoning effort level to apply to the currently selected model. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture setReasoningEffort(SessionModelSetReasoningEffortParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.model.setReasoningEffort", _p, SessionModelSetReasoningEffortResult.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelGetCurrentResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelGetCurrentResult.java index 4a5a605250..5afd229112 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelGetCurrentResult.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelGetCurrentResult.java @@ -13,7 +13,7 @@ import javax.annotation.processing.Generated; /** - * The currently selected model for the session. + * The currently selected model and reasoning effort for the session. * * @since 1.0.0 */ @@ -22,6 +22,8 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record SessionModelGetCurrentResult( /** Currently active model identifier */ - @JsonProperty("modelId") String modelId + @JsonProperty("modelId") String modelId, + /** Reasoning effort level currently applied to the active model, when one is set. Reads `Session.getReasoningEffort()` synchronously after `getSelectedModel()` resolves so the two values are reported as a snapshot. */ + @JsonProperty("reasoningEffort") String reasoningEffort ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelSetReasoningEffortParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelSetReasoningEffortParams.java new file mode 100644 index 0000000000..da6bb18709 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelSetReasoningEffortParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Reasoning effort level to apply to the currently selected model. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionModelSetReasoningEffortParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Reasoning effort level to apply to the currently selected model. The host is responsible for validating the value against the model's supported levels before calling. */ + @JsonProperty("reasoningEffort") String reasoningEffort +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelSetReasoningEffortResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelSetReasoningEffortResult.java new file mode 100644 index 0000000000..0ec6e239e6 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionModelSetReasoningEffortResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Update the session's reasoning effort without changing the selected model. Use `switchTo` instead when you also need to change the model. The runtime stores the effort on the session and applies it to subsequent turns. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionModelSetReasoningEffortResult( + /** Reasoning effort level recorded on the session after the update */ + @JsonProperty("reasoningEffort") String reasoningEffort +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameApi.java index 371dc15ab5..73b6c6bc2e 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameApi.java @@ -31,6 +31,8 @@ public final class SessionNameApi { /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture get() { @@ -42,6 +44,8 @@ public CompletableFuture get() { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture set(SessionNameSetParams params) { @@ -50,4 +54,19 @@ public CompletableFuture set(SessionNameSetParams params) { return caller.invoke("session.name.set", _p, Void.class); } + /** + * Auto-generated session summary to apply as the session's name when no user-set name exists. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture setAuto(SessionNameSetAutoParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.name.setAuto", _p, SessionNameSetAutoResult.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameSetAutoParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameSetAutoParams.java new file mode 100644 index 0000000000..4b6db1bde8 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameSetAutoParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Auto-generated session summary to apply as the session's name when no user-set name exists. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionNameSetAutoParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Auto-generated session summary. Empty/whitespace-only values are ignored; values are trimmed before persisting. */ + @JsonProperty("summary") String summary +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameSetAutoResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameSetAutoResult.java new file mode 100644 index 0000000000..134694a8c9 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionNameSetAutoResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the auto-generated summary was applied as the session's name. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionNameSetAutoResult( + /** Whether the auto-generated summary was persisted. False if the session already has a user-set name, the summary normalized to empty, or the session does not have a workspace. */ + @JsonProperty("applied") Boolean applied +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionOptionsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionOptionsApi.java new file mode 100644 index 0000000000..8624c57e31 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionOptionsApi.java @@ -0,0 +1,47 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code options} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionOptionsApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionOptionsApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Patch of mutable session options to apply to the running session. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture update(SessionOptionsUpdateParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.options.update", _p, SessionOptionsUpdateResult.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionOptionsUpdateParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionOptionsUpdateParams.java new file mode 100644 index 0000000000..fa768dd7bd --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionOptionsUpdateParams.java @@ -0,0 +1,101 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; + +/** + * Patch of mutable session options to apply to the running session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionOptionsUpdateParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** The model ID to use for assistant turns. */ + @JsonProperty("model") String model, + /** Reasoning effort for the selected model (model-defined enum). */ + @JsonProperty("reasoningEffort") String reasoningEffort, + /** Identifier of the client driving the session. */ + @JsonProperty("clientName") String clientName, + /** Identifier sent to LSP-style integrations. */ + @JsonProperty("lspClientName") String lspClientName, + /** Stable integration identifier used for analytics and rate-limit attribution. */ + @JsonProperty("integrationId") String integrationId, + /** Map of feature-flag IDs to their boolean enabled state. */ + @JsonProperty("featureFlags") Map featureFlags, + /** Whether experimental capabilities are enabled. */ + @JsonProperty("isExperimentalMode") Boolean isExperimentalMode, + /** Custom model-provider configuration (BYOK). Opaque shape; see `ProviderConfig` in the runtime. */ + @JsonProperty("provider") Object provider, + /** Absolute working-directory path for shell tools. */ + @JsonProperty("workingDirectory") String workingDirectory, + /** Allowlist of tool names available to this session. */ + @JsonProperty("availableTools") List availableTools, + /** Denylist of tool names for this session. */ + @JsonProperty("excludedTools") List excludedTools, + /** Whether shell-script safety heuristics are enabled. */ + @JsonProperty("enableScriptSafety") Boolean enableScriptSafety, + /** Shell init profile (`None` or `NonInteractive`). */ + @JsonProperty("shellInitProfile") String shellInitProfile, + /** Per-shell process flags (e.g., `pwsh` arguments). */ + @JsonProperty("shellProcessFlags") List shellProcessFlags, + /** Sandbox configuration shape; opaque to SDK consumers. See `SandboxConfig` in the runtime. */ + @JsonProperty("sandboxConfig") Object sandboxConfig, + /** Whether interactive shell sessions are logged. */ + @JsonProperty("logInteractiveShells") Boolean logInteractiveShells, + /** How env values are passed to MCP servers (`direct` inlines literal values; `indirect` resolves at launch). */ + @JsonProperty("envValueMode") OptionsUpdateEnvValueMode envValueMode, + /** Additional directories to search for skills. */ + @JsonProperty("skillDirectories") List skillDirectories, + /** Skill IDs that should be excluded from this session. */ + @JsonProperty("disabledSkills") List disabledSkills, + /** Whether to discover custom instructions on demand after successful file views (AGENTS.md / CLAUDE.md / .github/copilot-instructions.md surfacing). Combined with `skipCustomInstructions` and the runtime-side `ON_DEMAND_INSTRUCTIONS` feature flag. */ + @JsonProperty("enableOnDemandInstructionDiscovery") Boolean enableOnDemandInstructionDiscovery, + /** Full set of installed plugins for the session. Replaces the existing list; the runtime invalidates the skills cache only when the list materially changes. */ + @JsonProperty("installedPlugins") List installedPlugins, + /** Whether to default custom agents to local-only execution. */ + @JsonProperty("customAgentsLocalOnly") Boolean customAgentsLocalOnly, + /** Whether to skip loading custom instruction sources. */ + @JsonProperty("skipCustomInstructions") Boolean skipCustomInstructions, + /** Instruction source IDs to exclude from the system prompt. */ + @JsonProperty("disabledInstructionSources") List disabledInstructionSources, + /** Whether to include the `Co-authored-by` trailer in commit messages. */ + @JsonProperty("coauthorEnabled") Boolean coauthorEnabled, + /** Optional path for trajectory output. */ + @JsonProperty("trajectoryFile") String trajectoryFile, + /** Whether to stream model responses. */ + @JsonProperty("enableStreaming") Boolean enableStreaming, + /** Override URL for the Copilot API endpoint. */ + @JsonProperty("copilotUrl") String copilotUrl, + /** Whether to disable the `ask_user` tool (encourages autonomous behavior). */ + @JsonProperty("askUserDisabled") Boolean askUserDisabled, + /** Whether to allow auto-mode continuation across turns. */ + @JsonProperty("continueOnAutoMode") Boolean continueOnAutoMode, + /** Whether the session is running in an interactive UI. */ + @JsonProperty("runningInInteractiveMode") Boolean runningInInteractiveMode, + /** Whether to surface reasoning-summary events from the model. */ + @JsonProperty("enableReasoningSummaries") Boolean enableReasoningSummaries, + /** Runtime context discriminator (e.g., `cli`, `actions`). */ + @JsonProperty("agentContext") String agentContext, + /** Override directory for the session-events log. When unset, the runtime's default events log directory is used. */ + @JsonProperty("eventsLogDirectory") String eventsLogDirectory, + /** Additional content-exclusion policies to merge into the session's policy set. Opaque shape; see `ContentExclusionApiResponse` in the runtime. */ + @JsonProperty("additionalContentExclusionPolicies") List additionalContentExclusionPolicies, + /** Whether to expose the `manage_schedule` tool to the agent. The runtime always owns the per-session schedule registry; this flag only controls tool exposure (typically gated to staff users). */ + @JsonProperty("manageScheduleEnabled") Boolean manageScheduleEnabled +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionOptionsUpdateResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionOptionsUpdateResult.java new file mode 100644 index 0000000000..a20c64ab86 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionOptionsUpdateResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the session options patch was applied successfully. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionOptionsUpdateResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsApi.java index 6a32d2d191..082268d896 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsApi.java @@ -23,10 +23,38 @@ public final class SessionPermissionsApi { private final RpcCaller caller; private final String sessionId; + /** API methods for the {@code permissions.paths} sub-namespace. */ + public final SessionPermissionsPathsApi paths; + /** API methods for the {@code permissions.locations} sub-namespace. */ + public final SessionPermissionsLocationsApi locations; + /** API methods for the {@code permissions.folderTrust} sub-namespace. */ + public final SessionPermissionsFolderTrustApi folderTrust; + /** API methods for the {@code permissions.urls} sub-namespace. */ + public final SessionPermissionsUrlsApi urls; + /** @param caller the RPC transport function */ SessionPermissionsApi(RpcCaller caller, String sessionId) { this.caller = caller; this.sessionId = sessionId; + this.paths = new SessionPermissionsPathsApi(caller, sessionId); + this.locations = new SessionPermissionsLocationsApi(caller, sessionId); + this.folderTrust = new SessionPermissionsFolderTrustApi(caller, sessionId); + this.urls = new SessionPermissionsUrlsApi(caller, sessionId); + } + + /** + * Patch of permission policy fields to apply (omit a field to leave it unchanged). + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture configure(SessionPermissionsConfigureParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.configure", _p, SessionPermissionsConfigureResult.class); } /** @@ -34,6 +62,8 @@ public final class SessionPermissionsApi { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture handlePendingPermissionRequest(SessionPermissionsHandlePendingPermissionRequestParams params) { @@ -43,10 +73,22 @@ public CompletableFuture } /** - * Whether to auto-approve all tool permission requests for the rest of the session. + * No parameters; returns currently-pending permission requests for the session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture pendingRequests() { + return caller.invoke("session.permissions.pendingRequests", java.util.Map.of("sessionId", this.sessionId), SessionPermissionsPendingRequestsResult.class); + } + + /** + * Allow-all toggle for tool permission requests, with an optional telemetry source. *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture setApproveAll(SessionPermissionsSetApproveAllParams params) { @@ -55,12 +97,59 @@ public CompletableFuture setApproveAll(Se return caller.invoke("session.permissions.setApproveAll", _p, SessionPermissionsSetApproveAllResult.class); } + /** + * Scope and add/remove instructions for modifying session- or location-scoped permission rules. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture modifyRules(SessionPermissionsModifyRulesParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.modifyRules", _p, SessionPermissionsModifyRulesResult.class); + } + + /** + * Toggles whether permission prompts should be bridged into session events for this client. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture setRequired(SessionPermissionsSetRequiredParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.setRequired", _p, SessionPermissionsSetRequiredResult.class); + } + /** * No parameters; clears all session-scoped tool permission approvals. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture resetSessionApprovals() { return caller.invoke("session.permissions.resetSessionApprovals", java.util.Map.of("sessionId", this.sessionId), SessionPermissionsResetSessionApprovalsResult.class); } + /** + * Notification payload describing the permission prompt that the client just rendered. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture notifyPromptShown(SessionPermissionsNotifyPromptShownParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.notifyPromptShown", _p, SessionPermissionsNotifyPromptShownResult.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsConfigureParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsConfigureParams.java new file mode 100644 index 0000000000..494495fc52 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsConfigureParams.java @@ -0,0 +1,40 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Patch of permission policy fields to apply (omit a field to leave it unchanged). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsConfigureParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** If specified, sets whether tool permission requests are auto-approved without prompting. Omit to leave the current value unchanged. */ + @JsonProperty("approveAllToolPermissionRequests") Boolean approveAllToolPermissionRequests, + /** If specified, sets whether path/URL read permission requests are auto-approved. Omit to leave the current value unchanged. */ + @JsonProperty("approveAllReadPermissionRequests") Boolean approveAllReadPermissionRequests, + /** If specified, replaces the session's approved/denied permission rules. Omit to leave the current rules unchanged. */ + @JsonProperty("rules") PermissionRulesSet rules, + /** If specified, replaces the session's path-permission policy. The runtime constructs the appropriate PathManager based on these inputs (rooted at the session's working directory). Omit to leave the current path policy unchanged. */ + @JsonProperty("paths") PermissionPathsConfig paths, + /** If specified, replaces the session's URL-permission policy. The runtime constructs a fresh DefaultUrlManager based on these inputs. Omit to leave the current URL policy unchanged. */ + @JsonProperty("urls") PermissionUrlsConfig urls, + /** If specified, replaces the host-supplied GitHub Content Exclusion policies on the session (combined with natively-discovered policies when evaluating tool/file access). Omit to leave the current policies unchanged. */ + @JsonProperty("additionalContentExclusionPolicies") List additionalContentExclusionPolicies +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsConfigureResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsConfigureResult.java new file mode 100644 index 0000000000..7f9ce41502 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsConfigureResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsConfigureResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustAddTrustedParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustAddTrustedParams.java new file mode 100644 index 0000000000..184087f22f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustAddTrustedParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Folder path to add to trusted folders. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsFolderTrustAddTrustedParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Folder path to mark as trusted */ + @JsonProperty("path") String path +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustAddTrustedResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustAddTrustedResult.java new file mode 100644 index 0000000000..dbe09efc5d --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustAddTrustedResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsFolderTrustAddTrustedResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustApi.java new file mode 100644 index 0000000000..5337a40f13 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustApi.java @@ -0,0 +1,62 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code permissions.folderTrust} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionPermissionsFolderTrustApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionPermissionsFolderTrustApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Folder path to check for trust. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture isTrusted(SessionPermissionsFolderTrustIsTrustedParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.folderTrust.isTrusted", _p, SessionPermissionsFolderTrustIsTrustedResult.class); + } + + /** + * Folder path to add to trusted folders. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture addTrusted(SessionPermissionsFolderTrustAddTrustedParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.folderTrust.addTrusted", _p, SessionPermissionsFolderTrustAddTrustedResult.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustIsTrustedParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustIsTrustedParams.java new file mode 100644 index 0000000000..bacbe56496 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustIsTrustedParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Folder path to check for trust. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsFolderTrustIsTrustedParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Folder path to check */ + @JsonProperty("path") String path +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustIsTrustedResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustIsTrustedResult.java new file mode 100644 index 0000000000..3f2e26a0d0 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsFolderTrustIsTrustedResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Folder trust check result. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsFolderTrustIsTrustedResult( + /** Whether the folder is trusted */ + @JsonProperty("trusted") Boolean trusted +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsHandlePendingPermissionRequestParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsHandlePendingPermissionRequestParams.java index 7991f32486..f8f10a8d1b 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsHandlePendingPermissionRequestParams.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsHandlePendingPermissionRequestParams.java @@ -25,7 +25,7 @@ public record SessionPermissionsHandlePendingPermissionRequestParams( @JsonProperty("sessionId") String sessionId, /** Request ID of the pending permission request */ @JsonProperty("requestId") String requestId, - /** Decision to apply to a pending permission request. */ + /** The client's response to the pending permission prompt */ @JsonProperty("result") Object result ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsAddToolApprovalParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsAddToolApprovalParams.java new file mode 100644 index 0000000000..42429498d2 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsAddToolApprovalParams.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Location-scoped tool approval to persist. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsLocationsAddToolApprovalParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Location key (git root or cwd) to persist the approval to */ + @JsonProperty("locationKey") String locationKey, + /** Tool approval to persist and apply */ + @JsonProperty("approval") Object approval +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsAddToolApprovalResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsAddToolApprovalResult.java new file mode 100644 index 0000000000..fae259c23b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsAddToolApprovalResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsLocationsAddToolApprovalResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsApi.java new file mode 100644 index 0000000000..388bd49dfc --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsApi.java @@ -0,0 +1,77 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code permissions.locations} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionPermissionsLocationsApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionPermissionsLocationsApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Working directory to resolve into a location-permissions key. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture resolve(SessionPermissionsLocationsResolveParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.locations.resolve", _p, SessionPermissionsLocationsResolveResult.class); + } + + /** + * Working directory to load persisted location permissions for. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture apply(SessionPermissionsLocationsApplyParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.locations.apply", _p, SessionPermissionsLocationsApplyResult.class); + } + + /** + * Location-scoped tool approval to persist. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture addToolApproval(SessionPermissionsLocationsAddToolApprovalParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.locations.addToolApproval", _p, SessionPermissionsLocationsAddToolApprovalResult.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsApplyParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsApplyParams.java new file mode 100644 index 0000000000..7af5ef28fb --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsApplyParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Working directory to load persisted location permissions for. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsLocationsApplyParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Working directory whose persisted location permissions should be applied */ + @JsonProperty("workingDirectory") String workingDirectory +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsApplyResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsApplyResult.java new file mode 100644 index 0000000000..b2514d8afe --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsApplyResult.java @@ -0,0 +1,38 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Summary of persisted location permissions applied to the session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsLocationsApplyResult( + /** Location key used in the location-permissions store */ + @JsonProperty("locationKey") String locationKey, + /** Whether the location is a git repo or directory */ + @JsonProperty("locationType") PermissionLocationType locationType, + /** Whether a different location was applied since the previous apply call */ + @JsonProperty("changed") Boolean changed, + /** Number of location-scoped rules added to the live permission service */ + @JsonProperty("appliedRuleCount") Long appliedRuleCount, + /** Number of persisted allowed directories added to the live path manager */ + @JsonProperty("appliedDirectoryCount") Long appliedDirectoryCount, + /** Location-scoped rules applied to the live permission service */ + @JsonProperty("appliedRules") List appliedRules +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsResolveParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsResolveParams.java new file mode 100644 index 0000000000..d6ba06fba3 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsResolveParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Working directory to resolve into a location-permissions key. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsLocationsResolveParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Working directory whose permission location should be resolved */ + @JsonProperty("workingDirectory") String workingDirectory +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsResolveResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsResolveResult.java new file mode 100644 index 0000000000..3254bb2c6d --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsLocationsResolveResult.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Resolved location-permissions key and type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsLocationsResolveResult( + /** Location key used in the location-permissions store */ + @JsonProperty("locationKey") String locationKey, + /** Whether the location is a git repo or directory */ + @JsonProperty("locationType") PermissionLocationType locationType +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsModifyRulesParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsModifyRulesParams.java new file mode 100644 index 0000000000..ca91f611e9 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsModifyRulesParams.java @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Scope and add/remove instructions for modifying session- or location-scoped permission rules. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsModifyRulesParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Whether the change applies to ephemeral session-scoped rules (cleared at session end) or to location-scoped rules persisted via the location-permissions config file. */ + @JsonProperty("scope") PermissionsModifyRulesScope scope, + /** Rules to add to the scope. Applied before `remove`/`removeAll`. */ + @JsonProperty("add") List add, + /** Specific rules to remove from the scope. Ignored when `removeAll` is true. */ + @JsonProperty("remove") List remove, + /** When true, removes every rule currently in the scope (after any `add` is applied). Useful for clearing the location scope wholesale. */ + @JsonProperty("removeAll") Boolean removeAll +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsModifyRulesResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsModifyRulesResult.java new file mode 100644 index 0000000000..b4ed7786f9 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsModifyRulesResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsModifyRulesResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsNotifyPromptShownParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsNotifyPromptShownParams.java new file mode 100644 index 0000000000..50129680ff --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsNotifyPromptShownParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Notification payload describing the permission prompt that the client just rendered. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsNotifyPromptShownParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Human-readable description of the prompt the user is being asked to approve. Used by the runtime to fire the registered `permission_prompt` notification hook (e.g. terminal bell, desktop notification). */ + @JsonProperty("message") String message +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsNotifyPromptShownResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsNotifyPromptShownResult.java new file mode 100644 index 0000000000..6f2a368f40 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsNotifyPromptShownResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsNotifyPromptShownResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsAddParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsAddParams.java new file mode 100644 index 0000000000..5730b6b5e5 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsAddParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Directory path to add to the session's allowed directories. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsAddParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Directory to add to the allow-list. The runtime resolves and validates the path before adding. */ + @JsonProperty("path") String path +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsAddResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsAddResult.java new file mode 100644 index 0000000000..efb8fd5c4f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsAddResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsAddResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsApi.java new file mode 100644 index 0000000000..38ad70c675 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsApi.java @@ -0,0 +1,102 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code permissions.paths} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionPermissionsPathsApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionPermissionsPathsApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * No parameters; returns the session's allow-listed directories. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture list() { + return caller.invoke("session.permissions.paths.list", java.util.Map.of("sessionId", this.sessionId), SessionPermissionsPathsListResult.class); + } + + /** + * Directory path to add to the session's allowed directories. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture add(SessionPermissionsPathsAddParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.paths.add", _p, SessionPermissionsPathsAddResult.class); + } + + /** + * Directory path to set as the session's new primary working directory. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture updatePrimary(SessionPermissionsPathsUpdatePrimaryParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.paths.updatePrimary", _p, SessionPermissionsPathsUpdatePrimaryResult.class); + } + + /** + * Path to evaluate against the session's allowed directories. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture isPathWithinAllowedDirectories(SessionPermissionsPathsIsPathWithinAllowedDirectoriesParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.paths.isPathWithinAllowedDirectories", _p, SessionPermissionsPathsIsPathWithinAllowedDirectoriesResult.class); + } + + /** + * Path to evaluate against the session's workspace (primary) directory. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture isPathWithinWorkspace(SessionPermissionsPathsIsPathWithinWorkspaceParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.paths.isPathWithinWorkspace", _p, SessionPermissionsPathsIsPathWithinWorkspaceResult.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinAllowedDirectoriesParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinAllowedDirectoriesParams.java new file mode 100644 index 0000000000..71bd09a613 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinAllowedDirectoriesParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Path to evaluate against the session's allowed directories. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsIsPathWithinAllowedDirectoriesParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Path to check against the session's allowed directories */ + @JsonProperty("path") String path +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinAllowedDirectoriesResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinAllowedDirectoriesResult.java new file mode 100644 index 0000000000..6aadee0685 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinAllowedDirectoriesResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the supplied path is within the session's allowed directories. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsIsPathWithinAllowedDirectoriesResult( + /** Whether the path is within the session's allowed directories */ + @JsonProperty("allowed") Boolean allowed +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinWorkspaceParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinWorkspaceParams.java new file mode 100644 index 0000000000..699bf4cc81 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinWorkspaceParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Path to evaluate against the session's workspace (primary) directory. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsIsPathWithinWorkspaceParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Path to check against the session workspace directory */ + @JsonProperty("path") String path +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinWorkspaceResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinWorkspaceResult.java new file mode 100644 index 0000000000..3d64be687d --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsIsPathWithinWorkspaceResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the supplied path is within the session's workspace directory. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsIsPathWithinWorkspaceResult( + /** Whether the path is within the session workspace directory */ + @JsonProperty("allowed") Boolean allowed +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsListParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsListParams.java new file mode 100644 index 0000000000..23fad022d3 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsListParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * No parameters; returns the session's allow-listed directories. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsListParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsListResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsListResult.java new file mode 100644 index 0000000000..ab56c4a299 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsListResult.java @@ -0,0 +1,30 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Snapshot of the session's allow-listed directories and primary working directory. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsListResult( + /** All directories currently allowed for tool access on this session. */ + @JsonProperty("directories") List directories, + /** The primary working directory for this session. */ + @JsonProperty("primary") String primary +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsUpdatePrimaryParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsUpdatePrimaryParams.java new file mode 100644 index 0000000000..626ef57528 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsUpdatePrimaryParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Directory path to set as the session's new primary working directory. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsUpdatePrimaryParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Directory to set as the new primary working directory for the session's permission policy. */ + @JsonProperty("path") String path +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsUpdatePrimaryResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsUpdatePrimaryResult.java new file mode 100644 index 0000000000..34b8c403ee --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPathsUpdatePrimaryResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPathsUpdatePrimaryResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPendingRequestsParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPendingRequestsParams.java new file mode 100644 index 0000000000..c7ec7f9462 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPendingRequestsParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * No parameters; returns currently-pending permission requests for the session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPendingRequestsParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPendingRequestsResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPendingRequestsResult.java new file mode 100644 index 0000000000..b2b3c4ec1a --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsPendingRequestsResult.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * List of pending permission requests reconstructed from event history. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsPendingRequestsResult( + /** Pending permission prompts reconstructed from the session's event history. Equivalent to the set of `permission.requested` events that have not yet been followed by a matching `permission.completed` event. Used by clients (e.g. the CLI) to hydrate UI for prompts that were emitted before the client attached to the session. */ + @JsonProperty("items") List items +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetApproveAllParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetApproveAllParams.java index ac599a2dff..c61bdcca0d 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetApproveAllParams.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetApproveAllParams.java @@ -13,7 +13,7 @@ import javax.annotation.processing.Generated; /** - * Whether to auto-approve all tool permission requests for the rest of the session. + * Allow-all toggle for tool permission requests, with an optional telemetry source. * * @since 1.0.0 */ @@ -24,6 +24,8 @@ public record SessionPermissionsSetApproveAllParams( /** Target session identifier */ @JsonProperty("sessionId") String sessionId, /** Whether to auto-approve all tool permission requests */ - @JsonProperty("enabled") Boolean enabled + @JsonProperty("enabled") Boolean enabled, + /** Optional source for allow-all telemetry. Defaults to `rpc` when omitted for SDK callers. */ + @JsonProperty("source") PermissionsSetApproveAllSource source ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetRequiredParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetRequiredParams.java new file mode 100644 index 0000000000..e862dd76fe --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetRequiredParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Toggles whether permission prompts should be bridged into session events for this client. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsSetRequiredParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Whether the client wants `permission.requested` events bridged from the session-owned permission service. CLI clients that render prompt UI set this to `true` for as long as their listener is mounted; headless callers leave it unset (the default is `false`). */ + @JsonProperty("required") Boolean required +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetRequiredResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetRequiredResult.java new file mode 100644 index 0000000000..56f90afbc4 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsSetRequiredResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsSetRequiredResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsUrlsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsUrlsApi.java new file mode 100644 index 0000000000..1f46c66dcc --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsUrlsApi.java @@ -0,0 +1,47 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code permissions.urls} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionPermissionsUrlsApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionPermissionsUrlsApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Whether the URL-permission policy should run in unrestricted mode. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture setUnrestrictedMode(SessionPermissionsUrlsSetUnrestrictedModeParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.permissions.urls.setUnrestrictedMode", _p, SessionPermissionsUrlsSetUnrestrictedModeResult.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsUrlsSetUnrestrictedModeParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsUrlsSetUnrestrictedModeParams.java new file mode 100644 index 0000000000..ed3c0bc6b3 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsUrlsSetUnrestrictedModeParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Whether the URL-permission policy should run in unrestricted mode. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsUrlsSetUnrestrictedModeParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Whether to allow access to all URLs without prompting. Toggles the runtime's URL-permission policy in place. */ + @JsonProperty("enabled") Boolean enabled +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsUrlsSetUnrestrictedModeResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsUrlsSetUnrestrictedModeResult.java new file mode 100644 index 0000000000..41199db33c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPermissionsUrlsSetUnrestrictedModeResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the operation succeeded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionPermissionsUrlsSetUnrestrictedModeResult( + /** Whether the operation succeeded */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPlanApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPlanApi.java index 8f4bc6192b..1656211380 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPlanApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionPlanApi.java @@ -31,6 +31,8 @@ public final class SessionPlanApi { /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture read() { @@ -42,6 +44,8 @@ public CompletableFuture read() { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture update(SessionPlanUpdateParams params) { @@ -52,6 +56,8 @@ public CompletableFuture update(SessionPlanUpdateParams params) { /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture delete() { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueApi.java new file mode 100644 index 0000000000..19533541df --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueApi.java @@ -0,0 +1,60 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code queue} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionQueueApi { + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionQueueApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture pendingItems() { + return caller.invoke("session.queue.pendingItems", java.util.Map.of("sessionId", this.sessionId), SessionQueuePendingItemsResult.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture removeMostRecent() { + return caller.invoke("session.queue.removeMostRecent", java.util.Map.of("sessionId", this.sessionId), SessionQueueRemoveMostRecentResult.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture clear() { + return caller.invoke("session.queue.clear", java.util.Map.of("sessionId", this.sessionId), Void.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueClearParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueClearParams.java new file mode 100644 index 0000000000..1ab26019e3 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueClearParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionQueueClearParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueuePendingItemsParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueuePendingItemsParams.java new file mode 100644 index 0000000000..6bc51f8075 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueuePendingItemsParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionQueuePendingItemsParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueuePendingItemsResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueuePendingItemsResult.java new file mode 100644 index 0000000000..9f839fdc1a --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueuePendingItemsResult.java @@ -0,0 +1,30 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Snapshot of the session's pending queued items and immediate-steering messages. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionQueuePendingItemsResult( + /** Pending queued items in submission order. Includes user messages, queued slash commands, and queued model changes; omits internal system items. */ + @JsonProperty("items") List items, + /** Display text for messages currently in the immediate steering queue (interjections sent during a running turn). */ + @JsonProperty("steeringMessages") List steeringMessages +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueRemoveMostRecentParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueRemoveMostRecentParams.java new file mode 100644 index 0000000000..1ca36be68c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueRemoveMostRecentParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionQueueRemoveMostRecentParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueRemoveMostRecentResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueRemoveMostRecentResult.java new file mode 100644 index 0000000000..a92c93d5fe --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionQueueRemoveMostRecentResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether a user-facing pending item was removed. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionQueueRemoveMostRecentResult( + /** True if a user-facing pending item was removed (LIFO across both queues); false when no removable items remained. */ + @JsonProperty("removed") Boolean removed +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteApi.java index ba3c91dd06..f5f0ec3cc9 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteApi.java @@ -54,4 +54,19 @@ public CompletableFuture disable() { return caller.invoke("session.remote.disable", java.util.Map.of("sessionId", this.sessionId), Void.class); } + /** + * New remote-steerability state to persist as a `session.remote_steerable_changed` event. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture notifySteerableChanged(SessionRemoteNotifySteerableChangedParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.remote.notifySteerableChanged", _p, Void.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteNotifySteerableChangedParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteNotifySteerableChangedParams.java new file mode 100644 index 0000000000..8851fad7ab --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteNotifySteerableChangedParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * New remote-steerability state to persist as a `session.remote_steerable_changed` event. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionRemoteNotifySteerableChangedParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Whether the session now supports remote steering via GitHub. The runtime persists this as a `session.remote_steerable_changed` event so resume/replay sees the up-to-date capability. */ + @JsonProperty("remoteSteerable") Boolean remoteSteerable +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteNotifySteerableChangedResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteNotifySteerableChangedResult.java new file mode 100644 index 0000000000..857f373624 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRemoteNotifySteerableChangedResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Persist a steerability change as a `session.remote_steerable_changed` event. Used by the host (CLI / SDK consumer) when it has just finished enabling or disabling steering on a remote exporter that the runtime does not directly own. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionRemoteNotifySteerableChangedResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRpc.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRpc.java index ffd890a76b..a2639eb0a6 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRpc.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionRpc.java @@ -54,24 +54,38 @@ public final class SessionRpc { public final SessionMcpApi mcp; /** API methods for the {@code plugins} namespace. */ public final SessionPluginsApi plugins; + /** API methods for the {@code options} namespace. */ + public final SessionOptionsApi options; + /** API methods for the {@code lsp} namespace. */ + public final SessionLspApi lsp; /** API methods for the {@code extensions} namespace. */ public final SessionExtensionsApi extensions; /** API methods for the {@code tools} namespace. */ public final SessionToolsApi tools; /** API methods for the {@code commands} namespace. */ public final SessionCommandsApi commands; + /** API methods for the {@code telemetry} namespace. */ + public final SessionTelemetryApi telemetry; /** API methods for the {@code ui} namespace. */ public final SessionUiApi ui; /** API methods for the {@code permissions} namespace. */ public final SessionPermissionsApi permissions; + /** API methods for the {@code metadata} namespace. */ + public final SessionMetadataApi metadata; /** API methods for the {@code shell} namespace. */ public final SessionShellApi shell; /** API methods for the {@code history} namespace. */ public final SessionHistoryApi history; + /** API methods for the {@code queue} namespace. */ + public final SessionQueueApi queue; + /** API methods for the {@code eventLog} namespace. */ + public final SessionEventLogApi eventLog; /** API methods for the {@code usage} namespace. */ public final SessionUsageApi usage; /** API methods for the {@code remote} namespace. */ public final SessionRemoteApi remote; + /** API methods for the {@code schedule} namespace. */ + public final SessionScheduleApi schedule; /** * Creates a new session RPC client. @@ -95,19 +109,28 @@ public SessionRpc(RpcCaller caller, String sessionId) { this.skills = new SessionSkillsApi(caller, sessionId); this.mcp = new SessionMcpApi(caller, sessionId); this.plugins = new SessionPluginsApi(caller, sessionId); + this.options = new SessionOptionsApi(caller, sessionId); + this.lsp = new SessionLspApi(caller, sessionId); this.extensions = new SessionExtensionsApi(caller, sessionId); this.tools = new SessionToolsApi(caller, sessionId); this.commands = new SessionCommandsApi(caller, sessionId); + this.telemetry = new SessionTelemetryApi(caller, sessionId); this.ui = new SessionUiApi(caller, sessionId); this.permissions = new SessionPermissionsApi(caller, sessionId); + this.metadata = new SessionMetadataApi(caller, sessionId); this.shell = new SessionShellApi(caller, sessionId); this.history = new SessionHistoryApi(caller, sessionId); + this.queue = new SessionQueueApi(caller, sessionId); + this.eventLog = new SessionEventLogApi(caller, sessionId); this.usage = new SessionUsageApi(caller, sessionId); this.remote = new SessionRemoteApi(caller, sessionId); + this.schedule = new SessionScheduleApi(caller, sessionId); } /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture suspend() { @@ -115,10 +138,57 @@ public CompletableFuture suspend() { } /** - * Message text, optional severity level, persistence flag, and optional follow-up URL. + * Parameters for sending a user message to the session + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture send(SessionSendParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.send", _p, SessionSendResult.class); + } + + /** + * Parameters for aborting the current turn *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture abort(SessionAbortParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.abort", _p, SessionAbortResult.class); + } + + /** + * Parameters for shutting down the session + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture shutdown(SessionShutdownParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.shutdown", _p, Void.class); + } + + /** + * Message text, optional severity level, persistence flag, optional follow-up URL, and optional tip. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture log(SessionLogParams params) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleApi.java new file mode 100644 index 0000000000..a0714233b3 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleApi.java @@ -0,0 +1,57 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code schedule} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionScheduleApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionScheduleApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture list() { + return caller.invoke("session.schedule.list", java.util.Map.of("sessionId", this.sessionId), SessionScheduleListResult.class); + } + + /** + * Identifier of the scheduled prompt to remove. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture stop(SessionScheduleStopParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.schedule.stop", _p, SessionScheduleStopResult.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleListParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleListParams.java new file mode 100644 index 0000000000..0b32d10d8f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleListParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionScheduleListParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleListResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleListResult.java new file mode 100644 index 0000000000..80202f88d7 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleListResult.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Snapshot of the currently active recurring prompts for this session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionScheduleListResult( + /** Active scheduled prompts, ordered by id. */ + @JsonProperty("entries") List entries +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleStopParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleStopParams.java new file mode 100644 index 0000000000..f82cca373b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleStopParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifier of the scheduled prompt to remove. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionScheduleStopParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Id of the scheduled prompt to remove. */ + @JsonProperty("id") Long id +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleStopResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleStopResult.java new file mode 100644 index 0000000000..8037068035 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionScheduleStopResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Remove a scheduled prompt by id. The result entry is omitted if the id was unknown. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionScheduleStopResult( + /** The removed entry, or omitted if no entry matched. */ + @JsonProperty("entry") ScheduleEntry entry +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSendParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSendParams.java new file mode 100644 index 0000000000..caebce5268 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSendParams.java @@ -0,0 +1,55 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import java.util.Map; +import javax.annotation.processing.Generated; + +/** + * Parameters for sending a user message to the session + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionSendParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** The user message text */ + @JsonProperty("prompt") String prompt, + /** If provided, this is shown in the timeline instead of `prompt` */ + @JsonProperty("displayPrompt") String displayPrompt, + /** Optional attachments (files, directories, selections, blobs, GitHub references) to include with the message */ + @JsonProperty("attachments") List attachments, + /** How to deliver the message. `enqueue` (default) appends to the message queue. `immediate` interjects during an in-progress turn. */ + @JsonProperty("mode") SendMode mode, + /** If true, adds the message to the front of the queue instead of the end */ + @JsonProperty("prepend") Boolean prepend, + /** If false, this message will not trigger a Premium Request Unit charge. User messages default to billable. */ + @JsonProperty("billable") Boolean billable, + /** If set, the request will fail if the named tool is not available when this message is among the user messages at the start of the current exchange */ + @JsonProperty("requiredTool") String requiredTool, + /** Optional provenance tag copied to the resulting user.message event. Supported values are `system`, `command-*`, and `schedule-*`. */ + @JsonProperty("source") Object source, + /** The UI mode the agent was in when this message was sent. Defaults to the session's current mode. */ + @JsonProperty("agentMode") SendAgentMode agentMode, + /** Custom HTTP headers to include in outbound model requests for this turn. Merged with session-level provider headers; per-turn headers augment and overwrite session-level headers with the same key. */ + @JsonProperty("requestHeaders") Map requestHeaders, + /** W3C Trace Context traceparent header for distributed tracing of this agent turn */ + @JsonProperty("traceparent") String traceparent, + /** W3C Trace Context tracestate header for distributed tracing */ + @JsonProperty("tracestate") String tracestate, + /** If true, await completion of the agentic loop for this message before returning. Defaults to false (fire-and-forget). When true, the result still contains the same `messageId`; the caller can rely on the agent having processed the message before the call resolves. */ + @JsonProperty("wait") Boolean wait_ +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSendResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSendResult.java new file mode 100644 index 0000000000..d93c58ce1e --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSendResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Result of sending a user message + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionSendResult( + /** Unique identifier assigned to the message */ + @JsonProperty("messageId") String messageId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionShellApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionShellApi.java index 4a8e6a86c6..6ed7c8b6bb 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionShellApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionShellApi.java @@ -34,6 +34,8 @@ public final class SessionShellApi { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture exec(SessionShellExecParams params) { @@ -47,6 +49,8 @@ public CompletableFuture exec(SessionShellExecParams par *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture kill(SessionShellKillParams params) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionShutdownParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionShutdownParams.java new file mode 100644 index 0000000000..e7bf266e8f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionShutdownParams.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Parameters for shutting down the session + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionShutdownParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Why the session is being shut down. Defaults to "routine" when omitted. */ + @JsonProperty("type") ShutdownType type, + /** Optional human-readable reason. Typically the message of the error that triggered shutdown when type is 'error'. */ + @JsonProperty("reason") String reason +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsApi.java index a96f410f04..82cea6a8fe 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsApi.java @@ -39,6 +39,16 @@ public CompletableFuture list() { return caller.invoke("session.skills.list", java.util.Map.of("sessionId", this.sessionId), SessionSkillsListResult.class); } + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture getInvoked() { + return caller.invoke("session.skills.getInvoked", java.util.Map.of("sessionId", this.sessionId), SessionSkillsGetInvokedResult.class); + } + /** * Name of the skill to enable for the session. *

@@ -79,4 +89,14 @@ public CompletableFuture reload() { return caller.invoke("session.skills.reload", java.util.Map.of("sessionId", this.sessionId), SessionSkillsReloadResult.class); } + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture ensureLoaded() { + return caller.invoke("session.skills.ensureLoaded", java.util.Map.of("sessionId", this.sessionId), Void.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsEnsureLoadedParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsEnsureLoadedParams.java new file mode 100644 index 0000000000..8b7ab0e628 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsEnsureLoadedParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionSkillsEnsureLoadedParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsGetInvokedParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsGetInvokedParams.java new file mode 100644 index 0000000000..8ae29d5e7f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsGetInvokedParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionSkillsGetInvokedParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsGetInvokedResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsGetInvokedResult.java new file mode 100644 index 0000000000..f20c657c07 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionSkillsGetInvokedResult.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Skills invoked during this session, ordered by invocation time (most recent last). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionSkillsGetInvokedResult( + /** Skills invoked during this session, ordered by invocation time (most recent last) */ + @JsonProperty("skills") List skills +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksApi.java index 577d91ee35..5fa5ca90f5 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksApi.java @@ -54,6 +54,51 @@ public CompletableFuture list() { return caller.invoke("session.tasks.list", java.util.Map.of("sessionId", this.sessionId), SessionTasksListResult.class); } + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture refresh() { + return caller.invoke("session.tasks.refresh", java.util.Map.of("sessionId", this.sessionId), Void.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture waitForPending() { + return caller.invoke("session.tasks.waitForPending", java.util.Map.of("sessionId", this.sessionId), Void.class); + } + + /** + * Identifier of the background task to fetch progress for. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture getProgress(SessionTasksGetProgressParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.tasks.getProgress", _p, SessionTasksGetProgressResult.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture getCurrentPromotable() { + return caller.invoke("session.tasks.getCurrentPromotable", java.util.Map.of("sessionId", this.sessionId), SessionTasksGetCurrentPromotableResult.class); + } + /** * Identifier of the task to promote to background mode. *

@@ -69,6 +114,16 @@ public CompletableFuture promoteToBackgro return caller.invoke("session.tasks.promoteToBackground", _p, SessionTasksPromoteToBackgroundResult.class); } + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture promoteCurrentToBackground() { + return caller.invoke("session.tasks.promoteCurrentToBackground", java.util.Map.of("sessionId", this.sessionId), SessionTasksPromoteCurrentToBackgroundResult.class); + } + /** * Identifier of the background task to cancel. *

diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetCurrentPromotableParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetCurrentPromotableParams.java new file mode 100644 index 0000000000..e183c7bc4d --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetCurrentPromotableParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksGetCurrentPromotableParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetCurrentPromotableResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetCurrentPromotableResult.java new file mode 100644 index 0000000000..65eee3220c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetCurrentPromotableResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * The first sync-waiting task that can currently be promoted to background mode. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksGetCurrentPromotableResult( + /** The first sync-waiting task (agent first, then shell) that can currently be promoted to background mode. Omitted if no such task exists. The returned task is guaranteed to have executionMode='sync' and canPromoteToBackground=true at the time of the call. */ + @JsonProperty("task") Object task +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetProgressParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetProgressParams.java new file mode 100644 index 0000000000..bcdf9a8d8c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetProgressParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifier of the background task to fetch progress for. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksGetProgressParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Task identifier (agent ID or shell ID) */ + @JsonProperty("id") String id +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetProgressResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetProgressResult.java new file mode 100644 index 0000000000..d2a4c7eb54 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksGetProgressResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Progress information for the task, or null when no task with that ID is tracked. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksGetProgressResult( + /** Progress information for the task, discriminated by type. Returns null when no task with this ID is currently tracked. */ + @JsonProperty("progress") Object progress +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksPromoteCurrentToBackgroundParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksPromoteCurrentToBackgroundParams.java new file mode 100644 index 0000000000..31c7fa94ab --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksPromoteCurrentToBackgroundParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksPromoteCurrentToBackgroundParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksPromoteCurrentToBackgroundResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksPromoteCurrentToBackgroundResult.java new file mode 100644 index 0000000000..590082505b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksPromoteCurrentToBackgroundResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * The promoted task as it now exists in background mode, omitted if no promotable task was waiting. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksPromoteCurrentToBackgroundResult( + /** The promoted task as it now exists in background mode, omitted if no promotable task was waiting. Atomic operation: avoids the race window of getCurrentPromotable + promoteToBackground. */ + @JsonProperty("task") Object task +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksRefreshParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksRefreshParams.java new file mode 100644 index 0000000000..3560835af5 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksRefreshParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksRefreshParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksRefreshResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksRefreshResult.java new file mode 100644 index 0000000000..c386369763 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksRefreshResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Refresh metadata for any detached background shells the runtime knows about. Use after a long pause to pick up exit/output state for shells running outside the agent loop. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksRefreshResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksWaitForPendingParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksWaitForPendingParams.java new file mode 100644 index 0000000000..6dc9358223 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksWaitForPendingParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksWaitForPendingParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksWaitForPendingResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksWaitForPendingResult.java new file mode 100644 index 0000000000..5cbce9cd5a --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTasksWaitForPendingResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Wait until all in-flight background tasks (agents + shells) and any follow-up turns scheduled by their completions have settled. Returns when the runtime is fully drained or after an internal timeout (default 10 minutes; configurable via COPILOT_TASK_WAIT_TIMEOUT_SECONDS). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTasksWaitForPendingResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTelemetryApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTelemetryApi.java new file mode 100644 index 0000000000..5cad4e771c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTelemetryApi.java @@ -0,0 +1,47 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import java.util.concurrent.CompletableFuture; +import javax.annotation.processing.Generated; + +/** + * API methods for the {@code telemetry} namespace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public final class SessionTelemetryApi { + + private static final com.fasterxml.jackson.databind.ObjectMapper MAPPER = RpcMapper.INSTANCE; + + private final RpcCaller caller; + private final String sessionId; + + /** @param caller the RPC transport function */ + SessionTelemetryApi(RpcCaller caller, String sessionId) { + this.caller = caller; + this.sessionId = sessionId; + } + + /** + * Feature override key/value pairs to attach to subsequent telemetry events from this session. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture setFeatureOverrides(SessionTelemetrySetFeatureOverridesParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.telemetry.setFeatureOverrides", _p, Void.class); + } + +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTelemetrySetFeatureOverridesParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTelemetrySetFeatureOverridesParams.java new file mode 100644 index 0000000000..aa0d4e3c3b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionTelemetrySetFeatureOverridesParams.java @@ -0,0 +1,30 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; +import javax.annotation.processing.Generated; + +/** + * Feature override key/value pairs to attach to subsequent telemetry events from this session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionTelemetrySetFeatureOverridesParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Override key/value pairs to attach to subsequent telemetry events from this session. Replaces any previously-set overrides. */ + @JsonProperty("features") Map features +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsApi.java index 323fdfe510..ded5886273 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsApi.java @@ -34,6 +34,8 @@ public final class SessionToolsApi { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture handlePendingToolCall(SessionToolsHandlePendingToolCallParams params) { @@ -42,4 +44,14 @@ public CompletableFuture handlePendingT return caller.invoke("session.tools.handlePendingToolCall", _p, SessionToolsHandlePendingToolCallResult.class); } + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture initializeAndValidate() { + return caller.invoke("session.tools.initializeAndValidate", java.util.Map.of("sessionId", this.sessionId), Void.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsInitializeAndValidateParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsInitializeAndValidateParams.java new file mode 100644 index 0000000000..d3ec2aeea6 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsInitializeAndValidateParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionToolsInitializeAndValidateParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsInitializeAndValidateResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsInitializeAndValidateResult.java new file mode 100644 index 0000000000..d25c0e5a86 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionToolsInitializeAndValidateResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Resolve, build, and validate the runtime tool list for this session. Subagent sessions and consumer flows that need an initialized tool set before `send` invoke this. Default base-class implementation is a no-op for sessions that don't support tool validation. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionToolsInitializeAndValidateResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiApi.java index ef37d580d6..3ae8295889 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiApi.java @@ -34,6 +34,8 @@ public final class SessionUiApi { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture elicitation(SessionUiElicitationParams params) { @@ -47,6 +49,8 @@ public CompletableFuture elicitation(SessionUiElicit *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture handlePendingElicitation(SessionUiHandlePendingElicitationParams params) { @@ -55,4 +59,89 @@ public CompletableFuture handlePendingE return caller.invoke("session.ui.handlePendingElicitation", _p, SessionUiHandlePendingElicitationResult.class); } + /** + * Request ID of a pending `user_input.requested` event and the user's response. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture handlePendingUserInput(SessionUiHandlePendingUserInputParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.ui.handlePendingUserInput", _p, SessionUiHandlePendingUserInputResult.class); + } + + /** + * Request ID of a pending `sampling.requested` event and an optional sampling result payload (omit to reject). + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture handlePendingSampling(SessionUiHandlePendingSamplingParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.ui.handlePendingSampling", _p, SessionUiHandlePendingSamplingResult.class); + } + + /** + * Request ID of a pending `auto_mode_switch.requested` event and the user's response. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture handlePendingAutoModeSwitch(SessionUiHandlePendingAutoModeSwitchParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.ui.handlePendingAutoModeSwitch", _p, SessionUiHandlePendingAutoModeSwitchResult.class); + } + + /** + * Request ID of a pending `exit_plan_mode.requested` event and the user's response. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture handlePendingExitPlanMode(SessionUiHandlePendingExitPlanModeParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.ui.handlePendingExitPlanMode", _p, SessionUiHandlePendingExitPlanModeResult.class); + } + + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture registerDirectAutoModeSwitchHandler() { + return caller.invoke("session.ui.registerDirectAutoModeSwitchHandler", java.util.Map.of("sessionId", this.sessionId), SessionUiRegisterDirectAutoModeSwitchHandlerResult.class); + } + + /** + * Opaque handle previously returned by `registerDirectAutoModeSwitchHandler` to release. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture unregisterDirectAutoModeSwitchHandler(SessionUiUnregisterDirectAutoModeSwitchHandlerParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.ui.unregisterDirectAutoModeSwitchHandler", _p, SessionUiUnregisterDirectAutoModeSwitchHandlerResult.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingAutoModeSwitchParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingAutoModeSwitchParams.java new file mode 100644 index 0000000000..ab37b178c0 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingAutoModeSwitchParams.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Request ID of a pending `auto_mode_switch.requested` event and the user's response. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiHandlePendingAutoModeSwitchParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** The unique request ID from the auto_mode_switch.requested event */ + @JsonProperty("requestId") String requestId, + /** User's choice for auto-mode switching: yes (allow this turn), yes_always (allow + persist as setting), or no (decline). */ + @JsonProperty("response") UIAutoModeSwitchResponse response +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingAutoModeSwitchResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingAutoModeSwitchResult.java new file mode 100644 index 0000000000..0df5ca5715 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingAutoModeSwitchResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the pending UI request was resolved by this call. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiHandlePendingAutoModeSwitchResult( + /** True if the request was still pending and was resolved by this call. False if the request ID was unknown, already resolved by another client (e.g. GitHub), expired, or otherwise no longer pending. */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingExitPlanModeParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingExitPlanModeParams.java new file mode 100644 index 0000000000..a83d7d0389 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingExitPlanModeParams.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Request ID of a pending `exit_plan_mode.requested` event and the user's response. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiHandlePendingExitPlanModeParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** The unique request ID from the exit_plan_mode.requested event */ + @JsonProperty("requestId") String requestId, + /** Schema for the `UIExitPlanModeResponse` type. */ + @JsonProperty("response") UIExitPlanModeResponse response +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingExitPlanModeResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingExitPlanModeResult.java new file mode 100644 index 0000000000..c3c183b515 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingExitPlanModeResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the pending UI request was resolved by this call. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiHandlePendingExitPlanModeResult( + /** True if the request was still pending and was resolved by this call. False if the request ID was unknown, already resolved by another client (e.g. GitHub), expired, or otherwise no longer pending. */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingSamplingParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingSamplingParams.java new file mode 100644 index 0000000000..6c4304fd5e --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingSamplingParams.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Request ID of a pending `sampling.requested` event and an optional sampling result payload (omit to reject). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiHandlePendingSamplingParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** The unique request ID from the sampling.requested event */ + @JsonProperty("requestId") String requestId, + /** Optional sampling result payload. Omit to reject/cancel the sampling request without providing a result. */ + @JsonProperty("response") UIHandlePendingSamplingResponse response +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingSamplingResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingSamplingResult.java new file mode 100644 index 0000000000..2fa7e09e1c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingSamplingResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the pending UI request was resolved by this call. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiHandlePendingSamplingResult( + /** True if the request was still pending and was resolved by this call. False if the request ID was unknown, already resolved by another client (e.g. GitHub), expired, or otherwise no longer pending. */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingUserInputParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingUserInputParams.java new file mode 100644 index 0000000000..3e1624bf26 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingUserInputParams.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Request ID of a pending `user_input.requested` event and the user's response. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiHandlePendingUserInputParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** The unique request ID from the user_input.requested event */ + @JsonProperty("requestId") String requestId, + /** Schema for the `UIUserInputResponse` type. */ + @JsonProperty("response") UIUserInputResponse response +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingUserInputResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingUserInputResult.java new file mode 100644 index 0000000000..fb240b3c5c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiHandlePendingUserInputResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the pending UI request was resolved by this call. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiHandlePendingUserInputResult( + /** True if the request was still pending and was resolved by this call. False if the request ID was unknown, already resolved by another client (e.g. GitHub), expired, or otherwise no longer pending. */ + @JsonProperty("success") Boolean success +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiRegisterDirectAutoModeSwitchHandlerParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiRegisterDirectAutoModeSwitchHandlerParams.java new file mode 100644 index 0000000000..42c8ba2a5b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiRegisterDirectAutoModeSwitchHandlerParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiRegisterDirectAutoModeSwitchHandlerParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiRegisterDirectAutoModeSwitchHandlerResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiRegisterDirectAutoModeSwitchHandlerResult.java new file mode 100644 index 0000000000..5aedb596ba --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiRegisterDirectAutoModeSwitchHandlerResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Register an in-process handler for `auto_mode_switch.requested` events. The caller still attaches the actual listener via the standard event-subscription mechanism; this registration solely tells the server bridge to skip its own dispatch (so a remote client doesn't race the in-process handler for the same requestId). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiRegisterDirectAutoModeSwitchHandlerResult( + /** Opaque handle representing the registration. Pass this same handle to `unregisterDirectAutoModeSwitchHandler` when the in-process handler is no longer active. Multiple registrations are reference-counted; the server bridge will only dispatch auto-mode-switch requests when no handles are active. */ + @JsonProperty("handle") String handle +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiUnregisterDirectAutoModeSwitchHandlerParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiUnregisterDirectAutoModeSwitchHandlerParams.java new file mode 100644 index 0000000000..c22ad46e78 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiUnregisterDirectAutoModeSwitchHandlerParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Opaque handle previously returned by `registerDirectAutoModeSwitchHandler` to release. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiUnregisterDirectAutoModeSwitchHandlerParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Handle previously returned by `registerDirectAutoModeSwitchHandler` */ + @JsonProperty("handle") String handle +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiUnregisterDirectAutoModeSwitchHandlerResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiUnregisterDirectAutoModeSwitchHandlerResult.java new file mode 100644 index 0000000000..6d36ad751c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUiUnregisterDirectAutoModeSwitchHandlerResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Indicates whether the handle was active and the registration count was decremented. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionUiUnregisterDirectAutoModeSwitchHandlerResult( + /** True if the handle was active and decremented the counter; false if the handle was unknown. */ + @JsonProperty("unregistered") Boolean unregistered +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUsageGetMetricsResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUsageGetMetricsResult.java index ee7bf42cd7..21feae576b 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUsageGetMetricsResult.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionUsageGetMetricsResult.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.OffsetDateTime; import java.util.Map; import javax.annotation.processing.Generated; @@ -27,13 +28,13 @@ public record SessionUsageGetMetricsResult( /** Raw count of user-initiated API requests */ @JsonProperty("totalUserRequests") Long totalUserRequests, /** Session-wide accumulated nano-AI units cost */ - @JsonProperty("totalNanoAiu") Long totalNanoAiu, + @JsonProperty("totalNanoAiu") Double totalNanoAiu, /** Session-wide per-token-type accumulated token counts */ @JsonProperty("tokenDetails") Map tokenDetails, /** Total time spent in model API calls (milliseconds) */ - @JsonProperty("totalApiDurationMs") Double totalApiDurationMs, - /** Session start timestamp (epoch milliseconds) */ - @JsonProperty("sessionStartTime") Long sessionStartTime, + @JsonProperty("totalApiDurationMs") Long totalApiDurationMs, + /** ISO 8601 timestamp when the session started */ + @JsonProperty("sessionStartTime") OffsetDateTime sessionStartTime, /** Aggregated code change metrics */ @JsonProperty("codeChanges") UsageMetricsCodeChanges codeChanges, /** Per-model token and request metrics, keyed by model identifier */ diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkingDirectoryContext.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkingDirectoryContext.java new file mode 100644 index 0000000000..4c17aa5ea7 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkingDirectoryContext.java @@ -0,0 +1,41 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Updated working directory and git context. Emitted as the new payload of `session.context_changed`. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionWorkingDirectoryContext( + /** Current working directory path */ + @JsonProperty("cwd") String cwd, + /** Root directory of the git repository, resolved via git rev-parse */ + @JsonProperty("gitRoot") String gitRoot, + /** Repository identifier derived from the git remote URL ("owner/name" for GitHub, "org/project/repo" for Azure DevOps) */ + @JsonProperty("repository") String repository, + /** Hosting platform type of the repository */ + @JsonProperty("hostType") SessionWorkingDirectoryContextHostType hostType, + /** Raw host string from the git remote URL (e.g. "github.com", "dev.azure.com") */ + @JsonProperty("repositoryHost") String repositoryHost, + /** Current git branch name */ + @JsonProperty("branch") String branch, + /** Head commit of the current git branch */ + @JsonProperty("headCommit") String headCommit, + /** Merge-base commit SHA (fork point from the remote default branch) */ + @JsonProperty("baseCommit") String baseCommit +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkingDirectoryContextHostType.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkingDirectoryContextHostType.java new file mode 100644 index 0000000000..0c5a0cffe7 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkingDirectoryContextHostType.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Hosting platform type of the repository + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum SessionWorkingDirectoryContextHostType { + /** The {@code github} variant. */ + GITHUB("github"), + /** The {@code ado} variant. */ + ADO("ado"); + + private final String value; + SessionWorkingDirectoryContextHostType(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static SessionWorkingDirectoryContextHostType fromValue(String value) { + for (SessionWorkingDirectoryContextHostType v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown SessionWorkingDirectoryContextHostType value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesApi.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesApi.java index a884637375..de51e4a907 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesApi.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesApi.java @@ -31,6 +31,8 @@ public final class SessionWorkspacesApi { /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture getWorkspace() { @@ -39,6 +41,8 @@ public CompletableFuture getWorkspace() { /** * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture listFiles() { @@ -50,6 +54,8 @@ public CompletableFuture listFiles() { *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture readFile(SessionWorkspacesReadFileParams params) { @@ -63,6 +69,8 @@ public CompletableFuture readFile(SessionWorksp *

* Note: the {@code sessionId} field in the params record is overridden * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. * @since 1.0.0 */ public CompletableFuture createFile(SessionWorkspacesCreateFileParams params) { @@ -71,4 +79,44 @@ public CompletableFuture createFile(SessionWorkspacesCreateFileParams para return caller.invoke("session.workspaces.createFile", _p, Void.class); } + /** + * Identifies the target session. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture listCheckpoints() { + return caller.invoke("session.workspaces.listCheckpoints", java.util.Map.of("sessionId", this.sessionId), SessionWorkspacesListCheckpointsResult.class); + } + + /** + * Checkpoint number to read. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture readCheckpoint(SessionWorkspacesReadCheckpointParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.workspaces.readCheckpoint", _p, SessionWorkspacesReadCheckpointResult.class); + } + + /** + * Pasted content to save as a UTF-8 file in the session workspace. + *

+ * Note: the {@code sessionId} field in the params record is overridden + * by the session-scoped wrapper; any value provided is ignored. + * + * @apiNote This method is experimental and may change in a future version. + * @since 1.0.0 + */ + public CompletableFuture saveLargePaste(SessionWorkspacesSaveLargePasteParams params) { + com.fasterxml.jackson.databind.node.ObjectNode _p = MAPPER.valueToTree(params); + _p.put("sessionId", this.sessionId); + return caller.invoke("session.workspaces.saveLargePaste", _p, SessionWorkspacesSaveLargePasteResult.class); + } + } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesGetWorkspaceResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesGetWorkspaceResult.java index 3772d5f931..ded4778b47 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesGetWorkspaceResult.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesGetWorkspaceResult.java @@ -11,11 +11,10 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import java.time.OffsetDateTime; -import java.util.UUID; import javax.annotation.processing.Generated; /** - * Current workspace metadata for the session, or null when not available. + * Current workspace metadata for the session, including its absolute filesystem path when available. * * @since 1.0.0 */ @@ -24,17 +23,20 @@ @JsonIgnoreProperties(ignoreUnknown = true) public record SessionWorkspacesGetWorkspaceResult( /** Current workspace metadata, or null if not available */ - @JsonProperty("workspace") SessionWorkspacesGetWorkspaceResultWorkspace workspace + @JsonProperty("workspace") SessionWorkspacesGetWorkspaceResultWorkspace workspace, + /** Absolute filesystem path to the workspace directory. Omitted when the session has no workspace (e.g. remote sessions). */ + @JsonProperty("path") String path ) { @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) public record SessionWorkspacesGetWorkspaceResultWorkspace( - @JsonProperty("id") UUID id, + @JsonProperty("id") String id, @JsonProperty("cwd") String cwd, @JsonProperty("git_root") String gitRoot, @JsonProperty("repository") String repository, - @JsonProperty("host_type") SessionWorkspacesGetWorkspaceResultWorkspaceHostType hostType, + /** Allowed values for the `WorkspacesWorkspaceDetailsHostType` enumeration. */ + @JsonProperty("host_type") WorkspacesWorkspaceDetailsHostType hostType, @JsonProperty("branch") String branch, @JsonProperty("name") String name, @JsonProperty("user_named") Boolean userNamed, @@ -47,24 +49,5 @@ public record SessionWorkspacesGetWorkspaceResultWorkspace( @JsonProperty("mc_last_event_id") String mcLastEventId, @JsonProperty("chronicle_sync_dismissed") Boolean chronicleSyncDismissed ) { - - public enum SessionWorkspacesGetWorkspaceResultWorkspaceHostType { - /** The {@code github} variant. */ - GITHUB("github"), - /** The {@code ado} variant. */ - ADO("ado"); - - private final String value; - SessionWorkspacesGetWorkspaceResultWorkspaceHostType(String value) { this.value = value; } - @com.fasterxml.jackson.annotation.JsonValue - public String getValue() { return value; } - @com.fasterxml.jackson.annotation.JsonCreator - public static SessionWorkspacesGetWorkspaceResultWorkspaceHostType fromValue(String value) { - for (SessionWorkspacesGetWorkspaceResultWorkspaceHostType v : values()) { - if (v.value.equals(value)) return v; - } - throw new IllegalArgumentException("Unknown SessionWorkspacesGetWorkspaceResultWorkspaceHostType value: " + value); - } - } } } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesListCheckpointsParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesListCheckpointsParams.java new file mode 100644 index 0000000000..3f3c1ac1e1 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesListCheckpointsParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Identifies the target session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionWorkspacesListCheckpointsParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesListCheckpointsResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesListCheckpointsResult.java new file mode 100644 index 0000000000..c25be02d4c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesListCheckpointsResult.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Workspace checkpoints in chronological order; empty when the workspace is not enabled. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionWorkspacesListCheckpointsResult( + /** Workspace checkpoints in chronological order. Empty when workspace is not enabled. */ + @JsonProperty("checkpoints") List checkpoints +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesReadCheckpointParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesReadCheckpointParams.java new file mode 100644 index 0000000000..851a01bd45 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesReadCheckpointParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Checkpoint number to read. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionWorkspacesReadCheckpointParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Checkpoint number to read */ + @JsonProperty("number") Long number +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesReadCheckpointResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesReadCheckpointResult.java new file mode 100644 index 0000000000..4f9e18709f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesReadCheckpointResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Checkpoint content as a UTF-8 string, or null when the checkpoint or workspace is missing. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionWorkspacesReadCheckpointResult( + /** Checkpoint content as a UTF-8 string, or null when the checkpoint or workspace is missing */ + @JsonProperty("content") String content +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesSaveLargePasteParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesSaveLargePasteParams.java new file mode 100644 index 0000000000..466f5b7bae --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesSaveLargePasteParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Pasted content to save as a UTF-8 file in the session workspace. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionWorkspacesSaveLargePasteParams( + /** Target session identifier */ + @JsonProperty("sessionId") String sessionId, + /** Pasted content to save as a UTF-8 file */ + @JsonProperty("content") String content +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesSaveLargePasteResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesSaveLargePasteResult.java new file mode 100644 index 0000000000..84e5719d70 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionWorkspacesSaveLargePasteResult.java @@ -0,0 +1,39 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Descriptor for the saved paste file, or null when the workspace is unavailable. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionWorkspacesSaveLargePasteResult( + /** Saved-paste descriptor, or null when the workspace is unavailable (e.g. CCA runtime, non-infinite sessions, remote sessions) */ + @JsonProperty("saved") SessionWorkspacesSaveLargePasteResultSaved saved +) { + + @JsonIgnoreProperties(ignoreUnknown = true) + @JsonInclude(JsonInclude.Include.NON_NULL) + public record SessionWorkspacesSaveLargePasteResultSaved( + /** Absolute filesystem path to the saved paste file */ + @JsonProperty("filePath") String filePath, + /** Filename within the workspace files directory */ + @JsonProperty("filename") String filename, + /** Size of the saved file in bytes */ + @JsonProperty("sizeBytes") Long sizeBytes + ) { + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsBulkDeleteParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsBulkDeleteParams.java new file mode 100644 index 0000000000..986103825b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsBulkDeleteParams.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Session IDs to close, deactivate, and delete from disk. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsBulkDeleteParams( + /** Session IDs to close, deactivate, and delete from disk */ + @JsonProperty("sessionIds") List sessionIds +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsBulkDeleteResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsBulkDeleteResult.java new file mode 100644 index 0000000000..893dd8210c --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsBulkDeleteResult.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; +import javax.annotation.processing.Generated; + +/** + * Map of sessionId -> bytes freed by removing the session's workspace directory. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsBulkDeleteResult( + /** Map of sessionId -> bytes freed by removing the session's workspace directory. Sessions whose deletion failed are omitted from this map (failures are logged on the server but not surfaced per-id; check the map for absent IDs to detect them). */ + @JsonProperty("freedBytes") Map freedBytes +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCheckInUseParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCheckInUseParams.java new file mode 100644 index 0000000000..be8b2e3857 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCheckInUseParams.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Session IDs to test for live in-use locks. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsCheckInUseParams( + /** Session IDs to test for live in-use locks */ + @JsonProperty("sessionIds") List sessionIds +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCheckInUseResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCheckInUseResult.java new file mode 100644 index 0000000000..c22e818cc8 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCheckInUseResult.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Session IDs from the input set that are currently in use by another process. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsCheckInUseResult( + /** Session IDs from the input set that are currently held by another running process via an alive lock file */ + @JsonProperty("inUse") List inUse +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCloseParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCloseParams.java new file mode 100644 index 0000000000..c29d385be6 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCloseParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Session ID to close. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsCloseParams( + /** Session ID to close */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCloseResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCloseResult.java new file mode 100644 index 0000000000..fc8c5ee66a --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsCloseResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Closes a session: emits shutdown, flushes pending events to disk, releases the in-use lock, disposes the active session. Idempotent: succeeds even if the session is not currently active. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsCloseResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsEnrichMetadataParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsEnrichMetadataParams.java new file mode 100644 index 0000000000..ef3330a97b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsEnrichMetadataParams.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Session metadata records to enrich with summary and context information. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsEnrichMetadataParams( + /** Session metadata records to enrich. Records that already have summary and context are returned unchanged. */ + @JsonProperty("sessions") List sessions +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsEnrichMetadataResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsEnrichMetadataResult.java new file mode 100644 index 0000000000..fee15a2ed9 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsEnrichMetadataResult.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * The same metadata records, with summary and context fields backfilled where available. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsEnrichMetadataResult( + /** Same records, with summary and context backfilled */ + @JsonProperty("sessions") List sessions +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByPrefixParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByPrefixParams.java new file mode 100644 index 0000000000..628d93cb8e --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByPrefixParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * UUID prefix to resolve to a unique session ID. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsFindByPrefixParams( + /** UUID prefix (>=7 hex chars, <36 chars). Returns the unique session ID, or undefined when there is no match or the prefix matches multiple sessions. */ + @JsonProperty("prefix") String prefix +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByPrefixResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByPrefixResult.java new file mode 100644 index 0000000000..94b3a106c3 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByPrefixResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Session ID matching the prefix, omitted when no unique match exists. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsFindByPrefixResult( + /** Omitted when no unique session matches the prefix (no match or ambiguous) */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByTaskIdParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByTaskIdParams.java new file mode 100644 index 0000000000..23e1aaaedb --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByTaskIdParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * GitHub task ID to look up. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsFindByTaskIdParams( + /** GitHub task ID to look up */ + @JsonProperty("taskId") String taskId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByTaskIdResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByTaskIdResult.java new file mode 100644 index 0000000000..eb5b9bfd4f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsFindByTaskIdResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * ID of the local session bound to the given GitHub task, or omitted when none. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsFindByTaskIdResult( + /** Omitted when no local session is bound to that GitHub task */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetEventFilePathParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetEventFilePathParams.java new file mode 100644 index 0000000000..a23a5434c1 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetEventFilePathParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Session ID whose event-log file path to compute. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsGetEventFilePathParams( + /** Session ID whose event-log file path to compute */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetEventFilePathResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetEventFilePathResult.java new file mode 100644 index 0000000000..261a0d4526 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetEventFilePathResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Absolute path to the session's events.jsonl file on disk. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsGetEventFilePathResult( + /** Absolute path to the session's events.jsonl file */ + @JsonProperty("filePath") String filePath +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetLastForContextParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetLastForContextParams.java new file mode 100644 index 0000000000..0b06f161f8 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetLastForContextParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Optional working-directory context used to score session relevance. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsGetLastForContextParams( + /** Optional working-directory context used to score session relevance. When omitted the most-recently-modified session wins. */ + @JsonProperty("context") SessionContext context +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetLastForContextResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetLastForContextResult.java new file mode 100644 index 0000000000..c31e8d781e --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetLastForContextResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Most-relevant session ID for the supplied context, or omitted when no sessions exist. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsGetLastForContextResult( + /** Most-relevant session ID for the supplied context, or omitted when no sessions exist */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetPersistedRemoteSteerableParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetPersistedRemoteSteerableParams.java new file mode 100644 index 0000000000..1fd9e476f5 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetPersistedRemoteSteerableParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Session ID to look up the persisted remote-steerable flag for. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsGetPersistedRemoteSteerableParams( + /** Session ID to look up the persisted remote-steerable flag for */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetPersistedRemoteSteerableResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetPersistedRemoteSteerableResult.java new file mode 100644 index 0000000000..c4de7b09b0 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetPersistedRemoteSteerableResult.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * The session's persisted remote-steerable flag, or omitted when no value has been persisted. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsGetPersistedRemoteSteerableResult( + /** The session's persisted remote-steerable flag if recorded; omitted when no value has been persisted */ + @JsonProperty("remoteSteerable") Boolean remoteSteerable +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetSizesResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetSizesResult.java new file mode 100644 index 0000000000..98ec269e49 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsGetSizesResult.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; +import javax.annotation.processing.Generated; + +/** + * Map of sessionId -> on-disk size in bytes for each session's workspace directory. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsGetSizesResult( + /** Map of sessionId -> on-disk size in bytes for the session's workspace directory */ + @JsonProperty("sizes") Map sizes +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsListResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsListResult.java new file mode 100644 index 0000000000..99060bb18b --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsListResult.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Persisted sessions matching the filter, ordered most-recently-modified first. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsListResult( + /** Sessions ordered most-recently-modified first */ + @JsonProperty("sessions") List sessions +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsLoadDeferredRepoHooksParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsLoadDeferredRepoHooksParams.java new file mode 100644 index 0000000000..67590914ec --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsLoadDeferredRepoHooksParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Active session ID whose deferred repo-level hooks should be loaded. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsLoadDeferredRepoHooksParams( + /** Active session ID whose deferred repo-level hooks should be loaded */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsLoadDeferredRepoHooksResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsLoadDeferredRepoHooksResult.java new file mode 100644 index 0000000000..6f2299a491 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsLoadDeferredRepoHooksResult.java @@ -0,0 +1,30 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Queued repo-level startup prompts and the total hook command count after loading. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsLoadDeferredRepoHooksResult( + /** Repo-level startup prompts queued from repo hook configs. Empty on resume, when no repo configs were pending, or when disableAllHooks is set. */ + @JsonProperty("startupPrompts") List startupPrompts, + /** Total hook command count (user + plugin + repo) loaded for the session by this call. Captured atomically with startupPrompts so callers don't need to read a separate counter. */ + @JsonProperty("hookCount") Long hookCount +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsPruneOldParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsPruneOldParams.java new file mode 100644 index 0000000000..e36c033e35 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsPruneOldParams.java @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Age threshold and optional flags controlling which old sessions are pruned (or simulated when dryRun is true). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsPruneOldParams( + /** Delete sessions whose modifiedTime is at least this many days old */ + @JsonProperty("olderThanDays") Long olderThanDays, + /** When true, only report what would be deleted without performing any deletion */ + @JsonProperty("dryRun") Boolean dryRun, + /** When true, named sessions (set via /rename) are also eligible for pruning */ + @JsonProperty("includeNamed") Boolean includeNamed, + /** Session IDs that should never be considered for pruning */ + @JsonProperty("excludeSessionIds") List excludeSessionIds +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsPruneOldResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsPruneOldResult.java new file mode 100644 index 0000000000..6bcf5cecd8 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsPruneOldResult.java @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Outcome of the prune operation: deleted IDs, dry-run candidates, skipped IDs, total bytes freed, and the dry-run flag. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsPruneOldResult( + /** Session IDs that were deleted (always empty in dry-run mode) */ + @JsonProperty("deleted") List deleted, + /** Session IDs that would be deleted in dry-run mode (always empty otherwise) */ + @JsonProperty("candidates") List candidates, + /** Session IDs that were skipped (e.g., named sessions) */ + @JsonProperty("skipped") List skipped, + /** Total bytes freed (actual when not dry-run, projected when dry-run) */ + @JsonProperty("freedBytes") Long freedBytes, + /** True when no deletions were actually performed */ + @JsonProperty("dryRun") Boolean dryRun +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReleaseLockParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReleaseLockParams.java new file mode 100644 index 0000000000..81c9682515 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReleaseLockParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Session ID whose in-use lock should be released. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsReleaseLockParams( + /** Session ID whose in-use lock should be released */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReleaseLockResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReleaseLockResult.java new file mode 100644 index 0000000000..e3c660dc66 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReleaseLockResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Release the in-use lock held by this process for the given session. No-op when this process does not currently hold a lock for the session. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsReleaseLockResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReloadPluginHooksParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReloadPluginHooksParams.java new file mode 100644 index 0000000000..a9537382a6 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReloadPluginHooksParams.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Active session ID and an optional flag for deferring repo-level hooks until folder trust. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsReloadPluginHooksParams( + /** Active session ID to reload hooks for */ + @JsonProperty("sessionId") String sessionId, + /** When true, skip repo-level hooks. Use before folder trust is confirmed; loadDeferredRepoHooks loads them post-trust. */ + @JsonProperty("deferRepoHooks") Boolean deferRepoHooks +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReloadPluginHooksResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReloadPluginHooksResult.java new file mode 100644 index 0000000000..0920dd86e2 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsReloadPluginHooksResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Reload all hooks (user, plugin, optionally repo) and apply them to the active session. Call after installing or removing plugins so their hooks take effect immediately. No-op when no active session matches the given sessionId. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsReloadPluginHooksResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSaveParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSaveParams.java new file mode 100644 index 0000000000..ae3b42b029 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSaveParams.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Session ID whose pending events should be flushed to disk. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsSaveParams( + /** Session ID whose pending events should be flushed to disk */ + @JsonProperty("sessionId") String sessionId +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSaveResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSaveResult.java new file mode 100644 index 0000000000..74ae1a4669 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSaveResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Flush a session's pending events to disk. No-op when no writer exists for the session (e.g., already closed). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsSaveResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSetAdditionalPluginsParams.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSetAdditionalPluginsParams.java new file mode 100644 index 0000000000..34ca74de9d --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSetAdditionalPluginsParams.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Manager-wide additional plugins to register; replaces any previously-configured set. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsSetAdditionalPluginsParams( + /** Manager-wide additional plugins to register. Replaces any previously-configured set. Pass an empty array to clear. */ + @JsonProperty("plugins") List plugins +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSetAdditionalPluginsResult.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSetAdditionalPluginsResult.java new file mode 100644 index 0000000000..e6f2a5b4cf --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SessionsSetAdditionalPluginsResult.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Replace the manager-wide additional plugins. New session creations and subsequent hook reloads see the new set; already-running sessions keep their existing hook installation until the next reload. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SessionsSetAdditionalPluginsResult() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ShutdownType.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ShutdownType.java new file mode 100644 index 0000000000..5dac44cfbc --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/ShutdownType.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Why the session is being shut down. Defaults to "routine" when omitted. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum ShutdownType { + /** The {@code routine} variant. */ + ROUTINE("routine"), + /** The {@code error} variant. */ + ERROR("error"); + + private final String value; + ShutdownType(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static ShutdownType fromValue(String value) { + for (ShutdownType v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown ShutdownType value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/Skill.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/Skill.java index cd896add85..92f94d6615 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/Skill.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/Skill.java @@ -32,6 +32,8 @@ public record Skill( /** Whether the skill is currently enabled */ @JsonProperty("enabled") Boolean enabled, /** Absolute path to the skill file */ - @JsonProperty("path") String path + @JsonProperty("path") String path, + /** Name of the plugin that provides the skill, when source is 'plugin' */ + @JsonProperty("pluginName") String pluginName ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SkillsInvokedSkill.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SkillsInvokedSkill.java new file mode 100644 index 0000000000..7dde089424 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/SkillsInvokedSkill.java @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import javax.annotation.processing.Generated; + +/** + * Schema for the `SkillsInvokedSkill` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record SkillsInvokedSkill( + /** Unique identifier for the skill */ + @JsonProperty("name") String name, + /** Path to the SKILL.md file */ + @JsonProperty("path") String path, + /** Full content of the skill file */ + @JsonProperty("content") String content, + /** Tools that should be auto-approved when this skill is active, captured at invocation time */ + @JsonProperty("allowedTools") List allowedTools, + /** Turn number when the skill was invoked */ + @JsonProperty("invokedAtTurn") Long invokedAtTurn +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIAutoModeSwitchResponse.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIAutoModeSwitchResponse.java new file mode 100644 index 0000000000..170c378a44 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIAutoModeSwitchResponse.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * User's choice for auto-mode switching: yes (allow this turn), yes_always (allow + persist as setting), or no (decline). + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum UIAutoModeSwitchResponse { + /** The {@code yes} variant. */ + YES("yes"), + /** The {@code yes_always} variant. */ + YES_ALWAYS("yes_always"), + /** The {@code no} variant. */ + NO("no"); + + private final String value; + UIAutoModeSwitchResponse(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static UIAutoModeSwitchResponse fromValue(String value) { + for (UIAutoModeSwitchResponse v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown UIAutoModeSwitchResponse value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIExitPlanModeAction.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIExitPlanModeAction.java new file mode 100644 index 0000000000..7ea38d6fdb --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIExitPlanModeAction.java @@ -0,0 +1,39 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * The action the user selected. Defaults to 'autopilot' when autoApproveEdits is true, otherwise 'interactive'. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum UIExitPlanModeAction { + /** The {@code exit_only} variant. */ + EXIT_ONLY("exit_only"), + /** The {@code interactive} variant. */ + INTERACTIVE("interactive"), + /** The {@code autopilot} variant. */ + AUTOPILOT("autopilot"), + /** The {@code autopilot_fleet} variant. */ + AUTOPILOT_FLEET("autopilot_fleet"); + + private final String value; + UIExitPlanModeAction(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static UIExitPlanModeAction fromValue(String value) { + for (UIExitPlanModeAction v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown UIExitPlanModeAction value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIExitPlanModeResponse.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIExitPlanModeResponse.java new file mode 100644 index 0000000000..55cd430a9f --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIExitPlanModeResponse.java @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `UIExitPlanModeResponse` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record UIExitPlanModeResponse( + /** Whether the plan was approved. */ + @JsonProperty("approved") Boolean approved, + /** The action the user selected. Defaults to 'autopilot' when autoApproveEdits is true, otherwise 'interactive'. */ + @JsonProperty("selectedAction") UIExitPlanModeAction selectedAction, + /** Whether subsequent edits should be auto-approved without confirmation. */ + @JsonProperty("autoApproveEdits") Boolean autoApproveEdits, + /** Feedback from the user when they declined the plan or requested changes. */ + @JsonProperty("feedback") String feedback +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIHandlePendingSamplingResponse.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIHandlePendingSamplingResponse.java new file mode 100644 index 0000000000..f000843154 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIHandlePendingSamplingResponse.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Optional sampling result payload. Omit to reject/cancel the sampling request without providing a result. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record UIHandlePendingSamplingResponse() { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIUserInputResponse.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIUserInputResponse.java new file mode 100644 index 0000000000..ec8b6e842a --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UIUserInputResponse.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `UIUserInputResponse` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record UIUserInputResponse( + /** The user's answer text */ + @JsonProperty("answer") String answer, + /** True if the user typed a freeform response, false if they selected a presented choice. Used by telemetry to differentiate between free text input and choice selection. */ + @JsonProperty("wasFreeform") Boolean wasFreeform +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UsageMetricsCodeChanges.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UsageMetricsCodeChanges.java index 442c88da21..b425ca3d5b 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UsageMetricsCodeChanges.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UsageMetricsCodeChanges.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; import javax.annotation.processing.Generated; /** @@ -26,6 +27,8 @@ public record UsageMetricsCodeChanges( /** Total lines of code removed */ @JsonProperty("linesRemoved") Long linesRemoved, /** Number of distinct files modified */ - @JsonProperty("filesModifiedCount") Long filesModifiedCount + @JsonProperty("filesModifiedCount") Long filesModifiedCount, + /** Distinct file paths modified during the session */ + @JsonProperty("filesModified") List filesModified ) { } diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UsageMetricsModelMetric.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UsageMetricsModelMetric.java index 15a1333235..f86aab3540 100644 --- a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UsageMetricsModelMetric.java +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/UsageMetricsModelMetric.java @@ -27,7 +27,7 @@ public record UsageMetricsModelMetric( /** Token usage metrics for this model */ @JsonProperty("usage") UsageMetricsModelMetricUsage usage, /** Accumulated nano-AI units cost for this model */ - @JsonProperty("totalNanoAiu") Long totalNanoAiu, + @JsonProperty("totalNanoAiu") Double totalNanoAiu, /** Token count details per type */ @JsonProperty("tokenDetails") Map tokenDetails ) { diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/WorkspaceSummaryHostType.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/WorkspaceSummaryHostType.java new file mode 100644 index 0000000000..58cc24ea50 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/WorkspaceSummaryHostType.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Repository host type, if known + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum WorkspaceSummaryHostType { + /** The {@code github} variant. */ + GITHUB("github"), + /** The {@code ado} variant. */ + ADO("ado"); + + private final String value; + WorkspaceSummaryHostType(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static WorkspaceSummaryHostType fromValue(String value) { + for (WorkspaceSummaryHostType v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown WorkspaceSummaryHostType value: " + value); + } +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/WorkspacesCheckpoints.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/WorkspacesCheckpoints.java new file mode 100644 index 0000000000..81c49f6fa4 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/WorkspacesCheckpoints.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import javax.annotation.processing.Generated; + +/** + * Schema for the `WorkspacesCheckpoints` type. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public record WorkspacesCheckpoints( + /** Checkpoint number assigned by the workspace manager */ + @JsonProperty("number") Long number, + /** Human-readable checkpoint title */ + @JsonProperty("title") String title, + /** Filename of the checkpoint within the workspace checkpoints directory */ + @JsonProperty("filename") String filename +) { +} diff --git a/java/src/generated/java/com/github/copilot/sdk/generated/rpc/WorkspacesWorkspaceDetailsHostType.java b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/WorkspacesWorkspaceDetailsHostType.java new file mode 100644 index 0000000000..0872a87a44 --- /dev/null +++ b/java/src/generated/java/com/github/copilot/sdk/generated/rpc/WorkspacesWorkspaceDetailsHostType.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +// AUTO-GENERATED FILE - DO NOT EDIT +// Generated from: api.schema.json + +package com.github.copilot.sdk.generated.rpc; + +import javax.annotation.processing.Generated; + +/** + * Allowed values for the `WorkspacesWorkspaceDetailsHostType` enumeration. + * + * @since 1.0.0 + */ +@javax.annotation.processing.Generated("copilot-sdk-codegen") +public enum WorkspacesWorkspaceDetailsHostType { + /** The {@code github} variant. */ + GITHUB("github"), + /** The {@code ado} variant. */ + ADO("ado"); + + private final String value; + WorkspacesWorkspaceDetailsHostType(String value) { this.value = value; } + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { return value; } + @com.fasterxml.jackson.annotation.JsonCreator + public static WorkspacesWorkspaceDetailsHostType fromValue(String value) { + for (WorkspacesWorkspaceDetailsHostType v : values()) { + if (v.value.equals(value)) return v; + } + throw new IllegalArgumentException("Unknown WorkspacesWorkspaceDetailsHostType value: " + value); + } +} diff --git a/java/src/main/java/com/github/copilot/sdk/CopilotSession.java b/java/src/main/java/com/github/copilot/sdk/CopilotSession.java index 5fb8733a27..4b75fbc7e5 100644 --- a/java/src/main/java/com/github/copilot/sdk/CopilotSession.java +++ b/java/src/main/java/com/github/copilot/sdk/CopilotSession.java @@ -81,6 +81,7 @@ import com.github.copilot.sdk.json.PermissionRequestResult; import com.github.copilot.sdk.json.PermissionRequestResultKind; import com.github.copilot.sdk.json.PostToolUseHookInput; +import com.github.copilot.sdk.json.PreMcpToolCallHookInput; import com.github.copilot.sdk.json.PreToolUseHookInput; import com.github.copilot.sdk.json.SendMessageRequest; import com.github.copilot.sdk.json.SendMessageResponse; @@ -1547,6 +1548,13 @@ CompletableFuture handleHooksInvoke(String hookType, JsonNode input) { .thenApply(output -> (Object) output); } break; + case "preMcpToolCall" : + if (hooks.getOnPreMcpToolCall() != null) { + PreMcpToolCallHookInput mcpInput = MAPPER.treeToValue(input, PreMcpToolCallHookInput.class); + return hooks.getOnPreMcpToolCall().handle(mcpInput, invocation) + .thenApply(output -> (Object) output); + } + break; case "postToolUse" : if (hooks.getOnPostToolUse() != null) { PostToolUseHookInput postInput = MAPPER.treeToValue(input, PostToolUseHookInput.class); @@ -1774,7 +1782,8 @@ public CompletableFuture log(String message, String level, Boolean ephemer rpcLevel = SessionLogLevel.INFO; } } - return getRpc().log(new SessionLogParams(sessionId, message, rpcLevel, ephemeral, url)).thenApply(r -> null); + return getRpc().log(new SessionLogParams(sessionId, message, rpcLevel, null, ephemeral, url, null)) + .thenApply(r -> null); } /** diff --git a/java/src/main/java/com/github/copilot/sdk/json/PingResponse.java b/java/src/main/java/com/github/copilot/sdk/json/PingResponse.java index e86499b2f3..3dec2b352d 100644 --- a/java/src/main/java/com/github/copilot/sdk/json/PingResponse.java +++ b/java/src/main/java/com/github/copilot/sdk/json/PingResponse.java @@ -20,8 +20,8 @@ public record PingResponse( /** The echo message from the server. */ @JsonProperty("message") String message, - /** The server timestamp in milliseconds since epoch. */ - @JsonProperty("timestamp") long timestamp, + /** The server timestamp as an ISO 8601 string. */ + @JsonProperty("timestamp") String timestamp, /** * The SDK protocol version supported by the server. The SDK validates that this * version matches the expected version to ensure compatibility. diff --git a/java/src/main/java/com/github/copilot/sdk/json/PreMcpToolCallHandler.java b/java/src/main/java/com/github/copilot/sdk/json/PreMcpToolCallHandler.java new file mode 100644 index 0000000000..4ace4d8d8a --- /dev/null +++ b/java/src/main/java/com/github/copilot/sdk/json/PreMcpToolCallHandler.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +package com.github.copilot.sdk.json; + +import java.util.concurrent.CompletableFuture; + +/** + * Handler for pre-MCP-tool-call hooks. + *

+ * This hook is called before an MCP tool call is dispatched to an MCP server, + * allowing you to: + *

    + *
  • Inspect the tool call arguments and server name
  • + *
  • Set, replace, or remove MCP request metadata ({@code _meta})
  • + *
+ * + * @since 1.0.8 + */ +@FunctionalInterface +public interface PreMcpToolCallHandler { + + /** + * Handles a pre-MCP-tool-call hook invocation. + * + * @param input + * the hook input containing server name, tool name, and arguments + * @param invocation + * context information about the invocation + * @return a future that resolves with the hook output, or {@code null} to + * preserve existing metadata (no-op) + */ + CompletableFuture handle(PreMcpToolCallHookInput input, HookInvocation invocation); +} diff --git a/java/src/main/java/com/github/copilot/sdk/json/PreMcpToolCallHookInput.java b/java/src/main/java/com/github/copilot/sdk/json/PreMcpToolCallHookInput.java new file mode 100644 index 0000000000..17e32c02f8 --- /dev/null +++ b/java/src/main/java/com/github/copilot/sdk/json/PreMcpToolCallHookInput.java @@ -0,0 +1,215 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +package com.github.copilot.sdk.json; + +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.JsonNode; + +/** + * Input for a pre-MCP-tool-call hook. + *

+ * This hook fires before an MCP tool call is dispatched to an MCP server, + * allowing you to inspect or modify the request metadata. + * + * @since 1.0.8 + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class PreMcpToolCallHookInput { + + @JsonProperty("sessionId") + private String sessionId; + + @JsonProperty("timestamp") + private long timestamp; + + @JsonProperty("cwd") + private String cwd; + + @JsonProperty("serverName") + private String serverName; + + @JsonProperty("toolName") + private String toolName; + + @JsonProperty("arguments") + private JsonNode arguments; + + @JsonProperty("toolCallId") + private String toolCallId; + + @JsonProperty("_meta") + private Map meta; + + /** + * Gets the runtime session ID of the session that triggered the hook. + * + * @return the session ID + */ + public String getSessionId() { + return sessionId; + } + + /** + * Sets the runtime session ID of the session that triggered the hook. + * + * @param sessionId + * the session ID + * @return this instance for method chaining + */ + public PreMcpToolCallHookInput setSessionId(String sessionId) { + this.sessionId = sessionId; + return this; + } + + /** + * Gets the timestamp of the hook invocation. + * + * @return the timestamp in milliseconds + */ + public long getTimestamp() { + return timestamp; + } + + /** + * Sets the timestamp of the hook invocation. + * + * @param timestamp + * the timestamp in milliseconds + * @return this instance for method chaining + */ + public PreMcpToolCallHookInput setTimestamp(long timestamp) { + this.timestamp = timestamp; + return this; + } + + /** + * Gets the current working directory. + * + * @return the working directory path + */ + public String getCwd() { + return cwd; + } + + /** + * Sets the current working directory. + * + * @param cwd + * the working directory path + * @return this instance for method chaining + */ + public PreMcpToolCallHookInput setCwd(String cwd) { + this.cwd = cwd; + return this; + } + + /** + * Gets the name of the MCP server being called. + * + * @return the server name + */ + public String getServerName() { + return serverName; + } + + /** + * Sets the name of the MCP server being called. + * + * @param serverName + * the server name + * @return this instance for method chaining + */ + public PreMcpToolCallHookInput setServerName(String serverName) { + this.serverName = serverName; + return this; + } + + /** + * Gets the name of the MCP tool being called. + * + * @return the tool name + */ + public String getToolName() { + return toolName; + } + + /** + * Sets the name of the MCP tool being called. + * + * @param toolName + * the tool name + * @return this instance for method chaining + */ + public PreMcpToolCallHookInput setToolName(String toolName) { + this.toolName = toolName; + return this; + } + + /** + * Gets the arguments for the MCP tool call. + * + * @return the arguments as a JSON node, or {@code null} + */ + public JsonNode getArguments() { + return arguments; + } + + /** + * Sets the arguments for the MCP tool call. + * + * @param arguments + * the arguments as a JSON node + * @return this instance for method chaining + */ + public PreMcpToolCallHookInput setArguments(JsonNode arguments) { + this.arguments = arguments; + return this; + } + + /** + * Gets the tool call ID, if available. + * + * @return the tool call ID, or {@code null} + */ + public String getToolCallId() { + return toolCallId; + } + + /** + * Sets the tool call ID. + * + * @param toolCallId + * the tool call ID + * @return this instance for method chaining + */ + public PreMcpToolCallHookInput setToolCallId(String toolCallId) { + this.toolCallId = toolCallId; + return this; + } + + /** + * Gets the MCP request metadata, if present. + * + * @return the metadata map, or {@code null} + */ + public Map getMeta() { + return meta; + } + + /** + * Sets the MCP request metadata. + * + * @param meta + * the metadata map + * @return this instance for method chaining + */ + public PreMcpToolCallHookInput setMeta(Map meta) { + this.meta = meta; + return this; + } +} diff --git a/java/src/main/java/com/github/copilot/sdk/json/PreMcpToolCallHookOutput.java b/java/src/main/java/com/github/copilot/sdk/json/PreMcpToolCallHookOutput.java new file mode 100644 index 0000000000..a051113266 --- /dev/null +++ b/java/src/main/java/com/github/copilot/sdk/json/PreMcpToolCallHookOutput.java @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +package com.github.copilot.sdk.json; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.JsonNode; + +/** + * Output for a pre-MCP-tool-call hook. + *

+ * The {@link #metaToUse} property controls outgoing MCP request metadata: + *

    + *
  • Return {@code null} from the hook handler: preserve existing + * {@code _meta} (no-op).
  • + *
  • Return a {@code PreMcpToolCallHookOutput} with {@code metaToUse} left as + * {@code null}: remove {@code _meta} from the request.
  • + *
  • Return a {@code PreMcpToolCallHookOutput} with {@code metaToUse} set to a + * JSON object: replace {@code _meta} with that object.
  • + *
+ * + * @since 1.0.8 + */ +@JsonInclude(JsonInclude.Include.ALWAYS) +public class PreMcpToolCallHookOutput { + + @JsonProperty("metaToUse") + private JsonNode metaToUse; + + /** + * Gets the metadata to use for the outgoing MCP request. + * + * @return the metadata JSON node, or {@code null} to remove metadata + */ + public JsonNode getMetaToUse() { + return metaToUse; + } + + /** + * Sets the metadata to use for the outgoing MCP request. + * + * @param metaToUse + * the metadata JSON node, or {@code null} to remove metadata + * @return this instance for method chaining + */ + public PreMcpToolCallHookOutput setMetaToUse(JsonNode metaToUse) { + this.metaToUse = metaToUse; + return this; + } + + /** + * Creates a hook output that sets the given metadata on the MCP request. + * + * @param metaToUse + * the metadata JSON node to use + * @return the hook output + */ + public static PreMcpToolCallHookOutput withMeta(JsonNode metaToUse) { + return new PreMcpToolCallHookOutput().setMetaToUse(metaToUse); + } + + /** + * Creates a hook output that removes metadata from the MCP request. + * + * @return the hook output with {@code null} metaToUse + */ + public static PreMcpToolCallHookOutput removeMeta() { + return new PreMcpToolCallHookOutput(); + } +} diff --git a/java/src/main/java/com/github/copilot/sdk/json/SessionHooks.java b/java/src/main/java/com/github/copilot/sdk/json/SessionHooks.java index 8e22c3ee88..301d64cb55 100644 --- a/java/src/main/java/com/github/copilot/sdk/json/SessionHooks.java +++ b/java/src/main/java/com/github/copilot/sdk/json/SessionHooks.java @@ -38,6 +38,7 @@ public class SessionHooks { private PreToolUseHandler onPreToolUse; + private PreMcpToolCallHandler onPreMcpToolCall; private PostToolUseHandler onPostToolUse; private UserPromptSubmittedHandler onUserPromptSubmitted; private SessionStartHandler onSessionStart; @@ -64,6 +65,30 @@ public SessionHooks setOnPreToolUse(PreToolUseHandler onPreToolUse) { return this; } + /** + * Gets the pre-MCP-tool-call handler. + * + * @return the handler, or {@code null} if not set + * @since 1.0.8 + */ + public PreMcpToolCallHandler getOnPreMcpToolCall() { + return onPreMcpToolCall; + } + + /** + * Sets the handler called before an MCP tool call is dispatched to an MCP + * server. + * + * @param onPreMcpToolCall + * the handler + * @return this instance for method chaining + * @since 1.0.8 + */ + public SessionHooks setOnPreMcpToolCall(PreMcpToolCallHandler onPreMcpToolCall) { + this.onPreMcpToolCall = onPreMcpToolCall; + return this; + } + /** * Gets the post-tool-use handler. * @@ -160,7 +185,7 @@ public SessionHooks setOnSessionEnd(SessionEndHandler onSessionEnd) { * @return {@code true} if at least one hook handler is set */ public boolean hasHooks() { - return onPreToolUse != null || onPostToolUse != null || onUserPromptSubmitted != null || onSessionStart != null - || onSessionEnd != null; + return onPreToolUse != null || onPreMcpToolCall != null || onPostToolUse != null + || onUserPromptSubmitted != null || onSessionStart != null || onSessionEnd != null; } } diff --git a/java/src/test/java/com/github/copilot/sdk/CopilotClientTest.java b/java/src/test/java/com/github/copilot/sdk/CopilotClientTest.java index 14ed8ca89e..137ad360ba 100644 --- a/java/src/test/java/com/github/copilot/sdk/CopilotClientTest.java +++ b/java/src/test/java/com/github/copilot/sdk/CopilotClientTest.java @@ -92,7 +92,7 @@ void testStartAndConnectUsingStdio() throws Exception { PingResponse pong = client.ping("test message").get(); assertEquals("pong: test message", pong.message()); - assertTrue(pong.timestamp() >= 0); + assertNotNull(pong.timestamp()); client.stop().get(); assertEquals(ConnectionState.DISCONNECTED, client.getState()); diff --git a/java/src/test/java/com/github/copilot/sdk/McpAndAgentsTest.java b/java/src/test/java/com/github/copilot/sdk/McpAndAgentsTest.java index 474b977829..3b8f8a00b8 100644 --- a/java/src/test/java/com/github/copilot/sdk/McpAndAgentsTest.java +++ b/java/src/test/java/com/github/copilot/sdk/McpAndAgentsTest.java @@ -174,6 +174,41 @@ void testShouldHandleMultipleMcpServers() throws Exception { // ============ Custom Agent Tests ============ + /** + * Verifies that MCP server configuration is accepted without args. + * + * @see Snapshot: + * mcp_and_agents/should_accept_mcp_server_configuration_on_session_create + */ + @Test + void testAcceptMcpServerConfigWithoutArgs() throws Exception { + // Reuse existing snapshot - this test validates that args can be omitted + ctx.configureForTest("mcp_and_agents", "should_accept_mcp_server_configuration_on_session_create"); + + var mcpServers = new HashMap(); + // Create MCP server config without specifying args + mcpServers.put("test-server", new McpStdioServerConfig().setCommand("echo").setTools(List.of("*"))); + + try (CopilotClient client = ctx.createClient()) { + CopilotSession session = client.createSession( + new SessionConfig().setMcpServers(mcpServers).setOnPermissionRequest(PermissionHandler.APPROVE_ALL)) + .get(); + + assertNotNull(session.getSessionId()); + + AssistantMessageEvent response = session.sendAndWait(new MessageOptions().setPrompt("What is 2+2?")).get(60, + TimeUnit.SECONDS); + + assertNotNull(response); + assertTrue(response.getData().content().contains("4"), + "Response should contain 4: " + response.getData().content()); + + session.close(); + } + } + + // ============ Custom Agent Tests ============ + /** * Verifies that custom agent configuration is accepted on session create. * diff --git a/java/src/test/java/com/github/copilot/sdk/PermissionsTest.java b/java/src/test/java/com/github/copilot/sdk/PermissionsTest.java index 041d8181cb..6cc8eaa301 100644 --- a/java/src/test/java/com/github/copilot/sdk/PermissionsTest.java +++ b/java/src/test/java/com/github/copilot/sdk/PermissionsTest.java @@ -418,7 +418,7 @@ void testShouldShortCircuitPermissionHandlerWhenSetApproveAllEnabled() throws Ex // Set approve-all so the runtime short-circuits var setResult = session.getRpc().permissions .setApproveAll(new com.github.copilot.sdk.generated.rpc.SessionPermissionsSetApproveAllParams( - session.getSessionId(), true)) + session.getSessionId(), true, null)) .get(10, TimeUnit.SECONDS); assertTrue(setResult.success(), "setApproveAll should succeed"); diff --git a/java/src/test/java/com/github/copilot/sdk/PreMcpToolCallHookTest.java b/java/src/test/java/com/github/copilot/sdk/PreMcpToolCallHookTest.java new file mode 100644 index 0000000000..37db10c17e --- /dev/null +++ b/java/src/test/java/com/github/copilot/sdk/PreMcpToolCallHookTest.java @@ -0,0 +1,177 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +package com.github.copilot.sdk; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.copilot.sdk.generated.AssistantMessageEvent; +import com.github.copilot.sdk.json.McpServerConfig; +import com.github.copilot.sdk.json.McpStdioServerConfig; +import com.github.copilot.sdk.json.MessageOptions; +import com.github.copilot.sdk.json.PermissionHandler; +import com.github.copilot.sdk.json.PreMcpToolCallHookInput; +import com.github.copilot.sdk.json.PreMcpToolCallHookOutput; +import com.github.copilot.sdk.json.SessionConfig; +import com.github.copilot.sdk.json.SessionHooks; + +/** + * Tests for preMcpToolCall hook functionality. + * + *

+ * These tests use the shared CapiProxy infrastructure for deterministic API + * response replay. Snapshots are stored in + * test/snapshots/pre_mcp_tool_call_hook/. + *

+ */ +public class PreMcpToolCallHookTest { + + private static final ObjectMapper MAPPER = JsonRpcClient.getObjectMapper(); + private static E2ETestContext ctx; + + @BeforeAll + static void setup() throws Exception { + ctx = E2ETestContext.create(); + } + + @AfterAll + static void teardown() throws Exception { + if (ctx != null) { + ctx.close(); + } + } + + /** + * Verifies that preMcpToolCall hook can set metadata on the MCP request. + * + * @see Snapshot: pre_mcp_tool_call_hook/should_set_meta_via_premcptoolcall_hook + */ + @Disabled("Requires snapshot: pre_mcp_tool_call_hook/should_set_meta_via_premcptoolcall_hook") + @Test + void testShouldSetMetaViaPreMcpToolCallHook() throws Exception { + ctx.configureForTest("pre_mcp_tool_call_hook", "should_set_meta_via_premcptoolcall_hook"); + + var hookInputs = new java.util.ArrayList(); + + var mcpServers = new HashMap(); + mcpServers.put("meta-echo", new McpStdioServerConfig().setCommand("npx").setArgs(List.of("-y", "mcp-meta-echo")) + .setTools(List.of("*")).setWorkingDirectory(ctx.getWorkDir().toString())); + + var hooks = new SessionHooks().setOnPreMcpToolCall((input, invocation) -> { + hookInputs.add(input); + JsonNode metaNode = MAPPER.valueToTree(Map.of("injected", "by-hook", "source", "test")); + return CompletableFuture.completedFuture(PreMcpToolCallHookOutput.withMeta(metaNode)); + }); + + try (CopilotClient client = ctx.createClient()) { + CopilotSession session = client.createSession(new SessionConfig().setMcpServers(mcpServers).setHooks(hooks) + .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)).get(); + + AssistantMessageEvent response = session.sendAndWait(new MessageOptions().setPrompt( + "Use the meta-echo/echo_meta tool with value 'test-set'. Reply with just the raw tool result.")) + .get(60, TimeUnit.SECONDS); + + assertNotNull(response); + assertFalse(hookInputs.isEmpty(), "Should have received preMcpToolCall hook calls"); + + // Verify hook input fields + PreMcpToolCallHookInput hookInput = hookInputs.get(0); + assertEquals("meta-echo", hookInput.getServerName()); + assertNotNull(hookInput.getToolName()); + assertNotNull(hookInput.getCwd()); + assertTrue(hookInput.getTimestamp() > 0); + + // Verify the response contains the injected metadata + String content = response.getData().content(); + assertTrue(content.contains("by-hook"), "Response should contain injected metadata: " + content); + + session.close(); + } + } + + /** + * Verifies that preMcpToolCall hook can replace existing metadata. + * + * @see Snapshot: + * pre_mcp_tool_call_hook/should_replace_meta_via_premcptoolcall_hook + */ + @Disabled("Requires snapshot: pre_mcp_tool_call_hook/should_replace_meta_via_premcptoolcall_hook") + @Test + void testShouldReplaceMetaViaPreMcpToolCallHook() throws Exception { + ctx.configureForTest("pre_mcp_tool_call_hook", "should_replace_meta_via_premcptoolcall_hook"); + + var mcpServers = new HashMap(); + mcpServers.put("meta-echo", new McpStdioServerConfig().setCommand("npx").setArgs(List.of("-y", "mcp-meta-echo")) + .setTools(List.of("*")).setWorkingDirectory(ctx.getWorkDir().toString())); + + var hooks = new SessionHooks().setOnPreMcpToolCall((input, invocation) -> { + JsonNode metaNode = MAPPER.valueToTree(Map.of("replaced", "true", "original", "gone")); + return CompletableFuture.completedFuture(PreMcpToolCallHookOutput.withMeta(metaNode)); + }); + + try (CopilotClient client = ctx.createClient()) { + CopilotSession session = client.createSession(new SessionConfig().setMcpServers(mcpServers).setHooks(hooks) + .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)).get(); + + AssistantMessageEvent response = session.sendAndWait(new MessageOptions().setPrompt( + "Use the meta-echo/echo_meta tool with value 'test-replace'. Reply with just the raw tool result.")) + .get(60, TimeUnit.SECONDS); + + assertNotNull(response); + + // Verify the response contains the replaced metadata + String content = response.getData().content(); + assertTrue(content.contains("replaced"), "Response should contain replaced metadata: " + content); + + session.close(); + } + } + + /** + * Verifies that preMcpToolCall hook can remove metadata from the MCP request. + * + * @see Snapshot: + * pre_mcp_tool_call_hook/should_remove_meta_via_premcptoolcall_hook + */ + @Disabled("Requires snapshot: pre_mcp_tool_call_hook/should_remove_meta_via_premcptoolcall_hook") + @Test + void testShouldRemoveMetaViaPreMcpToolCallHook() throws Exception { + ctx.configureForTest("pre_mcp_tool_call_hook", "should_remove_meta_via_premcptoolcall_hook"); + + var mcpServers = new HashMap(); + mcpServers.put("meta-echo", new McpStdioServerConfig().setCommand("npx").setArgs(List.of("-y", "mcp-meta-echo")) + .setTools(List.of("*")).setWorkingDirectory(ctx.getWorkDir().toString())); + + var hooks = new SessionHooks().setOnPreMcpToolCall((input, invocation) -> { + // Return output with null metaToUse to remove metadata + return CompletableFuture.completedFuture(PreMcpToolCallHookOutput.removeMeta()); + }); + + try (CopilotClient client = ctx.createClient()) { + CopilotSession session = client.createSession(new SessionConfig().setMcpServers(mcpServers).setHooks(hooks) + .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)).get(); + + AssistantMessageEvent response = session.sendAndWait(new MessageOptions().setPrompt( + "Use the meta-echo/echo_meta tool with value 'test-remove'. Reply with just the raw tool result.")) + .get(60, TimeUnit.SECONDS); + + assertNotNull(response); + + session.close(); + } + } +} diff --git a/java/src/test/java/com/github/copilot/sdk/SessionEventDeserializationTest.java b/java/src/test/java/com/github/copilot/sdk/SessionEventDeserializationTest.java index 08edfa5fa9..0abec58f95 100644 --- a/java/src/test/java/com/github/copilot/sdk/SessionEventDeserializationTest.java +++ b/java/src/test/java/com/github/copilot/sdk/SessionEventDeserializationTest.java @@ -792,10 +792,10 @@ void testParseSessionShutdownEvent() throws Exception { var shutdownEvent = (SessionShutdownEvent) event; assertEquals(ShutdownType.ROUTINE, shutdownEvent.getData().shutdownType()); - assertEquals(5.0, shutdownEvent.getData().totalPremiumRequests()); + assertEquals(Double.valueOf(5.0), shutdownEvent.getData().totalPremiumRequests()); assertEquals("gpt-4", shutdownEvent.getData().currentModel()); assertNotNull(shutdownEvent.getData().codeChanges()); - assertEquals(10.0, shutdownEvent.getData().codeChanges().linesAdded()); + assertEquals((Long) 10L, shutdownEvent.getData().codeChanges().linesAdded()); } @Test @@ -1054,7 +1054,7 @@ void testSessionStartEventAllFields() throws Exception { assertNotNull(event); var data = event.getData(); assertEquals("sess-full", data.sessionId()); - assertEquals(2.0, data.version()); + assertEquals((Long) 2L, data.version()); assertEquals("copilot-cli", data.producer()); assertEquals("1.2.3", data.copilotVersion()); assertNotNull(data.startTime()); @@ -1077,7 +1077,7 @@ void testSessionResumeEventAllFields() throws Exception { assertNotNull(event); var data = event.getData(); assertNotNull(data.resumeTime()); - assertEquals(42.0, data.eventCount()); + assertEquals((Long) 42L, data.eventCount()); } @Test @@ -1178,13 +1178,13 @@ void testSessionTruncationEventAllFields() throws Exception { var event = (SessionTruncationEvent) parseJson(json); assertNotNull(event); var data = event.getData(); - assertEquals(128000.0, data.tokenLimit()); - assertEquals(150000.0, data.preTruncationTokensInMessages()); - assertEquals(100.0, data.preTruncationMessagesLength()); - assertEquals(120000.0, data.postTruncationTokensInMessages()); - assertEquals(80.0, data.postTruncationMessagesLength()); - assertEquals(30000.0, data.tokensRemovedDuringTruncation()); - assertEquals(20.0, data.messagesRemovedDuringTruncation()); + assertEquals((Long) 128000L, data.tokenLimit()); + assertEquals((Long) 150000L, data.preTruncationTokensInMessages()); + assertEquals((Long) 100L, data.preTruncationMessagesLength()); + assertEquals((Long) 120000L, data.postTruncationTokensInMessages()); + assertEquals((Long) 80L, data.postTruncationMessagesLength()); + assertEquals((Long) 30000L, data.tokensRemovedDuringTruncation()); + assertEquals((Long) 20L, data.messagesRemovedDuringTruncation()); assertEquals("system", data.performedBy()); } @@ -1204,9 +1204,9 @@ void testSessionUsageInfoEventAllFields() throws Exception { var event = (SessionUsageInfoEvent) parseJson(json); assertNotNull(event); var data = event.getData(); - assertEquals(128000.0, data.tokenLimit()); - assertEquals(50000.0, data.currentTokens()); - assertEquals(25.0, data.messagesLength()); + assertEquals((Long) 128000L, data.tokenLimit()); + assertEquals((Long) 50000L, data.currentTokens()); + assertEquals((Long) 25L, data.messagesLength()); } @Test @@ -1240,21 +1240,21 @@ void testSessionCompactionCompleteEventAllFields() throws Exception { var data = event.getData(); assertTrue(data.success()); assertNull(data.error()); - assertEquals(150000.0, data.preCompactionTokens()); - assertEquals(60000.0, data.postCompactionTokens()); - assertEquals(100.0, data.preCompactionMessagesLength()); - assertEquals(50.0, data.messagesRemoved()); - assertEquals(90000.0, data.tokensRemoved()); + assertEquals((Long) 150000L, data.preCompactionTokens()); + assertEquals((Long) 60000L, data.postCompactionTokens()); + assertEquals((Long) 100L, data.preCompactionMessagesLength()); + assertEquals((Long) 50L, data.messagesRemoved()); + assertEquals((Long) 90000L, data.tokensRemoved()); assertEquals("Compacted conversation", data.summaryContent()); - assertEquals(3.0, data.checkpointNumber()); + assertEquals((Long) 3L, data.checkpointNumber()); assertEquals("/checkpoints/3", data.checkpointPath()); assertEquals("req-compact-1", data.requestId()); var tokens = data.compactionTokensUsed(); assertNotNull(tokens); - assertEquals(1000.0, tokens.inputTokens()); - assertEquals(500.0, tokens.outputTokens()); - assertEquals(200.0, tokens.cacheReadTokens()); + assertEquals((Long) 1000L, tokens.inputTokens()); + assertEquals((Long) 500L, tokens.outputTokens()); + assertEquals((Long) 200L, tokens.cacheReadTokens()); } @Test @@ -1288,16 +1288,16 @@ void testSessionShutdownEventAllFields() throws Exception { var data = event.getData(); assertEquals(ShutdownType.ERROR, data.shutdownType()); assertEquals("OOM", data.errorReason()); - assertEquals(10.0, data.totalPremiumRequests()); - assertEquals(5000.5, data.totalApiDurationMs()); - assertEquals(1700000000000.0, data.sessionStartTime()); + assertEquals(Double.valueOf(10.0), data.totalPremiumRequests()); + assertEquals((Long) 5000L, data.totalApiDurationMs()); + assertEquals((Long) 1700000000000L, data.sessionStartTime()); assertEquals("gpt-4-turbo", data.currentModel()); assertNotNull(data.modelMetrics()); var changes = data.codeChanges(); assertNotNull(changes); - assertEquals(50.0, changes.linesAdded()); - assertEquals(20.0, changes.linesRemoved()); + assertEquals((Long) 50L, changes.linesAdded()); + assertEquals((Long) 20L, changes.linesRemoved()); assertNotNull(changes.filesModified()); assertEquals(3, changes.filesModified().size()); assertEquals("a.java", changes.filesModified().get(0)); @@ -1391,7 +1391,7 @@ void testAssistantStreamingDeltaEventAllFields() throws Exception { var event = (AssistantStreamingDeltaEvent) parseJson(json); assertNotNull(event); assertEquals("assistant.streaming_delta", event.getType()); - assertEquals(4096.0, event.getData().totalResponseSizeBytes()); + assertEquals((Long) 4096L, event.getData().totalResponseSizeBytes()); } @Test @@ -1482,12 +1482,12 @@ void testAssistantUsageEventAllFields() throws Exception { assertNotNull(event); var data = event.getData(); assertEquals("gpt-4-turbo", data.model()); - assertEquals(500.0, data.inputTokens()); - assertEquals(200.0, data.outputTokens()); - assertEquals(50.0, data.cacheReadTokens()); - assertEquals(150.0, data.cacheWriteTokens()); + assertEquals((Long) 500L, data.inputTokens()); + assertEquals((Long) 200L, data.outputTokens()); + assertEquals((Long) 50L, data.cacheReadTokens()); + assertEquals((Long) 150L, data.cacheWriteTokens()); assertEquals(0.05, data.cost()); - assertEquals(1234.5, data.duration()); + assertEquals((Long) 1234L, data.duration()); assertEquals("user", data.initiator()); assertEquals("api-1", data.apiCallId()); assertEquals("prov-1", data.providerCallId()); @@ -1497,11 +1497,11 @@ void testAssistantUsageEventAllFields() throws Exception { // Verify copilotUsage assertNotNull(data.copilotUsage()); - assertEquals(1234567.0, data.copilotUsage().totalNanoAiu()); + assertEquals(Double.valueOf(1234567.0), data.copilotUsage().totalNanoAiu()); assertNotNull(data.copilotUsage().tokenDetails()); assertEquals(2, data.copilotUsage().tokenDetails().size()); assertEquals("input", data.copilotUsage().tokenDetails().get(0).tokenType()); - assertEquals(500.0, data.copilotUsage().tokenDetails().get(0).tokenCount()); + assertEquals((Long) 500L, data.copilotUsage().tokenDetails().get(0).tokenCount()); assertEquals("output", data.copilotUsage().tokenDetails().get(1).tokenType()); } @@ -1522,10 +1522,8 @@ void testAssistantUsageEventWithNullQuotaSnapshots() throws Exception { assertNotNull(event); var data = event.getData(); assertEquals("gpt-4-turbo", data.model()); - assertEquals(500.0, data.inputTokens()); - assertEquals(200.0, data.outputTokens()); - // quotaSnapshots is null when absent in JSON (generated class uses nullable - // fields) + assertEquals((Long) 500L, data.inputTokens()); + assertEquals((Long) 200L, data.outputTokens()); assertNull(data.quotaSnapshots()); } @@ -2147,7 +2145,7 @@ void testParseJsonNodeSessionShutdownWithCodeChanges() throws Exception { var event = (SessionShutdownEvent) parseJson(json); assertNotNull(event); assertEquals(ShutdownType.ROUTINE, event.getData().shutdownType()); - assertEquals(100.0, event.getData().codeChanges().linesAdded()); + assertEquals((Long) 100L, event.getData().codeChanges().linesAdded()); assertEquals(1, event.getData().codeChanges().filesModified().size()); } diff --git a/java/src/test/java/com/github/copilot/sdk/generated/GeneratedEventTypesCoverageTest.java b/java/src/test/java/com/github/copilot/sdk/generated/GeneratedEventTypesCoverageTest.java index 6cb608e191..7cbaf9a0c6 100644 --- a/java/src/test/java/com/github/copilot/sdk/generated/GeneratedEventTypesCoverageTest.java +++ b/java/src/test/java/com/github/copilot/sdk/generated/GeneratedEventTypesCoverageTest.java @@ -45,7 +45,7 @@ void testParseAssistantStreamingDeltaEvent() throws Exception { assertInstanceOf(AssistantStreamingDeltaEvent.class, event); assertEquals("assistant.streaming_delta", event.getType()); var typed = (AssistantStreamingDeltaEvent) event; - assertEquals(1024.0, typed.getData().totalResponseSizeBytes()); + assertEquals((Long) 1024L, typed.getData().totalResponseSizeBytes()); } // ── CapabilitiesChangedEvent ─────────────────────────────────────────── diff --git a/java/src/test/java/com/github/copilot/sdk/generated/rpc/GeneratedRpcApiCoverageTest.java b/java/src/test/java/com/github/copilot/sdk/generated/rpc/GeneratedRpcApiCoverageTest.java index f32c95c5c3..e0f66bd595 100644 --- a/java/src/test/java/com/github/copilot/sdk/generated/rpc/GeneratedRpcApiCoverageTest.java +++ b/java/src/test/java/com/github/copilot/sdk/generated/rpc/GeneratedRpcApiCoverageTest.java @@ -633,7 +633,7 @@ void sessionRpc_log_merges_sessionId() { var stub = new StubCaller(); var session = new SessionRpc(stub, "sess-log"); - var logParams = new SessionLogParams(null, "Hello from test", null, null, null); + var logParams = new SessionLogParams(null, "Hello from test", null, null, null, null, null); session.log(logParams); assertEquals(1, stub.calls.size()); diff --git a/java/src/test/java/com/github/copilot/sdk/generated/rpc/GeneratedRpcRecordsCoverageTest.java b/java/src/test/java/com/github/copilot/sdk/generated/rpc/GeneratedRpcRecordsCoverageTest.java index e6ae7e7d90..6601b48298 100644 --- a/java/src/test/java/com/github/copilot/sdk/generated/rpc/GeneratedRpcRecordsCoverageTest.java +++ b/java/src/test/java/com/github/copilot/sdk/generated/rpc/GeneratedRpcRecordsCoverageTest.java @@ -6,6 +6,7 @@ import static org.junit.jupiter.api.Assertions.*; +import java.time.OffsetDateTime; import java.util.List; import java.util.Map; import java.util.UUID; @@ -32,9 +33,9 @@ void pingParams_record() { @Test void pingResult_record() { - var result = new PingResult("pong", 1234L, 2L); + var result = new PingResult("pong", null, 2L); assertEquals("pong", result.message()); - assertEquals(1234L, result.timestamp()); + assertNull(result.timestamp()); assertEquals(2L, result.protocolVersion()); } @@ -246,7 +247,7 @@ void sessionHistoryTruncateParams_record() { @Test void sessionLogParams_record() { - var params = new SessionLogParams("sess-24", "test message", SessionLogLevel.INFO, false, null); + var params = new SessionLogParams("sess-24", "test message", SessionLogLevel.INFO, null, false, null, null); assertEquals("sess-24", params.sessionId()); assertEquals("test message", params.message()); assertEquals(SessionLogLevel.INFO, params.level()); @@ -471,9 +472,10 @@ void sessionWorkspaceReadFileParams_record() { @Test void pingResult_fields() { - var result = new PingResult("pong", 9999L, 1L); + var ts = OffsetDateTime.now(); + var result = new PingResult("pong", ts, 1L); assertEquals("pong", result.message()); - assertEquals(9999L, result.timestamp()); + assertEquals(ts, result.timestamp()); assertEquals(1L, result.protocolVersion()); } @@ -484,7 +486,8 @@ void sessionAgentDeselectResult_empty() { @Test void sessionAgentListResult_with_items() { - var item = new AgentInfo("name1", "Name One", "Desc 1", "/path/to/agent1"); + var item = new AgentInfo("name1", "Name One", "Desc 1", "/path/to/agent1", null, null, null, null, null, null, + null); var result = new SessionAgentListResult(List.of(item)); assertEquals(1, result.agents().size()); assertEquals("name1", result.agents().get(0).name()); @@ -495,7 +498,8 @@ void sessionAgentListResult_with_items() { @Test void sessionAgentGetCurrentResult_nested() { - var agent = new AgentInfo("agent-1", "Agent One", "Does things", null); + var agent = new AgentInfo("agent-1", "Agent One", "Does things", null, null, null, null, null, null, null, + null); var result = new SessionAgentGetCurrentResult(agent); assertEquals("agent-1", result.agent().name()); assertEquals("Agent One", result.agent().displayName()); @@ -511,7 +515,7 @@ void sessionAgentGetCurrentResult_null_agent() { @Test void sessionAgentReloadResult_with_items() { - var item = new AgentInfo("a", "A", "Desc", "/path/to/a"); + var item = new AgentInfo("a", "A", "Desc", "/path/to/a", null, null, null, null, null, null, null); var result = new SessionAgentReloadResult(List.of(item)); assertEquals(1, result.agents().size()); assertEquals("a", result.agents().get(0).name()); @@ -519,7 +523,8 @@ void sessionAgentReloadResult_with_items() { @Test void sessionAgentSelectResult_nested() { - var agent = new AgentInfo("selected", "Selected", "The selected agent", "/path/to/selected"); + var agent = new AgentInfo("selected", "Selected", "The selected agent", "/path/to/selected", null, null, null, + null, null, null, null); var result = new SessionAgentSelectResult(agent); assertEquals("selected", result.agent().name()); } @@ -638,7 +643,7 @@ void sessionFsStatResult_record() { @Test void sessionHistoryCompactResult_nested() { var ctx = new HistoryCompactContextWindow(100000L, 5000L, 20L, 1000L, 3000L, 500L); - var result = new SessionHistoryCompactResult(true, 2000L, 5L, ctx); + var result = new SessionHistoryCompactResult(true, 2000L, 5L, null, ctx); assertTrue(result.success()); assertEquals(2000L, result.tokensRemoved()); assertEquals(5L, result.messagesRemoved()); @@ -715,7 +720,7 @@ void sessionModeSetResult_enum() { @Test void sessionModelGetCurrentResult_record() { - var result = new SessionModelGetCurrentResult("claude-sonnet-4.5"); + var result = new SessionModelGetCurrentResult("claude-sonnet-4.5", null); assertEquals("claude-sonnet-4.5", result.modelId()); } @@ -786,7 +791,7 @@ void sessionSkillsEnableResult_empty() { @Test void sessionSkillsListResult_nested() { - var item = new Skill("deploy", "Deploy the app", SkillSource.PROJECT, true, true, "/skills/deploy.md"); + var item = new Skill("deploy", "Deploy the app", SkillSource.PROJECT, true, true, "/skills/deploy.md", null); var result = new SessionSkillsListResult(List.of(item)); assertEquals(1, result.skills().size()); assertEquals("deploy", result.skills().get(0).name()); @@ -832,9 +837,9 @@ void sessionUiHandlePendingElicitationResult_record() { @Test void sessionUsageGetMetricsResult_nested() { - var changes = new UsageMetricsCodeChanges(100L, 50L, 5L); - var result = new SessionUsageGetMetricsResult(0.5, 10L, null, null, 2000.0, 1700000000000L, changes, null, - "gpt-5", 1000L, 500L); + var changes = new UsageMetricsCodeChanges(100L, 50L, 5L, null); + var result = new SessionUsageGetMetricsResult(0.5, 10L, null, null, 2000L, null, changes, null, "gpt-5", 1000L, + 500L); assertEquals(0.5, result.totalPremiumRequestCost()); assertEquals(10L, result.totalUserRequests()); assertNotNull(result.codeChanges()); diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index e7ea0d4197..ae62c3f9bf 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.52-1", + "@github/copilot": "^1.0.52-4", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, @@ -663,9 +663,9 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.52-1.tgz", - "integrity": "sha512-oz6m/dOpTU+FaCWXqYZj5JkJmRT+/RYcrmtGal39V+gOxTA2Nc9wIeLH1SMwMoOXC9Q6DN6keiY0wqWcHirPVg==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.52-4.tgz", + "integrity": "sha512-XoVTkovJZgO2i4izgAvzElqKtTwEkenYJ6vpH1X7LCXrp0YWaiS9bhHDuSawhDE721C8CRXRfq8MZ8SKJWhnxw==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "detect-libc": "^2.1.2" @@ -674,20 +674,20 @@ "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.52-1", - "@github/copilot-darwin-x64": "1.0.52-1", - "@github/copilot-linux-arm64": "1.0.52-1", - "@github/copilot-linux-x64": "1.0.52-1", - "@github/copilot-linuxmusl-arm64": "1.0.52-1", - "@github/copilot-linuxmusl-x64": "1.0.52-1", - "@github/copilot-win32-arm64": "1.0.52-1", - "@github/copilot-win32-x64": "1.0.52-1" + "@github/copilot-darwin-arm64": "1.0.52-4", + "@github/copilot-darwin-x64": "1.0.52-4", + "@github/copilot-linux-arm64": "1.0.52-4", + "@github/copilot-linux-x64": "1.0.52-4", + "@github/copilot-linuxmusl-arm64": "1.0.52-4", + "@github/copilot-linuxmusl-x64": "1.0.52-4", + "@github/copilot-win32-arm64": "1.0.52-4", + "@github/copilot-win32-x64": "1.0.52-4" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.52-1.tgz", - "integrity": "sha512-DWXtC/yItZVtkSQhPyRMEkFwa2mcY2rg2cu/uwJ15L9ReiYvlKYEZQDe1TMqkT+U6+k9KjA2L2HQfXVm14/vTw==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.52-4.tgz", + "integrity": "sha512-SGu8mX69aZgbL1/EatAka/AJHOpfxdvh02euHmx0Q4VyvQS8dz++2gVprvaInaUO0i8sjsvniZyqBt1mfWJA/w==", "cpu": [ "arm64" ], @@ -701,9 +701,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.52-1.tgz", - "integrity": "sha512-NFTJkzzlTALMfbj9CDJ7N09PRPTVFq1+71hk+zoNx1uT/pi954liV6tKSaNAihPIXTMQKfJXGwEdjtvACpc8Vg==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.52-4.tgz", + "integrity": "sha512-nO1qy+/V6PJzLCPoOCDqeNiC6yAV25lVI813rw+kfTTvIIhY4GoJWVg8FlL/pjul2DR0S0Zw4JBZyHzyECgQ3Q==", "cpu": [ "x64" ], @@ -717,9 +717,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.52-1.tgz", - "integrity": "sha512-CZE29v+RPJClHgVE1rU+RpRWSG8lm48koRZ0taKVopqLRD6NWKjBOwFKYJojk08H8/K+BWr/paM5+R8hEZHxZw==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.52-4.tgz", + "integrity": "sha512-a+ukt+y9ZzxOft32i1AZZKTnCsvL9nwSRr2viURn0GPO74j6d4J29xGKBYAymmT1L431ToSWxrVo7wHi4TOxgw==", "cpu": [ "arm64" ], @@ -733,9 +733,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.52-1.tgz", - "integrity": "sha512-tJhLQV70TJLq3hPXg7P6pHPfE4vaT2nENIXZsHu6fBkOcsSAxX1APSv6Bkyfsiod8EfFHkcG2+n7VXiVg8WqFw==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.52-4.tgz", + "integrity": "sha512-em34O2QVZWnqAdionbNhkshzmHxxGUed3tp3IU4OSkJr3yVpDRtbsiOYIx+GT+bVY2P1nyRTcAyrvVrle6uf5A==", "cpu": [ "x64" ], @@ -749,9 +749,9 @@ } }, "node_modules/@github/copilot-linuxmusl-arm64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.52-1.tgz", - "integrity": "sha512-u24wHsUumldUEPWX/5z5IEuJvixiQEYF82N04P1g65dvOknq+89dpj+GND4Rh3Vr5u13drgj5AJqkJbWB8N+EQ==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.52-4.tgz", + "integrity": "sha512-0oofPJD8brQ1EEexvoFpfkv0qTFTwnJs6M6vIp6GWmSDuI0HGsQGhA2GO0yDPlv8g3sLGM2esSeRYkc/iMXliA==", "cpu": [ "arm64" ], @@ -765,9 +765,9 @@ } }, "node_modules/@github/copilot-linuxmusl-x64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.52-1.tgz", - "integrity": "sha512-wM22FxcHL8NlnesKKQPPvtk4ojqefN7irU5tQcX+IunpD1izVQl7AOXhZyHoQ21zQnN0De8EapxOUc+WnvlxpA==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.52-4.tgz", + "integrity": "sha512-uoWj7Uxt8lth5/LpJgNK/oGuacnsZzZ25X2J4sGTNTMGR+xqCRavHoiUzwrs3w1mprnvO18b1TZKocSQNt/wlQ==", "cpu": [ "x64" ], @@ -781,9 +781,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.52-1.tgz", - "integrity": "sha512-ecvfl9N7DPSwpiT2ZNUSXR1ZrSKwpkByOU6VcNphh4RptPZ0iNfyRNLhFCwSfFz+FvB6z2LZi+F7jSzQ3SaT3w==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.52-4.tgz", + "integrity": "sha512-aNTWW+HhYjA0ultZywv2c+NDiN47ZVf9RS3vQThYKBF2kxUS/gT482wU9A7hqJYgEsF39s/EAYrZOc2AF9eo3Q==", "cpu": [ "arm64" ], @@ -797,9 +797,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.52-1.tgz", - "integrity": "sha512-a9Ct7krktP+/pfPdh/K57deYzzmL13e5Tb1pf5E152u4o/5xKzfgroNFUOzotFfFhs1jFhdzKCm3WHNLIvVEHA==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.52-4.tgz", + "integrity": "sha512-7hMKWcALIFuOlb5NJL6BXbCHrfrXS1ZOqcXg9IQji9yJu9IgsFHXno0tOmnOUUupikCNZLPQAZtMj0C18vabRw==", "cpu": [ "x64" ], diff --git a/nodejs/package.json b/nodejs/package.json index 611e3f7d3b..3058a74f32 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -56,7 +56,7 @@ "author": "GitHub", "license": "MIT", "dependencies": { - "@github/copilot": "^1.0.52-1", + "@github/copilot": "^1.0.52-4", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, diff --git a/nodejs/samples/package-lock.json b/nodejs/samples/package-lock.json index b50ed3477a..47c73f3cff 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.52-1", + "@github/copilot": "^1.0.52-4", "vscode-jsonrpc": "^8.2.1", "zod": "^4.3.6" }, diff --git a/nodejs/src/generated/rpc.ts b/nodejs/src/generated/rpc.ts index 8572d088e6..89d5954975 100644 --- a/nodejs/src/generated/rpc.ts +++ b/nodejs/src/generated/rpc.ts @@ -120,7 +120,7 @@ export type ContentFilterMode = /** Remove characters that can hide directives. */ | "hidden_characters"; /** - * Server transport type: stdio, http, sse, or memory + * Server transport type: stdio, http, sse (deprecated), or memory * * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema * via the `definition` "DiscoveredMcpServerType". @@ -130,7 +130,7 @@ export type DiscoveredMcpServerType = | "stdio" /** Server communicates over streamable HTTP. */ | "http" - /** Server communicates over Server-Sent Events. */ + /** Server communicates over Server-Sent Events (deprecated). */ | "sse" /** Server is backed by an in-memory runtime implementation. */ | "memory"; @@ -325,6 +325,114 @@ export type SessionLogLevel = | "warning" /** Error message describing a failure. */ | "error"; +/** + * UI theme preference per SEP-1865 + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsHostContextDetailsTheme". + */ +/** @experimental */ +export type McpAppsHostContextDetailsTheme = + /** Light UI theme */ + | "light" + /** Dark UI theme */ + | "dark"; +/** + * Current display mode (SEP-1865) + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsHostContextDetailsDisplayMode". + */ +/** @experimental */ +export type McpAppsHostContextDetailsDisplayMode = + /** Rendered inline within the host conversation surface */ + | "inline" + /** Rendered as a fullscreen overlay */ + | "fullscreen" + /** Rendered as a picture-in-picture floating panel */ + | "pip"; +/** + * Allowed values for the `McpAppsHostContextDetailsAvailableDisplayMode` enumeration. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsHostContextDetailsAvailableDisplayMode". + */ +/** @experimental */ +export type McpAppsHostContextDetailsAvailableDisplayMode = + /** Rendered inline within the host conversation surface */ + | "inline" + /** Rendered as a fullscreen overlay */ + | "fullscreen" + /** Rendered as a picture-in-picture floating panel */ + | "pip"; +/** + * Platform type for responsive design + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsHostContextDetailsPlatform". + */ +/** @experimental */ +export type McpAppsHostContextDetailsPlatform = + /** Host runs in a web browser */ + | "web" + /** Host runs as a desktop application */ + | "desktop" + /** Host runs on a mobile device */ + | "mobile"; +/** + * UI theme preference per SEP-1865 + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsSetHostContextDetailsTheme". + */ +/** @experimental */ +export type McpAppsSetHostContextDetailsTheme = + /** Light UI theme */ + | "light" + /** Dark UI theme */ + | "dark"; +/** + * Current display mode (SEP-1865) + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsSetHostContextDetailsDisplayMode". + */ +/** @experimental */ +export type McpAppsSetHostContextDetailsDisplayMode = + /** Rendered inline within the host conversation surface */ + | "inline" + /** Rendered as a fullscreen overlay */ + | "fullscreen" + /** Rendered as a picture-in-picture floating panel */ + | "pip"; +/** + * Allowed values for the `McpAppsSetHostContextDetailsAvailableDisplayMode` enumeration. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsSetHostContextDetailsAvailableDisplayMode". + */ +/** @experimental */ +export type McpAppsSetHostContextDetailsAvailableDisplayMode = + /** Rendered inline within the host conversation surface */ + | "inline" + /** Rendered as a fullscreen overlay */ + | "fullscreen" + /** Rendered as a picture-in-picture floating panel */ + | "pip"; +/** + * Platform type for responsive design + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsSetHostContextDetailsPlatform". + */ +/** @experimental */ +export type McpAppsSetHostContextDetailsPlatform = + /** Host runs in a web browser */ + | "web" + /** Host runs as a desktop application */ + | "desktop" + /** Host runs on a mobile device */ + | "mobile"; /** * MCP server configuration (stdio process or remote HTTP/SSE) * @@ -2177,6 +2285,12 @@ export interface ExternalToolTextResultForLlmBinaryResultsForLlm { * Human-readable description of the binary data */ description?: string; + /** + * Optional metadata from the producing tool. + */ + metadata?: { + [k: string]: unknown | undefined; + }; } /** * Plain text content block @@ -2768,6 +2882,274 @@ export interface LspInitializeRequest { */ force?: boolean; } +/** + * MCP server, tool name, and arguments to invoke from an MCP App view. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsCallToolRequest". + */ +/** @experimental */ +export interface McpAppsCallToolRequest { + /** + * MCP server hosting the tool + */ + serverName: string; + /** + * MCP tool name + */ + toolName: string; + /** + * Tool arguments + */ + arguments?: { + [k: string]: unknown | undefined; + }; + /** + * **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the app from this server only'), the call is rejected when this differs from `serverName`, and rejected outright when missing. + */ + originServerName: string; +} +/** + * Capability negotiation snapshot + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsDiagnoseCapability". + */ +/** @experimental */ +export interface McpAppsDiagnoseCapability { + /** + * Whether the session has the `mcp-apps` capability + */ + sessionHasMcpApps: boolean; + /** + * Whether the MCP_APPS feature flag (or COPILOT_MCP_APPS env override) is on + */ + featureFlagEnabled: boolean; + /** + * Whether the runtime advertises `extensions.io.modelcontextprotocol/ui` to MCP servers + */ + advertised: boolean; +} +/** + * MCP server to diagnose MCP Apps wiring for. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsDiagnoseRequest". + */ +/** @experimental */ +export interface McpAppsDiagnoseRequest { + /** + * MCP server to probe + */ + serverName: string; +} +/** + * Diagnostic snapshot of MCP Apps wiring for the named server. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsDiagnoseResult". + */ +/** @experimental */ +export interface McpAppsDiagnoseResult { + capability: McpAppsDiagnoseCapability; + server: McpAppsDiagnoseServer; +} +/** + * What the server returned for this session + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsDiagnoseServer". + */ +/** @experimental */ +export interface McpAppsDiagnoseServer { + /** + * Whether the named server is currently connected + */ + connected: boolean; + /** + * Total tools returned by the server's tools/list + */ + toolCount: number; + /** + * Tools whose `_meta.ui` is populated (resourceUri and/or visibility set) + */ + toolsWithUiMeta: number; + /** + * Up to 5 tool names with `_meta.ui` for quick inspection + */ + sampleToolNames: string[]; +} +/** + * Current host context advertised to MCP App guests. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsHostContext". + */ +/** @experimental */ +export interface McpAppsHostContext { + context: McpAppsHostContextDetails; +} +/** + * Current host context + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsHostContextDetails". + */ +/** @experimental */ +export interface McpAppsHostContextDetails { + theme?: McpAppsHostContextDetailsTheme; + /** + * BCP-47 locale, e.g. 'en-US' + */ + locale?: string; + /** + * IANA timezone, e.g. 'America/New_York' + */ + timeZone?: string; + displayMode?: McpAppsHostContextDetailsDisplayMode; + /** + * Display modes the host supports + */ + availableDisplayModes?: McpAppsHostContextDetailsAvailableDisplayMode[]; + platform?: McpAppsHostContextDetailsPlatform; + /** + * Host application identifier + */ + userAgent?: string; + [k: string]: unknown | undefined; +} +/** + * MCP server to list app-callable tools for. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsListToolsRequest". + */ +/** @experimental */ +export interface McpAppsListToolsRequest { + /** + * MCP server hosting the app + */ + serverName: string; + /** + * **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the app from this server only'), the call is rejected when this differs from `serverName`, and rejected outright when missing. + */ + originServerName: string; +} +/** + * App-callable tools from the named MCP server. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsListToolsResult". + */ +/** @experimental */ +export interface McpAppsListToolsResult { + /** + * App-callable tools from the server + */ + tools: { + [k: string]: unknown | undefined; + }[]; +} +/** + * MCP server and resource URI to fetch. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsReadResourceRequest". + */ +/** @experimental */ +export interface McpAppsReadResourceRequest { + /** + * Name of the MCP server hosting the resource + */ + serverName: string; + /** + * Resource URI (typically ui://...) + */ + uri: string; +} +/** + * Resource contents returned by the MCP server. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsReadResourceResult". + */ +/** @experimental */ +export interface McpAppsReadResourceResult { + /** + * Resource contents returned by the server + */ + contents: McpAppsResourceContent[]; +} +/** + * Schema for the `McpAppsResourceContent` type. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsResourceContent". + */ +/** @experimental */ +export interface McpAppsResourceContent { + /** + * The resource URI (typically ui://...) + */ + uri: string; + /** + * MIME type of the content + */ + mimeType?: string; + /** + * Text content (e.g. HTML) + */ + text?: string; + /** + * Base64-encoded binary content + */ + blob?: string; + /** + * Resource-level metadata (CSP, permissions, etc.) + */ + _meta?: { + [k: string]: unknown | undefined; + }; +} +/** + * Host context advertised to MCP App guests + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsSetHostContextDetails". + */ +/** @experimental */ +export interface McpAppsSetHostContextDetails { + theme?: McpAppsSetHostContextDetailsTheme; + /** + * BCP-47 locale, e.g. 'en-US' + */ + locale?: string; + /** + * IANA timezone, e.g. 'America/New_York' + */ + timeZone?: string; + displayMode?: McpAppsSetHostContextDetailsDisplayMode; + /** + * Display modes the host supports + */ + availableDisplayModes?: McpAppsSetHostContextDetailsAvailableDisplayMode[]; + platform?: McpAppsSetHostContextDetailsPlatform; + /** + * Host application identifier + */ + userAgent?: string; + [k: string]: unknown | undefined; +} +/** + * Host context to advertise to MCP App guests. + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "McpAppsSetHostContextRequest". + */ +/** @experimental */ +export interface McpAppsSetHostContextRequest { + context: McpAppsSetHostContextDetails; +} /** * The requestId previously passed to executeSampling that should be cancelled. * @@ -3506,21 +3888,50 @@ export interface ModelBilling { */ export interface ModelBillingTokenPrices { /** - * Price per billing batch of input tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU = $0.01 USD) + * AI Credits cost per billing batch of input tokens */ inputPrice?: number; /** - * Price per billing batch of output tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU = $0.01 USD) + * AI Credits cost per billing batch of output tokens */ outputPrice?: number; /** - * Price per billing batch of cached tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU = $0.01 USD) + * AI Credits cost per billing batch of cached tokens */ cachePrice?: number; /** * Number of tokens per standard billing batch */ batchSize?: number; + /** + * Maximum context window tokens for the default tier + */ + contextMax?: number; + longContext?: ModelBillingTokenPricesLongContext; +} +/** + * Long context tier pricing (available for models with extended context windows) + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "ModelBillingTokenPricesLongContext". + */ +export interface ModelBillingTokenPricesLongContext { + /** + * AI Credits cost per billing batch of input tokens + */ + inputPrice?: number; + /** + * AI Credits cost per billing batch of output tokens + */ + outputPrice?: number; + /** + * AI Credits cost per billing batch of cached tokens + */ + cachePrice?: number; + /** + * Maximum context window tokens for the long context tier + */ + contextMax?: number; } /** * Override individual model capabilities resolved by the runtime @@ -8735,6 +9146,16 @@ export interface WorkspacesSaveLargePasteResult { sizeBytes: number; } | null; } +/** + * Standard MCP CallToolResult + * + * This interface was referenced by `_RpcSchemaRoot`'s JSON-Schema + * via the `definition` "SessionMcpAppsCallToolResult". + */ +/** @experimental */ +export interface SessionMcpAppsCallToolResult { + [k: string]: unknown | undefined; +} /** * Identifies the target session. * @@ -9564,6 +9985,59 @@ export function createSessionRpc(connection: MessageConnection, sessionId: strin login: async (params: McpOauthLoginRequest): Promise => connection.sendRequest("session.mcp.oauth.login", { sessionId, ...params }), }, + /** @experimental */ + apps: { + /** + * Fetch an MCP resource (typically a `ui://` MCP App bundle, per SEP-1865) from a connected server. Requires the `mcp-apps` session capability. + * + * @param params MCP server and resource URI to fetch. + * + * @returns Resource contents returned by the MCP server. + */ + readResource: async (params: McpAppsReadResourceRequest): Promise => + connection.sendRequest("session.mcp.apps.readResource", { sessionId, ...params }), + /** + * List tools that an MCP App view is allowed to call (SEP-1865 visibility filter). Returns tools whose `_meta.ui.visibility` is unset (default `["model","app"]`) or includes `"app"`. + * + * @param params MCP server to list app-callable tools for. + * + * @returns App-callable tools from the named MCP server. + */ + listTools: async (params: McpAppsListToolsRequest): Promise => + connection.sendRequest("session.mcp.apps.listTools", { sessionId, ...params }), + /** + * Call an MCP tool from an MCP App view (SEP-1865). Enforces the visibility check that prevents an app iframe from invoking model-only tools. Returns the standard MCP `CallToolResult`. + * + * @param params MCP server, tool name, and arguments to invoke from an MCP App view. + * + * @returns Standard MCP CallToolResult + */ + callTool: async (params: McpAppsCallToolRequest): Promise => + connection.sendRequest("session.mcp.apps.callTool", { sessionId, ...params }), + /** + * Replace the host context returned to MCP App guests on `ui/initialize`. Hosts use this to advertise theme, locale, or other metadata to the guest UI. + * + * @param params Host context to advertise to MCP App guests. + */ + setHostContext: async (params: McpAppsSetHostContextRequest): Promise => + connection.sendRequest("session.mcp.apps.setHostContext", { sessionId, ...params }), + /** + * Read the current host context advertised to MCP App guests. + * + * @returns Current host context advertised to MCP App guests. + */ + getHostContext: async (): Promise => + connection.sendRequest("session.mcp.apps.getHostContext", { sessionId }), + /** + * Diagnose MCP Apps wiring for a specific MCP server. Reports the session capability, feature-flag state, advertised extension, and how many tools have `_meta.ui` populated. + * + * @param params MCP server to diagnose MCP Apps wiring for. + * + * @returns Diagnostic snapshot of MCP Apps wiring for the named server. + */ + diagnose: async (params: McpAppsDiagnoseRequest): Promise => + connection.sendRequest("session.mcp.apps.diagnose", { sessionId, ...params }), + }, }, /** @experimental */ plugins: { diff --git a/nodejs/src/generated/session-events.ts b/nodejs/src/generated/session-events.ts index 738c4451af..da4333e55b 100644 --- a/nodejs/src/generated/session-events.ts +++ b/nodejs/src/generated/session-events.ts @@ -87,7 +87,8 @@ export type SessionEvent = | CustomAgentsUpdatedEvent | McpServersLoadedEvent | McpServerStatusChangedEvent - | ExtensionsLoadedEvent; + | ExtensionsLoadedEvent + | McpAppToolCallCompleteEvent; /** * Hosting platform type of the repository (github or ado) */ @@ -243,6 +244,24 @@ export type ToolExecutionCompleteContentResourceLinkIconTheme = * The embedded resource contents, either text or base64-encoded binary */ export type ToolExecutionCompleteContentResourceDetails = EmbeddedTextResourceContents | EmbeddedBlobResourceContents; +/** + * Allowed values for the `ToolExecutionCompleteToolDescriptionMetaUIVisibility` enumeration. + */ +export type ToolExecutionCompleteToolDescriptionMetaUIVisibility = + /** Tool is callable by the model (LLM tool surface) */ + | "model" + /** Tool is callable by the MCP App view (iframe) via session.mcp.apps.callTool */ + | "app"; +/** + * What triggered the skill invocation: `user-invoked` (explicit user action, such as via a slash command or UI affordance), `agent-invoked` (agent requested the skill), or `context-load` (loaded as part of another context, such as preloading skills configured on a custom agent or subagent) + */ +export type SkillInvokedTrigger = + /** Skill invocation requested explicitly by the user, such as via a slash command or UI affordance. */ + | "user-invoked" + /** Skill invocation requested by the agent. */ + | "agent-invoked" + /** Skill content loaded as part of another context, such as a configured custom agent or subagent. */ + | "context-load"; /** * Message role: "system" for system prompts, "developer" for developer-injected instructions */ @@ -451,6 +470,18 @@ export type McpServerStatus = | "disabled" /** The server is not configured for this session. */ | "not_configured"; +/** + * Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server) + */ +export type McpServerTransport = + /** Server communicates over stdio with a local child process. */ + | "stdio" + /** Server communicates over streamable HTTP. */ + | "http" + /** Server communicates over Server-Sent Events (deprecated). */ + | "sse" + /** Server is backed by an in-memory runtime implementation. */ + | "memory"; /** * Discovery source */ @@ -745,6 +776,10 @@ export interface ErrorData { * GitHub request tracing ID (x-github-request-id header) for correlating with server-side logs */ providerCallId?: string; + /** + * Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + */ + serviceRequestId?: string; /** * Error stack trace, when available */ @@ -1066,6 +1101,14 @@ export interface ModelChangeData { * Reason the change happened, when not user-initiated. Currently `"rate_limit_auto_switch"` for changes triggered by the auto-mode-switch rate-limit recovery path. UI clients can use this to render contextual copy. */ cause?: string; + /** + * Context tier after the model change; null explicitly clears a previously selected tier + */ + contextTier?: /** Default context tier with standard context window size. */ + | "default" + /** Extended context tier with a larger context window. */ + | "long_context" + | null; /** * Newly selected model identifier */ @@ -1786,6 +1829,10 @@ export interface CompactionCompleteData { * GitHub request tracing ID (x-github-request-id header) for the compaction LLM call */ requestId?: string; + /** + * Copilot service request ID (x-copilot-service-request-id header) for the compaction LLM call + */ + serviceRequestId?: string; /** * Whether compaction completed successfully */ @@ -2474,6 +2521,10 @@ export interface AssistantMessageData { * GitHub request tracing ID (x-github-request-id header) for correlating with server-side logs */ requestId?: string; + /** + * Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + */ + serviceRequestId?: string; /** * Tool invocations requested by the assistant in this message */ @@ -2757,6 +2808,10 @@ export interface AssistantUsageData { * Number of output tokens used for reasoning (e.g., chain-of-thought) */ reasoningTokens?: number; + /** + * Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + */ + serviceRequestId?: string; /** * Time to first token in milliseconds. Only available for streaming requests */ @@ -2909,6 +2964,10 @@ export interface ModelCallFailureData { * GitHub request tracing ID (x-github-request-id header) for server-side log correlation */ providerCallId?: string; + /** + * Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + */ + serviceRequestId?: string; source: ModelCallFailureSource; /** * HTTP status code from the failed request @@ -3217,6 +3276,7 @@ export interface ToolExecutionCompleteData { * Unique identifier for the completed tool call */ toolCallId: string; + toolDescription?: ToolExecutionCompleteToolDescription; /** * Tool-specific telemetry data (e.g., CodeQL check counts, grep match counts) */ @@ -3257,6 +3317,7 @@ export interface ToolExecutionCompleteResult { * Full detailed tool result for UI/timeline display, preserving complete content such as diffs. Falls back to content when absent. */ detailedContent?: string; + uiResource?: ToolExecutionCompleteUIResource; } /** * Plain text content block @@ -3425,6 +3486,118 @@ export interface EmbeddedBlobResourceContents { */ uri: string; } +/** + * MCP Apps UI resource content for rendering in a sandboxed iframe + */ +export interface ToolExecutionCompleteUIResource { + _meta?: ToolExecutionCompleteUIResourceMeta; + /** + * Base64-encoded HTML content + */ + blob?: string; + /** + * MIME type of the content + */ + mimeType: string; + /** + * HTML content as a string + */ + text?: string; + /** + * The ui:// URI of the resource + */ + uri: string; +} +/** + * Resource-level UI metadata (CSP, permissions, visual preferences) + */ +export interface ToolExecutionCompleteUIResourceMeta { + ui?: ToolExecutionCompleteUIResourceMetaUI; +} +/** + * Schema for the `ToolExecutionCompleteUIResourceMetaUI` type. + */ +export interface ToolExecutionCompleteUIResourceMetaUI { + csp?: ToolExecutionCompleteUIResourceMetaUICsp; + domain?: string; + permissions?: ToolExecutionCompleteUIResourceMetaUIPermissions; + prefersBorder?: boolean; +} +/** + * Schema for the `ToolExecutionCompleteUIResourceMetaUICsp` type. + */ +export interface ToolExecutionCompleteUIResourceMetaUICsp { + baseUriDomains?: string[]; + connectDomains?: string[]; + frameDomains?: string[]; + resourceDomains?: string[]; +} +/** + * Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissions` type. + */ +export interface ToolExecutionCompleteUIResourceMetaUIPermissions { + camera?: ToolExecutionCompleteUIResourceMetaUIPermissionsCamera; + clipboardWrite?: ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite; + geolocation?: ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation; + microphone?: ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone; +} +/** + * Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsCamera` type. + */ +export interface ToolExecutionCompleteUIResourceMetaUIPermissionsCamera { + [k: string]: unknown | undefined; +} +/** + * Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite` type. + */ +export interface ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite { + [k: string]: unknown | undefined; +} +/** + * Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation` type. + */ +export interface ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation { + [k: string]: unknown | undefined; +} +/** + * Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone` type. + */ +export interface ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone { + [k: string]: unknown | undefined; +} +/** + * Tool definition metadata, present for MCP tools with MCP Apps support + */ +export interface ToolExecutionCompleteToolDescription { + _meta?: ToolExecutionCompleteToolDescriptionMeta; + /** + * Tool description + */ + description?: string; + /** + * Tool name + */ + name: string; +} +/** + * MCP Apps metadata for UI resource association + */ +export interface ToolExecutionCompleteToolDescriptionMeta { + ui?: ToolExecutionCompleteToolDescriptionMetaUI; +} +/** + * Schema for the `ToolExecutionCompleteToolDescriptionMetaUI` type. + */ +export interface ToolExecutionCompleteToolDescriptionMetaUI { + /** + * URI of the UI resource + */ + resourceUri?: string; + /** + * Who can access this tool + */ + visibility?: ToolExecutionCompleteToolDescriptionMetaUIVisibility[]; +} /** * Session event "skill.invoked". Skill invocation details including content, allowed tools, and plugin metadata */ @@ -3487,6 +3660,11 @@ export interface SkillInvokedData { * Version of the plugin this skill originated from, when applicable */ pluginVersion?: string; + /** + * Source identifier for where the skill was discovered. Known values include: project (workspace skill), inherited (parent-directory skill), personal-copilot (~/.copilot/skills), personal-agents (~/.agents/skills), personal-claude (~/.claude/skills), custom (configured directory), plugin (installed plugin), builtin (bundled runtime skill), and remote (org/enterprise skill) + */ + source?: string; + trigger?: SkillInvokedTrigger; } /** * Session event "subagent.started". Sub-agent startup details including parent tool call and agent information @@ -5896,6 +6074,10 @@ export interface CapabilitiesChangedUI { * Whether elicitation is now supported */ elicitation?: boolean; + /** + * Whether MCP Apps (SEP-1865) UI passthrough is now supported + */ + mcpApps?: boolean; } /** * Session event "exit_plan_mode.requested". Plan approval request with plan content and available user actions @@ -6274,8 +6456,17 @@ export interface McpServersLoadedServer { * Server name (config key) */ name: string; + /** + * Name of the plugin that supplied the effective MCP server config, only when source is plugin + */ + pluginName?: string; + /** + * Version of the plugin that supplied the effective MCP server config, only when source is plugin + */ + pluginVersion?: string; source?: McpServerSource; status: McpServerStatus; + transport?: McpServerTransport; } /** * Session event "session.mcp_server_status_changed". @@ -6311,6 +6502,10 @@ export interface McpServerStatusChangedEvent { * Schema for the `McpServerStatusChangedData` type. */ export interface McpServerStatusChangedData { + /** + * Error message if the server entered a failed state + */ + error?: string; /** * Name of the MCP server whose status changed */ @@ -6371,3 +6566,98 @@ export interface ExtensionsLoadedExtension { source: ExtensionsLoadedExtensionSource; status: ExtensionsLoadedExtensionStatus; } +/** + * Session event "mcp_app.tool_call_complete". MCP App view called a tool on a connected MCP server (SEP-1865) + */ +export interface McpAppToolCallCompleteEvent { + /** + * Sub-agent instance identifier. Absent for events from the root/main agent and session-level events. + */ + agentId?: string; + data: McpAppToolCallCompleteData; + /** + * Always true for events that are transient and not persisted to the session event log on disk. + */ + 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 discriminator. Always "mcp_app.tool_call_complete". + */ + type: "mcp_app.tool_call_complete"; +} +/** + * MCP App view called a tool on a connected MCP server (SEP-1865) + */ +export interface McpAppToolCallCompleteData { + /** + * Arguments passed to the tool by the app view, if any + */ + arguments?: { + [k: string]: unknown | undefined; + }; + /** + * Wall-clock duration of the underlying tools/call in milliseconds + */ + durationMs: number; + error?: McpAppToolCallCompleteError; + /** + * Standard MCP CallToolResult returned by the server. Present whether or not the call set isError. + */ + result?: { + [k: string]: unknown | undefined; + }; + /** + * Name of the MCP server hosting the tool + */ + serverName: string; + /** + * True when the call completed without throwing AND the MCP CallToolResult did not set isError + */ + success: boolean; + toolMeta?: McpAppToolCallCompleteToolMeta; + /** + * MCP tool name that was invoked + */ + toolName: string; +} +/** + * Set when the underlying tools/call threw an error before returning a CallToolResult + */ +export interface McpAppToolCallCompleteError { + /** + * Human-readable error message + */ + message: string; +} +/** + * The tool's `_meta.ui` block at the time of the call, so consumers can decide whether to forward the result to the model without re-listing tools. + */ +export interface McpAppToolCallCompleteToolMeta { + ui?: McpAppToolCallCompleteToolMetaUI; + [k: string]: unknown | undefined; +} +/** + * Schema for the `McpAppToolCallCompleteToolMetaUI` type. + */ +export interface McpAppToolCallCompleteToolMetaUI { + /** + * `ui://` URI declared by the tool's `_meta.ui.resourceUri` + */ + resourceUri?: string; + /** + * Tool visibility per SEP-1865 (typically a subset of `["model","app"]`) + */ + visibility?: string[]; + [k: string]: unknown | undefined; +} diff --git a/python/copilot/generated/rpc.py b/python/copilot/generated/rpc.py index ab3d38eb4b..6de758c090 100644 --- a/python/copilot/generated/rpc.py +++ b/python/copilot/generated/rpc.py @@ -769,7 +769,7 @@ def to_dict(self) -> dict: return result class DiscoveredMCPServerType(Enum): - """Server transport type: stdio, http, sse, or memory""" + """Server transport type: stdio, http, sse (deprecated), or memory""" HTTP = "http" MEMORY = "memory" @@ -998,9 +998,11 @@ class ExternalToolTextResultForLlmBinaryResultsForLlmType(Enum): RESOURCE = "resource" # Experimental: this type is part of an experimental API and may change or be removed. -class ExternalToolTextResultForLlmContentResourceLinkIconTheme(Enum): - """Theme variant this icon is intended for""" +class Theme(Enum): + """Theme variant this icon is intended for + UI theme preference per SEP-1865 + """ DARK = "dark" LIGHT = "light" @@ -1418,6 +1420,220 @@ def to_dict(self) -> dict: result["workingDirectory"] = from_union([from_str, from_none], self.working_directory) return result +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsDiagnoseCapability: + """Capability negotiation snapshot""" + + advertised: bool + """Whether the runtime advertises `extensions.io.modelcontextprotocol/ui` to MCP servers""" + + feature_flag_enabled: bool + """Whether the MCP_APPS feature flag (or COPILOT_MCP_APPS env override) is on""" + + session_has_mcp_apps: bool + """Whether the session has the `mcp-apps` capability""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsDiagnoseCapability': + assert isinstance(obj, dict) + advertised = from_bool(obj.get("advertised")) + feature_flag_enabled = from_bool(obj.get("featureFlagEnabled")) + session_has_mcp_apps = from_bool(obj.get("sessionHasMcpApps")) + return MCPAppsDiagnoseCapability(advertised, feature_flag_enabled, session_has_mcp_apps) + + def to_dict(self) -> dict: + result: dict = {} + result["advertised"] = from_bool(self.advertised) + result["featureFlagEnabled"] = from_bool(self.feature_flag_enabled) + result["sessionHasMcpApps"] = from_bool(self.session_has_mcp_apps) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsDiagnoseRequest: + """MCP server to diagnose MCP Apps wiring for.""" + + server_name: str + """MCP server to probe""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsDiagnoseRequest': + assert isinstance(obj, dict) + server_name = from_str(obj.get("serverName")) + return MCPAppsDiagnoseRequest(server_name) + + def to_dict(self) -> dict: + result: dict = {} + result["serverName"] = from_str(self.server_name) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsDiagnoseServer: + """What the server returned for this session""" + + connected: bool + """Whether the named server is currently connected""" + + sample_tool_names: list[str] + """Up to 5 tool names with `_meta.ui` for quick inspection""" + + tool_count: float + """Total tools returned by the server's tools/list""" + + tools_with_ui_meta: float + """Tools whose `_meta.ui` is populated (resourceUri and/or visibility set)""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsDiagnoseServer': + assert isinstance(obj, dict) + connected = from_bool(obj.get("connected")) + sample_tool_names = from_list(from_str, obj.get("sampleToolNames")) + tool_count = from_float(obj.get("toolCount")) + tools_with_ui_meta = from_float(obj.get("toolsWithUiMeta")) + return MCPAppsDiagnoseServer(connected, sample_tool_names, tool_count, tools_with_ui_meta) + + def to_dict(self) -> dict: + result: dict = {} + result["connected"] = from_bool(self.connected) + result["sampleToolNames"] = from_list(from_str, self.sample_tool_names) + result["toolCount"] = to_float(self.tool_count) + result["toolsWithUiMeta"] = to_float(self.tools_with_ui_meta) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +class MCPAppsDisplayMode(Enum): + """Allowed values for the `McpAppsHostContextDetailsAvailableDisplayMode` enumeration. + + Current display mode (SEP-1865) + + Allowed values for the `McpAppsSetHostContextDetailsAvailableDisplayMode` enumeration. + """ + FULLSCREEN = "fullscreen" + INLINE = "inline" + PIP = "pip" + +# Experimental: this type is part of an experimental API and may change or be removed. +class MCPAppsHostContextDetailsPlatform(Enum): + """Platform type for responsive design""" + + DESKTOP = "desktop" + MOBILE = "mobile" + WEB = "web" + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsListToolsRequest: + """MCP server to list app-callable tools for.""" + + origin_server_name: str + """**Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the + app from this server only'), the call is rejected when this differs from `serverName`, + and rejected outright when missing. + """ + server_name: str + """MCP server hosting the app""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsListToolsRequest': + assert isinstance(obj, dict) + origin_server_name = from_str(obj.get("originServerName")) + server_name = from_str(obj.get("serverName")) + return MCPAppsListToolsRequest(origin_server_name, server_name) + + def to_dict(self) -> dict: + result: dict = {} + result["originServerName"] = from_str(self.origin_server_name) + result["serverName"] = from_str(self.server_name) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsListToolsResult: + """App-callable tools from the named MCP server.""" + + tools: list[dict[str, Any]] + """App-callable tools from the server""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsListToolsResult': + assert isinstance(obj, dict) + tools = from_list(lambda x: from_dict(lambda x: x, x), obj.get("tools")) + return MCPAppsListToolsResult(tools) + + def to_dict(self) -> dict: + result: dict = {} + result["tools"] = from_list(lambda x: from_dict(lambda x: x, x), self.tools) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsReadResourceRequest: + """MCP server and resource URI to fetch.""" + + server_name: str + """Name of the MCP server hosting the resource""" + + uri: str + """Resource URI (typically ui://...)""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsReadResourceRequest': + assert isinstance(obj, dict) + server_name = from_str(obj.get("serverName")) + uri = from_str(obj.get("uri")) + return MCPAppsReadResourceRequest(server_name, uri) + + def to_dict(self) -> dict: + result: dict = {} + result["serverName"] = from_str(self.server_name) + result["uri"] = from_str(self.uri) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsResourceContent: + """Schema for the `McpAppsResourceContent` type.""" + + uri: str + """The resource URI (typically ui://...)""" + + meta: dict[str, Any] | None = None + """Resource-level metadata (CSP, permissions, etc.)""" + + blob: str | None = None + """Base64-encoded binary content""" + + mime_type: str | None = None + """MIME type of the content""" + + text: str | None = None + """Text content (e.g. HTML)""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsResourceContent': + assert isinstance(obj, dict) + uri = from_str(obj.get("uri")) + meta = from_union([lambda x: from_dict(lambda x: x, x), from_none], obj.get("_meta")) + blob = from_union([from_str, from_none], obj.get("blob")) + mime_type = from_union([from_str, from_none], obj.get("mimeType")) + text = from_union([from_str, from_none], obj.get("text")) + return MCPAppsResourceContent(uri, meta, blob, mime_type, text) + + def to_dict(self) -> dict: + result: dict = {} + result["uri"] = from_str(self.uri) + if self.meta is not None: + result["_meta"] = from_union([lambda x: from_dict(lambda x: x, x), from_none], self.meta) + if self.blob is not None: + result["blob"] = from_union([from_str, from_none], self.blob) + if self.mime_type is not None: + result["mimeType"] = from_union([from_str, from_none], self.mime_type) + if self.text is not None: + result["text"] = from_union([from_str, from_none], self.text) + return result + # Experimental: this type is part of an experimental API and may change or be removed. @dataclass class MCPCancelSamplingExecutionParams: @@ -2022,44 +2238,40 @@ def to_dict(self) -> dict: return result @dataclass -class ModelBillingTokenPrices: - """Token-level pricing information for this model""" +class ModelBillingTokenPricesLongContext: + """Long context tier pricing (available for models with extended context windows)""" - batch_size: int | None = None - """Number of tokens per standard billing batch""" + cache_price: float | None = None + """AI Credits cost per billing batch of cached tokens""" - cache_price: int | None = None - """Price per billing batch of cached tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 - AIU = $0.01 USD) - """ - input_price: int | None = None - """Price per billing batch of input tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU - = $0.01 USD) - """ - output_price: int | None = None - """Price per billing batch of output tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 - AIU = $0.01 USD) - """ + context_max: int | None = None + """Maximum context window tokens for the long context tier""" + + input_price: float | None = None + """AI Credits cost per billing batch of input tokens""" + + output_price: float | None = None + """AI Credits cost per billing batch of output tokens""" @staticmethod - def from_dict(obj: Any) -> 'ModelBillingTokenPrices': + def from_dict(obj: Any) -> 'ModelBillingTokenPricesLongContext': assert isinstance(obj, dict) - batch_size = from_union([from_int, from_none], obj.get("batchSize")) - cache_price = from_union([from_int, from_none], obj.get("cachePrice")) - input_price = from_union([from_int, from_none], obj.get("inputPrice")) - output_price = from_union([from_int, from_none], obj.get("outputPrice")) - return ModelBillingTokenPrices(batch_size, cache_price, input_price, output_price) + cache_price = from_union([from_float, from_none], obj.get("cachePrice")) + context_max = from_union([from_int, from_none], obj.get("contextMax")) + input_price = from_union([from_float, from_none], obj.get("inputPrice")) + output_price = from_union([from_float, from_none], obj.get("outputPrice")) + return ModelBillingTokenPricesLongContext(cache_price, context_max, input_price, output_price) def to_dict(self) -> dict: result: dict = {} - if self.batch_size is not None: - result["batchSize"] = from_union([from_int, from_none], self.batch_size) if self.cache_price is not None: - result["cachePrice"] = from_union([from_int, from_none], self.cache_price) + result["cachePrice"] = from_union([to_float, from_none], self.cache_price) + if self.context_max is not None: + result["contextMax"] = from_union([from_int, from_none], self.context_max) if self.input_price is not None: - result["inputPrice"] = from_union([from_int, from_none], self.input_price) + result["inputPrice"] = from_union([to_float, from_none], self.input_price) if self.output_price is not None: - result["outputPrice"] = from_union([from_int, from_none], self.output_price) + result["outputPrice"] = from_union([to_float, from_none], self.output_price) return result @dataclass @@ -6686,7 +6898,7 @@ class DiscoveredMCPServer: """Configuration source: user, workspace, plugin, or builtin""" type: DiscoveredMCPServerType | None = None - """Server transport type: stdio, http, sse, or memory""" + """Server transport type: stdio, http, sse (deprecated), or memory""" @staticmethod def from_dict(obj: Any) -> 'DiscoveredMCPServer': @@ -6860,6 +7072,9 @@ class ExternalToolTextResultForLlmBinaryResultsForLlm: description: str | None = None """Human-readable description of the binary data""" + metadata: dict[str, Any] | None = None + """Optional metadata from the producing tool.""" + @staticmethod def from_dict(obj: Any) -> 'ExternalToolTextResultForLlmBinaryResultsForLlm': assert isinstance(obj, dict) @@ -6867,7 +7082,8 @@ def from_dict(obj: Any) -> 'ExternalToolTextResultForLlmBinaryResultsForLlm': mime_type = from_str(obj.get("mimeType")) type = ExternalToolTextResultForLlmBinaryResultsForLlmType(obj.get("type")) description = from_union([from_str, from_none], obj.get("description")) - return ExternalToolTextResultForLlmBinaryResultsForLlm(data, mime_type, type, description) + metadata = from_union([lambda x: from_dict(lambda x: x, x), from_none], obj.get("metadata")) + return ExternalToolTextResultForLlmBinaryResultsForLlm(data, mime_type, type, description, metadata) def to_dict(self) -> dict: result: dict = {} @@ -6876,6 +7092,8 @@ def to_dict(self) -> dict: result["type"] = to_enum(ExternalToolTextResultForLlmBinaryResultsForLlmType, self.type) if self.description is not None: result["description"] = from_union([from_str, from_none], self.description) + if self.metadata is not None: + result["metadata"] = from_union([lambda x: from_dict(lambda x: x, x), from_none], self.metadata) return result # Experimental: this type is part of an experimental API and may change or be removed. @@ -6892,7 +7110,7 @@ class ExternalToolTextResultForLlmContentResourceLinkIcon: sizes: list[str] | None = None """Available icon sizes (e.g., ['16x16', '32x32'])""" - theme: ExternalToolTextResultForLlmContentResourceLinkIconTheme | None = None + theme: Theme | None = None """Theme variant this icon is intended for""" @staticmethod @@ -6901,7 +7119,7 @@ def from_dict(obj: Any) -> 'ExternalToolTextResultForLlmContentResourceLinkIcon' src = from_str(obj.get("src")) mime_type = from_union([from_str, from_none], obj.get("mimeType")) sizes = from_union([lambda x: from_list(from_str, x), from_none], obj.get("sizes")) - theme = from_union([ExternalToolTextResultForLlmContentResourceLinkIconTheme, from_none], obj.get("theme")) + theme = from_union([Theme, from_none], obj.get("theme")) return ExternalToolTextResultForLlmContentResourceLinkIcon(src, mime_type, sizes, theme) def to_dict(self) -> dict: @@ -6912,7 +7130,7 @@ def to_dict(self) -> dict: if self.sizes is not None: result["sizes"] = from_union([lambda x: from_list(from_str, x), from_none], self.sizes) if self.theme is not None: - result["theme"] = from_union([lambda x: to_enum(ExternalToolTextResultForLlmContentResourceLinkIconTheme, x), from_none], self.theme) + result["theme"] = from_union([lambda x: to_enum(Theme, x), from_none], self.theme) return result ExternalToolTextResultForLlmContentResourceDetails = EmbeddedTextResourceContents | EmbeddedBlobResourceContents @@ -7424,6 +7642,161 @@ def to_dict(self) -> dict: result["url"] = from_union([from_str, from_none], self.url) return result +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsDiagnoseResult: + """Diagnostic snapshot of MCP Apps wiring for the named server.""" + + capability: MCPAppsDiagnoseCapability + """Capability negotiation snapshot""" + + server: MCPAppsDiagnoseServer + """What the server returned for this session""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsDiagnoseResult': + assert isinstance(obj, dict) + capability = MCPAppsDiagnoseCapability.from_dict(obj.get("capability")) + server = MCPAppsDiagnoseServer.from_dict(obj.get("server")) + return MCPAppsDiagnoseResult(capability, server) + + def to_dict(self) -> dict: + result: dict = {} + result["capability"] = to_class(MCPAppsDiagnoseCapability, self.capability) + result["server"] = to_class(MCPAppsDiagnoseServer, self.server) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsHostContextDetails: + """Current host context""" + + available_display_modes: list[MCPAppsDisplayMode] | None = None + """Display modes the host supports""" + + display_mode: MCPAppsDisplayMode | None = None + """Current display mode (SEP-1865)""" + + locale: str | None = None + """BCP-47 locale, e.g. 'en-US'""" + + platform: MCPAppsHostContextDetailsPlatform | None = None + """Platform type for responsive design""" + + theme: Theme | None = None + """UI theme preference per SEP-1865""" + + time_zone: str | None = None + """IANA timezone, e.g. 'America/New_York'""" + + user_agent: str | None = None + """Host application identifier""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsHostContextDetails': + assert isinstance(obj, dict) + available_display_modes = from_union([lambda x: from_list(MCPAppsDisplayMode, x), from_none], obj.get("availableDisplayModes")) + display_mode = from_union([MCPAppsDisplayMode, from_none], obj.get("displayMode")) + locale = from_union([from_str, from_none], obj.get("locale")) + platform = from_union([MCPAppsHostContextDetailsPlatform, from_none], obj.get("platform")) + theme = from_union([Theme, from_none], obj.get("theme")) + time_zone = from_union([from_str, from_none], obj.get("timeZone")) + user_agent = from_union([from_str, from_none], obj.get("userAgent")) + return MCPAppsHostContextDetails(available_display_modes, display_mode, locale, platform, theme, time_zone, user_agent) + + def to_dict(self) -> dict: + result: dict = {} + if self.available_display_modes is not None: + result["availableDisplayModes"] = from_union([lambda x: from_list(lambda x: to_enum(MCPAppsDisplayMode, x), x), from_none], self.available_display_modes) + if self.display_mode is not None: + result["displayMode"] = from_union([lambda x: to_enum(MCPAppsDisplayMode, x), from_none], self.display_mode) + if self.locale is not None: + result["locale"] = from_union([from_str, from_none], self.locale) + if self.platform is not None: + result["platform"] = from_union([lambda x: to_enum(MCPAppsHostContextDetailsPlatform, x), from_none], self.platform) + if self.theme is not None: + result["theme"] = from_union([lambda x: to_enum(Theme, x), from_none], self.theme) + if self.time_zone is not None: + result["timeZone"] = from_union([from_str, from_none], self.time_zone) + if self.user_agent is not None: + result["userAgent"] = from_union([from_str, from_none], self.user_agent) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsSetHostContextDetails: + """Host context advertised to MCP App guests""" + + available_display_modes: list[MCPAppsDisplayMode] | None = None + """Display modes the host supports""" + + display_mode: MCPAppsDisplayMode | None = None + """Current display mode (SEP-1865)""" + + locale: str | None = None + """BCP-47 locale, e.g. 'en-US'""" + + platform: MCPAppsHostContextDetailsPlatform | None = None + """Platform type for responsive design""" + + theme: Theme | None = None + """UI theme preference per SEP-1865""" + + time_zone: str | None = None + """IANA timezone, e.g. 'America/New_York'""" + + user_agent: str | None = None + """Host application identifier""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsSetHostContextDetails': + assert isinstance(obj, dict) + available_display_modes = from_union([lambda x: from_list(MCPAppsDisplayMode, x), from_none], obj.get("availableDisplayModes")) + display_mode = from_union([MCPAppsDisplayMode, from_none], obj.get("displayMode")) + locale = from_union([from_str, from_none], obj.get("locale")) + platform = from_union([MCPAppsHostContextDetailsPlatform, from_none], obj.get("platform")) + theme = from_union([Theme, from_none], obj.get("theme")) + time_zone = from_union([from_str, from_none], obj.get("timeZone")) + user_agent = from_union([from_str, from_none], obj.get("userAgent")) + return MCPAppsSetHostContextDetails(available_display_modes, display_mode, locale, platform, theme, time_zone, user_agent) + + def to_dict(self) -> dict: + result: dict = {} + if self.available_display_modes is not None: + result["availableDisplayModes"] = from_union([lambda x: from_list(lambda x: to_enum(MCPAppsDisplayMode, x), x), from_none], self.available_display_modes) + if self.display_mode is not None: + result["displayMode"] = from_union([lambda x: to_enum(MCPAppsDisplayMode, x), from_none], self.display_mode) + if self.locale is not None: + result["locale"] = from_union([from_str, from_none], self.locale) + if self.platform is not None: + result["platform"] = from_union([lambda x: to_enum(MCPAppsHostContextDetailsPlatform, x), from_none], self.platform) + if self.theme is not None: + result["theme"] = from_union([lambda x: to_enum(Theme, x), from_none], self.theme) + if self.time_zone is not None: + result["timeZone"] = from_union([from_str, from_none], self.time_zone) + if self.user_agent is not None: + result["userAgent"] = from_union([from_str, from_none], self.user_agent) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsReadResourceResult: + """Resource contents returned by the MCP server.""" + + contents: list[MCPAppsResourceContent] + """Resource contents returned by the server""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsReadResourceResult': + assert isinstance(obj, dict) + contents = from_list(MCPAppsResourceContent.from_dict, obj.get("contents")) + return MCPAppsReadResourceResult(contents) + + def to_dict(self) -> dict: + result: dict = {} + result["contents"] = from_list(lambda x: to_class(MCPAppsResourceContent, x), self.contents) + return result + @dataclass class MCPServerConfig: """MCP server configuration (stdio process or remote HTTP/SSE) @@ -7961,28 +8334,52 @@ def to_dict(self) -> dict: return result @dataclass -class ModelBilling: - """Billing information""" +class ModelBillingTokenPrices: + """Token-level pricing information for this model""" - multiplier: float | None = None - """Billing cost multiplier relative to the base rate""" + batch_size: int | None = None + """Number of tokens per standard billing batch""" - token_prices: ModelBillingTokenPrices | None = None - """Token-level pricing information for this model""" + cache_price: float | None = None + """AI Credits cost per billing batch of cached tokens""" + + context_max: int | None = None + """Maximum context window tokens for the default tier""" + + input_price: float | None = None + """AI Credits cost per billing batch of input tokens""" + + long_context: ModelBillingTokenPricesLongContext | None = None + """Long context tier pricing (available for models with extended context windows)""" + + output_price: float | None = None + """AI Credits cost per billing batch of output tokens""" @staticmethod - def from_dict(obj: Any) -> 'ModelBilling': + def from_dict(obj: Any) -> 'ModelBillingTokenPrices': assert isinstance(obj, dict) - multiplier = from_union([from_float, from_none], obj.get("multiplier")) - token_prices = from_union([ModelBillingTokenPrices.from_dict, from_none], obj.get("tokenPrices")) - return ModelBilling(multiplier, token_prices) + batch_size = from_union([from_int, from_none], obj.get("batchSize")) + cache_price = from_union([from_float, from_none], obj.get("cachePrice")) + context_max = from_union([from_int, from_none], obj.get("contextMax")) + input_price = from_union([from_float, from_none], obj.get("inputPrice")) + long_context = from_union([ModelBillingTokenPricesLongContext.from_dict, from_none], obj.get("longContext")) + output_price = from_union([from_float, from_none], obj.get("outputPrice")) + return ModelBillingTokenPrices(batch_size, cache_price, context_max, input_price, long_context, output_price) def to_dict(self) -> dict: result: dict = {} - if self.multiplier is not None: - result["multiplier"] = from_union([to_float, from_none], self.multiplier) - if self.token_prices is not None: - result["tokenPrices"] = from_union([lambda x: to_class(ModelBillingTokenPrices, x), from_none], self.token_prices) + if self.batch_size is not None: + result["batchSize"] = from_union([from_int, from_none], self.batch_size) + if self.cache_price is not None: + result["cachePrice"] = from_union([to_float, from_none], self.cache_price) + if self.context_max is not None: + result["contextMax"] = from_union([from_int, from_none], self.context_max) + if self.input_price is not None: + result["inputPrice"] = from_union([to_float, from_none], self.input_price) + if self.long_context is not None: + result["longContext"] = from_union([lambda x: to_class(ModelBillingTokenPricesLongContext, x), from_none], self.long_context) + if self.output_price is not None: + result["outputPrice"] = from_union([to_float, from_none], self.output_price) return result @dataclass @@ -10068,6 +10465,43 @@ def to_dict(self) -> dict: result["pid"] = from_union([from_int, from_none], self.pid) return result +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsCallToolRequest: + """MCP server, tool name, and arguments to invoke from an MCP App view.""" + + origin_server_name: str + """**Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the + app from this server only'), the call is rejected when this differs from `serverName`, + and rejected outright when missing. + """ + server_name: str + """MCP server hosting the tool""" + + tool_name: str + """MCP tool name""" + + arguments: dict[str, Any] | None = None + """Tool arguments""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsCallToolRequest': + assert isinstance(obj, dict) + origin_server_name = from_str(obj.get("originServerName")) + server_name = from_str(obj.get("serverName")) + tool_name = from_str(obj.get("toolName")) + arguments = from_union([lambda x: from_dict(lambda x: x, x), from_none], obj.get("arguments")) + return MCPAppsCallToolRequest(origin_server_name, server_name, tool_name, arguments) + + def to_dict(self) -> dict: + result: dict = {} + result["originServerName"] = from_str(self.origin_server_name) + result["serverName"] = from_str(self.server_name) + result["toolName"] = from_str(self.tool_name) + if self.arguments is not None: + result["arguments"] = from_union([lambda x: from_dict(lambda x: x, x), from_none], self.arguments) + return result + # Experimental: this type is part of an experimental API and may change or be removed. @dataclass class PermissionLocationAddToolApprovalParams: @@ -11105,6 +11539,44 @@ def to_dict(self) -> dict: result["sources"] = from_list(lambda x: to_class(InstructionsSources, x), self.sources) return result +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsHostContext: + """Current host context advertised to MCP App guests.""" + + context: MCPAppsHostContextDetails + """Current host context""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsHostContext': + assert isinstance(obj, dict) + context = MCPAppsHostContextDetails.from_dict(obj.get("context")) + return MCPAppsHostContext(context) + + def to_dict(self) -> dict: + result: dict = {} + result["context"] = to_class(MCPAppsHostContextDetails, self.context) + return result + +# Experimental: this type is part of an experimental API and may change or be removed. +@dataclass +class MCPAppsSetHostContextRequest: + """Host context to advertise to MCP App guests.""" + + context: MCPAppsSetHostContextDetails + """Host context advertised to MCP App guests""" + + @staticmethod + def from_dict(obj: Any) -> 'MCPAppsSetHostContextRequest': + assert isinstance(obj, dict) + context = MCPAppsSetHostContextDetails.from_dict(obj.get("context")) + return MCPAppsSetHostContextRequest(context) + + def to_dict(self) -> dict: + result: dict = {} + result["context"] = to_class(MCPAppsSetHostContextDetails, self.context) + return result + @dataclass class MCPConfigAddRequest: """MCP server name and configuration to add to user configuration.""" @@ -11431,6 +11903,31 @@ def to_dict(self) -> dict: result["checkpoints"] = from_list(lambda x: to_class(WorkspacesCheckpoints, x), self.checkpoints) return result +@dataclass +class ModelBilling: + """Billing information""" + + multiplier: float | None = None + """Billing cost multiplier relative to the base rate""" + + token_prices: ModelBillingTokenPrices | None = None + """Token-level pricing information for this model""" + + @staticmethod + def from_dict(obj: Any) -> 'ModelBilling': + assert isinstance(obj, dict) + multiplier = from_union([from_float, from_none], obj.get("multiplier")) + token_prices = from_union([ModelBillingTokenPrices.from_dict, from_none], obj.get("tokenPrices")) + return ModelBilling(multiplier, token_prices) + + def to_dict(self) -> dict: + result: dict = {} + if self.multiplier is not None: + result["multiplier"] = from_union([to_float, from_none], self.multiplier) + if self.token_prices is not None: + result["tokenPrices"] = from_union([lambda x: to_class(ModelBillingTokenPrices, x), from_none], self.token_prices) + return result + # Experimental: this type is part of an experimental API and may change or be removed. @dataclass class ModelCapabilitiesOverride: @@ -13749,7 +14246,7 @@ class RPC: external_tool_text_result_for_llm_content_resource_details: ExternalToolTextResultForLlmContentResourceDetails external_tool_text_result_for_llm_content_resource_link: ExternalToolTextResultForLlmContentResourceLink external_tool_text_result_for_llm_content_resource_link_icon: ExternalToolTextResultForLlmContentResourceLinkIcon - external_tool_text_result_for_llm_content_resource_link_icon_theme: ExternalToolTextResultForLlmContentResourceLinkIconTheme + external_tool_text_result_for_llm_content_resource_link_icon_theme: Theme external_tool_text_result_for_llm_content_terminal: ExternalToolTextResultForLlmContentTerminal external_tool_text_result_for_llm_content_text: ExternalToolTextResultForLlmContentText filter_mapping: dict[str, ContentFilterMode] | ContentFilterMode @@ -13782,6 +14279,28 @@ class RPC: log_request: LogRequest log_result: LogResult lsp_initialize_request: LspInitializeRequest + mcp_apps_call_tool_request: MCPAppsCallToolRequest + mcp_apps_diagnose_capability: MCPAppsDiagnoseCapability + mcp_apps_diagnose_request: MCPAppsDiagnoseRequest + mcp_apps_diagnose_result: MCPAppsDiagnoseResult + mcp_apps_diagnose_server: MCPAppsDiagnoseServer + mcp_apps_host_context: MCPAppsHostContext + mcp_apps_host_context_details: MCPAppsHostContextDetails + mcp_apps_host_context_details_available_display_mode: MCPAppsDisplayMode + mcp_apps_host_context_details_display_mode: MCPAppsDisplayMode + mcp_apps_host_context_details_platform: MCPAppsHostContextDetailsPlatform + mcp_apps_host_context_details_theme: Theme + mcp_apps_list_tools_request: MCPAppsListToolsRequest + mcp_apps_list_tools_result: MCPAppsListToolsResult + mcp_apps_read_resource_request: MCPAppsReadResourceRequest + mcp_apps_read_resource_result: MCPAppsReadResourceResult + mcp_apps_resource_content: MCPAppsResourceContent + mcp_apps_set_host_context_details: MCPAppsSetHostContextDetails + mcp_apps_set_host_context_details_available_display_mode: MCPAppsDisplayMode + mcp_apps_set_host_context_details_display_mode: MCPAppsDisplayMode + mcp_apps_set_host_context_details_platform: MCPAppsHostContextDetailsPlatform + mcp_apps_set_host_context_details_theme: Theme + mcp_apps_set_host_context_request: MCPAppsSetHostContextRequest mcp_cancel_sampling_execution_params: MCPCancelSamplingExecutionParams mcp_cancel_sampling_execution_result: MCPCancelSamplingExecutionResult mcp_config_add_request: MCPConfigAddRequest @@ -13829,6 +14348,7 @@ class RPC: model: Model model_billing: ModelBilling model_billing_token_prices: ModelBillingTokenPrices + model_billing_token_prices_long_context: ModelBillingTokenPricesLongContext model_capabilities: ModelCapabilities model_capabilities_limits: ModelCapabilitiesLimits model_capabilities_limits_vision: ModelCapabilitiesLimitsVision @@ -14032,6 +14552,7 @@ class RPC: session_list_filter: SessionListFilter session_load_deferred_repo_hooks_result: SessionLoadDeferredRepoHooksResult session_log_level: SessionLogLevel + session_mcp_apps_call_tool_result: dict[str, Any] session_metadata: SessionMetadata session_metadata_snapshot: SessionMetadataSnapshot session_mode: SessionMode @@ -14260,7 +14781,7 @@ def from_dict(obj: Any) -> 'RPC': external_tool_text_result_for_llm_content_resource_details = (lambda x: from_union([EmbeddedTextResourceContents.from_dict, EmbeddedBlobResourceContents.from_dict], x))(obj.get("ExternalToolTextResultForLlmContentResourceDetails")) external_tool_text_result_for_llm_content_resource_link = ExternalToolTextResultForLlmContentResourceLink.from_dict(obj.get("ExternalToolTextResultForLlmContentResourceLink")) external_tool_text_result_for_llm_content_resource_link_icon = ExternalToolTextResultForLlmContentResourceLinkIcon.from_dict(obj.get("ExternalToolTextResultForLlmContentResourceLinkIcon")) - external_tool_text_result_for_llm_content_resource_link_icon_theme = ExternalToolTextResultForLlmContentResourceLinkIconTheme(obj.get("ExternalToolTextResultForLlmContentResourceLinkIconTheme")) + external_tool_text_result_for_llm_content_resource_link_icon_theme = Theme(obj.get("ExternalToolTextResultForLlmContentResourceLinkIconTheme")) external_tool_text_result_for_llm_content_terminal = ExternalToolTextResultForLlmContentTerminal.from_dict(obj.get("ExternalToolTextResultForLlmContentTerminal")) external_tool_text_result_for_llm_content_text = ExternalToolTextResultForLlmContentText.from_dict(obj.get("ExternalToolTextResultForLlmContentText")) filter_mapping = from_union([lambda x: from_dict(ContentFilterMode, x), ContentFilterMode], obj.get("FilterMapping")) @@ -14293,6 +14814,28 @@ def from_dict(obj: Any) -> 'RPC': log_request = LogRequest.from_dict(obj.get("LogRequest")) log_result = LogResult.from_dict(obj.get("LogResult")) lsp_initialize_request = LspInitializeRequest.from_dict(obj.get("LspInitializeRequest")) + mcp_apps_call_tool_request = MCPAppsCallToolRequest.from_dict(obj.get("McpAppsCallToolRequest")) + mcp_apps_diagnose_capability = MCPAppsDiagnoseCapability.from_dict(obj.get("McpAppsDiagnoseCapability")) + mcp_apps_diagnose_request = MCPAppsDiagnoseRequest.from_dict(obj.get("McpAppsDiagnoseRequest")) + mcp_apps_diagnose_result = MCPAppsDiagnoseResult.from_dict(obj.get("McpAppsDiagnoseResult")) + mcp_apps_diagnose_server = MCPAppsDiagnoseServer.from_dict(obj.get("McpAppsDiagnoseServer")) + mcp_apps_host_context = MCPAppsHostContext.from_dict(obj.get("McpAppsHostContext")) + mcp_apps_host_context_details = MCPAppsHostContextDetails.from_dict(obj.get("McpAppsHostContextDetails")) + mcp_apps_host_context_details_available_display_mode = MCPAppsDisplayMode(obj.get("McpAppsHostContextDetailsAvailableDisplayMode")) + mcp_apps_host_context_details_display_mode = MCPAppsDisplayMode(obj.get("McpAppsHostContextDetailsDisplayMode")) + mcp_apps_host_context_details_platform = MCPAppsHostContextDetailsPlatform(obj.get("McpAppsHostContextDetailsPlatform")) + mcp_apps_host_context_details_theme = Theme(obj.get("McpAppsHostContextDetailsTheme")) + mcp_apps_list_tools_request = MCPAppsListToolsRequest.from_dict(obj.get("McpAppsListToolsRequest")) + mcp_apps_list_tools_result = MCPAppsListToolsResult.from_dict(obj.get("McpAppsListToolsResult")) + mcp_apps_read_resource_request = MCPAppsReadResourceRequest.from_dict(obj.get("McpAppsReadResourceRequest")) + mcp_apps_read_resource_result = MCPAppsReadResourceResult.from_dict(obj.get("McpAppsReadResourceResult")) + mcp_apps_resource_content = MCPAppsResourceContent.from_dict(obj.get("McpAppsResourceContent")) + mcp_apps_set_host_context_details = MCPAppsSetHostContextDetails.from_dict(obj.get("McpAppsSetHostContextDetails")) + mcp_apps_set_host_context_details_available_display_mode = MCPAppsDisplayMode(obj.get("McpAppsSetHostContextDetailsAvailableDisplayMode")) + mcp_apps_set_host_context_details_display_mode = MCPAppsDisplayMode(obj.get("McpAppsSetHostContextDetailsDisplayMode")) + mcp_apps_set_host_context_details_platform = MCPAppsHostContextDetailsPlatform(obj.get("McpAppsSetHostContextDetailsPlatform")) + mcp_apps_set_host_context_details_theme = Theme(obj.get("McpAppsSetHostContextDetailsTheme")) + mcp_apps_set_host_context_request = MCPAppsSetHostContextRequest.from_dict(obj.get("McpAppsSetHostContextRequest")) mcp_cancel_sampling_execution_params = MCPCancelSamplingExecutionParams.from_dict(obj.get("McpCancelSamplingExecutionParams")) mcp_cancel_sampling_execution_result = MCPCancelSamplingExecutionResult.from_dict(obj.get("McpCancelSamplingExecutionResult")) mcp_config_add_request = MCPConfigAddRequest.from_dict(obj.get("McpConfigAddRequest")) @@ -14340,6 +14883,7 @@ def from_dict(obj: Any) -> 'RPC': model = Model.from_dict(obj.get("Model")) model_billing = ModelBilling.from_dict(obj.get("ModelBilling")) model_billing_token_prices = ModelBillingTokenPrices.from_dict(obj.get("ModelBillingTokenPrices")) + model_billing_token_prices_long_context = ModelBillingTokenPricesLongContext.from_dict(obj.get("ModelBillingTokenPricesLongContext")) model_capabilities = ModelCapabilities.from_dict(obj.get("ModelCapabilities")) model_capabilities_limits = ModelCapabilitiesLimits.from_dict(obj.get("ModelCapabilitiesLimits")) model_capabilities_limits_vision = ModelCapabilitiesLimitsVision.from_dict(obj.get("ModelCapabilitiesLimitsVision")) @@ -14543,6 +15087,7 @@ def from_dict(obj: Any) -> 'RPC': session_list_filter = SessionListFilter.from_dict(obj.get("SessionListFilter")) session_load_deferred_repo_hooks_result = SessionLoadDeferredRepoHooksResult.from_dict(obj.get("SessionLoadDeferredRepoHooksResult")) session_log_level = SessionLogLevel(obj.get("SessionLogLevel")) + session_mcp_apps_call_tool_result = from_dict(lambda x: x, obj.get("SessionMcpAppsCallToolResult")) session_metadata = SessionMetadata.from_dict(obj.get("SessionMetadata")) session_metadata_snapshot = SessionMetadataSnapshot.from_dict(obj.get("SessionMetadataSnapshot")) session_mode = SessionMode(obj.get("SessionMode")) @@ -14699,7 +15244,7 @@ def from_dict(obj: Any) -> 'RPC': session_context_info = from_union([SessionContextInfo.from_dict, from_none], obj.get("SessionContextInfo")) task_progress = from_union([TaskProgress.from_dict, from_none], obj.get("TaskProgress")) workspace_summary = from_union([WorkspaceSummary.from_dict, from_none], obj.get("WorkspaceSummary")) - return RPC(abort_request, abort_result, account_get_quota_request, account_get_quota_result, account_quota_snapshot, agent_get_current_result, agent_info, agent_info_source, agent_list, agent_reload_result, agent_select_request, agent_select_result, api_key_auth_info, auth_info, auth_info_type, command_list, commands_handle_pending_command_request, commands_handle_pending_command_result, commands_invoke_request, commands_list_request, commands_respond_to_queued_command_request, commands_respond_to_queued_command_result, connected_remote_session_metadata, connected_remote_session_metadata_kind, connected_remote_session_metadata_repository, connect_remote_session_params, connect_request, connect_result, content_filter_mode, copilot_api_token_auth_info, copilot_user_response, copilot_user_response_endpoints, copilot_user_response_quota_snapshots, copilot_user_response_quota_snapshots_chat, copilot_user_response_quota_snapshots_completions, copilot_user_response_quota_snapshots_premium_interactions, current_model, discovered_mcp_server, discovered_mcp_server_type, enqueue_command_params, enqueue_command_result, env_auth_info, event_log_read_request, event_log_release_interest_result, event_log_tail_result, event_log_types, events_agent_scope, events_cursor_status, events_read_result, execute_command_params, execute_command_result, extension, extension_list, extensions_disable_request, extensions_enable_request, extension_source, extension_status, external_tool_result, external_tool_text_result_for_llm, external_tool_text_result_for_llm_binary_results_for_llm, external_tool_text_result_for_llm_binary_results_for_llm_type, external_tool_text_result_for_llm_content, external_tool_text_result_for_llm_content_audio, external_tool_text_result_for_llm_content_image, external_tool_text_result_for_llm_content_resource, external_tool_text_result_for_llm_content_resource_details, external_tool_text_result_for_llm_content_resource_link, external_tool_text_result_for_llm_content_resource_link_icon, external_tool_text_result_for_llm_content_resource_link_icon_theme, external_tool_text_result_for_llm_content_terminal, external_tool_text_result_for_llm_content_text, filter_mapping, fleet_start_request, fleet_start_result, folder_trust_add_params, folder_trust_check_params, folder_trust_check_result, gh_cli_auth_info, handle_pending_tool_call_request, handle_pending_tool_call_result, history_abort_manual_compaction_result, history_cancel_background_compaction_result, history_compact_context_window, history_compact_request, history_compact_result, history_summarize_for_handoff_result, history_truncate_request, history_truncate_result, hmac_auth_info, installed_plugin, installed_plugin_source, installed_plugin_source_github, installed_plugin_source_local, installed_plugin_source_url, instructions_get_sources_result, instructions_sources, instructions_sources_location, instructions_sources_type, log_request, log_result, lsp_initialize_request, mcp_cancel_sampling_execution_params, mcp_cancel_sampling_execution_result, mcp_config_add_request, mcp_config_disable_request, mcp_config_enable_request, mcp_config_list, mcp_config_remove_request, mcp_config_update_request, mcp_disable_request, mcp_discover_request, mcp_discover_result, mcp_enable_request, mcp_execute_sampling_params, mcp_execute_sampling_request, mcp_execute_sampling_result, mcp_oauth_login_request, mcp_oauth_login_result, mcp_remove_git_hub_result, mcp_sampling_execution_action, mcp_sampling_execution_result, mcp_server, mcp_server_config, mcp_server_config_http, mcp_server_config_http_auth, mcp_server_config_http_oauth_grant_type, mcp_server_config_http_type, mcp_server_config_stdio, mcp_server_list, mcp_set_env_value_mode_details, mcp_set_env_value_mode_params, mcp_set_env_value_mode_result, metadata_context_info_request, metadata_context_info_result, metadata_is_processing_result, metadata_recompute_context_tokens_request, metadata_recompute_context_tokens_result, metadata_record_context_change_request, metadata_record_context_change_result, metadata_set_working_directory_request, metadata_set_working_directory_result, metadata_snapshot_current_mode, metadata_snapshot_remote_metadata, metadata_snapshot_remote_metadata_repository, metadata_snapshot_remote_metadata_task_type, model, model_billing, model_billing_token_prices, model_capabilities, model_capabilities_limits, model_capabilities_limits_vision, model_capabilities_override, model_capabilities_override_limits, model_capabilities_override_limits_vision, model_capabilities_override_supports, model_capabilities_supports, model_list, model_picker_category, model_picker_price_category, model_policy, model_policy_state, model_set_reasoning_effort_request, model_set_reasoning_effort_result, models_list_request, model_switch_to_request, model_switch_to_result, mode_set_request, name_get_result, name_set_auto_request, name_set_auto_result, name_set_request, options_update_env_value_mode, pending_permission_request, pending_permission_request_list, permission_decision, permission_decision_approved, permission_decision_approved_for_location, permission_decision_approved_for_session, permission_decision_approve_for_location, permission_decision_approve_for_location_approval, permission_decision_approve_for_location_approval_commands, permission_decision_approve_for_location_approval_custom_tool, permission_decision_approve_for_location_approval_extension_management, permission_decision_approve_for_location_approval_extension_permission_access, permission_decision_approve_for_location_approval_mcp, permission_decision_approve_for_location_approval_mcp_sampling, permission_decision_approve_for_location_approval_memory, permission_decision_approve_for_location_approval_read, permission_decision_approve_for_location_approval_write, permission_decision_approve_for_session, permission_decision_approve_for_session_approval, permission_decision_approve_for_session_approval_commands, permission_decision_approve_for_session_approval_custom_tool, permission_decision_approve_for_session_approval_extension_management, permission_decision_approve_for_session_approval_extension_permission_access, permission_decision_approve_for_session_approval_mcp, permission_decision_approve_for_session_approval_mcp_sampling, permission_decision_approve_for_session_approval_memory, permission_decision_approve_for_session_approval_read, permission_decision_approve_for_session_approval_write, permission_decision_approve_once, permission_decision_approve_permanently, permission_decision_cancelled, permission_decision_denied_by_content_exclusion_policy, permission_decision_denied_by_permission_request_hook, permission_decision_denied_by_rules, permission_decision_denied_interactively_by_user, permission_decision_denied_no_approval_rule_and_could_not_request_from_user, permission_decision_reject, permission_decision_request, permission_decision_user_not_available, permission_location_add_tool_approval_params, permission_location_apply_params, permission_location_apply_result, permission_location_resolve_params, permission_location_resolve_result, permission_location_type, permission_paths_add_params, permission_paths_allowed_check_params, permission_paths_allowed_check_result, permission_paths_config, permission_paths_list, permission_paths_update_primary_params, permission_paths_workspace_check_params, permission_paths_workspace_check_result, permission_prompt_shown_notification, permission_request_result, permission_rules_set, permissions_configure_additional_content_exclusion_policy, permissions_configure_additional_content_exclusion_policy_rule, permissions_configure_additional_content_exclusion_policy_rule_source, permissions_configure_additional_content_exclusion_policy_scope, permissions_configure_params, permissions_configure_result, permissions_folder_trust_add_trusted_result, permissions_locations_add_tool_approval_details, permissions_locations_add_tool_approval_details_commands, permissions_locations_add_tool_approval_details_custom_tool, permissions_locations_add_tool_approval_details_extension_management, permissions_locations_add_tool_approval_details_extension_permission_access, permissions_locations_add_tool_approval_details_mcp, permissions_locations_add_tool_approval_details_mcp_sampling, permissions_locations_add_tool_approval_details_memory, permissions_locations_add_tool_approval_details_read, permissions_locations_add_tool_approval_details_write, permissions_locations_add_tool_approval_result, permissions_modify_rules_params, permissions_modify_rules_result, permissions_modify_rules_scope, permissions_notify_prompt_shown_result, permissions_paths_add_result, permissions_paths_list_request, permissions_paths_update_primary_result, permissions_pending_requests_request, permissions_reset_session_approvals_request, permissions_reset_session_approvals_result, permissions_set_approve_all_request, permissions_set_approve_all_result, permissions_set_approve_all_source, permissions_set_required_request, permissions_set_required_result, permissions_urls_set_unrestricted_mode_result, permission_urls_config, permission_urls_set_unrestricted_mode_params, ping_request, ping_result, plan_read_result, plan_update_request, plugin, plugin_list, queued_command_handled, queued_command_not_handled, queued_command_result, queue_pending_items, queue_pending_items_kind, queue_pending_items_result, queue_remove_most_recent_result, register_event_interest_params, register_event_interest_result, release_event_interest_params, remote_enable_request, remote_enable_result, remote_notify_steerable_changed_request, remote_notify_steerable_changed_result, remote_session_connection_result, remote_session_mode, schedule_entry, schedule_list, schedule_stop_request, schedule_stop_result, secrets_add_filter_values_request, secrets_add_filter_values_result, send_agent_mode, send_attachment, send_attachment_blob, send_attachment_directory, send_attachment_file, send_attachment_file_line_range, send_attachment_github_reference, send_attachment_github_reference_type, send_attachment_selection, send_attachment_selection_details, send_attachment_selection_details_end, send_attachment_selection_details_start, send_mode, send_request, send_result, server_skill, server_skill_list, session_auth_status, session_bulk_delete_result, session_context, session_context_host_type, session_enrich_metadata_result, session_fs_append_file_request, session_fs_error, session_fs_error_code, session_fs_exists_request, session_fs_exists_result, session_fs_mkdir_request, session_fs_readdir_request, session_fs_readdir_result, session_fs_readdir_with_types_entry, session_fs_readdir_with_types_entry_type, session_fs_readdir_with_types_request, session_fs_readdir_with_types_result, session_fs_read_file_request, session_fs_read_file_result, session_fs_rename_request, session_fs_rm_request, session_fs_set_provider_capabilities, session_fs_set_provider_conventions, session_fs_set_provider_request, session_fs_set_provider_result, session_fs_sqlite_exists_request, session_fs_sqlite_exists_result, session_fs_sqlite_query_request, session_fs_sqlite_query_result, session_fs_sqlite_query_type, session_fs_stat_request, session_fs_stat_result, session_fs_write_file_request, session_installed_plugin, session_installed_plugin_source, session_installed_plugin_source_github, session_installed_plugin_source_local, session_installed_plugin_source_url, session_list, session_list_filter, session_load_deferred_repo_hooks_result, session_log_level, session_metadata, session_metadata_snapshot, session_mode, session_prune_result, sessions_bulk_delete_request, sessions_check_in_use_request, sessions_check_in_use_result, sessions_close_request, sessions_close_result, sessions_enrich_metadata_request, session_set_credentials_params, session_set_credentials_result, sessions_find_by_prefix_request, sessions_find_by_prefix_result, sessions_find_by_task_id_request, sessions_find_by_task_id_result, sessions_fork_request, sessions_fork_result, sessions_get_event_file_path_request, sessions_get_event_file_path_result, sessions_get_last_for_context_request, sessions_get_last_for_context_result, sessions_get_persisted_remote_steerable_request, sessions_get_persisted_remote_steerable_result, session_sizes, sessions_list_request, sessions_load_deferred_repo_hooks_request, sessions_prune_old_request, sessions_release_lock_request, sessions_release_lock_result, sessions_reload_plugin_hooks_request, sessions_reload_plugin_hooks_result, sessions_save_request, sessions_save_result, sessions_set_additional_plugins_request, sessions_set_additional_plugins_result, session_update_options_params, session_update_options_result, session_working_directory_context, session_working_directory_context_host_type, shell_exec_request, shell_exec_result, shell_kill_request, shell_kill_result, shell_kill_signal, shutdown_request, skill, skill_list, skills_config_set_disabled_skills_request, skills_disable_request, skills_discover_request, skills_enable_request, skills_get_invoked_result, skills_invoked_skill, skills_load_diagnostics, slash_command_agent_prompt_result, slash_command_completed_result, slash_command_info, slash_command_input, slash_command_input_completion, slash_command_invocation_result, slash_command_kind, slash_command_select_subcommand_option, slash_command_select_subcommand_result, slash_command_text_result, task_agent_info, task_agent_progress, task_execution_mode, task_info, task_list, task_progress_line, tasks_cancel_request, tasks_cancel_result, tasks_get_current_promotable_result, tasks_get_progress_request, tasks_get_progress_result, task_shell_info, task_shell_info_attachment_mode, task_shell_progress, tasks_promote_current_to_background_result, tasks_promote_to_background_request, tasks_promote_to_background_result, tasks_refresh_result, tasks_remove_request, tasks_remove_result, tasks_send_message_request, tasks_send_message_result, tasks_start_agent_request, tasks_start_agent_result, task_status, tasks_wait_for_pending_result, telemetry_set_feature_overrides_request, token_auth_info, tool, tool_list, tools_initialize_and_validate_result, tools_list_request, ui_auto_mode_switch_response, ui_elicitation_array_any_of_field, ui_elicitation_array_any_of_field_items, ui_elicitation_array_any_of_field_items_any_of, ui_elicitation_array_enum_field, ui_elicitation_array_enum_field_items, ui_elicitation_field_value, ui_elicitation_request, ui_elicitation_response, ui_elicitation_response_action, ui_elicitation_response_content, ui_elicitation_result, ui_elicitation_schema, ui_elicitation_schema_property, ui_elicitation_schema_property_boolean, ui_elicitation_schema_property_number, ui_elicitation_schema_property_number_type, ui_elicitation_schema_property_string, ui_elicitation_schema_property_string_format, ui_elicitation_string_enum_field, ui_elicitation_string_one_of_field, ui_elicitation_string_one_of_field_one_of, ui_exit_plan_mode_action, ui_exit_plan_mode_response, ui_handle_pending_auto_mode_switch_request, ui_handle_pending_elicitation_request, ui_handle_pending_exit_plan_mode_request, ui_handle_pending_result, ui_handle_pending_sampling_request, ui_handle_pending_sampling_response, ui_handle_pending_user_input_request, ui_register_direct_auto_mode_switch_handler_result, ui_unregister_direct_auto_mode_switch_handler_request, ui_unregister_direct_auto_mode_switch_handler_result, ui_user_input_response, usage_get_metrics_result, usage_metrics_code_changes, usage_metrics_model_metric, usage_metrics_model_metric_requests, usage_metrics_model_metric_token_detail, usage_metrics_model_metric_usage, usage_metrics_token_detail, user_auth_info, workspaces_checkpoints, workspaces_create_file_request, workspaces_get_workspace_result, workspaces_list_checkpoints_result, workspaces_list_files_result, workspaces_read_checkpoint_request, workspaces_read_checkpoint_result, workspaces_read_file_request, workspaces_read_file_result, workspaces_save_large_paste_request, workspaces_save_large_paste_result, workspace_summary_host_type, workspaces_workspace_details_host_type, session_context_info, task_progress, workspace_summary) + return RPC(abort_request, abort_result, account_get_quota_request, account_get_quota_result, account_quota_snapshot, agent_get_current_result, agent_info, agent_info_source, agent_list, agent_reload_result, agent_select_request, agent_select_result, api_key_auth_info, auth_info, auth_info_type, command_list, commands_handle_pending_command_request, commands_handle_pending_command_result, commands_invoke_request, commands_list_request, commands_respond_to_queued_command_request, commands_respond_to_queued_command_result, connected_remote_session_metadata, connected_remote_session_metadata_kind, connected_remote_session_metadata_repository, connect_remote_session_params, connect_request, connect_result, content_filter_mode, copilot_api_token_auth_info, copilot_user_response, copilot_user_response_endpoints, copilot_user_response_quota_snapshots, copilot_user_response_quota_snapshots_chat, copilot_user_response_quota_snapshots_completions, copilot_user_response_quota_snapshots_premium_interactions, current_model, discovered_mcp_server, discovered_mcp_server_type, enqueue_command_params, enqueue_command_result, env_auth_info, event_log_read_request, event_log_release_interest_result, event_log_tail_result, event_log_types, events_agent_scope, events_cursor_status, events_read_result, execute_command_params, execute_command_result, extension, extension_list, extensions_disable_request, extensions_enable_request, extension_source, extension_status, external_tool_result, external_tool_text_result_for_llm, external_tool_text_result_for_llm_binary_results_for_llm, external_tool_text_result_for_llm_binary_results_for_llm_type, external_tool_text_result_for_llm_content, external_tool_text_result_for_llm_content_audio, external_tool_text_result_for_llm_content_image, external_tool_text_result_for_llm_content_resource, external_tool_text_result_for_llm_content_resource_details, external_tool_text_result_for_llm_content_resource_link, external_tool_text_result_for_llm_content_resource_link_icon, external_tool_text_result_for_llm_content_resource_link_icon_theme, external_tool_text_result_for_llm_content_terminal, external_tool_text_result_for_llm_content_text, filter_mapping, fleet_start_request, fleet_start_result, folder_trust_add_params, folder_trust_check_params, folder_trust_check_result, gh_cli_auth_info, handle_pending_tool_call_request, handle_pending_tool_call_result, history_abort_manual_compaction_result, history_cancel_background_compaction_result, history_compact_context_window, history_compact_request, history_compact_result, history_summarize_for_handoff_result, history_truncate_request, history_truncate_result, hmac_auth_info, installed_plugin, installed_plugin_source, installed_plugin_source_github, installed_plugin_source_local, installed_plugin_source_url, instructions_get_sources_result, instructions_sources, instructions_sources_location, instructions_sources_type, log_request, log_result, lsp_initialize_request, mcp_apps_call_tool_request, mcp_apps_diagnose_capability, mcp_apps_diagnose_request, mcp_apps_diagnose_result, mcp_apps_diagnose_server, mcp_apps_host_context, mcp_apps_host_context_details, mcp_apps_host_context_details_available_display_mode, mcp_apps_host_context_details_display_mode, mcp_apps_host_context_details_platform, mcp_apps_host_context_details_theme, mcp_apps_list_tools_request, mcp_apps_list_tools_result, mcp_apps_read_resource_request, mcp_apps_read_resource_result, mcp_apps_resource_content, mcp_apps_set_host_context_details, mcp_apps_set_host_context_details_available_display_mode, mcp_apps_set_host_context_details_display_mode, mcp_apps_set_host_context_details_platform, mcp_apps_set_host_context_details_theme, mcp_apps_set_host_context_request, mcp_cancel_sampling_execution_params, mcp_cancel_sampling_execution_result, mcp_config_add_request, mcp_config_disable_request, mcp_config_enable_request, mcp_config_list, mcp_config_remove_request, mcp_config_update_request, mcp_disable_request, mcp_discover_request, mcp_discover_result, mcp_enable_request, mcp_execute_sampling_params, mcp_execute_sampling_request, mcp_execute_sampling_result, mcp_oauth_login_request, mcp_oauth_login_result, mcp_remove_git_hub_result, mcp_sampling_execution_action, mcp_sampling_execution_result, mcp_server, mcp_server_config, mcp_server_config_http, mcp_server_config_http_auth, mcp_server_config_http_oauth_grant_type, mcp_server_config_http_type, mcp_server_config_stdio, mcp_server_list, mcp_set_env_value_mode_details, mcp_set_env_value_mode_params, mcp_set_env_value_mode_result, metadata_context_info_request, metadata_context_info_result, metadata_is_processing_result, metadata_recompute_context_tokens_request, metadata_recompute_context_tokens_result, metadata_record_context_change_request, metadata_record_context_change_result, metadata_set_working_directory_request, metadata_set_working_directory_result, metadata_snapshot_current_mode, metadata_snapshot_remote_metadata, metadata_snapshot_remote_metadata_repository, metadata_snapshot_remote_metadata_task_type, model, model_billing, model_billing_token_prices, model_billing_token_prices_long_context, model_capabilities, model_capabilities_limits, model_capabilities_limits_vision, model_capabilities_override, model_capabilities_override_limits, model_capabilities_override_limits_vision, model_capabilities_override_supports, model_capabilities_supports, model_list, model_picker_category, model_picker_price_category, model_policy, model_policy_state, model_set_reasoning_effort_request, model_set_reasoning_effort_result, models_list_request, model_switch_to_request, model_switch_to_result, mode_set_request, name_get_result, name_set_auto_request, name_set_auto_result, name_set_request, options_update_env_value_mode, pending_permission_request, pending_permission_request_list, permission_decision, permission_decision_approved, permission_decision_approved_for_location, permission_decision_approved_for_session, permission_decision_approve_for_location, permission_decision_approve_for_location_approval, permission_decision_approve_for_location_approval_commands, permission_decision_approve_for_location_approval_custom_tool, permission_decision_approve_for_location_approval_extension_management, permission_decision_approve_for_location_approval_extension_permission_access, permission_decision_approve_for_location_approval_mcp, permission_decision_approve_for_location_approval_mcp_sampling, permission_decision_approve_for_location_approval_memory, permission_decision_approve_for_location_approval_read, permission_decision_approve_for_location_approval_write, permission_decision_approve_for_session, permission_decision_approve_for_session_approval, permission_decision_approve_for_session_approval_commands, permission_decision_approve_for_session_approval_custom_tool, permission_decision_approve_for_session_approval_extension_management, permission_decision_approve_for_session_approval_extension_permission_access, permission_decision_approve_for_session_approval_mcp, permission_decision_approve_for_session_approval_mcp_sampling, permission_decision_approve_for_session_approval_memory, permission_decision_approve_for_session_approval_read, permission_decision_approve_for_session_approval_write, permission_decision_approve_once, permission_decision_approve_permanently, permission_decision_cancelled, permission_decision_denied_by_content_exclusion_policy, permission_decision_denied_by_permission_request_hook, permission_decision_denied_by_rules, permission_decision_denied_interactively_by_user, permission_decision_denied_no_approval_rule_and_could_not_request_from_user, permission_decision_reject, permission_decision_request, permission_decision_user_not_available, permission_location_add_tool_approval_params, permission_location_apply_params, permission_location_apply_result, permission_location_resolve_params, permission_location_resolve_result, permission_location_type, permission_paths_add_params, permission_paths_allowed_check_params, permission_paths_allowed_check_result, permission_paths_config, permission_paths_list, permission_paths_update_primary_params, permission_paths_workspace_check_params, permission_paths_workspace_check_result, permission_prompt_shown_notification, permission_request_result, permission_rules_set, permissions_configure_additional_content_exclusion_policy, permissions_configure_additional_content_exclusion_policy_rule, permissions_configure_additional_content_exclusion_policy_rule_source, permissions_configure_additional_content_exclusion_policy_scope, permissions_configure_params, permissions_configure_result, permissions_folder_trust_add_trusted_result, permissions_locations_add_tool_approval_details, permissions_locations_add_tool_approval_details_commands, permissions_locations_add_tool_approval_details_custom_tool, permissions_locations_add_tool_approval_details_extension_management, permissions_locations_add_tool_approval_details_extension_permission_access, permissions_locations_add_tool_approval_details_mcp, permissions_locations_add_tool_approval_details_mcp_sampling, permissions_locations_add_tool_approval_details_memory, permissions_locations_add_tool_approval_details_read, permissions_locations_add_tool_approval_details_write, permissions_locations_add_tool_approval_result, permissions_modify_rules_params, permissions_modify_rules_result, permissions_modify_rules_scope, permissions_notify_prompt_shown_result, permissions_paths_add_result, permissions_paths_list_request, permissions_paths_update_primary_result, permissions_pending_requests_request, permissions_reset_session_approvals_request, permissions_reset_session_approvals_result, permissions_set_approve_all_request, permissions_set_approve_all_result, permissions_set_approve_all_source, permissions_set_required_request, permissions_set_required_result, permissions_urls_set_unrestricted_mode_result, permission_urls_config, permission_urls_set_unrestricted_mode_params, ping_request, ping_result, plan_read_result, plan_update_request, plugin, plugin_list, queued_command_handled, queued_command_not_handled, queued_command_result, queue_pending_items, queue_pending_items_kind, queue_pending_items_result, queue_remove_most_recent_result, register_event_interest_params, register_event_interest_result, release_event_interest_params, remote_enable_request, remote_enable_result, remote_notify_steerable_changed_request, remote_notify_steerable_changed_result, remote_session_connection_result, remote_session_mode, schedule_entry, schedule_list, schedule_stop_request, schedule_stop_result, secrets_add_filter_values_request, secrets_add_filter_values_result, send_agent_mode, send_attachment, send_attachment_blob, send_attachment_directory, send_attachment_file, send_attachment_file_line_range, send_attachment_github_reference, send_attachment_github_reference_type, send_attachment_selection, send_attachment_selection_details, send_attachment_selection_details_end, send_attachment_selection_details_start, send_mode, send_request, send_result, server_skill, server_skill_list, session_auth_status, session_bulk_delete_result, session_context, session_context_host_type, session_enrich_metadata_result, session_fs_append_file_request, session_fs_error, session_fs_error_code, session_fs_exists_request, session_fs_exists_result, session_fs_mkdir_request, session_fs_readdir_request, session_fs_readdir_result, session_fs_readdir_with_types_entry, session_fs_readdir_with_types_entry_type, session_fs_readdir_with_types_request, session_fs_readdir_with_types_result, session_fs_read_file_request, session_fs_read_file_result, session_fs_rename_request, session_fs_rm_request, session_fs_set_provider_capabilities, session_fs_set_provider_conventions, session_fs_set_provider_request, session_fs_set_provider_result, session_fs_sqlite_exists_request, session_fs_sqlite_exists_result, session_fs_sqlite_query_request, session_fs_sqlite_query_result, session_fs_sqlite_query_type, session_fs_stat_request, session_fs_stat_result, session_fs_write_file_request, session_installed_plugin, session_installed_plugin_source, session_installed_plugin_source_github, session_installed_plugin_source_local, session_installed_plugin_source_url, session_list, session_list_filter, session_load_deferred_repo_hooks_result, session_log_level, session_mcp_apps_call_tool_result, session_metadata, session_metadata_snapshot, session_mode, session_prune_result, sessions_bulk_delete_request, sessions_check_in_use_request, sessions_check_in_use_result, sessions_close_request, sessions_close_result, sessions_enrich_metadata_request, session_set_credentials_params, session_set_credentials_result, sessions_find_by_prefix_request, sessions_find_by_prefix_result, sessions_find_by_task_id_request, sessions_find_by_task_id_result, sessions_fork_request, sessions_fork_result, sessions_get_event_file_path_request, sessions_get_event_file_path_result, sessions_get_last_for_context_request, sessions_get_last_for_context_result, sessions_get_persisted_remote_steerable_request, sessions_get_persisted_remote_steerable_result, session_sizes, sessions_list_request, sessions_load_deferred_repo_hooks_request, sessions_prune_old_request, sessions_release_lock_request, sessions_release_lock_result, sessions_reload_plugin_hooks_request, sessions_reload_plugin_hooks_result, sessions_save_request, sessions_save_result, sessions_set_additional_plugins_request, sessions_set_additional_plugins_result, session_update_options_params, session_update_options_result, session_working_directory_context, session_working_directory_context_host_type, shell_exec_request, shell_exec_result, shell_kill_request, shell_kill_result, shell_kill_signal, shutdown_request, skill, skill_list, skills_config_set_disabled_skills_request, skills_disable_request, skills_discover_request, skills_enable_request, skills_get_invoked_result, skills_invoked_skill, skills_load_diagnostics, slash_command_agent_prompt_result, slash_command_completed_result, slash_command_info, slash_command_input, slash_command_input_completion, slash_command_invocation_result, slash_command_kind, slash_command_select_subcommand_option, slash_command_select_subcommand_result, slash_command_text_result, task_agent_info, task_agent_progress, task_execution_mode, task_info, task_list, task_progress_line, tasks_cancel_request, tasks_cancel_result, tasks_get_current_promotable_result, tasks_get_progress_request, tasks_get_progress_result, task_shell_info, task_shell_info_attachment_mode, task_shell_progress, tasks_promote_current_to_background_result, tasks_promote_to_background_request, tasks_promote_to_background_result, tasks_refresh_result, tasks_remove_request, tasks_remove_result, tasks_send_message_request, tasks_send_message_result, tasks_start_agent_request, tasks_start_agent_result, task_status, tasks_wait_for_pending_result, telemetry_set_feature_overrides_request, token_auth_info, tool, tool_list, tools_initialize_and_validate_result, tools_list_request, ui_auto_mode_switch_response, ui_elicitation_array_any_of_field, ui_elicitation_array_any_of_field_items, ui_elicitation_array_any_of_field_items_any_of, ui_elicitation_array_enum_field, ui_elicitation_array_enum_field_items, ui_elicitation_field_value, ui_elicitation_request, ui_elicitation_response, ui_elicitation_response_action, ui_elicitation_response_content, ui_elicitation_result, ui_elicitation_schema, ui_elicitation_schema_property, ui_elicitation_schema_property_boolean, ui_elicitation_schema_property_number, ui_elicitation_schema_property_number_type, ui_elicitation_schema_property_string, ui_elicitation_schema_property_string_format, ui_elicitation_string_enum_field, ui_elicitation_string_one_of_field, ui_elicitation_string_one_of_field_one_of, ui_exit_plan_mode_action, ui_exit_plan_mode_response, ui_handle_pending_auto_mode_switch_request, ui_handle_pending_elicitation_request, ui_handle_pending_exit_plan_mode_request, ui_handle_pending_result, ui_handle_pending_sampling_request, ui_handle_pending_sampling_response, ui_handle_pending_user_input_request, ui_register_direct_auto_mode_switch_handler_result, ui_unregister_direct_auto_mode_switch_handler_request, ui_unregister_direct_auto_mode_switch_handler_result, ui_user_input_response, usage_get_metrics_result, usage_metrics_code_changes, usage_metrics_model_metric, usage_metrics_model_metric_requests, usage_metrics_model_metric_token_detail, usage_metrics_model_metric_usage, usage_metrics_token_detail, user_auth_info, workspaces_checkpoints, workspaces_create_file_request, workspaces_get_workspace_result, workspaces_list_checkpoints_result, workspaces_list_files_result, workspaces_read_checkpoint_request, workspaces_read_checkpoint_result, workspaces_read_file_request, workspaces_read_file_result, workspaces_save_large_paste_request, workspaces_save_large_paste_result, workspace_summary_host_type, workspaces_workspace_details_host_type, session_context_info, task_progress, workspace_summary) def to_dict(self) -> dict: result: dict = {} @@ -14771,7 +15316,7 @@ def to_dict(self) -> dict: result["ExternalToolTextResultForLlmContentResourceDetails"] = from_union([lambda x: to_class(EmbeddedTextResourceContents, x), lambda x: to_class(EmbeddedBlobResourceContents, x)], self.external_tool_text_result_for_llm_content_resource_details) result["ExternalToolTextResultForLlmContentResourceLink"] = to_class(ExternalToolTextResultForLlmContentResourceLink, self.external_tool_text_result_for_llm_content_resource_link) result["ExternalToolTextResultForLlmContentResourceLinkIcon"] = to_class(ExternalToolTextResultForLlmContentResourceLinkIcon, self.external_tool_text_result_for_llm_content_resource_link_icon) - result["ExternalToolTextResultForLlmContentResourceLinkIconTheme"] = to_enum(ExternalToolTextResultForLlmContentResourceLinkIconTheme, self.external_tool_text_result_for_llm_content_resource_link_icon_theme) + result["ExternalToolTextResultForLlmContentResourceLinkIconTheme"] = to_enum(Theme, self.external_tool_text_result_for_llm_content_resource_link_icon_theme) result["ExternalToolTextResultForLlmContentTerminal"] = to_class(ExternalToolTextResultForLlmContentTerminal, self.external_tool_text_result_for_llm_content_terminal) result["ExternalToolTextResultForLlmContentText"] = to_class(ExternalToolTextResultForLlmContentText, self.external_tool_text_result_for_llm_content_text) result["FilterMapping"] = from_union([lambda x: from_dict(lambda x: to_enum(ContentFilterMode, x), x), lambda x: to_enum(ContentFilterMode, x)], self.filter_mapping) @@ -14804,6 +15349,28 @@ def to_dict(self) -> dict: result["LogRequest"] = to_class(LogRequest, self.log_request) result["LogResult"] = to_class(LogResult, self.log_result) result["LspInitializeRequest"] = to_class(LspInitializeRequest, self.lsp_initialize_request) + result["McpAppsCallToolRequest"] = to_class(MCPAppsCallToolRequest, self.mcp_apps_call_tool_request) + result["McpAppsDiagnoseCapability"] = to_class(MCPAppsDiagnoseCapability, self.mcp_apps_diagnose_capability) + result["McpAppsDiagnoseRequest"] = to_class(MCPAppsDiagnoseRequest, self.mcp_apps_diagnose_request) + result["McpAppsDiagnoseResult"] = to_class(MCPAppsDiagnoseResult, self.mcp_apps_diagnose_result) + result["McpAppsDiagnoseServer"] = to_class(MCPAppsDiagnoseServer, self.mcp_apps_diagnose_server) + result["McpAppsHostContext"] = to_class(MCPAppsHostContext, self.mcp_apps_host_context) + result["McpAppsHostContextDetails"] = to_class(MCPAppsHostContextDetails, self.mcp_apps_host_context_details) + result["McpAppsHostContextDetailsAvailableDisplayMode"] = to_enum(MCPAppsDisplayMode, self.mcp_apps_host_context_details_available_display_mode) + result["McpAppsHostContextDetailsDisplayMode"] = to_enum(MCPAppsDisplayMode, self.mcp_apps_host_context_details_display_mode) + result["McpAppsHostContextDetailsPlatform"] = to_enum(MCPAppsHostContextDetailsPlatform, self.mcp_apps_host_context_details_platform) + result["McpAppsHostContextDetailsTheme"] = to_enum(Theme, self.mcp_apps_host_context_details_theme) + result["McpAppsListToolsRequest"] = to_class(MCPAppsListToolsRequest, self.mcp_apps_list_tools_request) + result["McpAppsListToolsResult"] = to_class(MCPAppsListToolsResult, self.mcp_apps_list_tools_result) + result["McpAppsReadResourceRequest"] = to_class(MCPAppsReadResourceRequest, self.mcp_apps_read_resource_request) + result["McpAppsReadResourceResult"] = to_class(MCPAppsReadResourceResult, self.mcp_apps_read_resource_result) + result["McpAppsResourceContent"] = to_class(MCPAppsResourceContent, self.mcp_apps_resource_content) + result["McpAppsSetHostContextDetails"] = to_class(MCPAppsSetHostContextDetails, self.mcp_apps_set_host_context_details) + result["McpAppsSetHostContextDetailsAvailableDisplayMode"] = to_enum(MCPAppsDisplayMode, self.mcp_apps_set_host_context_details_available_display_mode) + result["McpAppsSetHostContextDetailsDisplayMode"] = to_enum(MCPAppsDisplayMode, self.mcp_apps_set_host_context_details_display_mode) + result["McpAppsSetHostContextDetailsPlatform"] = to_enum(MCPAppsHostContextDetailsPlatform, self.mcp_apps_set_host_context_details_platform) + result["McpAppsSetHostContextDetailsTheme"] = to_enum(Theme, self.mcp_apps_set_host_context_details_theme) + result["McpAppsSetHostContextRequest"] = to_class(MCPAppsSetHostContextRequest, self.mcp_apps_set_host_context_request) result["McpCancelSamplingExecutionParams"] = to_class(MCPCancelSamplingExecutionParams, self.mcp_cancel_sampling_execution_params) result["McpCancelSamplingExecutionResult"] = to_class(MCPCancelSamplingExecutionResult, self.mcp_cancel_sampling_execution_result) result["McpConfigAddRequest"] = to_class(MCPConfigAddRequest, self.mcp_config_add_request) @@ -14851,6 +15418,7 @@ def to_dict(self) -> dict: result["Model"] = to_class(Model, self.model) result["ModelBilling"] = to_class(ModelBilling, self.model_billing) result["ModelBillingTokenPrices"] = to_class(ModelBillingTokenPrices, self.model_billing_token_prices) + result["ModelBillingTokenPricesLongContext"] = to_class(ModelBillingTokenPricesLongContext, self.model_billing_token_prices_long_context) result["ModelCapabilities"] = to_class(ModelCapabilities, self.model_capabilities) result["ModelCapabilitiesLimits"] = to_class(ModelCapabilitiesLimits, self.model_capabilities_limits) result["ModelCapabilitiesLimitsVision"] = to_class(ModelCapabilitiesLimitsVision, self.model_capabilities_limits_vision) @@ -15054,6 +15622,7 @@ def to_dict(self) -> dict: result["SessionListFilter"] = to_class(SessionListFilter, self.session_list_filter) result["SessionLoadDeferredRepoHooksResult"] = to_class(SessionLoadDeferredRepoHooksResult, self.session_load_deferred_repo_hooks_result) result["SessionLogLevel"] = to_enum(SessionLogLevel, self.session_log_level) + result["SessionMcpAppsCallToolResult"] = from_dict(lambda x: x, self.session_mcp_apps_call_tool_result) result["SessionMetadata"] = to_class(SessionMetadata, self.session_metadata) result["SessionMetadataSnapshot"] = to_class(SessionMetadataSnapshot, self.session_metadata_snapshot) result["SessionMode"] = to_enum(SessionMode, self.session_mode) @@ -15378,11 +15947,20 @@ def _load_TaskInfo(obj: Any) -> "TaskInfo": ExternalToolResult = ExternalToolTextResultForLlm +ExternalToolTextResultForLlmContentResourceLinkIconTheme = Theme FilterMapping = dict +McpAppsHostContextDetailsAvailableDisplayMode = MCPAppsDisplayMode +McpAppsHostContextDetailsDisplayMode = MCPAppsDisplayMode +McpAppsHostContextDetailsTheme = Theme +McpAppsSetHostContextDetailsAvailableDisplayMode = MCPAppsDisplayMode +McpAppsSetHostContextDetailsDisplayMode = MCPAppsDisplayMode +McpAppsSetHostContextDetailsPlatform = MCPAppsHostContextDetailsPlatform +McpAppsSetHostContextDetailsTheme = Theme McpExecuteSamplingRequest = dict McpExecuteSamplingResult = dict OptionsUpdateEnvValueMode = MCPSetEnvValueModeDetails SessionContextHostType = HostType +SessionMcpAppsCallToolResult = dict SessionWorkingDirectoryContextHostType = HostType TaskInfoExecutionMode = TaskExecutionMode TaskInfoStatus = TaskStatus @@ -15971,12 +16549,54 @@ async def login(self, params: MCPOauthLoginRequest, *, timeout: float | None = N return MCPOauthLoginResult.from_dict(await self._client.request("session.mcp.oauth.login", params_dict, **_timeout_kwargs(timeout))) +# Experimental: this API group is experimental and may change or be removed. +class McpAppsApi: + def __init__(self, client: "JsonRpcClient", session_id: str): + self._client = client + self._session_id = session_id + + async def read_resource(self, params: MCPAppsReadResourceRequest, *, timeout: float | None = None) -> MCPAppsReadResourceResult: + "Fetch an MCP resource (typically a `ui://` MCP App bundle, per SEP-1865) from a connected server. Requires the `mcp-apps` session capability.\n\nArgs:\n params: MCP server and resource URI to fetch.\n\nReturns:\n Resource contents returned by the MCP server." + 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 MCPAppsReadResourceResult.from_dict(await self._client.request("session.mcp.apps.readResource", params_dict, **_timeout_kwargs(timeout))) + + async def list_tools(self, params: MCPAppsListToolsRequest, *, timeout: float | None = None) -> MCPAppsListToolsResult: + "List tools that an MCP App view is allowed to call (SEP-1865 visibility filter). Returns tools whose `_meta.ui.visibility` is unset (default `[\"model\",\"app\"]`) or includes `\"app\"`.\n\nArgs:\n params: MCP server to list app-callable tools for.\n\nReturns:\n App-callable tools from the named MCP server." + 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 MCPAppsListToolsResult.from_dict(await self._client.request("session.mcp.apps.listTools", params_dict, **_timeout_kwargs(timeout))) + + async def call_tool(self, params: MCPAppsCallToolRequest, *, timeout: float | None = None) -> dict: + "Call an MCP tool from an MCP App view (SEP-1865). Enforces the visibility check that prevents an app iframe from invoking model-only tools. Returns the standard MCP `CallToolResult`.\n\nArgs:\n params: MCP server, tool name, and arguments to invoke from an MCP App view.\n\nReturns:\n Standard MCP CallToolResult" + 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 dict(await self._client.request("session.mcp.apps.callTool", params_dict, **_timeout_kwargs(timeout))) + + async def set_host_context(self, params: MCPAppsSetHostContextRequest, *, timeout: float | None = None) -> None: + "Replace the host context returned to MCP App guests on `ui/initialize`. Hosts use this to advertise theme, locale, or other metadata to the guest UI.\n\nArgs:\n params: Host context to advertise to MCP App guests." + 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.apps.setHostContext", params_dict, **_timeout_kwargs(timeout)) + + async def get_host_context(self, *, timeout: float | None = None) -> MCPAppsHostContext: + "Read the current host context advertised to MCP App guests.\n\nReturns:\n Current host context advertised to MCP App guests." + return MCPAppsHostContext.from_dict(await self._client.request("session.mcp.apps.getHostContext", {"sessionId": self._session_id}, **_timeout_kwargs(timeout))) + + async def diagnose(self, params: MCPAppsDiagnoseRequest, *, timeout: float | None = None) -> MCPAppsDiagnoseResult: + "Diagnose MCP Apps wiring for a specific MCP server. Reports the session capability, feature-flag state, advertised extension, and how many tools have `_meta.ui` populated.\n\nArgs:\n params: MCP server to diagnose MCP Apps wiring for.\n\nReturns:\n Diagnostic snapshot of MCP Apps wiring for the named server." + 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 MCPAppsDiagnoseResult.from_dict(await self._client.request("session.mcp.apps.diagnose", params_dict, **_timeout_kwargs(timeout))) + + # Experimental: this API group is experimental and may change or be removed. class McpApi: def __init__(self, client: "JsonRpcClient", session_id: str): self._client = client self._session_id = session_id self.oauth = McpOauthApi(client, session_id) + self.apps = McpAppsApi(client, session_id) async def list(self, *, timeout: float | None = None) -> MCPServerList: "Lists MCP servers configured for the session and their connection status.\n\nReturns:\n MCP servers configured for the session, with their connection status." diff --git a/python/copilot/generated/session_events.py b/python/copilot/generated/session_events.py index b504fff90a..5839c34dbd 100644 --- a/python/copilot/generated/session_events.py +++ b/python/copilot/generated/session_events.py @@ -202,6 +202,7 @@ class SessionEventType(Enum): SESSION_MCP_SERVERS_LOADED = "session.mcp_servers_loaded" SESSION_MCP_SERVER_STATUS_CHANGED = "session.mcp_server_status_changed" SESSION_EXTENSIONS_LOADED = "session.extensions_loaded" + MCP_APP_TOOL_CALL_COMPLETE = "mcp_app.tool_call_complete" UNKNOWN = "unknown" @classmethod @@ -334,6 +335,7 @@ class AssistantMessageData: reasoning_opaque: str | None = None reasoning_text: str | None = None request_id: str | None = None + service_request_id: str | None = None tool_requests: list[AssistantMessageToolRequest] | None = None turn_id: str | None = None @@ -353,6 +355,7 @@ def from_dict(obj: Any) -> "AssistantMessageData": reasoning_opaque = from_union([from_none, from_str], obj.get("reasoningOpaque")) reasoning_text = from_union([from_none, from_str], obj.get("reasoningText")) request_id = from_union([from_none, from_str], obj.get("requestId")) + service_request_id = from_union([from_none, from_str], obj.get("serviceRequestId")) tool_requests = from_union([from_none, lambda x: from_list(AssistantMessageToolRequest.from_dict, x)], obj.get("toolRequests")) turn_id = from_union([from_none, from_str], obj.get("turnId")) return AssistantMessageData( @@ -369,6 +372,7 @@ def from_dict(obj: Any) -> "AssistantMessageData": reasoning_opaque=reasoning_opaque, reasoning_text=reasoning_text, request_id=request_id, + service_request_id=service_request_id, tool_requests=tool_requests, turn_id=turn_id, ) @@ -399,6 +403,8 @@ def to_dict(self) -> dict: result["reasoningText"] = from_union([from_none, from_str], self.reasoning_text) if self.request_id is not None: result["requestId"] = from_union([from_none, from_str], self.request_id) + if self.service_request_id is not None: + result["serviceRequestId"] = from_union([from_none, from_str], self.service_request_id) if self.tool_requests is not None: result["toolRequests"] = from_union([from_none, lambda x: from_list(lambda x: to_class(AssistantMessageToolRequest, x), x)], self.tool_requests) if self.turn_id is not None: @@ -698,6 +704,7 @@ class AssistantUsageData: _quota_snapshots: dict[str, _AssistantUsageQuotaSnapshot] | None = None reasoning_effort: str | None = None reasoning_tokens: int | None = None + service_request_id: str | None = None time_to_first_token: timedelta | None = None @staticmethod @@ -720,6 +727,7 @@ def from_dict(obj: Any) -> "AssistantUsageData": _quota_snapshots = from_union([from_none, lambda x: from_dict(_AssistantUsageQuotaSnapshot.from_dict, x)], obj.get("quotaSnapshots")) reasoning_effort = from_union([from_none, from_str], obj.get("reasoningEffort")) reasoning_tokens = from_union([from_none, from_int], obj.get("reasoningTokens")) + service_request_id = from_union([from_none, from_str], obj.get("serviceRequestId")) time_to_first_token = from_union([from_none, from_timedelta], obj.get("timeToFirstTokenMs")) return AssistantUsageData( model=model, @@ -739,6 +747,7 @@ def from_dict(obj: Any) -> "AssistantUsageData": _quota_snapshots=_quota_snapshots, reasoning_effort=reasoning_effort, reasoning_tokens=reasoning_tokens, + service_request_id=service_request_id, time_to_first_token=time_to_first_token, ) @@ -777,6 +786,8 @@ def to_dict(self) -> dict: result["reasoningEffort"] = from_union([from_none, from_str], self.reasoning_effort) if self.reasoning_tokens is not None: result["reasoningTokens"] = from_union([from_none, to_int], self.reasoning_tokens) + if self.service_request_id is not None: + result["serviceRequestId"] = from_union([from_none, from_str], self.service_request_id) if self.time_to_first_token is not None: result["timeToFirstTokenMs"] = from_union([from_none, to_timedelta_int], self.time_to_first_token) return result @@ -914,19 +925,24 @@ def to_dict(self) -> dict: class CapabilitiesChangedUI: "UI capability changes" elicitation: bool | None = None + mcp_apps: bool | None = None @staticmethod def from_dict(obj: Any) -> "CapabilitiesChangedUI": assert isinstance(obj, dict) elicitation = from_union([from_none, from_bool], obj.get("elicitation")) + mcp_apps = from_union([from_none, from_bool], obj.get("mcpApps")) return CapabilitiesChangedUI( elicitation=elicitation, + mcp_apps=mcp_apps, ) def to_dict(self) -> dict: result: dict = {} if self.elicitation is not None: result["elicitation"] = from_union([from_none, from_bool], self.elicitation) + if self.mcp_apps is not None: + result["mcpApps"] = from_union([from_none, from_bool], self.mcp_apps) return result @@ -1647,6 +1663,121 @@ def to_dict(self) -> dict: return result +@dataclass +class McpAppToolCallCompleteData: + "MCP App view called a tool on a connected MCP server (SEP-1865)" + duration_ms: float + server_name: str + success: bool + tool_name: str + arguments: dict[str, Any] | None = None + error: McpAppToolCallCompleteError | None = None + result: dict[str, Any] | None = None + tool_meta: McpAppToolCallCompleteToolMeta | None = None + + @staticmethod + def from_dict(obj: Any) -> "McpAppToolCallCompleteData": + assert isinstance(obj, dict) + duration_ms = from_float(obj.get("durationMs")) + server_name = from_str(obj.get("serverName")) + success = from_bool(obj.get("success")) + tool_name = from_str(obj.get("toolName")) + arguments = from_union([from_none, lambda x: from_dict(lambda x: x, x)], obj.get("arguments")) + error = from_union([from_none, McpAppToolCallCompleteError.from_dict], obj.get("error")) + result = from_union([from_none, lambda x: from_dict(lambda x: x, x)], obj.get("result")) + tool_meta = from_union([from_none, McpAppToolCallCompleteToolMeta.from_dict], obj.get("toolMeta")) + return McpAppToolCallCompleteData( + duration_ms=duration_ms, + server_name=server_name, + success=success, + tool_name=tool_name, + arguments=arguments, + error=error, + result=result, + tool_meta=tool_meta, + ) + + def to_dict(self) -> dict: + result: dict = {} + result["durationMs"] = to_float(self.duration_ms) + result["serverName"] = from_str(self.server_name) + result["success"] = from_bool(self.success) + result["toolName"] = from_str(self.tool_name) + if self.arguments is not None: + result["arguments"] = from_union([from_none, lambda x: from_dict(lambda x: x, x)], self.arguments) + if self.error is not None: + result["error"] = from_union([from_none, lambda x: to_class(McpAppToolCallCompleteError, x)], self.error) + if self.result is not None: + result["result"] = from_union([from_none, lambda x: from_dict(lambda x: x, x)], self.result) + if self.tool_meta is not None: + result["toolMeta"] = from_union([from_none, lambda x: to_class(McpAppToolCallCompleteToolMeta, x)], self.tool_meta) + return result + + +@dataclass +class McpAppToolCallCompleteError: + "Set when the underlying tools/call threw an error before returning a CallToolResult" + message: str + + @staticmethod + def from_dict(obj: Any) -> "McpAppToolCallCompleteError": + assert isinstance(obj, dict) + message = from_str(obj.get("message")) + return McpAppToolCallCompleteError( + message=message, + ) + + def to_dict(self) -> dict: + result: dict = {} + result["message"] = from_str(self.message) + return result + + +@dataclass +class McpAppToolCallCompleteToolMeta: + "The tool's `_meta.ui` block at the time of the call, so consumers can decide whether to forward the result to the model without re-listing tools." + ui: McpAppToolCallCompleteToolMetaUI | None = None + + @staticmethod + def from_dict(obj: Any) -> "McpAppToolCallCompleteToolMeta": + assert isinstance(obj, dict) + ui = from_union([from_none, McpAppToolCallCompleteToolMetaUI.from_dict], obj.get("ui")) + return McpAppToolCallCompleteToolMeta( + ui=ui, + ) + + def to_dict(self) -> dict: + result: dict = {} + if self.ui is not None: + result["ui"] = from_union([from_none, lambda x: to_class(McpAppToolCallCompleteToolMetaUI, x)], self.ui) + return result + + +@dataclass +class McpAppToolCallCompleteToolMetaUI: + "Schema for the `McpAppToolCallCompleteToolMetaUI` type." + resource_uri: str | None = None + visibility: list[str] | None = None + + @staticmethod + def from_dict(obj: Any) -> "McpAppToolCallCompleteToolMetaUI": + assert isinstance(obj, dict) + resource_uri = from_union([from_none, from_str], obj.get("resourceUri")) + visibility = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("visibility")) + return McpAppToolCallCompleteToolMetaUI( + resource_uri=resource_uri, + visibility=visibility, + ) + + def to_dict(self) -> dict: + result: dict = {} + if self.resource_uri is not None: + result["resourceUri"] = from_union([from_none, from_str], self.resource_uri) + if self.visibility is not None: + result["visibility"] = from_union([from_none, lambda x: from_list(from_str, x)], self.visibility) + return result + + @dataclass class McpOauthCompletedData: "MCP OAuth request completion notification" @@ -1733,7 +1864,10 @@ class McpServersLoadedServer: name: str status: McpServerStatus error: str | None = None + plugin_name: str | None = None + plugin_version: str | None = None source: McpServerSource | None = None + transport: McpServerTransport | None = None @staticmethod def from_dict(obj: Any) -> "McpServersLoadedServer": @@ -1741,12 +1875,18 @@ def from_dict(obj: Any) -> "McpServersLoadedServer": name = from_str(obj.get("name")) status = parse_enum(McpServerStatus, obj.get("status")) error = from_union([from_none, from_str], obj.get("error")) + plugin_name = from_union([from_none, from_str], obj.get("pluginName")) + plugin_version = from_union([from_none, from_str], obj.get("pluginVersion")) source = from_union([from_none, lambda x: parse_enum(McpServerSource, x)], obj.get("source")) + transport = from_union([from_none, lambda x: parse_enum(McpServerTransport, x)], obj.get("transport")) return McpServersLoadedServer( name=name, status=status, error=error, + plugin_name=plugin_name, + plugin_version=plugin_version, source=source, + transport=transport, ) def to_dict(self) -> dict: @@ -1755,8 +1895,14 @@ def to_dict(self) -> dict: result["status"] = to_enum(McpServerStatus, self.status) if self.error is not None: result["error"] = from_union([from_none, from_str], self.error) + if self.plugin_name is not None: + result["pluginName"] = from_union([from_none, from_str], self.plugin_name) + if self.plugin_version is not None: + result["pluginVersion"] = from_union([from_none, from_str], self.plugin_version) if self.source is not None: result["source"] = from_union([from_none, lambda x: to_enum(McpServerSource, x)], self.source) + if self.transport is not None: + result["transport"] = from_union([from_none, lambda x: to_enum(McpServerTransport, x)], self.transport) return result @@ -1770,6 +1916,7 @@ class ModelCallFailureData: initiator: str | None = None model: str | None = None provider_call_id: str | None = None + service_request_id: str | None = None status_code: int | None = None @staticmethod @@ -1782,6 +1929,7 @@ def from_dict(obj: Any) -> "ModelCallFailureData": initiator = from_union([from_none, from_str], obj.get("initiator")) model = from_union([from_none, from_str], obj.get("model")) provider_call_id = from_union([from_none, from_str], obj.get("providerCallId")) + service_request_id = from_union([from_none, from_str], obj.get("serviceRequestId")) status_code = from_union([from_none, from_int], obj.get("statusCode")) return ModelCallFailureData( source=source, @@ -1791,6 +1939,7 @@ def from_dict(obj: Any) -> "ModelCallFailureData": initiator=initiator, model=model, provider_call_id=provider_call_id, + service_request_id=service_request_id, status_code=status_code, ) @@ -1809,6 +1958,8 @@ def to_dict(self) -> dict: result["model"] = from_union([from_none, from_str], self.model) if self.provider_call_id is not None: result["providerCallId"] = from_union([from_none, from_str], self.provider_call_id) + if self.service_request_id is not None: + result["serviceRequestId"] = from_union([from_none, from_str], self.service_request_id) if self.status_code is not None: result["statusCode"] = from_union([from_none, to_int], self.status_code) return result @@ -3009,6 +3160,7 @@ class SessionCompactionCompleteData: pre_compaction_messages_length: int | None = None pre_compaction_tokens: int | None = None request_id: str | None = None + service_request_id: str | None = None summary_content: str | None = None system_tokens: int | None = None tokens_removed: int | None = None @@ -3029,6 +3181,7 @@ def from_dict(obj: Any) -> "SessionCompactionCompleteData": pre_compaction_messages_length = from_union([from_none, from_int], obj.get("preCompactionMessagesLength")) pre_compaction_tokens = from_union([from_none, from_int], obj.get("preCompactionTokens")) request_id = from_union([from_none, from_str], obj.get("requestId")) + service_request_id = from_union([from_none, from_str], obj.get("serviceRequestId")) summary_content = from_union([from_none, from_str], obj.get("summaryContent")) system_tokens = from_union([from_none, from_int], obj.get("systemTokens")) tokens_removed = from_union([from_none, from_int], obj.get("tokensRemoved")) @@ -3046,6 +3199,7 @@ def from_dict(obj: Any) -> "SessionCompactionCompleteData": pre_compaction_messages_length=pre_compaction_messages_length, pre_compaction_tokens=pre_compaction_tokens, request_id=request_id, + service_request_id=service_request_id, summary_content=summary_content, system_tokens=system_tokens, tokens_removed=tokens_removed, @@ -3077,6 +3231,8 @@ def to_dict(self) -> dict: result["preCompactionTokens"] = from_union([from_none, to_int], self.pre_compaction_tokens) if self.request_id is not None: result["requestId"] = from_union([from_none, from_str], self.request_id) + if self.service_request_id is not None: + result["serviceRequestId"] = from_union([from_none, from_str], self.service_request_id) if self.summary_content is not None: result["summaryContent"] = from_union([from_none, from_str], self.summary_content) if self.system_tokens is not None: @@ -3244,6 +3400,7 @@ class SessionErrorData: eligible_for_auto_switch: bool | None = None error_code: str | None = None provider_call_id: str | None = None + service_request_id: str | None = None stack: str | None = None status_code: int | None = None url: str | None = None @@ -3256,6 +3413,7 @@ def from_dict(obj: Any) -> "SessionErrorData": eligible_for_auto_switch = from_union([from_none, from_bool], obj.get("eligibleForAutoSwitch")) error_code = from_union([from_none, from_str], obj.get("errorCode")) provider_call_id = from_union([from_none, from_str], obj.get("providerCallId")) + service_request_id = from_union([from_none, from_str], obj.get("serviceRequestId")) stack = from_union([from_none, from_str], obj.get("stack")) status_code = from_union([from_none, from_int], obj.get("statusCode")) url = from_union([from_none, from_str], obj.get("url")) @@ -3265,6 +3423,7 @@ def from_dict(obj: Any) -> "SessionErrorData": eligible_for_auto_switch=eligible_for_auto_switch, error_code=error_code, provider_call_id=provider_call_id, + service_request_id=service_request_id, stack=stack, status_code=status_code, url=url, @@ -3280,6 +3439,8 @@ def to_dict(self) -> dict: result["errorCode"] = from_union([from_none, from_str], self.error_code) if self.provider_call_id is not None: result["providerCallId"] = from_union([from_none, from_str], self.provider_call_id) + if self.service_request_id is not None: + result["serviceRequestId"] = from_union([from_none, from_str], self.service_request_id) if self.stack is not None: result["stack"] = from_union([from_none, from_str], self.stack) if self.status_code is not None: @@ -3414,21 +3575,26 @@ class SessionMcpServerStatusChangedData: "Schema for the `McpServerStatusChangedData` type." server_name: str status: McpServerStatus + error: str | None = None @staticmethod def from_dict(obj: Any) -> "SessionMcpServerStatusChangedData": assert isinstance(obj, dict) server_name = from_str(obj.get("serverName")) status = parse_enum(McpServerStatus, obj.get("status")) + error = from_union([from_none, from_str], obj.get("error")) return SessionMcpServerStatusChangedData( server_name=server_name, status=status, + error=error, ) def to_dict(self) -> dict: result: dict = {} result["serverName"] = from_str(self.server_name) result["status"] = to_enum(McpServerStatus, self.status) + if self.error is not None: + result["error"] = from_union([from_none, from_str], self.error) return result @@ -3479,6 +3645,7 @@ class SessionModelChangeData: "Model change details including previous and new model identifiers" new_model: str cause: str | None = None + context_tier: SessionModelChangeDataContextTier | None = None previous_model: str | None = None previous_reasoning_effort: str | None = None previous_reasoning_summary: ReasoningSummary | None = None @@ -3490,6 +3657,7 @@ def from_dict(obj: Any) -> "SessionModelChangeData": assert isinstance(obj, dict) new_model = from_str(obj.get("newModel")) cause = from_union([from_none, from_str], obj.get("cause")) + context_tier = from_union([from_none, lambda x: parse_enum(SessionModelChangeDataContextTier, x)], obj.get("contextTier")) previous_model = from_union([from_none, from_str], obj.get("previousModel")) previous_reasoning_effort = from_union([from_none, from_str], obj.get("previousReasoningEffort")) previous_reasoning_summary = from_union([from_none, lambda x: parse_enum(ReasoningSummary, x)], obj.get("previousReasoningSummary")) @@ -3498,6 +3666,7 @@ def from_dict(obj: Any) -> "SessionModelChangeData": return SessionModelChangeData( new_model=new_model, cause=cause, + context_tier=context_tier, previous_model=previous_model, previous_reasoning_effort=previous_reasoning_effort, previous_reasoning_summary=previous_reasoning_summary, @@ -3510,6 +3679,8 @@ def to_dict(self) -> dict: result["newModel"] = from_str(self.new_model) if self.cause is not None: result["cause"] = from_union([from_none, from_str], self.cause) + if self.context_tier is not None: + result["contextTier"] = from_union([from_none, lambda x: to_enum(SessionModelChangeDataContextTier, x)], self.context_tier) if self.previous_model is not None: result["previousModel"] = from_union([from_none, from_str], self.previous_model) if self.previous_reasoning_effort is not None: @@ -4254,6 +4425,8 @@ class SkillInvokedData: description: str | None = None plugin_name: str | None = None plugin_version: str | None = None + source: str | None = None + trigger: SkillInvokedTrigger | None = None @staticmethod def from_dict(obj: Any) -> "SkillInvokedData": @@ -4265,6 +4438,8 @@ def from_dict(obj: Any) -> "SkillInvokedData": description = from_union([from_none, from_str], obj.get("description")) plugin_name = from_union([from_none, from_str], obj.get("pluginName")) plugin_version = from_union([from_none, from_str], obj.get("pluginVersion")) + source = from_union([from_none, from_str], obj.get("source")) + trigger = from_union([from_none, lambda x: parse_enum(SkillInvokedTrigger, x)], obj.get("trigger")) return SkillInvokedData( content=content, name=name, @@ -4273,6 +4448,8 @@ def from_dict(obj: Any) -> "SkillInvokedData": description=description, plugin_name=plugin_name, plugin_version=plugin_version, + source=source, + trigger=trigger, ) def to_dict(self) -> dict: @@ -4288,6 +4465,10 @@ def to_dict(self) -> dict: result["pluginName"] = from_union([from_none, from_str], self.plugin_name) if self.plugin_version is not None: result["pluginVersion"] = from_union([from_none, from_str], self.plugin_version) + if self.source is not None: + result["source"] = from_union([from_none, from_str], self.source) + if self.trigger is not None: + result["trigger"] = from_union([from_none, lambda x: to_enum(SkillInvokedTrigger, x)], self.trigger) return result @@ -4998,6 +5179,7 @@ class ToolExecutionCompleteData: parent_tool_call_id: str | None = None result: ToolExecutionCompleteResult | None = None sandboxed: bool | None = None + tool_description: ToolExecutionCompleteToolDescription | None = None tool_telemetry: dict[str, Any] | None = None turn_id: str | None = None @@ -5013,6 +5195,7 @@ def from_dict(obj: Any) -> "ToolExecutionCompleteData": parent_tool_call_id = from_union([from_none, from_str], obj.get("parentToolCallId")) result = from_union([from_none, ToolExecutionCompleteResult.from_dict], obj.get("result")) sandboxed = from_union([from_none, from_bool], obj.get("sandboxed")) + tool_description = from_union([from_none, ToolExecutionCompleteToolDescription.from_dict], obj.get("toolDescription")) tool_telemetry = from_union([from_none, lambda x: from_dict(lambda x: x, x)], obj.get("toolTelemetry")) turn_id = from_union([from_none, from_str], obj.get("turnId")) return ToolExecutionCompleteData( @@ -5025,6 +5208,7 @@ def from_dict(obj: Any) -> "ToolExecutionCompleteData": parent_tool_call_id=parent_tool_call_id, result=result, sandboxed=sandboxed, + tool_description=tool_description, tool_telemetry=tool_telemetry, turn_id=turn_id, ) @@ -5047,6 +5231,8 @@ def to_dict(self) -> dict: result["result"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteResult, x)], self.result) if self.sandboxed is not None: result["sandboxed"] = from_union([from_none, from_bool], self.sandboxed) + if self.tool_description is not None: + result["toolDescription"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteToolDescription, x)], self.tool_description) if self.tool_telemetry is not None: result["toolTelemetry"] = from_union([from_none, lambda x: from_dict(lambda x: x, x)], self.tool_telemetry) if self.turn_id is not None: @@ -5084,6 +5270,7 @@ class ToolExecutionCompleteResult: content: str contents: list[ToolExecutionCompleteContent] | None = None detailed_content: str | None = None + ui_resource: ToolExecutionCompleteUIResource | None = None @staticmethod def from_dict(obj: Any) -> "ToolExecutionCompleteResult": @@ -5091,10 +5278,12 @@ def from_dict(obj: Any) -> "ToolExecutionCompleteResult": content = from_str(obj.get("content")) contents = from_union([from_none, lambda x: from_list(_load_ToolExecutionCompleteContent, x)], obj.get("contents")) detailed_content = from_union([from_none, from_str], obj.get("detailedContent")) + ui_resource = from_union([from_none, ToolExecutionCompleteUIResource.from_dict], obj.get("uiResource")) return ToolExecutionCompleteResult( content=content, contents=contents, detailed_content=detailed_content, + ui_resource=ui_resource, ) def to_dict(self) -> dict: @@ -5104,9 +5293,296 @@ def to_dict(self) -> dict: result["contents"] = from_union([from_none, lambda x: from_list(lambda x: x.to_dict(), x)], self.contents) if self.detailed_content is not None: result["detailedContent"] = from_union([from_none, from_str], self.detailed_content) + if self.ui_resource is not None: + result["uiResource"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteUIResource, x)], self.ui_resource) + return result + + +@dataclass +class ToolExecutionCompleteToolDescription: + "Tool definition metadata, present for MCP tools with MCP Apps support" + name: str + _meta: ToolExecutionCompleteToolDescriptionMeta | None = None + description: str | None = None + + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteToolDescription": + assert isinstance(obj, dict) + name = from_str(obj.get("name")) + _meta = from_union([from_none, ToolExecutionCompleteToolDescriptionMeta.from_dict], obj.get("_meta")) + description = from_union([from_none, from_str], obj.get("description")) + return ToolExecutionCompleteToolDescription( + name=name, + _meta=_meta, + description=description, + ) + + def to_dict(self) -> dict: + result: dict = {} + result["name"] = from_str(self.name) + if self._meta is not None: + result["_meta"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteToolDescriptionMeta, x)], self._meta) + if self.description is not None: + result["description"] = from_union([from_none, from_str], self.description) + return result + + +@dataclass +class ToolExecutionCompleteToolDescriptionMeta: + "MCP Apps metadata for UI resource association" + ui: ToolExecutionCompleteToolDescriptionMetaUI | None = None + + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteToolDescriptionMeta": + assert isinstance(obj, dict) + ui = from_union([from_none, ToolExecutionCompleteToolDescriptionMetaUI.from_dict], obj.get("ui")) + return ToolExecutionCompleteToolDescriptionMeta( + ui=ui, + ) + + def to_dict(self) -> dict: + result: dict = {} + if self.ui is not None: + result["ui"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteToolDescriptionMetaUI, x)], self.ui) + return result + + +@dataclass +class ToolExecutionCompleteToolDescriptionMetaUI: + "Schema for the `ToolExecutionCompleteToolDescriptionMetaUI` type." + resource_uri: str | None = None + visibility: list[ToolExecutionCompleteToolDescriptionMetaUIVisibility] | None = None + + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteToolDescriptionMetaUI": + assert isinstance(obj, dict) + resource_uri = from_union([from_none, from_str], obj.get("resourceUri")) + visibility = from_union([from_none, lambda x: from_list(lambda x: parse_enum(ToolExecutionCompleteToolDescriptionMetaUIVisibility, x), x)], obj.get("visibility")) + return ToolExecutionCompleteToolDescriptionMetaUI( + resource_uri=resource_uri, + visibility=visibility, + ) + + def to_dict(self) -> dict: + result: dict = {} + if self.resource_uri is not None: + result["resourceUri"] = from_union([from_none, from_str], self.resource_uri) + if self.visibility is not None: + result["visibility"] = from_union([from_none, lambda x: from_list(lambda x: to_enum(ToolExecutionCompleteToolDescriptionMetaUIVisibility, x), x)], self.visibility) + return result + + +@dataclass +class ToolExecutionCompleteUIResource: + "MCP Apps UI resource content for rendering in a sandboxed iframe" + mime_type: str + uri: str + _meta: ToolExecutionCompleteUIResourceMeta | None = None + blob: str | None = None + text: str | None = None + + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteUIResource": + assert isinstance(obj, dict) + mime_type = from_str(obj.get("mimeType")) + uri = from_str(obj.get("uri")) + _meta = from_union([from_none, ToolExecutionCompleteUIResourceMeta.from_dict], obj.get("_meta")) + blob = from_union([from_none, from_str], obj.get("blob")) + text = from_union([from_none, from_str], obj.get("text")) + return ToolExecutionCompleteUIResource( + mime_type=mime_type, + uri=uri, + _meta=_meta, + blob=blob, + text=text, + ) + + def to_dict(self) -> dict: + result: dict = {} + result["mimeType"] = from_str(self.mime_type) + result["uri"] = from_str(self.uri) + if self._meta is not None: + result["_meta"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteUIResourceMeta, x)], self._meta) + if self.blob is not None: + result["blob"] = from_union([from_none, from_str], self.blob) + if self.text is not None: + result["text"] = from_union([from_none, from_str], self.text) + return result + + +@dataclass +class ToolExecutionCompleteUIResourceMeta: + "Resource-level UI metadata (CSP, permissions, visual preferences)" + ui: ToolExecutionCompleteUIResourceMetaUI | None = None + + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteUIResourceMeta": + assert isinstance(obj, dict) + ui = from_union([from_none, ToolExecutionCompleteUIResourceMetaUI.from_dict], obj.get("ui")) + return ToolExecutionCompleteUIResourceMeta( + ui=ui, + ) + + def to_dict(self) -> dict: + result: dict = {} + if self.ui is not None: + result["ui"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteUIResourceMetaUI, x)], self.ui) + return result + + +@dataclass +class ToolExecutionCompleteUIResourceMetaUI: + "Schema for the `ToolExecutionCompleteUIResourceMetaUI` type." + csp: ToolExecutionCompleteUIResourceMetaUICsp | None = None + domain: str | None = None + permissions: ToolExecutionCompleteUIResourceMetaUIPermissions | None = None + prefers_border: bool | None = None + + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteUIResourceMetaUI": + assert isinstance(obj, dict) + csp = from_union([from_none, ToolExecutionCompleteUIResourceMetaUICsp.from_dict], obj.get("csp")) + domain = from_union([from_none, from_str], obj.get("domain")) + permissions = from_union([from_none, ToolExecutionCompleteUIResourceMetaUIPermissions.from_dict], obj.get("permissions")) + prefers_border = from_union([from_none, from_bool], obj.get("prefersBorder")) + return ToolExecutionCompleteUIResourceMetaUI( + csp=csp, + domain=domain, + permissions=permissions, + prefers_border=prefers_border, + ) + + def to_dict(self) -> dict: + result: dict = {} + if self.csp is not None: + result["csp"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteUIResourceMetaUICsp, x)], self.csp) + if self.domain is not None: + result["domain"] = from_union([from_none, from_str], self.domain) + if self.permissions is not None: + result["permissions"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteUIResourceMetaUIPermissions, x)], self.permissions) + if self.prefers_border is not None: + result["prefersBorder"] = from_union([from_none, from_bool], self.prefers_border) + return result + + +@dataclass +class ToolExecutionCompleteUIResourceMetaUICsp: + "Schema for the `ToolExecutionCompleteUIResourceMetaUICsp` type." + base_uri_domains: list[str] | None = None + connect_domains: list[str] | None = None + frame_domains: list[str] | None = None + resource_domains: list[str] | None = None + + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteUIResourceMetaUICsp": + assert isinstance(obj, dict) + base_uri_domains = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("baseUriDomains")) + connect_domains = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("connectDomains")) + frame_domains = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("frameDomains")) + resource_domains = from_union([from_none, lambda x: from_list(from_str, x)], obj.get("resourceDomains")) + return ToolExecutionCompleteUIResourceMetaUICsp( + base_uri_domains=base_uri_domains, + connect_domains=connect_domains, + frame_domains=frame_domains, + resource_domains=resource_domains, + ) + + def to_dict(self) -> dict: + result: dict = {} + if self.base_uri_domains is not None: + result["baseUriDomains"] = from_union([from_none, lambda x: from_list(from_str, x)], self.base_uri_domains) + if self.connect_domains is not None: + result["connectDomains"] = from_union([from_none, lambda x: from_list(from_str, x)], self.connect_domains) + if self.frame_domains is not None: + result["frameDomains"] = from_union([from_none, lambda x: from_list(from_str, x)], self.frame_domains) + if self.resource_domains is not None: + result["resourceDomains"] = from_union([from_none, lambda x: from_list(from_str, x)], self.resource_domains) + return result + + +@dataclass +class ToolExecutionCompleteUIResourceMetaUIPermissions: + "Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissions` type." + camera: ToolExecutionCompleteUIResourceMetaUIPermissionsCamera | None = None + clipboard_write: ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite | None = None + geolocation: ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation | None = None + microphone: ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone | None = None + + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteUIResourceMetaUIPermissions": + assert isinstance(obj, dict) + camera = from_union([from_none, ToolExecutionCompleteUIResourceMetaUIPermissionsCamera.from_dict], obj.get("camera")) + clipboard_write = from_union([from_none, ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite.from_dict], obj.get("clipboardWrite")) + geolocation = from_union([from_none, ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation.from_dict], obj.get("geolocation")) + microphone = from_union([from_none, ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone.from_dict], obj.get("microphone")) + return ToolExecutionCompleteUIResourceMetaUIPermissions( + camera=camera, + clipboard_write=clipboard_write, + geolocation=geolocation, + microphone=microphone, + ) + + def to_dict(self) -> dict: + result: dict = {} + if self.camera is not None: + result["camera"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteUIResourceMetaUIPermissionsCamera, x)], self.camera) + if self.clipboard_write is not None: + result["clipboardWrite"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite, x)], self.clipboard_write) + if self.geolocation is not None: + result["geolocation"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation, x)], self.geolocation) + if self.microphone is not None: + result["microphone"] = from_union([from_none, lambda x: to_class(ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone, x)], self.microphone) return result +@dataclass +class ToolExecutionCompleteUIResourceMetaUIPermissionsCamera: + "Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsCamera` type." + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteUIResourceMetaUIPermissionsCamera": + assert isinstance(obj, dict) + return ToolExecutionCompleteUIResourceMetaUIPermissionsCamera() + + def to_dict(self) -> dict: + return {} + + +@dataclass +class ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite: + "Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite` type." + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite": + assert isinstance(obj, dict) + return ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite() + + def to_dict(self) -> dict: + return {} + + +@dataclass +class ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation: + "Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation` type." + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation": + assert isinstance(obj, dict) + return ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation() + + def to_dict(self) -> dict: + return {} + + +@dataclass +class ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone: + "Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone` type." + @staticmethod + def from_dict(obj: Any) -> "ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone": + assert isinstance(obj, dict) + return ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone() + + def to_dict(self) -> dict: + return {} + + @dataclass class ToolExecutionPartialResultData: "Streaming tool execution output for incremental result display" @@ -6085,6 +6561,18 @@ class McpServerStatus(Enum): NOT_CONFIGURED = "not_configured" +class McpServerTransport(Enum): + "Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server)" + # Server communicates over stdio with a local child process. + STDIO = "stdio" + # Server communicates over streamable HTTP. + HTTP = "http" + # Server communicates over Server-Sent Events (deprecated). + SSE = "sse" + # Server is backed by an in-memory runtime implementation. + MEMORY = "memory" + + class ModelCallFailureSource(Enum): "Where the failed model call originated" # Model call from the top-level agent. @@ -6151,6 +6639,13 @@ class SessionMode(Enum): AUTOPILOT = "autopilot" +class SessionModelChangeDataContextTier(Enum): + # Default context tier with standard context window size. + DEFAULT = "default" + # Extended context tier with a larger context window. + LONG_CONTEXT = "long_context" + + class ShutdownType(Enum): "Whether the session ended normally (\"routine\") or due to a crash/fatal error (\"error\")" # The session ended normally. @@ -6159,6 +6654,16 @@ class ShutdownType(Enum): ERROR = "error" +class SkillInvokedTrigger(Enum): + "What triggered the skill invocation: `user-invoked` (explicit user action, such as via a slash command or UI affordance), `agent-invoked` (agent requested the skill), or `context-load` (loaded as part of another context, such as preloading skills configured on a custom agent or subagent)" + # Skill invocation requested explicitly by the user, such as via a slash command or UI affordance. + USER_INVOKED = "user-invoked" + # Skill invocation requested by the agent. + AGENT_INVOKED = "agent-invoked" + # Skill content loaded as part of another context, such as a configured custom agent or subagent. + CONTEXT_LOAD = "context-load" + + class SkillSource(Enum): "Source location type (e.g., project, personal-copilot, plugin, builtin)" # Skill defined in the current project's skill directories. @@ -6201,6 +6706,14 @@ class ToolExecutionCompleteContentResourceLinkIconTheme(Enum): DARK = "dark" +class ToolExecutionCompleteToolDescriptionMetaUIVisibility(Enum): + "Allowed values for the `ToolExecutionCompleteToolDescriptionMetaUIVisibility` enumeration." + # Tool is callable by the model (LLM tool surface) + MODEL = "model" + # Tool is callable by the MCP App view (iframe) via session.mcp.apps.callTool + APP = "app" + + class UserMessageAgentMode(Enum): "The agent mode that was active when this message was sent" # The agent is responding interactively to the user. @@ -6239,7 +6752,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 | SessionCustomNotificationData | 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 | McpAppToolCallCompleteData | RawSessionEventData | Data @dataclass @@ -6346,6 +6859,7 @@ def from_dict(obj: Any) -> "SessionEvent": case SessionEventType.SESSION_MCP_SERVERS_LOADED: data = SessionMcpServersLoadedData.from_dict(data_obj) case SessionEventType.SESSION_MCP_SERVER_STATUS_CHANGED: data = SessionMcpServerStatusChangedData.from_dict(data_obj) case SessionEventType.SESSION_EXTENSIONS_LOADED: data = SessionExtensionsLoadedData.from_dict(data_obj) + case SessionEventType.MCP_APP_TOOL_CALL_COMPLETE: data = McpAppToolCallCompleteData.from_dict(data_obj) case _: data = RawSessionEventData.from_dict(data_obj) return SessionEvent( data=data, diff --git a/rust/src/generated/api_types.rs b/rust/src/generated/api_types.rs index 1f141bd0d9..606ca47806 100644 --- a/rust/src/generated/api_types.rs +++ b/rust/src/generated/api_types.rs @@ -199,6 +199,18 @@ pub mod rpc_methods { pub const SESSION_MCP_REMOVEGITHUB: &str = "session.mcp.removeGitHub"; /// `session.mcp.oauth.login` pub const SESSION_MCP_OAUTH_LOGIN: &str = "session.mcp.oauth.login"; + /// `session.mcp.apps.readResource` + pub const SESSION_MCP_APPS_READRESOURCE: &str = "session.mcp.apps.readResource"; + /// `session.mcp.apps.listTools` + pub const SESSION_MCP_APPS_LISTTOOLS: &str = "session.mcp.apps.listTools"; + /// `session.mcp.apps.callTool` + pub const SESSION_MCP_APPS_CALLTOOL: &str = "session.mcp.apps.callTool"; + /// `session.mcp.apps.setHostContext` + pub const SESSION_MCP_APPS_SETHOSTCONTEXT: &str = "session.mcp.apps.setHostContext"; + /// `session.mcp.apps.getHostContext` + pub const SESSION_MCP_APPS_GETHOSTCONTEXT: &str = "session.mcp.apps.getHostContext"; + /// `session.mcp.apps.diagnose` + pub const SESSION_MCP_APPS_DIAGNOSE: &str = "session.mcp.apps.diagnose"; /// `session.plugins.list` pub const SESSION_PLUGINS_LIST: &str = "session.plugins.list"; /// `session.options.update` @@ -1176,7 +1188,7 @@ pub struct DiscoveredMcpServer { pub name: String, /// Configuration source: user, workspace, plugin, or builtin pub source: McpServerSource, - /// Server transport type: stdio, http, sse, or memory + /// Server transport type: stdio, http, sse (deprecated), or memory #[serde(skip_serializing_if = "Option::is_none")] pub r#type: Option, } @@ -1435,6 +1447,9 @@ pub struct ExternalToolTextResultForLlmBinaryResultsForLlm { /// Human-readable description of the binary data #[serde(skip_serializing_if = "Option::is_none")] pub description: Option, + /// Optional metadata from the producing tool. + #[serde(default)] + pub metadata: HashMap, /// MIME type of the binary data pub mime_type: String, /// Binary result type discriminator. Use "image" for images and "resource" for other binary data. @@ -2132,6 +2147,289 @@ pub struct LspInitializeRequest { pub working_directory: Option, } +/// MCP server, tool name, and arguments to invoke from an MCP App view. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsCallToolRequest { + /// Tool arguments + #[serde(default)] + pub arguments: HashMap, + /// **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the app from this server only'), the call is rejected when this differs from `serverName`, and rejected outright when missing. + pub origin_server_name: String, + /// MCP server hosting the tool + pub server_name: String, + /// MCP tool name + pub tool_name: String, +} + +/// Capability negotiation snapshot +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsDiagnoseCapability { + /// Whether the runtime advertises `extensions.io.modelcontextprotocol/ui` to MCP servers + pub advertised: bool, + /// Whether the MCP_APPS feature flag (or COPILOT_MCP_APPS env override) is on + pub feature_flag_enabled: bool, + /// Whether the session has the `mcp-apps` capability + pub session_has_mcp_apps: bool, +} + +/// MCP server to diagnose MCP Apps wiring for. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsDiagnoseRequest { + /// MCP server to probe + pub server_name: String, +} + +/// What the server returned for this session +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsDiagnoseServer { + /// Whether the named server is currently connected + pub connected: bool, + /// Up to 5 tool names with `_meta.ui` for quick inspection + pub sample_tool_names: Vec, + /// Total tools returned by the server's tools/list + pub tool_count: f64, + /// Tools whose `_meta.ui` is populated (resourceUri and/or visibility set) + pub tools_with_ui_meta: f64, +} + +/// Diagnostic snapshot of MCP Apps wiring for the named server. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsDiagnoseResult { + /// Capability negotiation snapshot + pub capability: McpAppsDiagnoseCapability, + /// What the server returned for this session + pub server: McpAppsDiagnoseServer, +} + +/// Current host context +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsHostContextDetails { + /// Display modes the host supports + #[serde(default)] + pub available_display_modes: Vec, + /// Current display mode (SEP-1865) + #[serde(skip_serializing_if = "Option::is_none")] + pub display_mode: Option, + /// BCP-47 locale, e.g. 'en-US' + #[serde(skip_serializing_if = "Option::is_none")] + pub locale: Option, + /// Platform type for responsive design + #[serde(skip_serializing_if = "Option::is_none")] + pub platform: Option, + /// UI theme preference per SEP-1865 + #[serde(skip_serializing_if = "Option::is_none")] + pub theme: Option, + /// IANA timezone, e.g. 'America/New_York' + #[serde(skip_serializing_if = "Option::is_none")] + pub time_zone: Option, + /// Host application identifier + #[serde(skip_serializing_if = "Option::is_none")] + pub user_agent: Option, +} + +/// Current host context advertised to MCP App guests. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsHostContext { + /// Current host context + pub context: McpAppsHostContextDetails, +} + +/// MCP server to list app-callable tools for. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsListToolsRequest { + /// **Required.** Server whose ui:// view issued the request. Per SEP-1865 ('callable by the app from this server only'), the call is rejected when this differs from `serverName`, and rejected outright when missing. + pub origin_server_name: String, + /// MCP server hosting the app + pub server_name: String, +} + +/// App-callable tools from the named MCP server. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsListToolsResult { + /// App-callable tools from the server + pub tools: Vec>, +} + +/// MCP server and resource URI to fetch. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsReadResourceRequest { + /// Name of the MCP server hosting the resource + pub server_name: String, + /// Resource URI (typically ui://...) + pub uri: String, +} + +/// Schema for the `McpAppsResourceContent` type. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsResourceContent { + /// Resource-level metadata (CSP, permissions, etc.) + #[serde(rename = "_meta", default)] + pub meta: HashMap, + /// Base64-encoded binary content + #[serde(skip_serializing_if = "Option::is_none")] + pub blob: Option, + /// MIME type of the content + #[serde(skip_serializing_if = "Option::is_none")] + pub mime_type: Option, + /// Text content (e.g. HTML) + #[serde(skip_serializing_if = "Option::is_none")] + pub text: Option, + /// The resource URI (typically ui://...) + pub uri: String, +} + +/// Resource contents returned by the MCP server. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsReadResourceResult { + /// Resource contents returned by the server + pub contents: Vec, +} + +/// Host context advertised to MCP App guests +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsSetHostContextDetails { + /// Display modes the host supports + #[serde(default)] + pub available_display_modes: Vec, + /// Current display mode (SEP-1865) + #[serde(skip_serializing_if = "Option::is_none")] + pub display_mode: Option, + /// BCP-47 locale, e.g. 'en-US' + #[serde(skip_serializing_if = "Option::is_none")] + pub locale: Option, + /// Platform type for responsive design + #[serde(skip_serializing_if = "Option::is_none")] + pub platform: Option, + /// UI theme preference per SEP-1865 + #[serde(skip_serializing_if = "Option::is_none")] + pub theme: Option, + /// IANA timezone, e.g. 'America/New_York' + #[serde(skip_serializing_if = "Option::is_none")] + pub time_zone: Option, + /// Host application identifier + #[serde(skip_serializing_if = "Option::is_none")] + pub user_agent: Option, +} + +/// Host context to advertise to MCP App guests. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppsSetHostContextRequest { + /// Host context advertised to MCP App guests + pub context: McpAppsSetHostContextDetails, +} + /// The requestId previously passed to executeSampling that should be cancelled. /// ///
@@ -2294,18 +2592,6 @@ pub struct McpExecuteSamplingParams { pub server_name: String, } -/// MCP CreateMessageResult payload (with optional 'tools' extension), present when action='success'. Treated as opaque at the schema layer; consumers should construct/consume it per the MCP CreateMessageResult shape. -/// -///
-/// -/// **Experimental.** This type is part of an experimental wire-protocol surface -/// and may change or be removed in future SDK or CLI releases. -/// -///
-#[derive(Debug, Clone, Default, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct McpExecuteSamplingResult {} - /// Remote MCP server name and optional overrides controlling reauthentication, OAuth client display name, and the callback success-page copy. /// ///
@@ -2770,6 +3056,24 @@ pub struct MetadataSnapshotRemoteMetadata { pub task_type: Option, } +/// Long context tier pricing (available for models with extended context windows) +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ModelBillingTokenPricesLongContext { + /// AI Credits cost per billing batch of cached tokens + #[serde(skip_serializing_if = "Option::is_none")] + pub cache_price: Option, + /// Maximum context window tokens for the long context tier + #[serde(skip_serializing_if = "Option::is_none")] + pub context_max: Option, + /// AI Credits cost per billing batch of input tokens + #[serde(skip_serializing_if = "Option::is_none")] + pub input_price: Option, + /// AI Credits cost per billing batch of output tokens + #[serde(skip_serializing_if = "Option::is_none")] + pub output_price: Option, +} + /// Token-level pricing information for this model #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -2777,15 +3081,21 @@ pub struct ModelBillingTokenPrices { /// Number of tokens per standard billing batch #[serde(skip_serializing_if = "Option::is_none")] pub batch_size: Option, - /// Price per billing batch of cached tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU = $0.01 USD) + /// AI Credits cost per billing batch of cached tokens #[serde(skip_serializing_if = "Option::is_none")] - pub cache_price: Option, - /// Price per billing batch of input tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU = $0.01 USD) + pub cache_price: Option, + /// Maximum context window tokens for the default tier #[serde(skip_serializing_if = "Option::is_none")] - pub input_price: Option, - /// Price per billing batch of output tokens in nano-AIUs (1 nano-AIU = 0.000000001 AIU, 1 AIU = $0.01 USD) + pub context_max: Option, + /// AI Credits cost per billing batch of input tokens #[serde(skip_serializing_if = "Option::is_none")] - pub output_price: Option, + pub input_price: Option, + /// Long context tier pricing (available for models with extended context windows) + #[serde(skip_serializing_if = "Option::is_none")] + pub long_context: Option, + /// AI Credits cost per billing batch of output tokens + #[serde(skip_serializing_if = "Option::is_none")] + pub output_price: Option, } /// Billing information @@ -9685,6 +9995,83 @@ pub struct SessionMcpOauthLoginResult { pub authorization_url: Option, } +/// Resource contents returned by the MCP server. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SessionMcpAppsReadResourceResult { + /// Resource contents returned by the server + pub contents: Vec, +} + +/// App-callable tools from the named MCP server. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SessionMcpAppsListToolsResult { + /// App-callable tools from the server + pub tools: Vec>, +} + +/// Identifies the target session. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SessionMcpAppsGetHostContextParams { + /// Target session identifier + pub session_id: SessionId, +} + +/// Current host context advertised to MCP App guests. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SessionMcpAppsGetHostContextResult { + /// Current host context + pub context: McpAppsHostContextDetails, +} + +/// Diagnostic snapshot of MCP Apps wiring for the named server. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SessionMcpAppsDiagnoseResult { + /// Capability negotiation snapshot + pub capability: McpAppsDiagnoseCapability, + /// What the server returned for this session + pub server: McpAppsDiagnoseServer, +} + /// Identifies the target session. /// ///
@@ -11020,6 +11407,36 @@ pub struct SessionFsSqliteExistsParams { pub session_id: SessionId, } +/// MCP CreateMessageResult payload (with optional 'tools' extension), present when action='success'. Treated as opaque at the schema layer; consumers should construct/consume it per the MCP CreateMessageResult shape. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+pub type McpExecuteSamplingResult = HashMap; + +/// The form values submitted by the user (present when action is 'accept') +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+pub type UIElicitationResponseContent = HashMap; + +/// Standard MCP CallToolResult +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+pub type SessionMcpAppsCallToolResult = HashMap; + /// Where the agent definition was loaded from /// ///
@@ -11199,7 +11616,7 @@ pub enum CopilotApiTokenAuthInfoType { CopilotApiToken, } -/// Server transport type: stdio, http, sse, or memory +/// Server transport type: stdio, http, sse (deprecated), or memory #[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum DiscoveredMcpServerType { /// Server communicates over stdio with a local child process. @@ -11208,7 +11625,7 @@ pub enum DiscoveredMcpServerType { /// Server communicates over streamable HTTP. #[serde(rename = "http")] Http, - /// Server communicates over Server-Sent Events. + /// Server communicates over Server-Sent Events (deprecated). #[serde(rename = "sse")] Sse, /// Server is backed by an in-memory runtime implementation. @@ -11552,6 +11969,200 @@ pub enum SessionLogLevel { Unknown, } +/// Allowed values for the `McpAppsHostContextDetailsAvailableDisplayMode` enumeration. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum McpAppsHostContextDetailsAvailableDisplayMode { + /// Rendered inline within the host conversation surface + #[serde(rename = "inline")] + Inline, + /// Rendered as a fullscreen overlay + #[serde(rename = "fullscreen")] + Fullscreen, + /// Rendered as a picture-in-picture floating panel + #[serde(rename = "pip")] + Pip, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + +/// Current display mode (SEP-1865) +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum McpAppsHostContextDetailsDisplayMode { + /// Rendered inline within the host conversation surface + #[serde(rename = "inline")] + Inline, + /// Rendered as a fullscreen overlay + #[serde(rename = "fullscreen")] + Fullscreen, + /// Rendered as a picture-in-picture floating panel + #[serde(rename = "pip")] + Pip, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + +/// Platform type for responsive design +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum McpAppsHostContextDetailsPlatform { + /// Host runs in a web browser + #[serde(rename = "web")] + Web, + /// Host runs as a desktop application + #[serde(rename = "desktop")] + Desktop, + /// Host runs on a mobile device + #[serde(rename = "mobile")] + Mobile, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + +/// UI theme preference per SEP-1865 +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum McpAppsHostContextDetailsTheme { + /// Light UI theme + #[serde(rename = "light")] + Light, + /// Dark UI theme + #[serde(rename = "dark")] + Dark, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + +/// Allowed values for the `McpAppsSetHostContextDetailsAvailableDisplayMode` enumeration. +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum McpAppsSetHostContextDetailsAvailableDisplayMode { + /// Rendered inline within the host conversation surface + #[serde(rename = "inline")] + Inline, + /// Rendered as a fullscreen overlay + #[serde(rename = "fullscreen")] + Fullscreen, + /// Rendered as a picture-in-picture floating panel + #[serde(rename = "pip")] + Pip, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + +/// Current display mode (SEP-1865) +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum McpAppsSetHostContextDetailsDisplayMode { + /// Rendered inline within the host conversation surface + #[serde(rename = "inline")] + Inline, + /// Rendered as a fullscreen overlay + #[serde(rename = "fullscreen")] + Fullscreen, + /// Rendered as a picture-in-picture floating panel + #[serde(rename = "pip")] + Pip, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + +/// Platform type for responsive design +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum McpAppsSetHostContextDetailsPlatform { + /// Host runs in a web browser + #[serde(rename = "web")] + Web, + /// Host runs as a desktop application + #[serde(rename = "desktop")] + Desktop, + /// Host runs on a mobile device + #[serde(rename = "mobile")] + Mobile, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + +/// UI theme preference per SEP-1865 +/// +///
+/// +/// **Experimental.** This type is part of an experimental wire-protocol surface +/// and may change or be removed in future SDK or CLI releases. +/// +///
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum McpAppsSetHostContextDetailsTheme { + /// Light UI theme + #[serde(rename = "light")] + Light, + /// Dark UI theme + #[serde(rename = "dark")] + Dark, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + /// Outcome of the sampling inference. 'success' produced a response; 'failure' encountered an error (including agent-side rejection by content filter or criteria); 'cancelled' the caller cancelled this execution via cancelSamplingExecution. /// ///
diff --git a/rust/src/generated/rpc.rs b/rust/src/generated/rpc.rs index f8d2ecb301..20dc48e809 100644 --- a/rust/src/generated/rpc.rs +++ b/rust/src/generated/rpc.rs @@ -2444,6 +2444,13 @@ pub struct SessionRpcMcp<'a> { } impl<'a> SessionRpcMcp<'a> { + /// `session.mcp.apps.*` sub-namespace. + pub fn apps(&self) -> SessionRpcMcpApps<'a> { + SessionRpcMcpApps { + session: self.session, + } + } + /// `session.mcp.oauth.*` sub-namespace. pub fn oauth(&self) -> SessionRpcMcpOauth<'a> { SessionRpcMcpOauth { @@ -2677,6 +2684,209 @@ impl<'a> SessionRpcMcp<'a> { } } +/// `session.mcp.apps.*` RPCs. +#[derive(Clone, Copy)] +pub struct SessionRpcMcpApps<'a> { + pub(crate) session: &'a Session, +} + +impl<'a> SessionRpcMcpApps<'a> { + /// Fetch an MCP resource (typically a `ui://` MCP App bundle, per SEP-1865) from a connected server. Requires the `mcp-apps` session capability. + /// + /// Wire method: `session.mcp.apps.readResource`. + /// + /// # Parameters + /// + /// * `params` - MCP server and resource URI to fetch. + /// + /// # Returns + /// + /// Resource contents returned by the MCP server. + /// + ///
+ /// + /// **Experimental.** This API is part of an experimental wire-protocol surface + /// and may change or be removed in future SDK or CLI releases. Pin both the + /// SDK and CLI versions if your code depends on it. + /// + ///
+ pub async fn read_resource( + &self, + params: McpAppsReadResourceRequest, + ) -> Result { + let mut wire_params = serde_json::to_value(params)?; + wire_params["sessionId"] = serde_json::Value::String(self.session.id().to_string()); + let _value = self + .session + .client() + .call( + rpc_methods::SESSION_MCP_APPS_READRESOURCE, + Some(wire_params), + ) + .await?; + Ok(serde_json::from_value(_value)?) + } + + /// List tools that an MCP App view is allowed to call (SEP-1865 visibility filter). Returns tools whose `_meta.ui.visibility` is unset (default `["model","app"]`) or includes `"app"`. + /// + /// Wire method: `session.mcp.apps.listTools`. + /// + /// # Parameters + /// + /// * `params` - MCP server to list app-callable tools for. + /// + /// # Returns + /// + /// App-callable tools from the named MCP server. + /// + ///
+ /// + /// **Experimental.** This API is part of an experimental wire-protocol surface + /// and may change or be removed in future SDK or CLI releases. Pin both the + /// SDK and CLI versions if your code depends on it. + /// + ///
+ pub async fn list_tools( + &self, + params: McpAppsListToolsRequest, + ) -> Result { + let mut wire_params = serde_json::to_value(params)?; + wire_params["sessionId"] = serde_json::Value::String(self.session.id().to_string()); + let _value = self + .session + .client() + .call(rpc_methods::SESSION_MCP_APPS_LISTTOOLS, Some(wire_params)) + .await?; + Ok(serde_json::from_value(_value)?) + } + + /// Call an MCP tool from an MCP App view (SEP-1865). Enforces the visibility check that prevents an app iframe from invoking model-only tools. Returns the standard MCP `CallToolResult`. + /// + /// Wire method: `session.mcp.apps.callTool`. + /// + /// # Parameters + /// + /// * `params` - MCP server, tool name, and arguments to invoke from an MCP App view. + /// + /// # Returns + /// + /// Standard MCP CallToolResult + /// + ///
+ /// + /// **Experimental.** This API is part of an experimental wire-protocol surface + /// and may change or be removed in future SDK or CLI releases. Pin both the + /// SDK and CLI versions if your code depends on it. + /// + ///
+ pub async fn call_tool( + &self, + params: McpAppsCallToolRequest, + ) -> Result { + let mut wire_params = serde_json::to_value(params)?; + wire_params["sessionId"] = serde_json::Value::String(self.session.id().to_string()); + let _value = self + .session + .client() + .call(rpc_methods::SESSION_MCP_APPS_CALLTOOL, Some(wire_params)) + .await?; + Ok(serde_json::from_value(_value)?) + } + + /// Replace the host context returned to MCP App guests on `ui/initialize`. Hosts use this to advertise theme, locale, or other metadata to the guest UI. + /// + /// Wire method: `session.mcp.apps.setHostContext`. + /// + /// # Parameters + /// + /// * `params` - Host context to advertise to MCP App guests. + /// + ///
+ /// + /// **Experimental.** This API is part of an experimental wire-protocol surface + /// and may change or be removed in future SDK or CLI releases. Pin both the + /// SDK and CLI versions if your code depends on it. + /// + ///
+ pub async fn set_host_context( + &self, + params: McpAppsSetHostContextRequest, + ) -> Result<(), Error> { + let mut wire_params = serde_json::to_value(params)?; + wire_params["sessionId"] = serde_json::Value::String(self.session.id().to_string()); + let _value = self + .session + .client() + .call( + rpc_methods::SESSION_MCP_APPS_SETHOSTCONTEXT, + Some(wire_params), + ) + .await?; + Ok(()) + } + + /// Read the current host context advertised to MCP App guests. + /// + /// Wire method: `session.mcp.apps.getHostContext`. + /// + /// # Returns + /// + /// Current host context advertised to MCP App guests. + /// + ///
+ /// + /// **Experimental.** This API is part of an experimental wire-protocol surface + /// and may change or be removed in future SDK or CLI releases. Pin both the + /// SDK and CLI versions if your code depends on it. + /// + ///
+ pub async fn get_host_context(&self) -> Result { + let wire_params = serde_json::json!({ "sessionId": self.session.id() }); + let _value = self + .session + .client() + .call( + rpc_methods::SESSION_MCP_APPS_GETHOSTCONTEXT, + Some(wire_params), + ) + .await?; + Ok(serde_json::from_value(_value)?) + } + + /// Diagnose MCP Apps wiring for a specific MCP server. Reports the session capability, feature-flag state, advertised extension, and how many tools have `_meta.ui` populated. + /// + /// Wire method: `session.mcp.apps.diagnose`. + /// + /// # Parameters + /// + /// * `params` - MCP server to diagnose MCP Apps wiring for. + /// + /// # Returns + /// + /// Diagnostic snapshot of MCP Apps wiring for the named server. + /// + ///
+ /// + /// **Experimental.** This API is part of an experimental wire-protocol surface + /// and may change or be removed in future SDK or CLI releases. Pin both the + /// SDK and CLI versions if your code depends on it. + /// + ///
+ pub async fn diagnose( + &self, + params: McpAppsDiagnoseRequest, + ) -> Result { + let mut wire_params = serde_json::to_value(params)?; + wire_params["sessionId"] = serde_json::Value::String(self.session.id().to_string()); + let _value = self + .session + .client() + .call(rpc_methods::SESSION_MCP_APPS_DIAGNOSE, Some(wire_params)) + .await?; + Ok(serde_json::from_value(_value)?) + } +} + /// `session.mcp.oauth.*` RPCs. #[derive(Clone, Copy)] pub struct SessionRpcMcpOauth<'a> { diff --git a/rust/src/generated/session_events.rs b/rust/src/generated/session_events.rs index 20a123cd1c..5e78c69320 100644 --- a/rust/src/generated/session_events.rs +++ b/rust/src/generated/session_events.rs @@ -171,6 +171,8 @@ pub enum SessionEventType { SessionMcpServerStatusChanged, #[serde(rename = "session.extensions_loaded")] SessionExtensionsLoaded, + #[serde(rename = "mcp_app.tool_call_complete")] + McpAppToolCallComplete, /// Unknown event type for forward compatibility. #[default] #[serde(other)] @@ -345,6 +347,8 @@ pub enum SessionEventData { SessionMcpServerStatusChanged(SessionMcpServerStatusChangedData), #[serde(rename = "session.extensions_loaded")] SessionExtensionsLoaded(SessionExtensionsLoadedData), + #[serde(rename = "mcp_app.tool_call_complete")] + McpAppToolCallComplete(McpAppToolCallCompleteData), } /// A session event with typed data payload. @@ -499,6 +503,9 @@ pub struct SessionErrorData { /// GitHub request tracing ID (x-github-request-id header) for correlating with server-side logs #[serde(skip_serializing_if = "Option::is_none")] pub provider_call_id: Option, + /// Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + #[serde(skip_serializing_if = "Option::is_none")] + pub service_request_id: Option, /// Error stack trace, when available #[serde(skip_serializing_if = "Option::is_none")] pub stack: Option, @@ -589,6 +596,9 @@ pub struct SessionModelChangeData { /// Reason the change happened, when not user-initiated. Currently `"rate_limit_auto_switch"` for changes triggered by the auto-mode-switch rate-limit recovery path. UI clients can use this to render contextual copy. #[serde(skip_serializing_if = "Option::is_none")] pub cause: Option, + /// Context tier after the model change; null explicitly clears a previously selected tier + #[serde(skip_serializing_if = "Option::is_none")] + pub context_tier: Option, /// Newly selected model identifier pub new_model: String, /// Model that was previously selected, if any @@ -1008,6 +1018,9 @@ pub struct SessionCompactionCompleteData { /// GitHub request tracing ID (x-github-request-id header) for the compaction LLM call #[serde(skip_serializing_if = "Option::is_none")] pub request_id: Option, + /// Copilot service request ID (x-copilot-service-request-id header) for the compaction LLM call + #[serde(skip_serializing_if = "Option::is_none")] + pub service_request_id: Option, /// Whether compaction completed successfully pub success: bool, /// LLM-generated summary of the compacted conversation history @@ -1208,6 +1221,9 @@ pub struct AssistantMessageData { /// GitHub request tracing ID (x-github-request-id header) for correlating with server-side logs #[serde(skip_serializing_if = "Option::is_none")] pub request_id: Option, + /// Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + #[serde(skip_serializing_if = "Option::is_none")] + pub service_request_id: Option, /// Tool invocations requested by the assistant in this message #[serde(default)] pub tool_requests: Vec, @@ -1370,6 +1386,9 @@ pub struct AssistantUsageData { /// Number of output tokens used for reasoning (e.g., chain-of-thought) #[serde(skip_serializing_if = "Option::is_none")] pub reasoning_tokens: Option, + /// Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + #[serde(skip_serializing_if = "Option::is_none")] + pub service_request_id: Option, /// Time to first token in milliseconds. Only available for streaming requests #[serde(skip_serializing_if = "Option::is_none")] pub time_to_first_token_ms: Option, @@ -1397,6 +1416,9 @@ pub struct ModelCallFailureData { /// GitHub request tracing ID (x-github-request-id header) for server-side log correlation #[serde(skip_serializing_if = "Option::is_none")] pub provider_call_id: Option, + /// Copilot service request ID (x-copilot-service-request-id header) for CAPI log correlation + #[serde(skip_serializing_if = "Option::is_none")] + pub service_request_id: Option, /// Where the failed model call originated pub source: ModelCallFailureSource, /// HTTP status code from the failed request @@ -1613,6 +1635,102 @@ pub struct ToolExecutionCompleteContentResource { pub r#type: ToolExecutionCompleteContentResourceType, } +/// Schema for the `ToolExecutionCompleteUIResourceMetaUICsp` type. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteUIResourceMetaUICsp { + #[serde(default)] + pub base_uri_domains: Vec, + #[serde(default)] + pub connect_domains: Vec, + #[serde(default)] + pub frame_domains: Vec, + #[serde(default)] + pub resource_domains: Vec, +} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsCamera` type. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsCamera {} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite` type. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite {} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation` type. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation {} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone` type. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone {} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissions` type. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteUIResourceMetaUIPermissions { + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsCamera` type. + #[serde(skip_serializing_if = "Option::is_none")] + pub camera: Option, + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite` type. + #[serde(skip_serializing_if = "Option::is_none")] + pub clipboard_write: Option, + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation` type. + #[serde(skip_serializing_if = "Option::is_none")] + pub geolocation: Option, + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone` type. + #[serde(skip_serializing_if = "Option::is_none")] + pub microphone: Option, +} + +/// Schema for the `ToolExecutionCompleteUIResourceMetaUI` type. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteUIResourceMetaUI { + /// Schema for the `ToolExecutionCompleteUIResourceMetaUICsp` type. + #[serde(skip_serializing_if = "Option::is_none")] + pub csp: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub domain: Option, + /// Schema for the `ToolExecutionCompleteUIResourceMetaUIPermissions` type. + #[serde(skip_serializing_if = "Option::is_none")] + pub permissions: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub prefers_border: Option, +} + +/// Resource-level UI metadata (CSP, permissions, visual preferences) +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteUIResourceMeta { + /// Schema for the `ToolExecutionCompleteUIResourceMetaUI` type. + #[serde(skip_serializing_if = "Option::is_none")] + pub ui: Option, +} + +/// MCP Apps UI resource content for rendering in a sandboxed iframe +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteUIResource { + /// Resource-level UI metadata (CSP, permissions, visual preferences) + #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")] + pub meta: Option, + /// Base64-encoded HTML content + #[serde(skip_serializing_if = "Option::is_none")] + pub blob: Option, + /// MIME type of the content + pub mime_type: String, + /// HTML content as a string + #[serde(skip_serializing_if = "Option::is_none")] + pub text: Option, + /// The ui:// URI of the resource + pub uri: String, +} + /// Tool execution result on success #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -1625,6 +1743,44 @@ pub struct ToolExecutionCompleteResult { /// Full detailed tool result for UI/timeline display, preserving complete content such as diffs. Falls back to content when absent. #[serde(skip_serializing_if = "Option::is_none")] pub detailed_content: Option, + /// MCP Apps UI resource content for rendering in a sandboxed iframe + #[serde(skip_serializing_if = "Option::is_none")] + pub ui_resource: Option, +} + +/// Schema for the `ToolExecutionCompleteToolDescriptionMetaUI` type. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteToolDescriptionMetaUI { + /// URI of the UI resource + #[serde(skip_serializing_if = "Option::is_none")] + pub resource_uri: Option, + /// Who can access this tool + #[serde(default)] + pub visibility: Vec, +} + +/// MCP Apps metadata for UI resource association +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteToolDescriptionMeta { + /// Schema for the `ToolExecutionCompleteToolDescriptionMetaUI` type. + #[serde(skip_serializing_if = "Option::is_none")] + pub ui: Option, +} + +/// Tool definition metadata, present for MCP tools with MCP Apps support +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ToolExecutionCompleteToolDescription { + /// MCP Apps metadata for UI resource association + #[serde(rename = "_meta", skip_serializing_if = "Option::is_none")] + pub meta: Option, + /// Tool description + #[serde(skip_serializing_if = "Option::is_none")] + pub description: Option, + /// Tool name + pub name: String, } /// Session event "tool.execution_complete". Tool execution completion results including success status, detailed output, and error information @@ -1658,6 +1814,9 @@ pub struct ToolExecutionCompleteData { pub success: bool, /// Unique identifier for the completed tool call pub tool_call_id: String, + /// Tool definition metadata, present for MCP tools with MCP Apps support + #[serde(skip_serializing_if = "Option::is_none")] + pub tool_description: Option, /// Tool-specific telemetry data (e.g., CodeQL check counts, grep match counts) #[serde(default)] pub tool_telemetry: HashMap, @@ -1688,6 +1847,12 @@ pub struct SkillInvokedData { /// Version of the plugin this skill originated from, when applicable #[serde(skip_serializing_if = "Option::is_none")] pub plugin_version: Option, + /// Source identifier for where the skill was discovered. Known values include: project (workspace skill), inherited (parent-directory skill), personal-copilot (~/.copilot/skills), personal-agents (~/.agents/skills), personal-claude (~/.claude/skills), custom (configured directory), plugin (installed plugin), builtin (bundled runtime skill), and remote (org/enterprise skill) + #[serde(skip_serializing_if = "Option::is_none")] + pub source: Option, + /// What triggered the skill invocation: `user-invoked` (explicit user action, such as via a slash command or UI affordance), `agent-invoked` (agent requested the skill), or `context-load` (loaded as part of another context, such as preloading skills configured on a custom agent or subagent) + #[serde(skip_serializing_if = "Option::is_none")] + pub trigger: Option, } /// Session event "subagent.started". Sub-agent startup details including parent tool call and agent information @@ -2763,6 +2928,9 @@ pub struct CapabilitiesChangedUI { /// Whether elicitation is now supported #[serde(skip_serializing_if = "Option::is_none")] pub elicitation: Option, + /// Whether MCP Apps (SEP-1865) UI passthrough is now supported + #[serde(skip_serializing_if = "Option::is_none")] + pub mcp_apps: Option, } /// Session event "capabilities.changed". Session capability change notification @@ -2894,11 +3062,20 @@ pub struct McpServersLoadedServer { pub error: Option, /// Server name (config key) pub name: String, + /// Name of the plugin that supplied the effective MCP server config, only when source is plugin + #[serde(skip_serializing_if = "Option::is_none")] + pub plugin_name: Option, + /// Version of the plugin that supplied the effective MCP server config, only when source is plugin + #[serde(skip_serializing_if = "Option::is_none")] + pub plugin_version: Option, /// Configuration source: user, workspace, plugin, or builtin #[serde(skip_serializing_if = "Option::is_none")] pub source: Option, /// Connection status: connected, failed, needs-auth, pending, disabled, or not_configured pub status: McpServerStatus, + /// Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server) + #[serde(skip_serializing_if = "Option::is_none")] + pub transport: Option, } /// Session event "session.mcp_servers_loaded". @@ -2913,6 +3090,9 @@ pub struct SessionMcpServersLoadedData { #[derive(Debug, Clone, Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SessionMcpServerStatusChangedData { + /// Error message if the server entered a failed state + #[serde(skip_serializing_if = "Option::is_none")] + pub error: Option, /// Name of the MCP server whose status changed pub server_name: String, /// Connection status: connected, failed, needs-auth, pending, disabled, or not_configured @@ -2941,6 +3121,61 @@ pub struct SessionExtensionsLoadedData { pub extensions: Vec, } +/// Set when the underlying tools/call threw an error before returning a CallToolResult +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppToolCallCompleteError { + /// Human-readable error message + pub message: String, +} + +/// Schema for the `McpAppToolCallCompleteToolMetaUI` type. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppToolCallCompleteToolMetaUI { + /// `ui://` URI declared by the tool's `_meta.ui.resourceUri` + #[serde(skip_serializing_if = "Option::is_none")] + pub resource_uri: Option, + /// Tool visibility per SEP-1865 (typically a subset of `["model","app"]`) + #[serde(default)] + pub visibility: Vec, +} + +/// The tool's `_meta.ui` block at the time of the call, so consumers can decide whether to forward the result to the model without re-listing tools. +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppToolCallCompleteToolMeta { + /// Schema for the `McpAppToolCallCompleteToolMetaUI` type. + #[serde(skip_serializing_if = "Option::is_none")] + pub ui: Option, +} + +/// Session event "mcp_app.tool_call_complete". MCP App view called a tool on a connected MCP server (SEP-1865) +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct McpAppToolCallCompleteData { + /// Arguments passed to the tool by the app view, if any + #[serde(default)] + pub arguments: HashMap, + /// Wall-clock duration of the underlying tools/call in milliseconds + pub duration_ms: f64, + /// Set when the underlying tools/call threw an error before returning a CallToolResult + #[serde(skip_serializing_if = "Option::is_none")] + pub error: Option, + /// Standard MCP CallToolResult returned by the server. Present whether or not the call set isError. + #[serde(default)] + pub result: HashMap, + /// Name of the MCP server hosting the tool + pub server_name: String, + /// True when the call completed without throwing AND the MCP CallToolResult did not set isError + pub success: bool, + /// The tool's `_meta.ui` block at the time of the call, so consumers can decide whether to forward the result to the model without re-listing tools. + #[serde(skip_serializing_if = "Option::is_none")] + pub tool_meta: Option, + /// MCP tool name that was invoked + pub tool_name: String, +} + /// Hosting platform type of the repository (github or ado) #[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum WorkingDirectoryContextHostType { @@ -2974,6 +3209,20 @@ pub enum ReasoningSummary { Unknown, } +#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum SessionModelChangeDataContextTier { + /// Default context tier with standard context window size. + #[serde(rename = "default")] + Default, + /// Extended context tier with a larger context window. + #[serde(rename = "long_context")] + LongContext, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + /// The session mode the agent is operating in #[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum SessionMode { @@ -3231,6 +3480,39 @@ pub enum ToolExecutionCompleteContent { Resource(ToolExecutionCompleteContentResource), } +/// Allowed values for the `ToolExecutionCompleteToolDescriptionMetaUIVisibility` enumeration. +#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum ToolExecutionCompleteToolDescriptionMetaUIVisibility { + /// Tool is callable by the model (LLM tool surface) + #[serde(rename = "model")] + Model, + /// Tool is callable by the MCP App view (iframe) via session.mcp.apps.callTool + #[serde(rename = "app")] + App, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + +/// What triggered the skill invocation: `user-invoked` (explicit user action, such as via a slash command or UI affordance), `agent-invoked` (agent requested the skill), or `context-load` (loaded as part of another context, such as preloading skills configured on a custom agent or subagent) +#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum SkillInvokedTrigger { + /// Skill invocation requested explicitly by the user, such as via a slash command or UI affordance. + #[serde(rename = "user-invoked")] + UserInvoked, + /// Skill invocation requested by the agent. + #[serde(rename = "agent-invoked")] + AgentInvoked, + /// Skill content loaded as part of another context, such as a configured custom agent or subagent. + #[serde(rename = "context-load")] + ContextLoad, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + /// Message role: "system" for system prompts, "developer" for developer-injected instructions #[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum SystemMessageRole { @@ -3828,6 +4110,27 @@ pub enum McpServerStatus { Unknown, } +/// Transport mechanism: stdio, http, sse (deprecated), or memory (in-process MCP server) +#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub enum McpServerTransport { + /// Server communicates over stdio with a local child process. + #[serde(rename = "stdio")] + Stdio, + /// Server communicates over streamable HTTP. + #[serde(rename = "http")] + Http, + /// Server communicates over Server-Sent Events (deprecated). + #[serde(rename = "sse")] + Sse, + /// Server is backed by an in-memory runtime implementation. + #[serde(rename = "memory")] + Memory, + /// Unknown variant for forward compatibility. + #[default] + #[serde(other)] + Unknown, +} + /// Discovery source #[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] pub enum ExtensionsLoadedExtensionSource { diff --git a/scripts/codegen/rust.ts b/scripts/codegen/rust.ts index db3c7792cd..e23ff43858 100644 --- a/scripts/codegen/rust.ts +++ b/scripts/codegen/rust.ts @@ -195,6 +195,8 @@ function safeRustFieldName(name: string): string { interface RustCodegenCtx { /** Accumulated struct definitions. */ structs: string[]; + /** Accumulated type alias definitions. */ + typeAliases: string[]; /** Accumulated enum definitions. */ enums: string[]; /** Track generated type names to avoid duplicates. */ @@ -411,6 +413,7 @@ function makeCtx( ): RustCodegenCtx { return { structs: [], + typeAliases: [], enums: [], generatedNames: new Set(), nonDefaultableTypes: new Set(options.nonDefaultableTypes ?? []), @@ -456,6 +459,87 @@ function pushRustDoc(lines: string[], text: string | undefined, indent = ""): vo } } +function isRustMapSchema(schema: JSONSchema7): boolean { + const hasProperties = + !!schema.properties && Object.keys(schema.properties).length > 0; + return ( + (schema.type === "object" || schema.additionalProperties !== undefined) && + !hasProperties && + schema.additionalProperties !== undefined && + schema.additionalProperties !== false + ); +} + +function rustMapValueType( + schema: JSONSchema7, + parentTypeName: string, + ctx: RustCodegenCtx, +): string { + const additionalProperties = schema.additionalProperties; + if ( + additionalProperties && + typeof additionalProperties === "object" && + Object.keys(additionalProperties as Record).length > 0 + ) { + const valueSchema = additionalProperties as JSONSchema7; + if (valueSchema.type === "object" && valueSchema.properties) { + const valueName = (valueSchema.title as string) || `${parentTypeName}Value`; + emitRustStruct(valueName, valueSchema, ctx); + return valueName; + } + return resolveRustType(valueSchema, parentTypeName, "value", true, ctx); + } + return "serde_json::Value"; +} + +function rustMapType( + schema: JSONSchema7, + parentTypeName: string, + ctx: RustCodegenCtx, +): string { + return `HashMap`; +} + +function emitRustTypeAlias( + typeName: string, + schema: JSONSchema7, + aliasType: string, + ctx: RustCodegenCtx, + description?: string, +): void { + if (ctx.generatedNames.has(typeName)) return; + ctx.generatedNames.add(typeName); + + const lines: string[] = []; + pushRustDoc(lines, description || schema.description); + pushRustExperimentalDocs( + lines, + isSchemaExperimental(schema) || ctx.experimentalTypeNames.has(typeName), + ); + if (isSchemaDeprecated(schema)) { + lines.push(...rustDeprecatedAttributes()); + } + const aliasVis = isSchemaInternal(schema) ? "pub(crate)" : "pub"; + lines.push(`${aliasVis} type ${typeName} = ${aliasType};`); + ctx.typeAliases.push(lines.join("\n")); +} + +function emitRustMapAlias( + typeName: string, + schema: JSONSchema7, + ctx: RustCodegenCtx, + description?: string, +): void { + if (ctx.generatedNames.has(typeName)) return; + emitRustTypeAlias( + typeName, + schema, + rustMapType(schema, typeName, ctx), + ctx, + description, + ); +} + function rustRpcResultDescription( method: RpcMethod, resultSchema: JSONSchema7 | undefined, @@ -712,28 +796,8 @@ function resolveRustType( emitRustStruct(structName, propSchema, ctx); return wrapOption(structName, isRequired); } - if (propSchema.additionalProperties) { - if ( - typeof propSchema.additionalProperties === "object" && - Object.keys(propSchema.additionalProperties as Record) - .length > 0 - ) { - const ap = propSchema.additionalProperties as JSONSchema7; - if (ap.type === "object" && ap.properties) { - const valueName = (ap.title as string) || `${nestedName}Value`; - emitRustStruct(valueName, ap, ctx); - return wrapOption(`HashMap`, isRequired); - } - const valueType = resolveRustType( - ap, - parentTypeName, - `${jsonPropName}Value`, - true, - ctx, - ); - return wrapOption(`HashMap`, isRequired); - } - return wrapOption("HashMap", isRequired); + if (isRustMapSchema(propSchema)) { + return wrapOption(rustMapType(propSchema, nestedName, ctx), isRequired); } return wrapOption("serde_json::Value", isRequired); } @@ -1153,6 +1217,12 @@ export function generateSessionEventsCode(schema: JSONSchema7): string { out.push(""); } + // Supporting type aliases + for (const block of ctx.typeAliases) { + out.push(block); + out.push(""); + } + // Supporting enums for (const block of ctx.enums) { out.push(block); @@ -1393,6 +1463,8 @@ function generateApiTypesCode( getEnumValueDescriptions(schema), isSchemaExperimental(schema), ); + } else if (isRustMapSchema(schema)) { + emitRustMapAlias(name, schema, ctx, schema.description); } else if (asGeneratedObjectSchema(schema, defCollections)) { emitRustStruct( name, @@ -1453,6 +1525,8 @@ function generateApiTypesCode( if (resolved) { if (resolved.enum && Array.isArray(resolved.enum)) { // Already generated from definitions + } else if (isRustMapSchema(resolved)) { + emitRustMapAlias(resultName, resolved, ctx, resolved.description); } else if (isObjectSchema(resolved)) { emitRustStruct(resultName, resolved, ctx, resolved.description); } @@ -1503,6 +1577,11 @@ function generateApiTypesCode( out.push(""); } + for (const block of ctx.typeAliases) { + out.push(block); + out.push(""); + } + for (const block of ctx.enums) { out.push(block); out.push(""); diff --git a/test/harness/package-lock.json b/test/harness/package-lock.json index 3e29965e54..b3692694a3 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.52-1", + "@github/copilot": "^1.0.52-4", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14", @@ -464,9 +464,9 @@ } }, "node_modules/@github/copilot": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.52-1.tgz", - "integrity": "sha512-oz6m/dOpTU+FaCWXqYZj5JkJmRT+/RYcrmtGal39V+gOxTA2Nc9wIeLH1SMwMoOXC9Q6DN6keiY0wqWcHirPVg==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-1.0.52-4.tgz", + "integrity": "sha512-XoVTkovJZgO2i4izgAvzElqKtTwEkenYJ6vpH1X7LCXrp0YWaiS9bhHDuSawhDE721C8CRXRfq8MZ8SKJWhnxw==", "dev": true, "license": "SEE LICENSE IN LICENSE.md", "dependencies": { @@ -476,20 +476,20 @@ "copilot": "npm-loader.js" }, "optionalDependencies": { - "@github/copilot-darwin-arm64": "1.0.52-1", - "@github/copilot-darwin-x64": "1.0.52-1", - "@github/copilot-linux-arm64": "1.0.52-1", - "@github/copilot-linux-x64": "1.0.52-1", - "@github/copilot-linuxmusl-arm64": "1.0.52-1", - "@github/copilot-linuxmusl-x64": "1.0.52-1", - "@github/copilot-win32-arm64": "1.0.52-1", - "@github/copilot-win32-x64": "1.0.52-1" + "@github/copilot-darwin-arm64": "1.0.52-4", + "@github/copilot-darwin-x64": "1.0.52-4", + "@github/copilot-linux-arm64": "1.0.52-4", + "@github/copilot-linux-x64": "1.0.52-4", + "@github/copilot-linuxmusl-arm64": "1.0.52-4", + "@github/copilot-linuxmusl-x64": "1.0.52-4", + "@github/copilot-win32-arm64": "1.0.52-4", + "@github/copilot-win32-x64": "1.0.52-4" } }, "node_modules/@github/copilot-darwin-arm64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.52-1.tgz", - "integrity": "sha512-DWXtC/yItZVtkSQhPyRMEkFwa2mcY2rg2cu/uwJ15L9ReiYvlKYEZQDe1TMqkT+U6+k9KjA2L2HQfXVm14/vTw==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-arm64/-/copilot-darwin-arm64-1.0.52-4.tgz", + "integrity": "sha512-SGu8mX69aZgbL1/EatAka/AJHOpfxdvh02euHmx0Q4VyvQS8dz++2gVprvaInaUO0i8sjsvniZyqBt1mfWJA/w==", "cpu": [ "arm64" ], @@ -504,9 +504,9 @@ } }, "node_modules/@github/copilot-darwin-x64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.52-1.tgz", - "integrity": "sha512-NFTJkzzlTALMfbj9CDJ7N09PRPTVFq1+71hk+zoNx1uT/pi954liV6tKSaNAihPIXTMQKfJXGwEdjtvACpc8Vg==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-darwin-x64/-/copilot-darwin-x64-1.0.52-4.tgz", + "integrity": "sha512-nO1qy+/V6PJzLCPoOCDqeNiC6yAV25lVI813rw+kfTTvIIhY4GoJWVg8FlL/pjul2DR0S0Zw4JBZyHzyECgQ3Q==", "cpu": [ "x64" ], @@ -521,9 +521,9 @@ } }, "node_modules/@github/copilot-linux-arm64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.52-1.tgz", - "integrity": "sha512-CZE29v+RPJClHgVE1rU+RpRWSG8lm48koRZ0taKVopqLRD6NWKjBOwFKYJojk08H8/K+BWr/paM5+R8hEZHxZw==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-arm64/-/copilot-linux-arm64-1.0.52-4.tgz", + "integrity": "sha512-a+ukt+y9ZzxOft32i1AZZKTnCsvL9nwSRr2viURn0GPO74j6d4J29xGKBYAymmT1L431ToSWxrVo7wHi4TOxgw==", "cpu": [ "arm64" ], @@ -538,9 +538,9 @@ } }, "node_modules/@github/copilot-linux-x64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.52-1.tgz", - "integrity": "sha512-tJhLQV70TJLq3hPXg7P6pHPfE4vaT2nENIXZsHu6fBkOcsSAxX1APSv6Bkyfsiod8EfFHkcG2+n7VXiVg8WqFw==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-linux-x64/-/copilot-linux-x64-1.0.52-4.tgz", + "integrity": "sha512-em34O2QVZWnqAdionbNhkshzmHxxGUed3tp3IU4OSkJr3yVpDRtbsiOYIx+GT+bVY2P1nyRTcAyrvVrle6uf5A==", "cpu": [ "x64" ], @@ -555,9 +555,9 @@ } }, "node_modules/@github/copilot-linuxmusl-arm64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.52-1.tgz", - "integrity": "sha512-u24wHsUumldUEPWX/5z5IEuJvixiQEYF82N04P1g65dvOknq+89dpj+GND4Rh3Vr5u13drgj5AJqkJbWB8N+EQ==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-arm64/-/copilot-linuxmusl-arm64-1.0.52-4.tgz", + "integrity": "sha512-0oofPJD8brQ1EEexvoFpfkv0qTFTwnJs6M6vIp6GWmSDuI0HGsQGhA2GO0yDPlv8g3sLGM2esSeRYkc/iMXliA==", "cpu": [ "arm64" ], @@ -572,9 +572,9 @@ } }, "node_modules/@github/copilot-linuxmusl-x64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.52-1.tgz", - "integrity": "sha512-wM22FxcHL8NlnesKKQPPvtk4ojqefN7irU5tQcX+IunpD1izVQl7AOXhZyHoQ21zQnN0De8EapxOUc+WnvlxpA==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-linuxmusl-x64/-/copilot-linuxmusl-x64-1.0.52-4.tgz", + "integrity": "sha512-uoWj7Uxt8lth5/LpJgNK/oGuacnsZzZ25X2J4sGTNTMGR+xqCRavHoiUzwrs3w1mprnvO18b1TZKocSQNt/wlQ==", "cpu": [ "x64" ], @@ -589,9 +589,9 @@ } }, "node_modules/@github/copilot-win32-arm64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.52-1.tgz", - "integrity": "sha512-ecvfl9N7DPSwpiT2ZNUSXR1ZrSKwpkByOU6VcNphh4RptPZ0iNfyRNLhFCwSfFz+FvB6z2LZi+F7jSzQ3SaT3w==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-arm64/-/copilot-win32-arm64-1.0.52-4.tgz", + "integrity": "sha512-aNTWW+HhYjA0ultZywv2c+NDiN47ZVf9RS3vQThYKBF2kxUS/gT482wU9A7hqJYgEsF39s/EAYrZOc2AF9eo3Q==", "cpu": [ "arm64" ], @@ -606,9 +606,9 @@ } }, "node_modules/@github/copilot-win32-x64": { - "version": "1.0.52-1", - "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.52-1.tgz", - "integrity": "sha512-a9Ct7krktP+/pfPdh/K57deYzzmL13e5Tb1pf5E152u4o/5xKzfgroNFUOzotFfFhs1jFhdzKCm3WHNLIvVEHA==", + "version": "1.0.52-4", + "resolved": "https://registry.npmjs.org/@github/copilot-win32-x64/-/copilot-win32-x64-1.0.52-4.tgz", + "integrity": "sha512-7hMKWcALIFuOlb5NJL6BXbCHrfrXS1ZOqcXg9IQji9yJu9IgsFHXno0tOmnOUUupikCNZLPQAZtMj0C18vabRw==", "cpu": [ "x64" ], diff --git a/test/harness/package.json b/test/harness/package.json index dddf8fa5fc..ecad54d89b 100644 --- a/test/harness/package.json +++ b/test/harness/package.json @@ -11,7 +11,7 @@ "test": "vitest run" }, "devDependencies": { - "@github/copilot": "^1.0.52-1", + "@github/copilot": "^1.0.52-4", "@modelcontextprotocol/sdk": "^1.26.0", "@types/node": "^25.3.3", "@types/node-forge": "^1.3.14",