From 78623f8d84bd522f46c5701809e9dac5dae17d6f Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Wed, 8 Apr 2026 23:10:08 -0700 Subject: [PATCH] Emit live hook prompts before raw-event filtering --- .../app-server/src/bespoke_event_handling.rs | 2 +- .../app-server/src/codex_message_processor.rs | 20 +++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/codex-rs/app-server/src/bespoke_event_handling.rs b/codex-rs/app-server/src/bespoke_event_handling.rs index a6a5951be82e..8a98965bac7c 100644 --- a/codex-rs/app-server/src/bespoke_event_handling.rs +++ b/codex-rs/app-server/src/bespoke_event_handling.rs @@ -2059,7 +2059,7 @@ async fn maybe_emit_raw_response_item_completed( .await; } -async fn maybe_emit_hook_prompt_item_completed( +pub(crate) async fn maybe_emit_hook_prompt_item_completed( api_version: ApiVersion, conversation_id: ThreadId, turn_id: &str, diff --git a/codex-rs/app-server/src/codex_message_processor.rs b/codex-rs/app-server/src/codex_message_processor.rs index dafaffca3c49..9efaf4628770 100644 --- a/codex-rs/app-server/src/codex_message_processor.rs +++ b/codex-rs/app-server/src/codex_message_processor.rs @@ -1,4 +1,5 @@ use crate::bespoke_event_handling::apply_bespoke_event_handling; +use crate::bespoke_event_handling::maybe_emit_hook_prompt_item_completed; use crate::command_exec::CommandExecManager; use crate::command_exec::StartCommandExecParams; use crate::config_api::apply_runtime_feature_enablement; @@ -7435,15 +7436,26 @@ impl CodexMessageProcessor { let subscribed_connection_ids = thread_state_manager .subscribed_connection_ids(conversation_id) .await; - if let EventMsg::RawResponseItem(_) = &event.msg && !raw_events_enabled { - continue; - } - let thread_outgoing = ThreadScopedOutgoingMessageSender::new( outgoing_for_task.clone(), subscribed_connection_ids, conversation_id, ); + + if let EventMsg::RawResponseItem(raw_response_item_event) = &event.msg + && !raw_events_enabled + { + maybe_emit_hook_prompt_item_completed( + api_version, + conversation_id, + &event.id, + &raw_response_item_event.item, + &thread_outgoing, + ) + .await; + continue; + } + apply_bespoke_event_handling( event.clone(), conversation_id,