diff --git a/codex-rs/app-server-client/src/lib.rs b/codex-rs/app-server-client/src/lib.rs index 641e2e0720..2101c0da39 100644 --- a/codex-rs/app-server-client/src/lib.rs +++ b/codex-rs/app-server-client/src/lib.rs @@ -86,9 +86,6 @@ impl From for AppServerEvent { InProcessServerEvent::ServerNotification(notification) => { Self::ServerNotification(notification) } - InProcessServerEvent::LegacyNotification(notification) => { - Self::LegacyNotification(notification) - } InProcessServerEvent::ServerRequest(request) => Self::ServerRequest(request), } } @@ -98,19 +95,12 @@ fn event_requires_delivery(event: &InProcessServerEvent) -> bool { // These terminal events drive surface shutdown/completion state. Dropping // them under backpressure can leave exec/TUI waiting forever even though // the underlying turn has already ended. - match event { + matches!( + event, InProcessServerEvent::ServerNotification( codex_app_server_protocol::ServerNotification::TurnCompleted(_), - ) => true, - InProcessServerEvent::LegacyNotification(notification) => matches!( - notification - .method - .strip_prefix("codex/event/") - .unwrap_or(¬ification.method), - "task_complete" | "turn_aborted" | "shutdown_complete" - ), - _ => false, - } + ) + ) } /// Layered error for [`InProcessAppServerClient::request_typed`]. @@ -1623,14 +1613,6 @@ mod tests { ) ) )); - assert!(event_requires_delivery( - &InProcessServerEvent::LegacyNotification( - codex_app_server_protocol::JSONRPCNotification { - method: "codex/event/turn_aborted".to_string(), - params: None, - } - ) - )); assert!(!event_requires_delivery(&InProcessServerEvent::Lagged { skipped: 1 })); diff --git a/codex-rs/app-server/src/in_process.rs b/codex-rs/app-server/src/in_process.rs index 67f231880a..dd54c5434f 100644 --- a/codex-rs/app-server/src/in_process.rs +++ b/codex-rs/app-server/src/in_process.rs @@ -68,7 +68,6 @@ use codex_app_server_protocol::ClientRequest; use codex_app_server_protocol::ConfigWarningNotification; use codex_app_server_protocol::InitializeParams; use codex_app_server_protocol::JSONRPCErrorError; -use codex_app_server_protocol::JSONRPCNotification; use codex_app_server_protocol::RequestId; use codex_app_server_protocol::Result; use codex_app_server_protocol::ServerNotification; @@ -96,16 +95,6 @@ fn server_notification_requires_delivery(notification: &ServerNotification) -> b matches!(notification, ServerNotification::TurnCompleted(_)) } -fn legacy_notification_requires_delivery(notification: &JSONRPCNotification) -> bool { - matches!( - notification - .method - .strip_prefix("codex/event/") - .unwrap_or(¬ification.method), - "task_complete" | "turn_aborted" | "shutdown_complete" - ) -} - /// Input needed to start an in-process app-server runtime. /// /// These fields mirror the pieces of ambient process state that stdio and @@ -138,11 +127,6 @@ pub struct InProcessStartArgs { /// Event emitted from the app-server to the in-process client. /// -/// The stream carries three event families because CLI surfaces are mid-migration -/// from the legacy `codex_protocol::Event` model to the typed app-server -/// notification model. Once all surfaces consume only [`ServerNotification`], -/// [`LegacyNotification`](Self::LegacyNotification) can be removed. -/// /// [`Lagged`](Self::Lagged) is a transport health marker, not an application /// event — it signals that the consumer fell behind and some events were dropped. #[derive(Debug, Clone)] @@ -151,8 +135,6 @@ pub enum InProcessServerEvent { ServerRequest(ServerRequest), /// App-server notification directed to the embedded client. ServerNotification(ServerNotification), - /// Legacy JSON-RPC notification from core event bridge. - LegacyNotification(JSONRPCNotification), /// Indicates one or more events were dropped due to backpressure. Lagged { skipped: usize }, } @@ -646,32 +628,7 @@ fn start_uninitialized(args: InProcessStartArgs) -> InProcessClientHandle { } } } - OutgoingMessage::Notification(notification) => { - let notification = JSONRPCNotification { - method: notification.method, - params: notification.params, - }; - if legacy_notification_requires_delivery(¬ification) { - if event_tx - .send(InProcessServerEvent::LegacyNotification(notification)) - .await - .is_err() - { - break; - } - } else if let Err(send_error) = - event_tx.try_send(InProcessServerEvent::LegacyNotification(notification)) - { - match send_error { - mpsc::error::TrySendError::Full(_) => { - warn!("dropping in-process legacy notification (queue full)"); - } - mpsc::error::TrySendError::Closed(_) => { - break; - } - } - } - } + OutgoingMessage::Notification(_notification) => {} } } } @@ -847,7 +804,7 @@ mod tests { } #[test] - fn guaranteed_delivery_helpers_cover_terminal_notifications() { + fn guaranteed_delivery_helpers_cover_terminal_server_notifications() { assert!(server_notification_requires_delivery( &ServerNotification::TurnCompleted(TurnCompletedNotification { thread_id: "thread-1".to_string(), @@ -859,30 +816,5 @@ mod tests { }, }) )); - - assert!(legacy_notification_requires_delivery( - &JSONRPCNotification { - method: "codex/event/task_complete".to_string(), - params: None, - } - )); - assert!(legacy_notification_requires_delivery( - &JSONRPCNotification { - method: "codex/event/turn_aborted".to_string(), - params: None, - } - )); - assert!(legacy_notification_requires_delivery( - &JSONRPCNotification { - method: "codex/event/shutdown_complete".to_string(), - params: None, - } - )); - assert!(!legacy_notification_requires_delivery( - &JSONRPCNotification { - method: "codex/event/item_started".to_string(), - params: None, - } - )); } } diff --git a/codex-rs/exec/src/lib.rs b/codex-rs/exec/src/lib.rs index 0b74f252fe..90f693ec2d 100644 --- a/codex-rs/exec/src/lib.rs +++ b/codex-rs/exec/src/lib.rs @@ -819,7 +819,6 @@ async fn run_exec_session(args: ExecRunArgs) -> anyhow::Result<()> { warn!("{message}"); let _ = event_processor.process_event(TypedExecEvent::Warning(message)); } - InProcessServerEvent::LegacyNotification(_) => {} } }