Skip to content

Commit 917f24f

Browse files
committed
fix: enhance error handling in permission request processing
1 parent f44731f commit 917f24f

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

jbang-example.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,21 @@ public static void main(String[] args) throws Exception {
1212
client.start().get();
1313

1414
// Create a session
15-
var session = client.createSession(
16-
new SessionConfig().setModel("claude-sonnet-4.5")).get();
15+
var sessionConfig = new SessionConfig().setModel("claude-sonnet-4.5");
16+
var session = client.createSession(sessionConfig).get();
1717

1818
// Wait for response using session.idle event
1919
var done = new CompletableFuture<Void>();
2020

2121
session.on(evt -> {
2222
if (evt instanceof AssistantMessageEvent msg) {
2323
System.out.println(msg.getData().getContent());
24+
} else if (evt instanceof SessionUsageInfoEvent usage) {
25+
var data = usage.getData();
26+
System.out.println("\n--- Usage Metrics ---");
27+
System.out.println("Current tokens: " + (int) data.getCurrentTokens());
28+
System.out.println("Token limit: " + (int) data.getTokenLimit());
29+
System.out.println("Messages count: " + (int) data.getMessagesLength());
2430
} else if (evt instanceof SessionIdleEvent) {
2531
done.complete(null);
2632
}

src/main/java/com/github/copilot/sdk/CopilotSession.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.logging.Level;
2222
import java.util.logging.Logger;
2323

24-
import com.fasterxml.jackson.core.JsonProcessingException;
2524
import com.fasterxml.jackson.databind.JsonNode;
2625
import com.fasterxml.jackson.databind.ObjectMapper;
2726
import com.github.copilot.sdk.events.AbstractSessionEvent;
@@ -386,9 +385,14 @@ CompletableFuture<PermissionRequestResult> handlePermissionRequest(JsonNode perm
386385
PermissionRequest request = MAPPER.treeToValue(permissionRequestData, PermissionRequest.class);
387386
PermissionInvocation invocation = new PermissionInvocation();
388387
invocation.setSessionId(sessionId);
389-
return handler.handle(request, invocation);
390-
} catch (JsonProcessingException e) {
391-
LOG.log(Level.SEVERE, "Failed to parse permission request", e);
388+
return handler.handle(request, invocation).exceptionally(ex -> {
389+
LOG.log(Level.SEVERE, "Permission handler threw an exception", ex);
390+
PermissionRequestResult result = new PermissionRequestResult();
391+
result.setKind("denied-no-approval-rule-and-could-not-request-from-user");
392+
return result;
393+
});
394+
} catch (Exception e) {
395+
LOG.log(Level.SEVERE, "Failed to process permission request", e);
392396
PermissionRequestResult result = new PermissionRequestResult();
393397
result.setKind("denied-no-approval-rule-and-could-not-request-from-user");
394398
return CompletableFuture.completedFuture(result);

0 commit comments

Comments
 (0)