github / github/copilot-sdk

Why is the `OnPermissionRequest` event triggered twice for the same `PermissionRequestKindWrite` request?

Đang mở
#2,060 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
question
Ngôn ngữ chính
Java
Star
10.5k
Fork
1.5k
Merge trung bình
1 ngày 11 giờ
Pull request đã merge (30 ngày)
128

Mô tả

Except for the requestID, the `request` and `invocation` in both calls are identical.
```
permissionHandler := func(request copilot.PermissionRequest, invocation copilot.PermissionInvocation) (copilotrpc.PermissionDecision, error) {
requiresWriteConfirm := requiresWriteApproval(request)
requestID := uuid.NewString()
if request.Kind() == copilotrpc.PermissionRequestKindWrite {
fmt.Printf("[Permission Check] invocation: %s, Kind: %v, Request: %+v\n", invocation.SessionID, request.Kind(), request)
}
h.pushBridgeEvent(session.userID, session.sessionID, "permission.request", gin.H{
"request_id": requestID,
"kind": string(request.Kind()),
"request": request,
"copilot_session_id": fmt.Sprintf("%v", invocation.SessionID),
"requires_write_confirm": requiresWriteConfirm,
"session_id": strconv.FormatInt(session.sessionID, 10),
})

if !requiresWriteConfirm {
decision := copilotrpc.PermissionDecisionApproveOnce{}
h.pushBridgeEvent(session.userID, session.sessionID, "permission.decision", gin.H{
"request_id": requestID,
"kind": string(request.Kind()),
"approved": true,
})
return decision, nil
}

....
}
```

Image

Image

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện các callback trùng lặp với permissionHandler được cung cấp và ghi log request.Kind(), request, invocation.SessionID và requestID cho PermissionRequestKindWrite. Truy vết nơi sự kiện OnPermissionRequest được phân phối và so sánh cả hai lần gọi, sau đó xác minh rằng một yêu cầu ghi logic tạo ra một callback trong khi vẫn giữ nguyên luồng quyết định quyền hiện có.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
go
Lĩnh vực
api, backend-api-design
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
42/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.