Skip to content

Commit d0908d5

Browse files
author
j-zhangyiyuan
committed
fix(java): preserve MCP permission extension data
1 parent 781021e commit d0908d5

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

java/src/main/java/com/github/copilot/rpc/PermissionRequest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
package com.github.copilot.rpc;
66

77
import java.io.IOException;
8+
import java.util.LinkedHashMap;
89
import java.util.Map;
910

11+
import com.fasterxml.jackson.annotation.JsonAnySetter;
1012
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
1113
import com.fasterxml.jackson.annotation.JsonInclude;
1214
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -45,6 +47,14 @@ public class PermissionRequest {
4547

4648
private Map<String, Object> extensionData;
4749

50+
@JsonAnySetter
51+
private void setExtensionDataEntry(String key, Object value) {
52+
if (extensionData == null) {
53+
extensionData = new LinkedHashMap<>();
54+
}
55+
extensionData.put(key, value);
56+
}
57+
4858
private static final class ManagedApprovalRequiredDeserializer extends JsonDeserializer<Boolean> {
4959

5060
@Override

java/src/test/java/com/github/copilot/DataObjectCoverageTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,22 @@ void permissionRequestSetExtensionData() {
139139
assertEquals("value", req.getExtensionData().get("key"));
140140
}
141141

142+
@Test
143+
void permissionRequestPreservesMcpExtensionData() {
144+
var request = PermissionRequest.fromJsonValue(java.util.Map.of(
145+
"kind", "mcp",
146+
"serverName", "playwright",
147+
"toolName", "playwright-browser_navigate",
148+
"args", java.util.Map.of("url", "http://127.0.0.1:8106/docs/target-app/")));
149+
150+
assertEquals("mcp", request.getKind());
151+
assertEquals("playwright", request.getExtensionData().get("serverName"));
152+
assertEquals("playwright-browser_navigate", request.getExtensionData().get("toolName"));
153+
@SuppressWarnings("unchecked")
154+
var args = (java.util.Map<String, Object>) request.getExtensionData().get("args");
155+
assertEquals("http://127.0.0.1:8106/docs/target-app/", args.get("url"));
156+
}
157+
142158
// ===== SectionOverride setContent =====
143159

144160
@Test

0 commit comments

Comments
 (0)