Skip to content

Commit 692f764

Browse files
committed
fix: audit Java code samples against SDK implementation
- Fix PreToolUseHookOutput: record cannot use setters, use deny() factory - Fix SessionStartHookOutput: record cannot use setters, use constructor - Fix session.getId() → session.getSessionId() - Fix input.getPrompt() → input.prompt() (record accessor) - Fix response.data() → response.getData() (class accessor) - Fix setOnListModels: wrap return in CompletableFuture.completedFuture() - Fix custom-agents event handler: use instanceof pattern matching (AbstractSessionEvent has no getData() method) - Fix streaming-events: remove event.getData() from generic handler - Fix SubagentCompleted/Failed: use agentName() not agentDisplayName() - Fix CopilotClientOptions import: class is in json package, not sdk - Fix hook type signatures: use PreToolUseHandler etc. instead of BiFunction
1 parent 63a36a9 commit 692f764

18 files changed

Lines changed: 34 additions & 59 deletions

docs/auth/byok.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ Console.WriteLine(response?.Data.Content);
169169

170170
```java
171171
import com.github.copilot.sdk.CopilotClient;
172-
import com.github.copilot.sdk.CopilotClientOptions;
173172
import com.github.copilot.sdk.events.*;
174173
import com.github.copilot.sdk.json.*;
175174

@@ -448,17 +447,18 @@ var client = new CopilotClient(new CopilotClientOptions
448447

449448
```java
450449
import com.github.copilot.sdk.CopilotClient;
451-
import com.github.copilot.sdk.CopilotClientOptions;
450+
import com.github.copilot.sdk.json.*;
451+
import java.util.concurrent.CompletableFuture;
452452

453453
var client = new CopilotClient(new CopilotClientOptions()
454-
.setOnListModels(() -> List.of(
454+
.setOnListModels(() -> CompletableFuture.completedFuture(List.of(
455455
new ModelInfo()
456456
.setId("my-custom-model")
457457
.setName("My Custom Model")
458458
.setCapabilities(new ModelCapabilities()
459459
.setSupports(new ModelSupports().setVision(false).setReasoningEffort(false))
460460
.setLimits(new ModelLimits().setMaxContextWindowTokens(128000)))
461-
))
461+
)))
462462
);
463463
```
464464

docs/auth/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ await using var client = new CopilotClient(new CopilotClientOptions
207207

208208
```java
209209
import com.github.copilot.sdk.CopilotClient;
210-
import com.github.copilot.sdk.CopilotClientOptions;
210+
import com.github.copilot.sdk.json.*;
211211

