+
+
diff --git a/src/main/java/com/github/copilot/sdk/CopilotModel.java b/src/main/java/com/github/copilot/sdk/CopilotModel.java deleted file mode 100644 index 7f6b5bd40..000000000 --- a/src/main/java/com/github/copilot/sdk/CopilotModel.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.github.copilot.sdk; - -/** - * Available Copilot models. - * - *
- * The actual availability of models depends on your GitHub Copilot - * subscription. - */ -public enum CopilotModel { - /** Claude Sonnet 4.5 */ - CLAUDE_SONNET_4_5("claude-sonnet-4.5"), - /** Claude Haiku 4.5 */ - CLAUDE_HAIKU_4_5("claude-haiku-4.5"), - /** Claude Opus 4.5 */ - CLAUDE_OPUS_4_5("claude-opus-4.5"), - /** Claude Sonnet 4 */ - CLAUDE_SONNET_4("claude-sonnet-4"), - /** GPT-5.2 Codex */ - GPT_5_2_CODEX("gpt-5.2-codex"), - /** GPT-5.1 Codex Max */ - GPT_5_1_CODEX_MAX("gpt-5.1-codex-max"), - /** GPT-5.1 Codex */ - GPT_5_1_CODEX("gpt-5.1-codex"), - /** GPT-5.2 */ - GPT_5_2("gpt-5.2"), - /** GPT-5.1 */ - GPT_5_1("gpt-5.1"), - /** GPT-5 */ - GPT_5("gpt-5"), - /** GPT-5.1 Codex Mini */ - GPT_5_1_CODEX_MINI("gpt-5.1-codex-mini"), - /** GPT-5 Mini */ - GPT_5_MINI("gpt-5-mini"), - /** GPT-4.1 */ - GPT_4_1("gpt-4.1"), - /** Gemini 3 Pro Preview */ - GEMINI_3_PRO_PREVIEW("gemini-3-pro-preview"); - - private final String value; - - CopilotModel(String value) { - this.value = value; - } - - /** - * Returns the model identifier string to use with the API. - * - * @return the model identifier - */ - public String getValue() { - return value; - } - - /** - * Returns the string representation of the model. - * - * @return the model identifier string - */ - @Override - public String toString() { - return value; - } -} diff --git a/src/main/java/com/github/copilot/sdk/SdkProtocolVersion.java b/src/main/java/com/github/copilot/sdk/SdkProtocolVersion.java index 3539a595f..7cbf5908d 100644 --- a/src/main/java/com/github/copilot/sdk/SdkProtocolVersion.java +++ b/src/main/java/com/github/copilot/sdk/SdkProtocolVersion.java @@ -12,7 +12,7 @@ */ public enum SdkProtocolVersion { - LATEST(1); + LATEST(2); private int versionNumber; diff --git a/src/main/java/com/github/copilot/sdk/events/AbstractSessionEvent.java b/src/main/java/com/github/copilot/sdk/events/AbstractSessionEvent.java index 39cd8e4f7..d648e2de5 100644 --- a/src/main/java/com/github/copilot/sdk/events/AbstractSessionEvent.java +++ b/src/main/java/com/github/copilot/sdk/events/AbstractSessionEvent.java @@ -57,7 +57,8 @@ public abstract sealed class AbstractSessionEvent permits AssistantTurnStartEvent, AssistantIntentEvent, AssistantReasoningEvent, AssistantReasoningDeltaEvent, AssistantMessageEvent, AssistantMessageDeltaEvent, AssistantTurnEndEvent, AssistantUsageEvent, AbortEvent, // Tool events - ToolUserRequestedEvent, ToolExecutionStartEvent, ToolExecutionPartialResultEvent, ToolExecutionCompleteEvent, + ToolUserRequestedEvent, ToolExecutionStartEvent, ToolExecutionPartialResultEvent, ToolExecutionProgressEvent, + ToolExecutionCompleteEvent, // User events UserMessageEvent, PendingMessagesModifiedEvent, // Other events diff --git a/src/main/java/com/github/copilot/sdk/events/SessionEventParser.java b/src/main/java/com/github/copilot/sdk/events/SessionEventParser.java index e54beb043..4388fae13 100644 --- a/src/main/java/com/github/copilot/sdk/events/SessionEventParser.java +++ b/src/main/java/com/github/copilot/sdk/events/SessionEventParser.java @@ -73,6 +73,7 @@ public class SessionEventParser { TYPE_MAP.put("tool.user_requested", ToolUserRequestedEvent.class); TYPE_MAP.put("tool.execution_start", ToolExecutionStartEvent.class); TYPE_MAP.put("tool.execution_partial_result", ToolExecutionPartialResultEvent.class); + TYPE_MAP.put("tool.execution_progress", ToolExecutionProgressEvent.class); TYPE_MAP.put("tool.execution_complete", ToolExecutionCompleteEvent.class); TYPE_MAP.put("subagent.started", SubagentStartedEvent.class); TYPE_MAP.put("subagent.completed", SubagentCompletedEvent.class); diff --git a/src/main/java/com/github/copilot/sdk/events/ToolExecutionProgressEvent.java b/src/main/java/com/github/copilot/sdk/events/ToolExecutionProgressEvent.java new file mode 100644 index 000000000..e7d6217ed --- /dev/null +++ b/src/main/java/com/github/copilot/sdk/events/ToolExecutionProgressEvent.java @@ -0,0 +1,64 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +package com.github.copilot.sdk.events; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Event fired when a tool execution reports progress. + *
+ * This event provides progress updates during tool execution. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public final class ToolExecutionProgressEvent extends AbstractSessionEvent { + + public static final String TYPE = "tool.execution_progress"; + + @JsonProperty("data") + private ToolExecutionProgressData data; + + @Override + public String getType() { + return TYPE; + } + + public ToolExecutionProgressData getData() { + return data; + } + + public ToolExecutionProgressEvent setData(ToolExecutionProgressData data) { + this.data = data; + return this; + } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static class ToolExecutionProgressData { + + @JsonProperty("toolCallId") + private String toolCallId; + + @JsonProperty("progressMessage") + private String progressMessage; + + public String getToolCallId() { + return toolCallId; + } + + public ToolExecutionProgressData setToolCallId(String toolCallId) { + this.toolCallId = toolCallId; + return this; + } + + public String getProgressMessage() { + return progressMessage; + } + + public ToolExecutionProgressData setProgressMessage(String progressMessage) { + this.progressMessage = progressMessage; + return this; + } + } +} diff --git a/src/main/java/com/github/copilot/sdk/json/GetAuthStatusResponse.java b/src/main/java/com/github/copilot/sdk/json/GetAuthStatusResponse.java new file mode 100644 index 000000000..6d962d423 --- /dev/null +++ b/src/main/java/com/github/copilot/sdk/json/GetAuthStatusResponse.java @@ -0,0 +1,92 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +package com.github.copilot.sdk.json; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Response from the auth.getStatus RPC call. + *
+ * Contains information about the current authentication status. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class GetAuthStatusResponse { + + /** + * Whether the user is authenticated. + */ + @JsonProperty("isAuthenticated") + private boolean isAuthenticated; + + /** + * Authentication type (user, env, gh-cli, hmac, api-key, token). + */ + @JsonProperty("authType") + private String authType; + + /** + * GitHub host URL. + */ + @JsonProperty("host") + private String host; + + /** + * User login name. + */ + @JsonProperty("login") + private String login; + + /** + * Human-readable status message. + */ + @JsonProperty("statusMessage") + private String statusMessage; + + public boolean isAuthenticated() { + return isAuthenticated; + } + + public GetAuthStatusResponse setAuthenticated(boolean authenticated) { + isAuthenticated = authenticated; + return this; + } + + public String getAuthType() { + return authType; + } + + public GetAuthStatusResponse setAuthType(String authType) { + this.authType = authType; + return this; + } + + public String getHost() { + return host; + } + + public GetAuthStatusResponse setHost(String host) { + this.host = host; + return this; + } + + public String getLogin() { + return login; + } + + public GetAuthStatusResponse setLogin(String login) { + this.login = login; + return this; + } + + public String getStatusMessage() { + return statusMessage; + } + + public GetAuthStatusResponse setStatusMessage(String statusMessage) { + this.statusMessage = statusMessage; + return this; + } +} diff --git a/src/main/java/com/github/copilot/sdk/json/GetModelsResponse.java b/src/main/java/com/github/copilot/sdk/json/GetModelsResponse.java new file mode 100644 index 000000000..7408adc2e --- /dev/null +++ b/src/main/java/com/github/copilot/sdk/json/GetModelsResponse.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + *--------------------------------------------------------------------------------------------*/ + +package com.github.copilot.sdk.json; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; + +/** + * Response from the models.list RPC call. + *
+ * Contains a list of available models with their metadata.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class GetModelsResponse {
+
+ @JsonProperty("models")
+ private List
+ * Contains information about the CLI version and protocol version.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class GetStatusResponse {
+
+ /**
+ * Package version (e.g., "1.0.0").
+ */
+ @JsonProperty("version")
+ private String version;
+
+ /**
+ * Protocol version for SDK compatibility.
+ */
+ @JsonProperty("protocolVersion")
+ private int protocolVersion;
+
+ public String getVersion() {
+ return version;
+ }
+
+ public GetStatusResponse setVersion(String version) {
+ this.version = version;
+ return this;
+ }
+
+ public int getProtocolVersion() {
+ return protocolVersion;
+ }
+
+ public GetStatusResponse setProtocolVersion(int protocolVersion) {
+ this.protocolVersion = protocolVersion;
+ return this;
+ }
+}
diff --git a/src/main/java/com/github/copilot/sdk/json/ModelBilling.java b/src/main/java/com/github/copilot/sdk/json/ModelBilling.java
new file mode 100644
index 000000000..d519ba40a
--- /dev/null
+++ b/src/main/java/com/github/copilot/sdk/json/ModelBilling.java
@@ -0,0 +1,27 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+package com.github.copilot.sdk.json;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Model billing information.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ModelBilling {
+
+ @JsonProperty("multiplier")
+ private double multiplier;
+
+ public double getMultiplier() {
+ return multiplier;
+ }
+
+ public ModelBilling setMultiplier(double multiplier) {
+ this.multiplier = multiplier;
+ return this;
+ }
+}
diff --git a/src/main/java/com/github/copilot/sdk/json/ModelCapabilities.java b/src/main/java/com/github/copilot/sdk/json/ModelCapabilities.java
new file mode 100644
index 000000000..f61b83228
--- /dev/null
+++ b/src/main/java/com/github/copilot/sdk/json/ModelCapabilities.java
@@ -0,0 +1,39 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+package com.github.copilot.sdk.json;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Model capabilities and limits.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ModelCapabilities {
+
+ @JsonProperty("supports")
+ private ModelSupports supports;
+
+ @JsonProperty("limits")
+ private ModelLimits limits;
+
+ public ModelSupports getSupports() {
+ return supports;
+ }
+
+ public ModelCapabilities setSupports(ModelSupports supports) {
+ this.supports = supports;
+ return this;
+ }
+
+ public ModelLimits getLimits() {
+ return limits;
+ }
+
+ public ModelCapabilities setLimits(ModelLimits limits) {
+ this.limits = limits;
+ return this;
+ }
+}
diff --git a/src/main/java/com/github/copilot/sdk/json/ModelInfo.java b/src/main/java/com/github/copilot/sdk/json/ModelInfo.java
new file mode 100644
index 000000000..f064cce20
--- /dev/null
+++ b/src/main/java/com/github/copilot/sdk/json/ModelInfo.java
@@ -0,0 +1,90 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+package com.github.copilot.sdk.json;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Information about an available model.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ModelInfo {
+
+ /**
+ * Model identifier (e.g., "claude-sonnet-4.5").
+ */
+ @JsonProperty("id")
+ private String id;
+
+ /**
+ * Display name.
+ */
+ @JsonProperty("name")
+ private String name;
+
+ /**
+ * Model capabilities and limits.
+ */
+ @JsonProperty("capabilities")
+ private ModelCapabilities capabilities;
+
+ /**
+ * Policy state.
+ */
+ @JsonProperty("policy")
+ private ModelPolicy policy;
+
+ /**
+ * Billing information.
+ */
+ @JsonProperty("billing")
+ private ModelBilling billing;
+
+ public String getId() {
+ return id;
+ }
+
+ public ModelInfo setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public ModelInfo setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public ModelCapabilities getCapabilities() {
+ return capabilities;
+ }
+
+ public ModelInfo setCapabilities(ModelCapabilities capabilities) {
+ this.capabilities = capabilities;
+ return this;
+ }
+
+ public ModelPolicy getPolicy() {
+ return policy;
+ }
+
+ public ModelInfo setPolicy(ModelPolicy policy) {
+ this.policy = policy;
+ return this;
+ }
+
+ public ModelBilling getBilling() {
+ return billing;
+ }
+
+ public ModelInfo setBilling(ModelBilling billing) {
+ this.billing = billing;
+ return this;
+ }
+}
diff --git a/src/main/java/com/github/copilot/sdk/json/ModelLimits.java b/src/main/java/com/github/copilot/sdk/json/ModelLimits.java
new file mode 100644
index 000000000..18bb8adbc
--- /dev/null
+++ b/src/main/java/com/github/copilot/sdk/json/ModelLimits.java
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+package com.github.copilot.sdk.json;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Model limits.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ModelLimits {
+
+ @JsonProperty("max_prompt_tokens")
+ private Integer maxPromptTokens;
+
+ @JsonProperty("max_context_window_tokens")
+ private int maxContextWindowTokens;
+
+ @JsonProperty("vision")
+ private ModelVisionLimits vision;
+
+ public Integer getMaxPromptTokens() {
+ return maxPromptTokens;
+ }
+
+ public ModelLimits setMaxPromptTokens(Integer maxPromptTokens) {
+ this.maxPromptTokens = maxPromptTokens;
+ return this;
+ }
+
+ public int getMaxContextWindowTokens() {
+ return maxContextWindowTokens;
+ }
+
+ public ModelLimits setMaxContextWindowTokens(int maxContextWindowTokens) {
+ this.maxContextWindowTokens = maxContextWindowTokens;
+ return this;
+ }
+
+ public ModelVisionLimits getVision() {
+ return vision;
+ }
+
+ public ModelLimits setVision(ModelVisionLimits vision) {
+ this.vision = vision;
+ return this;
+ }
+}
diff --git a/src/main/java/com/github/copilot/sdk/json/ModelPolicy.java b/src/main/java/com/github/copilot/sdk/json/ModelPolicy.java
new file mode 100644
index 000000000..ca5b542c1
--- /dev/null
+++ b/src/main/java/com/github/copilot/sdk/json/ModelPolicy.java
@@ -0,0 +1,39 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+package com.github.copilot.sdk.json;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Model policy state.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ModelPolicy {
+
+ @JsonProperty("state")
+ private String state;
+
+ @JsonProperty("terms")
+ private String terms;
+
+ public String getState() {
+ return state;
+ }
+
+ public ModelPolicy setState(String state) {
+ this.state = state;
+ return this;
+ }
+
+ public String getTerms() {
+ return terms;
+ }
+
+ public ModelPolicy setTerms(String terms) {
+ this.terms = terms;
+ return this;
+ }
+}
diff --git a/src/main/java/com/github/copilot/sdk/json/ModelSupports.java b/src/main/java/com/github/copilot/sdk/json/ModelSupports.java
new file mode 100644
index 000000000..805d6a040
--- /dev/null
+++ b/src/main/java/com/github/copilot/sdk/json/ModelSupports.java
@@ -0,0 +1,27 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+package com.github.copilot.sdk.json;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Model support flags.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ModelSupports {
+
+ @JsonProperty("vision")
+ private boolean vision;
+
+ public boolean isVision() {
+ return vision;
+ }
+
+ public ModelSupports setVision(boolean vision) {
+ this.vision = vision;
+ return this;
+ }
+}
diff --git a/src/main/java/com/github/copilot/sdk/json/ModelVisionLimits.java b/src/main/java/com/github/copilot/sdk/json/ModelVisionLimits.java
new file mode 100644
index 000000000..b9d2124e3
--- /dev/null
+++ b/src/main/java/com/github/copilot/sdk/json/ModelVisionLimits.java
@@ -0,0 +1,53 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------------------------------------------*/
+
+package com.github.copilot.sdk.json;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+
+/**
+ * Model vision-specific limits.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ModelVisionLimits {
+
+ @JsonProperty("supported_media_types")
+ private List