diff --git a/codex-rs/analytics/src/analytics_client.rs b/codex-rs/analytics/src/analytics_client.rs index 31e0bd64ea..f178aa0418 100644 --- a/codex-rs/analytics/src/analytics_client.rs +++ b/codex-rs/analytics/src/analytics_client.rs @@ -30,7 +30,7 @@ pub struct TrackEventsContext { } #[derive(Clone)] -pub struct ThreadInitializeInput { +pub struct ThreadInitializedInput { pub connection_id: u64, pub thread_id: String, pub model: String, @@ -102,7 +102,7 @@ pub enum AnalyticsFact { pub enum CustomAnalyticsFact { // This remains custom on this branch because app-server-protocol does not // yet expose a generic client response enum we can reduce over directly. - ThreadInitialized(ThreadInitializeInput), + ThreadInitialized(ThreadInitializedInput), SkillInvoked(SkillInvokedInput), AppMentioned(AppMentionedInput), AppUsed(AppUsedInput), @@ -255,7 +255,7 @@ impl AnalyticsEventsClient { }); } - pub fn track_thread_initialized(&self, input: ThreadInitializeInput) { + pub fn track_thread_initialized(&self, input: ThreadInitializedInput) { self.record_fact(AnalyticsFact::Custom( CustomAnalyticsFact::ThreadInitialized(input), )); @@ -499,7 +499,7 @@ impl AnalyticsReducer { fn ingest_thread_initialized( &mut self, - input: ThreadInitializeInput, + input: ThreadInitializedInput, out: &mut Vec, ) { let Some(client_state) = self.clients.get(&input.connection_id) else { @@ -628,7 +628,7 @@ fn codex_app_metadata(tracking: &TrackEventsContext, app: AppInvocation) -> Code fn codex_thread_initialized_event_request( product_client_id: String, - input: ThreadInitializeInput, + input: ThreadInitializedInput, ) -> CodexThreadInitializedEvent { CodexThreadInitializedEvent { event_type: "codex_thread_initialized", @@ -638,7 +638,7 @@ fn codex_thread_initialized_event_request( fn codex_thread_initialized_event_params( product_client_id: String, - input: ThreadInitializeInput, + input: ThreadInitializedInput, ) -> CodexThreadInitializedEventParams { CodexThreadInitializedEventParams { thread_id: input.thread_id, diff --git a/codex-rs/analytics/src/analytics_client_tests.rs b/codex-rs/analytics/src/analytics_client_tests.rs index b26fba4cbc..b9b918a76a 100644 --- a/codex-rs/analytics/src/analytics_client_tests.rs +++ b/codex-rs/analytics/src/analytics_client_tests.rs @@ -9,7 +9,7 @@ use super::CodexPluginUsedEventRequest; use super::CustomAnalyticsFact; use super::InitializationMode; use super::InvocationType; -use super::ThreadInitializeInput; +use super::ThreadInitializedInput; use super::TrackEventRequest; use super::TrackEventsContext; use super::codex_app_metadata; @@ -199,7 +199,7 @@ fn app_used_dedupe_is_keyed_by_turn_and_connector() { fn thread_initialized_event_serializes_expected_shape() { let event = TrackEventRequest::CodexThreadInitialized(codex_thread_initialized_event_request( "codex-tui".to_string(), - ThreadInitializeInput { + ThreadInitializedInput { connection_id: 1, thread_id: "thread-0".to_string(), model: "gpt-5".to_string(), @@ -239,7 +239,7 @@ async fn initialize_caches_client_and_thread_lifecycle_publishes_once_initialize reducer .ingest( AnalyticsFact::Custom(CustomAnalyticsFact::ThreadInitialized( - ThreadInitializeInput { + ThreadInitializedInput { connection_id: 7, thread_id: "thread-no-client".to_string(), model: "gpt-5".to_string(), @@ -274,7 +274,7 @@ async fn initialize_caches_client_and_thread_lifecycle_publishes_once_initialize reducer .ingest( AnalyticsFact::Custom(CustomAnalyticsFact::ThreadInitialized( - ThreadInitializeInput { + ThreadInitializedInput { connection_id: 7, thread_id: "thread-1".to_string(), model: "gpt-5".to_string(), @@ -293,8 +293,8 @@ async fn initialize_caches_client_and_thread_lifecycle_publishes_once_initialize assert_eq!(payload[0]["event_params"]["product_client_id"], "codex-tui"); assert_eq!(payload[0]["event_params"]["initialization_mode"], "resumed"); assert_eq!(payload[0]["event_params"]["session_source"], "user"); - assert_eq!(payload[0]["event_params"]["subagent_source"], Value::Null); - assert_eq!(payload[0]["event_params"]["parent_thread_id"], Value::Null); + assert_eq!(payload[0]["event_params"]["subagent_source"], json!(null)); + assert_eq!(payload[0]["event_params"]["parent_thread_id"], json!(null)); } #[test] diff --git a/codex-rs/analytics/src/lib.rs b/codex-rs/analytics/src/lib.rs index ae841bbb75..1efe63904a 100644 --- a/codex-rs/analytics/src/lib.rs +++ b/codex-rs/analytics/src/lib.rs @@ -14,6 +14,6 @@ pub use analytics_client::PluginStateChangedInput; pub use analytics_client::PluginUsedInput; pub use analytics_client::SkillInvocation; pub use analytics_client::SkillInvokedInput; -pub use analytics_client::ThreadInitializeInput; +pub use analytics_client::ThreadInitializedInput; pub use analytics_client::TrackEventsContext; pub use analytics_client::build_track_events_context; diff --git a/codex-rs/app-server/src/codex_message_processor.rs b/codex-rs/app-server/src/codex_message_processor.rs index 9c3ebf5400..22bc9d7f26 100644 --- a/codex-rs/app-server/src/codex_message_processor.rs +++ b/codex-rs/app-server/src/codex_message_processor.rs @@ -191,7 +191,7 @@ use codex_core::RolloutRecorder; use codex_core::SessionMeta; use codex_core::SteerInputError; use codex_core::ThreadConfigSnapshot; -use codex_core::ThreadInitializeInput; +use codex_core::ThreadInitializedInput; use codex_core::ThreadManager; use codex_core::ThreadSortKey as CoreThreadSortKey; use codex_core::auth::AuthMode as CoreAuthMode; @@ -7893,8 +7893,8 @@ fn thread_initialize_input( thread: &Thread, model: String, initialization_mode: InitializationMode, -) -> ThreadInitializeInput { - ThreadInitializeInput { +) -> ThreadInitializedInput { + ThreadInitializedInput { connection_id: connection_id.0, thread_id: thread.id.clone(), model, diff --git a/codex-rs/core/src/lib.rs b/codex-rs/core/src/lib.rs index 6ee4f2482e..2764f6f805 100644 --- a/codex-rs/core/src/lib.rs +++ b/codex-rs/core/src/lib.rs @@ -139,7 +139,7 @@ pub use codex_analytics::AnalyticsEventsClient; pub use codex_analytics::AnalyticsFact; pub use codex_analytics::CustomAnalyticsFact; pub use codex_analytics::InitializationMode; -pub use codex_analytics::ThreadInitializeInput; +pub use codex_analytics::ThreadInitializedInput; mod default_client_forwarding; /// Default Codex HTTP client headers and reqwest construction.