212212
var client = new CopilotClient(new CopilotClientOptions()
213213
.setGitHubToken(userAccessToken) // Token from OAuth flow
@@ -385,7 +385,7 @@ await using var client = new CopilotClient(new CopilotClientOptions
385385

386386
```java
387387
import com.github.copilot.sdk.CopilotClient;
388-
import com.github.copilot.sdk.CopilotClientOptions;
388+
import com.github.copilot.sdk.json.*;
389389

390390
var client = new CopilotClient(new CopilotClientOptions()
391391
.setUseLoggedInUser(false) // Only use explicit tokens

docs/features/custom-agents.md

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -623,23 +623,19 @@ await session.SendAndWaitAsync(new MessageOptions
623623

624624
```java
625625
session.on(event -> {
626-
switch (event.getType()) {
627-
case "subagent.started" -> {
628-
System.out.println("▶ Sub-agent started: " + event.getData().agentDisplayName());
629-
System.out.println(" Description: " + event.getData().agentDescription());
630-
System.out.println(" Tool call ID: " + event.getData().toolCallId());
631-
}
632-
case "subagent.completed" ->
633-
System.out.println("✅ Sub-agent completed: " + event.getData().agentDisplayName());
634-
case "subagent.failed" -> {
635-
System.out.println("❌ Sub-agent failed: " + event.getData().agentDisplayName());
636-
System.out.println(" Error: " + event.getData().error());
637-
}
638-
case "subagent.selected" ->
639-
System.out.println("🎯 Agent selected: " + event.getData().agentDisplayName());
640-
case "subagent.deselected" ->
641-
System.out.println("↩ Agent deselected, returning to parent");
642-
default -> {}
626+
if (event instanceof SubagentStartedEvent e) {
627+
System.out.println("▶ Sub-agent started: " + e.getData().agentDisplayName());
628+
System.out.println(" Description: " + e.getData().agentDescription());
629+
System.out.println(" Tool call ID: " + e.getData().toolCallId());
630+
} else if (event instanceof SubagentCompletedEvent e) {
631+
System.out.println("✅ Sub-agent completed: " + e.getData().agentName());
632+
} else if (event instanceof SubagentFailedEvent e) {
633+
System.out.println("❌ Sub-agent failed: " + e.getData().agentName());
634+
System.out.println(" Error: " + e.getData().error());
635+
} else if (event instanceof SubagentSelectedEvent e) {
636+
System.out.println("🎯 Agent selected: " + e.getData().agentDisplayName());
637+
} else if (event instanceof SubagentDeselectedEvent e) {
638+
System.out.println("↩ Agent deselected, returning to parent");
643639
}
644640
});
645641

docs/features/hooks.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -417,10 +417,8 @@ var hooks = new SessionHooks()
417417
.setOnPreToolUse((input, invocation) -> {
418418
if (!readOnlyTools.contains(input.getToolName())) {
419419
return CompletableFuture.completedFuture(
420-
new PreToolUseHookOutput()
421-
.setPermissionDecision("deny")
422-
.setPermissionDecisionReason(
423-
"Only read-only tools are allowed. \"" + input.getToolName() + "\" was blocked.")
420+
PreToolUseHookOutput.deny(
421+
"Only read-only tools are allowed. \"" + input.getToolName() + "\" was blocked.")
424422
);
425423
}
426424
return CompletableFuture.completedFuture(PreToolUseHookOutput.allow());

docs/features/streaming-events.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ session.On(evt =>
196196

197197
```java
198198
// All events
199-
session.on(event -> System.out.println(event.getType() + " " + event.getData()));
199+
session.on(event -> System.out.println(event.getType()));
200200

201201
// Specific event type — data is narrowed to the matching class
202202
session.on(AssistantMessageDeltaEvent.class, event ->

docs/getting-started.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1707,7 +1707,7 @@ await using var session = await client.CreateSessionAsync(new()
17071707

17081708
```java
17091709
import com.github.copilot.sdk.CopilotClient;
1710-
import com.github.copilot.sdk.CopilotClientOptions;
1710+
import com.github.copilot.sdk.json.*;
17111711

17121712
var client = new CopilotClient(
17131713
new CopilotClientOptions().setCliUrl("localhost:4321")
@@ -1811,7 +1811,7 @@ No extra dependencies — uses built-in `System.Diagnostics.Activity`.
18111811
<!-- docs-validate: skip -->
18121812
```java
18131813
import com.github.copilot.sdk.CopilotClient;
1814-
import com.github.copilot.sdk.CopilotClientOptions;
1814+
import com.github.copilot.sdk.json.*;
18151815

18161816
var client = new CopilotClient(new CopilotClientOptions()
18171817
.setTelemetry(new TelemetryConfig()

docs/hooks/error-handling.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ var session = client.createSession(
284284

285285
session.setEventErrorPolicy(EventErrorPolicy.SUPPRESS_AND_LOG_ERRORS);
286286
session.setEventErrorHandler((event, ex) -> {
287-
System.err.println("[" + session.getId() + "] Error: " + ex.getMessage());
287+
System.err.println("[" + session.getSessionId() + "] Error: " + ex.getMessage());
288288
System.err.println(" Event: " + event.getType());
289289
});
290290
```

docs/hooks/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ try (var client = new CopilotClient()) {
178178
})
179179
.setOnSessionStart((input, invocation) -> {
180180
return CompletableFuture.completedFuture(
181-
new SessionStartHookOutput().setAdditionalContext("User prefers concise answers.")
181+
new SessionStartHookOutput("User prefers concise answers.", null)
182182
);
183183
});
184184

docs/hooks/post-tool-use.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,8 @@ public delegate Task<PostToolUseHookOutput?> PostToolUseHandler(
104104

105105
```java
106106
import com.github.copilot.sdk.json.*;
107-
import java.util.concurrent.CompletableFuture;
108-
import java.util.function.BiFunction;
109107

110-
BiFunction<PostToolUseHookInput, HookInvocation,
111-
CompletableFuture<PostToolUseHookOutput>> postToolUseHandler;
108+
PostToolUseHandler postToolUseHandler;
112109
```
113110

114111
</details>

docs/hooks/pre-tool-use.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,8 @@ public delegate Task<PreToolUseHookOutput?> PreToolUseHandler(
104104

105105
```java
106106
import com.github.copilot.sdk.json.*;
107-
import java.util.concurrent.CompletableFuture;
108-
import java.util.function.BiFunction;
109107

110-
BiFunction<PreToolUseHookInput, HookInvocation,
111-
CompletableFuture<PreToolUseHookOutput>> preToolUseHandler;
108+
PreToolUseHandler preToolUseHandler;
112109
```
113110

114111
</details>

0 commit comments

Comments
 (0)