@@ -2,7 +2,11 @@ use crate::facts::AppInvocation;
22use crate :: facts:: InvocationType ;
33use crate :: facts:: PluginState ;
44use crate :: facts:: SubAgentThreadStartedInput ;
5+ use crate :: facts:: ThreadInitializationMode ;
56use crate :: facts:: TrackEventsContext ;
7+ use crate :: facts:: TurnStatus ;
8+ use crate :: facts:: TurnSubmissionType ;
9+ use codex_app_server_protocol:: CodexErrorInfo ;
610use codex_login:: default_client:: originator;
711use codex_plugin:: PluginTelemetryMetadata ;
812use codex_protocol:: protocol:: SessionSource ;
@@ -17,14 +21,6 @@ pub enum AppServerRpcTransport {
1721 InProcess ,
1822}
1923
20- #[ derive( Clone , Copy , Debug , Serialize ) ]
21- #[ serde( rename_all = "snake_case" ) ]
22- pub ( crate ) enum ThreadInitializationMode {
23- New ,
24- Forked ,
25- Resumed ,
26- }
27-
2824#[ derive( Serialize ) ]
2925pub ( crate ) struct TrackEventsRequest {
3026 pub ( crate ) events : Vec < TrackEventRequest > ,
@@ -37,6 +33,7 @@ pub(crate) enum TrackEventRequest {
3733 ThreadInitialized ( ThreadInitializedEvent ) ,
3834 AppMentioned ( CodexAppMentionedEventRequest ) ,
3935 AppUsed ( CodexAppUsedEventRequest ) ,
36+ TurnEvent ( Box < CodexTurnEventRequest > ) ,
4037 PluginUsed ( CodexPluginUsedEventRequest ) ,
4138 PluginInstalled ( CodexPluginEventRequest ) ,
4239 PluginUninstalled ( CodexPluginEventRequest ) ,
@@ -122,6 +119,53 @@ pub(crate) struct CodexAppUsedEventRequest {
122119 pub ( crate ) event_params : CodexAppMetadata ,
123120}
124121
122+ #[ derive( Serialize ) ]
123+ pub ( crate ) struct CodexTurnEventParams {
124+ pub ( crate ) thread_id : String ,
125+ pub ( crate ) turn_id : String ,
126+ pub ( crate ) submission_type : Option < TurnSubmissionType > ,
127+ pub ( crate ) app_server_client : CodexAppServerClientMetadata ,
128+ pub ( crate ) runtime : CodexRuntimeMetadata ,
129+ pub ( crate ) ephemeral : bool ,
130+ pub ( crate ) thread_source : Option < String > ,
131+ pub ( crate ) initialization_mode : ThreadInitializationMode ,
132+ pub ( crate ) subagent_source : Option < String > ,
133+ pub ( crate ) parent_thread_id : Option < String > ,
134+ pub ( crate ) model : Option < String > ,
135+ pub ( crate ) model_provider : String ,
136+ pub ( crate ) sandbox_policy : Option < & ' static str > ,
137+ pub ( crate ) reasoning_effort : Option < String > ,
138+ pub ( crate ) reasoning_summary : Option < String > ,
139+ pub ( crate ) service_tier : String ,
140+ pub ( crate ) approval_policy : String ,
141+ pub ( crate ) approvals_reviewer : String ,
142+ pub ( crate ) sandbox_network_access : bool ,
143+ pub ( crate ) collaboration_mode : Option < & ' static str > ,
144+ pub ( crate ) personality : Option < String > ,
145+ pub ( crate ) num_input_images : usize ,
146+ pub ( crate ) is_first_turn : bool ,
147+ pub ( crate ) status : Option < TurnStatus > ,
148+ pub ( crate ) turn_error : Option < CodexErrorInfo > ,
149+ pub ( crate ) steer_count : Option < usize > ,
150+ pub ( crate ) total_tool_call_count : Option < usize > ,
151+ pub ( crate ) shell_command_count : Option < usize > ,
152+ pub ( crate ) file_change_count : Option < usize > ,
153+ pub ( crate ) mcp_tool_call_count : Option < usize > ,
154+ pub ( crate ) dynamic_tool_call_count : Option < usize > ,
155+ pub ( crate ) subagent_tool_call_count : Option < usize > ,
156+ pub ( crate ) web_search_count : Option < usize > ,
157+ pub ( crate ) image_generation_count : Option < usize > ,
158+ pub ( crate ) duration_ms : Option < u64 > ,
159+ pub ( crate ) started_at : Option < u64 > ,
160+ pub ( crate ) completed_at : Option < u64 > ,
161+ }
162+
163+ #[ derive( Serialize ) ]
164+ pub ( crate ) struct CodexTurnEventRequest {
165+ pub ( crate ) event_type : & ' static str ,
166+ pub ( crate ) event_params : CodexTurnEventParams ,
167+ }
168+
125169#[ derive( Serialize ) ]
126170pub ( crate ) struct CodexPluginMetadata {
127171 pub ( crate ) plugin_id : Option < String > ,
0 commit comments