Skip to content

Commit 827ae56

Browse files
edburnsCopilot
andcommitted
java: generate typed return values for RPC methods with $ref results
Fix the Java codegen to produce proper return types for RPC methods whose result schema uses $ref to named definitions. Previously these all fell through to CompletableFuture<Void>. Changes to java/scripts/codegen/java.ts: - Add findDiscriminator() to detect anyOf unions with a shared const property (ported from the C# codegen pattern) - Add generatePolymorphicResultClass() and variant class generation using Jackson @JsonTypeInfo/@JsonSubTypes annotations - Update wrapperResultClassName() to recognize $ref to enums, anyOf discriminated unions, and named empty objects - Update generateRpcTypes() to generate appropriate classes for each result schema pattern (enum, anyOf, empty object) - Update generatePendingStandaloneTypes() to handle anyOf schemas Affected API methods: - session.commands.invoke → CompletableFuture<SlashCommandInvocationResult> (polymorphic: text, agent-prompt, completed, select-subcommand) - session.mode.get → CompletableFuture<SessionMode> (string enum) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent dada51e commit 827ae56

189 files changed

Lines changed: 8411 additions & 14 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

java/scripts/codegen/java.ts

Lines changed: 336 additions & 8 deletions
Large diffs are not rendered by default.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
*--------------------------------------------------------------------------------------------*/
4+
5+
// AUTO-GENERATED FILE - DO NOT EDIT
6+
// Generated from: api.schema.json
7+
8+
package com.github.copilot.generated;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import javax.annotation.processing.Generated;
14+
15+
/**
16+
* Schema for the `PermissionApproved` type.
17+
*
18+
* @since 1.0.0
19+
*/
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
@JsonInclude(JsonInclude.Include.NON_NULL)
22+
@javax.annotation.processing.Generated("copilot-sdk-codegen")
23+
public final class PermissionApproved extends PermissionResult {
24+
25+
@JsonProperty("kind")
26+
private final String kind = "approved";
27+
28+
@Override
29+
public String getKind() { return kind; }
30+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
*--------------------------------------------------------------------------------------------*/
4+
5+
// AUTO-GENERATED FILE - DO NOT EDIT
6+
// Generated from: api.schema.json
7+
8+
package com.github.copilot.generated;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import javax.annotation.processing.Generated;
14+
15+
/**
16+
* Schema for the `PermissionApprovedForLocation` type.
17+
*
18+
* @since 1.0.0
19+
*/
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
@JsonInclude(JsonInclude.Include.NON_NULL)
22+
@javax.annotation.processing.Generated("copilot-sdk-codegen")
23+
public final class PermissionApprovedForLocation extends PermissionResult {
24+
25+
@JsonProperty("kind")
26+
private final String kind = "approved-for-location";
27+
28+
@Override
29+
public String getKind() { return kind; }
30+
31+
/** The approval to persist for this location */
32+
@JsonProperty("approval")
33+
private UserToolSessionApproval approval;
34+
35+
/** The location key (git root or cwd) to persist the approval to */
36+
@JsonProperty("locationKey")
37+
private String locationKey;
38+
39+
public UserToolSessionApproval getApproval() { return approval; }
40+
public void setApproval(UserToolSessionApproval approval) { this.approval = approval; }
41+
42+
public String getLocationKey() { return locationKey; }
43+
public void setLocationKey(String locationKey) { this.locationKey = locationKey; }
44+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
*--------------------------------------------------------------------------------------------*/
4+
5+
// AUTO-GENERATED FILE - DO NOT EDIT
6+
// Generated from: api.schema.json
7+
8+
package com.github.copilot.generated;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import javax.annotation.processing.Generated;
14+
15+
/**
16+
* Schema for the `PermissionApprovedForSession` type.
17+
*
18+
* @since 1.0.0
19+
*/
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
@JsonInclude(JsonInclude.Include.NON_NULL)
22+
@javax.annotation.processing.Generated("copilot-sdk-codegen")
23+
public final class PermissionApprovedForSession extends PermissionResult {
24+
25+
@JsonProperty("kind")
26+
private final String kind = "approved-for-session";
27+
28+
@Override
29+
public String getKind() { return kind; }
30+
31+
/** The approval to add as a session-scoped rule */
32+
@JsonProperty("approval")
33+
private UserToolSessionApproval approval;
34+
35+
public UserToolSessionApproval getApproval() { return approval; }
36+
public void setApproval(UserToolSessionApproval approval) { this.approval = approval; }
37+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
*--------------------------------------------------------------------------------------------*/
4+
5+
// AUTO-GENERATED FILE - DO NOT EDIT
6+
// Generated from: api.schema.json
7+
8+
package com.github.copilot.generated;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import javax.annotation.processing.Generated;
14+
15+
/**
16+
* Schema for the `PermissionCancelled` type.
17+
*
18+
* @since 1.0.0
19+
*/
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
@JsonInclude(JsonInclude.Include.NON_NULL)
22+
@javax.annotation.processing.Generated("copilot-sdk-codegen")
23+
public final class PermissionCancelled extends PermissionResult {
24+
25+
@JsonProperty("kind")
26+
private final String kind = "cancelled";
27+
28+
@Override
29+
public String getKind() { return kind; }
30+
31+
/** Optional explanation of why the request was cancelled */
32+
@JsonProperty("reason")
33+
private String reason;
34+
35+
public String getReason() { return reason; }
36+
public void setReason(String reason) { this.reason = reason; }
37+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
*--------------------------------------------------------------------------------------------*/
4+
5+
// AUTO-GENERATED FILE - DO NOT EDIT
6+
// Generated from: api.schema.json
7+
8+
package com.github.copilot.generated;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import javax.annotation.processing.Generated;
14+
15+
/**
16+
* Schema for the `PermissionDeniedByContentExclusionPolicy` type.
17+
*
18+
* @since 1.0.0
19+
*/
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
@JsonInclude(JsonInclude.Include.NON_NULL)
22+
@javax.annotation.processing.Generated("copilot-sdk-codegen")
23+
public final class PermissionDeniedByContentExclusionPolicy extends PermissionResult {
24+
25+
@JsonProperty("kind")
26+
private final String kind = "denied-by-content-exclusion-policy";
27+
28+
@Override
29+
public String getKind() { return kind; }
30+
31+
/** File path that triggered the exclusion */
32+
@JsonProperty("path")
33+
private String path;
34+
35+
/** Human-readable explanation of why the path was excluded */
36+
@JsonProperty("message")
37+
private String message;
38+
39+
public String getPath() { return path; }
40+
public void setPath(String path) { this.path = path; }
41+
42+
public String getMessage() { return message; }
43+
public void setMessage(String message) { this.message = message; }
44+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
*--------------------------------------------------------------------------------------------*/
4+
5+
// AUTO-GENERATED FILE - DO NOT EDIT
6+
// Generated from: api.schema.json
7+
8+
package com.github.copilot.generated;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import javax.annotation.processing.Generated;
14+
15+
/**
16+
* Schema for the `PermissionDeniedByPermissionRequestHook` type.
17+
*
18+
* @since 1.0.0
19+
*/
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
@JsonInclude(JsonInclude.Include.NON_NULL)
22+
@javax.annotation.processing.Generated("copilot-sdk-codegen")
23+
public final class PermissionDeniedByPermissionRequestHook extends PermissionResult {
24+
25+
@JsonProperty("kind")
26+
private final String kind = "denied-by-permission-request-hook";
27+
28+
@Override
29+
public String getKind() { return kind; }
30+
31+
/** Optional message from the hook explaining the denial */
32+
@JsonProperty("message")
33+
private String message;
34+
35+
/** Whether to interrupt the current agent turn */
36+
@JsonProperty("interrupt")
37+
private Boolean interrupt;
38+
39+
public String getMessage() { return message; }
40+
public void setMessage(String message) { this.message = message; }
41+
42+
public Boolean getInterrupt() { return interrupt; }
43+
public void setInterrupt(Boolean interrupt) { this.interrupt = interrupt; }
44+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
*--------------------------------------------------------------------------------------------*/
4+
5+
// AUTO-GENERATED FILE - DO NOT EDIT
6+
// Generated from: api.schema.json
7+
8+
package com.github.copilot.generated;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import java.util.List;
14+
import javax.annotation.processing.Generated;
15+
16+
/**
17+
* Schema for the `PermissionDeniedByRules` type.
18+
*
19+
* @since 1.0.0
20+
*/
21+
@JsonIgnoreProperties(ignoreUnknown = true)
22+
@JsonInclude(JsonInclude.Include.NON_NULL)
23+
@javax.annotation.processing.Generated("copilot-sdk-codegen")
24+
public final class PermissionDeniedByRules extends PermissionResult {
25+
26+
@JsonProperty("kind")
27+
private final String kind = "denied-by-rules";
28+
29+
@Override
30+
public String getKind() { return kind; }
31+
32+
/** Rules that denied the request */
33+
@JsonProperty("rules")
34+
private List<PermissionRule> rules;
35+
36+
public List<PermissionRule> getRules() { return rules; }
37+
public void setRules(List<PermissionRule> rules) { this.rules = rules; }
38+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
*--------------------------------------------------------------------------------------------*/
4+
5+
// AUTO-GENERATED FILE - DO NOT EDIT
6+
// Generated from: api.schema.json
7+
8+
package com.github.copilot.generated;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import javax.annotation.processing.Generated;
14+
15+
/**
16+
* Schema for the `PermissionDeniedInteractivelyByUser` type.
17+
*
18+
* @since 1.0.0
19+
*/
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
@JsonInclude(JsonInclude.Include.NON_NULL)
22+
@javax.annotation.processing.Generated("copilot-sdk-codegen")
23+
public final class PermissionDeniedInteractivelyByUser extends PermissionResult {
24+
25+
@JsonProperty("kind")
26+
private final String kind = "denied-interactively-by-user";
27+
28+
@Override
29+
public String getKind() { return kind; }
30+
31+
/** Optional feedback from the user explaining the denial */
32+
@JsonProperty("feedback")
33+
private String feedback;
34+
35+
/** Whether to force-reject the current agent turn */
36+
@JsonProperty("forceReject")
37+
private Boolean forceReject;
38+
39+
public String getFeedback() { return feedback; }
40+
public void setFeedback(String feedback) { this.feedback = feedback; }
41+
42+
public Boolean getForceReject() { return forceReject; }
43+
public void setForceReject(Boolean forceReject) { this.forceReject = forceReject; }
44+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
*--------------------------------------------------------------------------------------------*/
4+
5+
// AUTO-GENERATED FILE - DO NOT EDIT
6+
// Generated from: api.schema.json
7+
8+
package com.github.copilot.generated;
9+
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import javax.annotation.processing.Generated;
14+
15+
/**
16+
* Schema for the `PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser` type.
17+
*
18+
* @since 1.0.0
19+
*/
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
@JsonInclude(JsonInclude.Include.NON_NULL)
22+
@javax.annotation.processing.Generated("copilot-sdk-codegen")
23+
public final class PermissionDeniedNoApprovalRuleAndCouldNotRequestFromUser extends PermissionResult {
24+
25+
@JsonProperty("kind")
26+
private final String kind = "denied-no-approval-rule-and-could-not-request-from-user";
27+
28+
@Override
29+
public String getKind() { return kind; }
30+
}

0 commit comments

Comments
 (0)