From 6071ffd3f07938f328b2927a841d361b6a6df92b Mon Sep 17 00:00:00 2001 From: Roy Han Date: Wed, 1 Apr 2026 13:17:29 -0700 Subject: [PATCH 1/2] schema regen --- .../schema/json/ServerNotification.json | 20 +++++++++++++++++++ .../codex_app_server_protocol.schemas.json | 20 +++++++++++++++++++ .../codex_app_server_protocol.v2.schemas.json | 20 +++++++++++++++++++ .../json/v2/TurnCompletedNotification.json | 14 +++++++++++++ .../json/v2/TurnStartedNotification.json | 6 ++++++ .../v2/TurnCompletedNotification.ts | 10 +++++++++- .../typescript/v2/TurnStartedNotification.ts | 6 +++++- 7 files changed, 94 insertions(+), 2 deletions(-) diff --git a/codex-rs/app-server-protocol/schema/json/ServerNotification.json b/codex-rs/app-server-protocol/schema/json/ServerNotification.json index e1a7cd3f3d..b31f274908 100644 --- a/codex-rs/app-server-protocol/schema/json/ServerNotification.json +++ b/codex-rs/app-server-protocol/schema/json/ServerNotification.json @@ -3367,6 +3367,19 @@ }, "TurnCompletedNotification": { "properties": { + "completedAt": { + "description": "Unix timestamp (in seconds) when the turn completed.", + "format": "int64", + "type": "integer" + }, + "durationMs": { + "description": "Duration between turn start and completion in milliseconds, if known.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, "threadId": { "type": "string" }, @@ -3375,6 +3388,7 @@ } }, "required": [ + "completedAt", "threadId", "turn" ], @@ -3481,6 +3495,11 @@ }, "TurnStartedNotification": { "properties": { + "createdAt": { + "description": "Unix timestamp (in seconds) when the turn started.", + "format": "int64", + "type": "integer" + }, "threadId": { "type": "string" }, @@ -3489,6 +3508,7 @@ } }, "required": [ + "createdAt", "threadId", "turn" ], diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json index 084da013e4..d6f616ad83 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.schemas.json @@ -14174,6 +14174,19 @@ "TurnCompletedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { + "completedAt": { + "description": "Unix timestamp (in seconds) when the turn completed.", + "format": "int64", + "type": "integer" + }, + "durationMs": { + "description": "Duration between turn start and completion in milliseconds, if known.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, "threadId": { "type": "string" }, @@ -14182,6 +14195,7 @@ } }, "required": [ + "completedAt", "threadId", "turn" ], @@ -14450,6 +14464,11 @@ "TurnStartedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { + "createdAt": { + "description": "Unix timestamp (in seconds) when the turn started.", + "format": "int64", + "type": "integer" + }, "threadId": { "type": "string" }, @@ -14458,6 +14477,7 @@ } }, "required": [ + "createdAt", "threadId", "turn" ], diff --git a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json index 59dab32b19..5c681fa9b8 100644 --- a/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json +++ b/codex-rs/app-server-protocol/schema/json/codex_app_server_protocol.v2.schemas.json @@ -12020,6 +12020,19 @@ "TurnCompletedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { + "completedAt": { + "description": "Unix timestamp (in seconds) when the turn completed.", + "format": "int64", + "type": "integer" + }, + "durationMs": { + "description": "Duration between turn start and completion in milliseconds, if known.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, "threadId": { "type": "string" }, @@ -12028,6 +12041,7 @@ } }, "required": [ + "completedAt", "threadId", "turn" ], @@ -12296,6 +12310,11 @@ "TurnStartedNotification": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { + "createdAt": { + "description": "Unix timestamp (in seconds) when the turn started.", + "format": "int64", + "type": "integer" + }, "threadId": { "type": "string" }, @@ -12304,6 +12323,7 @@ } }, "required": [ + "createdAt", "threadId", "turn" ], diff --git a/codex-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json b/codex-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json index 770cc920cf..3780541077 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json +++ b/codex-rs/app-server-protocol/schema/json/v2/TurnCompletedNotification.json @@ -1559,6 +1559,19 @@ } }, "properties": { + "completedAt": { + "description": "Unix timestamp (in seconds) when the turn completed.", + "format": "int64", + "type": "integer" + }, + "durationMs": { + "description": "Duration between turn start and completion in milliseconds, if known.", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, "threadId": { "type": "string" }, @@ -1567,6 +1580,7 @@ } }, "required": [ + "completedAt", "threadId", "turn" ], diff --git a/codex-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json b/codex-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json index 761ddc9a62..94af685a0b 100644 --- a/codex-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json +++ b/codex-rs/app-server-protocol/schema/json/v2/TurnStartedNotification.json @@ -1559,6 +1559,11 @@ } }, "properties": { + "createdAt": { + "description": "Unix timestamp (in seconds) when the turn started.", + "format": "int64", + "type": "integer" + }, "threadId": { "type": "string" }, @@ -1567,6 +1572,7 @@ } }, "required": [ + "createdAt", "threadId", "turn" ], diff --git a/codex-rs/app-server-protocol/schema/typescript/v2/TurnCompletedNotification.ts b/codex-rs/app-server-protocol/schema/typescript/v2/TurnCompletedNotification.ts index e1b151bfa7..fbe9e11b5a 100644 --- a/codex-rs/app-server-protocol/schema/typescript/v2/TurnCompletedNotification.ts +++ b/codex-rs/app-server-protocol/schema/typescript/v2/TurnCompletedNotification.ts @@ -3,4 +3,12 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. import type { Turn } from "./Turn"; -export type TurnCompletedNotification = { threadId: string, turn: Turn, }; +export type TurnCompletedNotification = { threadId: string, turn: Turn, +/** + * Unix timestamp (in seconds) when the turn completed. + */ +completedAt: number, +/** + * Duration between turn start and completion in milliseconds, if known. + */ +durationMs: number | null, }; diff --git a/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartedNotification.ts b/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartedNotification.ts index 34f71b2465..8c31149506 100644 --- a/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartedNotification.ts +++ b/codex-rs/app-server-protocol/schema/typescript/v2/TurnStartedNotification.ts @@ -3,4 +3,8 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. import type { Turn } from "./Turn"; -export type TurnStartedNotification = { threadId: string, turn: Turn, }; +export type TurnStartedNotification = { threadId: string, turn: Turn, +/** + * Unix timestamp (in seconds) when the turn started. + */ +createdAt: number, }; From 916866937f466e330e465806a5cdbc9f4aaae168 Mon Sep 17 00:00:00 2001 From: Roy Han Date: Wed, 1 Apr 2026 13:20:01 -0700 Subject: [PATCH 2/2] remove churn --- codex-rs/core/src/codex.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index be8043c63c..e04952c78f 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -54,6 +54,11 @@ use async_channel::Receiver; use async_channel::Sender; use chrono::Local; use chrono::Utc; +use codex_analytics::AnalyticsEventsClient; +use codex_analytics::AppInvocation; +use codex_analytics::InvocationType; +use codex_analytics::TurnResolvedConfigFact; +use codex_analytics::build_track_events_context; use codex_app_server_protocol::McpServerElicitationRequest; use codex_app_server_protocol::McpServerElicitationRequestParams; use codex_exec_server::Environment; @@ -353,11 +358,6 @@ use crate::turn_timing::record_turn_ttft_metric; use crate::unified_exec::UnifiedExecProcessManager; use crate::util::backoff; use crate::windows_sandbox::WindowsSandboxLevelExt; -use codex_analytics::AnalyticsEventsClient; -use codex_analytics::AppInvocation; -use codex_analytics::InvocationType; -use codex_analytics::TurnResolvedConfigFact; -use codex_analytics::build_track_events_context; use codex_async_utils::OrCancelExt; use codex_git_utils::get_git_repo_root; use codex_otel::SessionTelemetry; @@ -6190,6 +6190,7 @@ pub(crate) async fn run_turn( } } } + last_agent_message }