diff --git a/codex-rs/analytics/src/analytics_client.rs b/codex-rs/analytics/src/analytics_client.rs index f42059a622..43675ca0ab 100644 --- a/codex-rs/analytics/src/analytics_client.rs +++ b/codex-rs/analytics/src/analytics_client.rs @@ -42,6 +42,7 @@ pub struct CodexThreadInitializedEvent { pub struct CodexThreadInitializedInput { pub thread_id: String, pub model: String, + pub product_client_id: String, pub created_at: u64, pub thread_context: CodexThreadContext, } @@ -460,6 +461,7 @@ impl AnalyticsReducer { input: CodexThreadInitializedInput, out: &mut Vec, ) { + let product_client_id = input.product_client_id.clone(); let event = CodexThreadInitializedEvent { thread_id: input.thread_id, model: input.model, @@ -477,10 +479,7 @@ impl AnalyticsReducer { }, ); out.push(TrackEventRequest::ThreadInitialized( - CodexThreadInitializedEventRequest { - event_type: "codex_thread_initialized", - event_params: codex_thread_initialized_event_params(event), - }, + codex_thread_initialized_event_request(product_client_id, event), )); } @@ -602,10 +601,30 @@ fn codex_app_metadata(tracking: &TrackEventsContext, app: AppInvocation) -> Code fn codex_thread_initialized_event_params( thread_event: CodexThreadInitializedEvent, +) -> CodexThreadInitializedEventParams { + codex_thread_initialized_event_params_with_product_client_id(originator().value, thread_event) +} + +fn codex_thread_initialized_event_request( + product_client_id: String, + thread_event: CodexThreadInitializedEvent, +) -> CodexThreadInitializedEventRequest { + CodexThreadInitializedEventRequest { + event_type: "codex_thread_initialized", + event_params: codex_thread_initialized_event_params_with_product_client_id( + product_client_id, + thread_event, + ), + } +} + +fn codex_thread_initialized_event_params_with_product_client_id( + product_client_id: String, + thread_event: CodexThreadInitializedEvent, ) -> CodexThreadInitializedEventParams { CodexThreadInitializedEventParams { thread_id: thread_event.thread_id, - product_client_id: originator().value, + product_client_id, model: thread_event.model, ephemeral: thread_event.ephemeral, session_source: session_source_name(&thread_event.session_source), diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index d333ab7cc9..68b6a296e6 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -677,6 +677,7 @@ impl Codex { .collaboration_mode .model() .to_string(), + product_client_id: crate::default_client::originator().value, created_at: SystemTime::now() .duration_since(UNIX_EPOCH) .unwrap_or_default()