mirror of
https://github.com/openai/codex.git
synced 2026-05-02 18:37:01 +00:00
Reuse guardian session across approvals (#14668)
## Summary - reuse a guardian subagent session across approvals so reviews keep a stable prompt cache key and avoid one-shot startup overhead - clear the guardian child history before each review so prior guardian decisions do not leak into later approvals - include the `smart_approvals` -> `guardian_approval` feature flag rename in the same PR to minimize release latency on a very tight timeline - add regression coverage for prompt-cache-key reuse without prior-review prompt bleed ## Request - Bug/enhancement request: internal guardian prompt-cache and latency improvement request --------- Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
committed by
GitHub
parent
ba463a9dc7
commit
6fdeb1d602
@@ -8396,7 +8396,7 @@ async fn permissions_selection_history_snapshot_full_access_to_default() {
|
||||
chat.open_permissions_popup();
|
||||
let popup = render_bottom_popup(&chat, 120);
|
||||
chat.handle_key_event(KeyEvent::from(KeyCode::Up));
|
||||
if popup.contains("Smart Approvals") {
|
||||
if popup.contains("Guardian Approvals") {
|
||||
chat.handle_key_event(KeyEvent::from(KeyCode::Up));
|
||||
}
|
||||
chat.handle_key_event(KeyEvent::from(KeyCode::Enter));
|
||||
@@ -8453,7 +8453,7 @@ async fn permissions_selection_emits_history_cell_when_current_is_selected() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_hides_smart_approvals_when_feature_disabled() {
|
||||
async fn permissions_selection_hides_guardian_approvals_when_feature_disabled() {
|
||||
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
@@ -8466,13 +8466,13 @@ async fn permissions_selection_hides_smart_approvals_when_feature_disabled() {
|
||||
let popup = render_bottom_popup(&chat, 120);
|
||||
|
||||
assert!(
|
||||
!popup.contains("Smart Approvals"),
|
||||
"expected Smart Approvals to stay hidden until the experimental feature is enabled: {popup}"
|
||||
!popup.contains("Guardian Approvals"),
|
||||
"expected Guardian Approvals to stay hidden until the experimental feature is enabled: {popup}"
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_hides_smart_approvals_when_feature_disabled_even_if_auto_review_is_active()
|
||||
async fn permissions_selection_hides_guardian_approvals_when_feature_disabled_even_if_auto_review_is_active()
|
||||
{
|
||||
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
@@ -8497,13 +8497,13 @@ async fn permissions_selection_hides_smart_approvals_when_feature_disabled_even_
|
||||
let popup = render_bottom_popup(&chat, 120);
|
||||
|
||||
assert!(
|
||||
!popup.contains("Smart Approvals"),
|
||||
"expected Smart Approvals to stay hidden when the experimental feature is disabled: {popup}"
|
||||
!popup.contains("Guardian Approvals"),
|
||||
"expected Guardian Approvals to stay hidden when the experimental feature is disabled: {popup}"
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_marks_smart_approvals_current_after_session_configured() {
|
||||
async fn permissions_selection_marks_guardian_approvals_current_after_session_configured() {
|
||||
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
@@ -8542,13 +8542,14 @@ async fn permissions_selection_marks_smart_approvals_current_after_session_confi
|
||||
let popup = render_bottom_popup(&chat, 120);
|
||||
|
||||
assert!(
|
||||
popup.contains("Smart Approvals (current)"),
|
||||
"expected Smart Approvals to be current after SessionConfigured sync: {popup}"
|
||||
popup.contains("Guardian Approvals (current)"),
|
||||
"expected Guardian Approvals to be current after SessionConfigured sync: {popup}"
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_marks_smart_approvals_current_with_custom_workspace_write_details() {
|
||||
async fn permissions_selection_marks_guardian_approvals_current_with_custom_workspace_write_details()
|
||||
{
|
||||
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
@@ -8561,7 +8562,7 @@ async fn permissions_selection_marks_smart_approvals_current_with_custom_workspa
|
||||
.features
|
||||
.set_enabled(Feature::GuardianApproval, true);
|
||||
|
||||
let extra_root = AbsolutePathBuf::try_from("/tmp/smart-approvals-extra")
|
||||
let extra_root = AbsolutePathBuf::try_from("/tmp/guardian-approvals-extra")
|
||||
.expect("absolute extra writable root");
|
||||
|
||||
chat.handle_codex_event(Event {
|
||||
@@ -8596,13 +8597,13 @@ async fn permissions_selection_marks_smart_approvals_current_with_custom_workspa
|
||||
let popup = render_bottom_popup(&chat, 120);
|
||||
|
||||
assert!(
|
||||
popup.contains("Smart Approvals (current)"),
|
||||
"expected Smart Approvals to be current even with custom workspace-write details: {popup}"
|
||||
popup.contains("Guardian Approvals (current)"),
|
||||
"expected Guardian Approvals to be current even with custom workspace-write details: {popup}"
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_can_disable_smart_approvals() {
|
||||
async fn permissions_selection_can_disable_guardian_approvals() {
|
||||
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
@@ -8632,7 +8633,7 @@ async fn permissions_selection_can_disable_smart_approvals() {
|
||||
event,
|
||||
AppEvent::UpdateApprovalsReviewer(ApprovalsReviewer::User)
|
||||
)),
|
||||
"expected selecting Default from Smart Approvals to switch back to manual approval review: {events:?}"
|
||||
"expected selecting Default from Guardian Approvals to switch back to manual approval review: {events:?}"
|
||||
);
|
||||
assert!(
|
||||
!events
|
||||
@@ -8678,8 +8679,8 @@ async fn permissions_selection_sends_approvals_reviewer_in_override_turn_context
|
||||
assert!(
|
||||
popup
|
||||
.lines()
|
||||
.any(|line| line.contains("Smart Approvals") && line.contains('›')),
|
||||
"expected one Down from Default to select Smart Approvals: {popup}"
|
||||
.any(|line| line.contains("Guardian Approvals") && line.contains('›')),
|
||||
"expected one Down from Default to select Guardian Approvals: {popup}"
|
||||
);
|
||||
chat.handle_key_event(KeyEvent::from(KeyCode::Enter));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user