mirror of
https://github.com/openai/codex.git
synced 2026-05-01 01:47:18 +00:00
[elicitations] Switch to use MCP style elicitation payload for mcp tool approvals. (#13621)
- [x] Switch to use MCP style elicitation payload for mcp tool approvals. - [ ] TODO: Update the UI to support the full spec.
This commit is contained in:
@@ -224,6 +224,7 @@ use crate::bottom_pane::ExperimentalFeaturesView;
|
||||
use crate::bottom_pane::FeedbackAudience;
|
||||
use crate::bottom_pane::InputResult;
|
||||
use crate::bottom_pane::LocalImageAttachment;
|
||||
use crate::bottom_pane::McpServerElicitationFormRequest;
|
||||
use crate::bottom_pane::MentionBinding;
|
||||
use crate::bottom_pane::QUIT_SHORTCUT_TIMEOUT;
|
||||
use crate::bottom_pane::SelectionAction;
|
||||
@@ -2871,15 +2872,21 @@ impl ChatWidget {
|
||||
server_name: ev.server_name.clone(),
|
||||
});
|
||||
|
||||
let request = ApprovalRequest::McpElicitation {
|
||||
thread_id: self.thread_id.unwrap_or_default(),
|
||||
thread_label: None,
|
||||
server_name: ev.server_name,
|
||||
request_id: ev.id,
|
||||
message: ev.request.message().to_string(),
|
||||
};
|
||||
self.bottom_pane
|
||||
.push_approval_request(request, &self.config.features);
|
||||
let thread_id = self.thread_id.unwrap_or_default();
|
||||
if let Some(request) = McpServerElicitationFormRequest::from_event(thread_id, ev.clone()) {
|
||||
self.bottom_pane
|
||||
.push_mcp_server_elicitation_request(request);
|
||||
} else {
|
||||
let request = ApprovalRequest::McpElicitation {
|
||||
thread_id,
|
||||
thread_label: None,
|
||||
server_name: ev.server_name,
|
||||
request_id: ev.id,
|
||||
message: ev.request.message().to_string(),
|
||||
};
|
||||
self.bottom_pane
|
||||
.push_approval_request(request, &self.config.features);
|
||||
}
|
||||
self.request_redraw();
|
||||
}
|
||||
|
||||
@@ -2889,6 +2896,15 @@ impl ChatWidget {
|
||||
self.request_redraw();
|
||||
}
|
||||
|
||||
pub(crate) fn push_mcp_server_elicitation_request(
|
||||
&mut self,
|
||||
request: McpServerElicitationFormRequest,
|
||||
) {
|
||||
self.bottom_pane
|
||||
.push_mcp_server_elicitation_request(request);
|
||||
self.request_redraw();
|
||||
}
|
||||
|
||||
pub(crate) fn handle_request_user_input_now(&mut self, ev: RequestUserInputEvent) {
|
||||
self.flush_answer_stream_with_separator();
|
||||
self.notify(Notification::UserInputRequested {
|
||||
|
||||
Reference in New Issue
Block a user