Skip to content

Commit e592e47

Browse files
committed
Fix: use correct permission denial kind and send errors back via RPC (ported from #185)
1 parent 563e0c3 commit e592e47

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import com.github.copilot.sdk.json.PermissionInvocation;
4141
import com.github.copilot.sdk.json.PermissionRequest;
4242
import com.github.copilot.sdk.json.PermissionRequestResult;
43+
import com.github.copilot.sdk.json.PermissionRequestResultKind;
4344
import com.github.copilot.sdk.json.PostToolUseHookInput;
4445
import com.github.copilot.sdk.json.PreToolUseHookInput;
4546
import com.github.copilot.sdk.json.SendMessageRequest;
@@ -684,6 +685,14 @@ private void executeToolAndRespondAsync(String requestId, String toolName, Strin
684685
});
685686
} catch (Exception e) {
686687
LOG.log(Level.WARNING, "Error executing tool for requestId=" + requestId, e);
688+
try {
689+
rpc.invoke(
690+
"session.tools.handlePendingToolCall", Map.of("sessionId", sessionId, "requestId",
691+
requestId, "error", e.getMessage() != null ? e.getMessage() : e.toString()),
692+
Object.class);
693+
} catch (Exception sendEx) {
694+
LOG.log(Level.WARNING, "Error sending tool error for requestId=" + requestId, sendEx);
695+
}
687696
}
688697
});
689698
}
@@ -708,7 +717,7 @@ private void executePermissionAndRespondAsync(String requestId, PermissionReques
708717
}).exceptionally(ex -> {
709718
try {
710719
PermissionRequestResult denied = new PermissionRequestResult();
711-
denied.setKind("denied-could-not-request-from-user");
720+
denied.setKind(PermissionRequestResultKind.DENIED_COULD_NOT_REQUEST_FROM_USER);
712721
rpc.invoke("session.permissions.handlePendingPermissionRequest",
713722
Map.of("sessionId", sessionId, "requestId", requestId, "result", denied), Object.class);
714723
} catch (Exception e) {
@@ -718,6 +727,14 @@ private void executePermissionAndRespondAsync(String requestId, PermissionReques
718727
});
719728
} catch (Exception e) {
720729
LOG.log(Level.WARNING, "Error executing permission handler for requestId=" + requestId, e);
730+
try {
731+
PermissionRequestResult denied = new PermissionRequestResult();
732+
denied.setKind(PermissionRequestResultKind.DENIED_COULD_NOT_REQUEST_FROM_USER);
733+
rpc.invoke("session.permissions.handlePendingPermissionRequest",
734+
Map.of("sessionId", sessionId, "requestId", requestId, "result", denied), Object.class);
735+
} catch (Exception sendEx) {
736+
LOG.log(Level.WARNING, "Error sending permission denied for requestId=" + requestId, sendEx);
737+
}
721738
}
722739
});
723740
}

0 commit comments

Comments
 (0)