Extract TUI approval request payloads into structs (#33684)

## What changed

Give command, permissions, patch, and MCP elicitation approvals dedicated
request structs, and update TUI routing and rendering to use the wrapped
payloads.

GitOrigin-RevId: ffee4058dd27505be2a11de3758ac12bb707b6b8
This commit is contained in:
Adam Perry @ OpenAI authored and copyberry committed 2026-07-16 20:44:28 +00:00
1 parent 693b8c2ba4
commit d3fc1950a9
8 files changed
+231 -267

No files matched your search

+8 -8
View File
@@ -287,7 +287,7 @@ impl ChatWidget {
self.notify(Notification::ExecApprovalRequested { command });
let available_decisions = ev.effective_available_decisions();
let request = ApprovalRequest::Exec {
let request = ApprovalRequest::Exec(ExecApprovalRequest {
thread_id: self.thread_id.unwrap_or_default(),
thread_label: None,
id: ev.effective_approval_id(),
@@ -297,7 +297,7 @@ impl ChatWidget {
available_decisions,
network_approval_context: ev.network_approval_context,
additional_permissions: ev.additional_permissions,
};
});
self.bottom_pane
.push_approval_request(request, &self.config.features);
self.set_ambient_pet_notification(
@@ -310,14 +310,14 @@ impl ChatWidget {
pub(crate) fn handle_apply_patch_approval_now(&mut self, ev: ApplyPatchApprovalRequestEvent) {
self.flush_answer_stream_with_separator();
let request = ApprovalRequest::ApplyPatch {
let request = ApprovalRequest::ApplyPatch(ApplyPatchApprovalRequest {
thread_id: self.thread_id.unwrap_or_default(),
thread_label: None,
id: ev.call_id,
reason: ev.reason,
changes: ev.changes.clone(),
cwd: self.config.cwd.clone(),
};
});
self.bottom_pane
.push_approval_request(request, &self.config.features);
self.set_ambient_pet_notification(
@@ -361,13 +361,13 @@ impl ChatWidget {
} else {
match params.request {
McpServerElicitationRequest::Form { message, .. } => {
let request = ApprovalRequest::McpElicitation {
let request = ApprovalRequest::McpElicitation(McpElicitationApprovalRequest {
thread_id,
thread_label: None,
server_name: params.server_name,
request_id,
message,
};
});
self.bottom_pane
.push_approval_request(request, &self.config.features);
}
@@ -434,14 +434,14 @@ impl ChatWidget {
pub(crate) fn handle_request_permissions_now(&mut self, ev: RequestPermissionsEvent) {
self.flush_answer_stream_with_separator();
let request = ApprovalRequest::Permissions {
let request = ApprovalRequest::Permissions(PermissionsApprovalRequest {
thread_id: self.thread_id.unwrap_or_default(),
thread_label: None,
call_id: ev.call_id,
environment_id: ev.environment_id,
reason: ev.reason,
permissions: ev.permissions,
};
});
self.bottom_pane
.push_approval_request(request, &self.config.features);
self.set_ambient_pet_notification(