mirror of
https://github.com/openai/codex.git
synced 2026-11-14 06:48:26 +00:00
chore(otel): rename OtelManager to SessionTelemetry (#13808)
## Summary This is a purely mechanical refactor of `OtelManager` -> `SessionTelemetry` to better convey what the struct is doing. No behavior change. ## Why `OtelManager` ended up sounding much broader than what this type actually does. It doesn't manage OTEL globally; it's the session-scoped telemetry surface for emitting log/trace events and recording metrics with consistent session metadata (`app_version`, `model`, `slug`, `originator`, etc.). `SessionTelemetry` is a more accurate name, and updating the call sites makes that boundary a lot easier to follow. ## Validation - `just fmt` - `cargo test -p codex-otel` - `cargo test -p codex-core`
This commit is contained in:
1 parent
3794363cac
commit
289ed549cf
45 files changed
+318
-290
No files matched your search
+35
-29
@@ -57,7 +57,7 @@ use codex_core::models_manager::model_presets::HIDE_GPT_5_1_CODEX_MAX_MIGRATION_
|
||||
use codex_core::models_manager::model_presets::HIDE_GPT5_1_MIGRATION_PROMPT_CONFIG;
|
||||
#[cfg(target_os = "windows")]
|
||||
use codex_core::windows_sandbox::WindowsSandboxLevelExt;
|
||||
use codex_otel::OtelManager;
|
||||
use codex_otel::SessionTelemetry;
|
||||
use codex_otel::TelemetryAuthMode;
|
||||
use codex_protocol::ThreadId;
|
||||
use codex_protocol::config_types::Personality;
|
||||
@@ -637,7 +637,7 @@ async fn handle_model_migration_prompt_if_needed(
|
||||
|
||||
pub(crate) struct App {
|
||||
pub(crate) server: Arc<ThreadManager>,
|
||||
pub(crate) otel_manager: OtelManager,
|
||||
pub(crate) session_telemetry: SessionTelemetry,
|
||||
pub(crate) app_event_tx: AppEventSender,
|
||||
pub(crate) chat_widget: ChatWidget,
|
||||
pub(crate) auth_manager: Arc<AuthManager>,
|
||||
@@ -750,7 +750,7 @@ impl App {
|
||||
model: Some(self.chat_widget.current_model().to_string()),
|
||||
startup_tooltip_override: None,
|
||||
status_line_invalid_items_warned: self.status_line_invalid_items_warned.clone(),
|
||||
otel_manager: self.otel_manager.clone(),
|
||||
session_telemetry: self.session_telemetry.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1437,7 +1437,7 @@ impl App {
|
||||
model: Some(model),
|
||||
startup_tooltip_override: None,
|
||||
status_line_invalid_items_warned: self.status_line_invalid_items_warned.clone(),
|
||||
otel_manager: self.otel_manager.clone(),
|
||||
session_telemetry: self.session_telemetry.clone(),
|
||||
};
|
||||
self.chat_widget = ChatWidget::new(init, self.server.clone());
|
||||
self.reset_thread_event_state();
|
||||
@@ -1624,7 +1624,7 @@ impl App {
|
||||
let auth_mode = auth_ref
|
||||
.map(CodexAuth::auth_mode)
|
||||
.map(TelemetryAuthMode::from);
|
||||
let otel_manager = OtelManager::new(
|
||||
let session_telemetry = SessionTelemetry::new(
|
||||
ThreadId::new(),
|
||||
model.as_str(),
|
||||
model.as_str(),
|
||||
@@ -1641,7 +1641,7 @@ impl App {
|
||||
.as_ref()
|
||||
.is_some_and(|cmd| !cmd.is_empty())
|
||||
{
|
||||
otel_manager.counter("codex.status_line", 1, &[]);
|
||||
session_telemetry.counter("codex.status_line", 1, &[]);
|
||||
}
|
||||
|
||||
let status_line_invalid_items_warned = Arc::new(AtomicBool::new(false));
|
||||
@@ -1673,7 +1673,7 @@ impl App {
|
||||
model: Some(model.clone()),
|
||||
startup_tooltip_override,
|
||||
status_line_invalid_items_warned: status_line_invalid_items_warned.clone(),
|
||||
otel_manager: otel_manager.clone(),
|
||||
session_telemetry: session_telemetry.clone(),
|
||||
};
|
||||
ChatWidget::new(init, thread_manager.clone())
|
||||
}
|
||||
@@ -1708,12 +1708,12 @@ impl App {
|
||||
model: config.model.clone(),
|
||||
startup_tooltip_override: None,
|
||||
status_line_invalid_items_warned: status_line_invalid_items_warned.clone(),
|
||||
otel_manager: otel_manager.clone(),
|
||||
session_telemetry: session_telemetry.clone(),
|
||||
};
|
||||
ChatWidget::new_from_existing(init, resumed.thread, resumed.session_configured)
|
||||
}
|
||||
SessionSelection::Fork(target_session) => {
|
||||
otel_manager.counter("codex.thread.fork", 1, &[("source", "cli_subcommand")]);
|
||||
session_telemetry.counter("codex.thread.fork", 1, &[("source", "cli_subcommand")]);
|
||||
let forked = thread_manager
|
||||
.fork_thread(
|
||||
usize::MAX,
|
||||
@@ -1745,7 +1745,7 @@ impl App {
|
||||
model: config.model.clone(),
|
||||
startup_tooltip_override: None,
|
||||
status_line_invalid_items_warned: status_line_invalid_items_warned.clone(),
|
||||
otel_manager: otel_manager.clone(),
|
||||
session_telemetry: session_telemetry.clone(),
|
||||
};
|
||||
ChatWidget::new_from_existing(init, forked.thread, forked.session_configured)
|
||||
}
|
||||
@@ -1760,7 +1760,7 @@ impl App {
|
||||
|
||||
let mut app = Self {
|
||||
server: thread_manager.clone(),
|
||||
otel_manager: otel_manager.clone(),
|
||||
session_telemetry: session_telemetry.clone(),
|
||||
app_event_tx,
|
||||
chat_widget,
|
||||
auth_manager: auth_manager.clone(),
|
||||
@@ -2081,8 +2081,11 @@ impl App {
|
||||
tui.frame_requester().schedule_frame();
|
||||
}
|
||||
AppEvent::ForkCurrentSession => {
|
||||
self.otel_manager
|
||||
.counter("codex.thread.fork", 1, &[("source", "slash_command")]);
|
||||
self.session_telemetry.counter(
|
||||
"codex.thread.fork",
|
||||
1,
|
||||
&[("source", "slash_command")],
|
||||
);
|
||||
let summary = session_summary(
|
||||
self.chat_widget.token_usage(),
|
||||
self.chat_widget.thread_id(),
|
||||
@@ -2343,11 +2346,14 @@ impl App {
|
||||
self.chat_widget.open_windows_sandbox_enable_prompt(preset);
|
||||
}
|
||||
AppEvent::OpenWindowsSandboxFallbackPrompt { preset } => {
|
||||
self.otel_manager
|
||||
.counter("codex.windows_sandbox.fallback_prompt_shown", 1, &[]);
|
||||
self.session_telemetry.counter(
|
||||
"codex.windows_sandbox.fallback_prompt_shown",
|
||||
1,
|
||||
&[],
|
||||
);
|
||||
self.chat_widget.clear_windows_sandbox_setup_status();
|
||||
if let Some(started_at) = self.windows_sandbox.setup_started_at.take() {
|
||||
self.otel_manager.record_duration(
|
||||
self.session_telemetry.record_duration(
|
||||
"codex.windows_sandbox.elevated_setup_duration_ms",
|
||||
started_at.elapsed(),
|
||||
&[("result", "failure")],
|
||||
@@ -2380,7 +2386,7 @@ impl App {
|
||||
|
||||
self.chat_widget.show_windows_sandbox_setup_status();
|
||||
self.windows_sandbox.setup_started_at = Some(Instant::now());
|
||||
let otel_manager = self.otel_manager.clone();
|
||||
let session_telemetry = self.session_telemetry.clone();
|
||||
tokio::task::spawn_blocking(move || {
|
||||
let result = codex_core::windows_sandbox::run_elevated_setup(
|
||||
&policy,
|
||||
@@ -2391,7 +2397,7 @@ impl App {
|
||||
);
|
||||
let event = match result {
|
||||
Ok(()) => {
|
||||
otel_manager.counter(
|
||||
session_telemetry.counter(
|
||||
"codex.windows_sandbox.elevated_setup_success",
|
||||
1,
|
||||
&[],
|
||||
@@ -2419,7 +2425,7 @@ impl App {
|
||||
if let Some(message) = message_tag.as_deref() {
|
||||
tags.push(("message", message));
|
||||
}
|
||||
otel_manager.counter(
|
||||
session_telemetry.counter(
|
||||
codex_core::windows_sandbox::elevated_setup_failure_metric_name(
|
||||
&err,
|
||||
),
|
||||
@@ -2451,7 +2457,7 @@ impl App {
|
||||
std::env::vars().collect();
|
||||
let codex_home = self.config.codex_home.clone();
|
||||
let tx = self.app_event_tx.clone();
|
||||
let otel_manager = self.otel_manager.clone();
|
||||
let session_telemetry = self.session_telemetry.clone();
|
||||
|
||||
self.chat_widget.show_windows_sandbox_setup_status();
|
||||
tokio::task::spawn_blocking(move || {
|
||||
@@ -2462,7 +2468,7 @@ impl App {
|
||||
&env_map,
|
||||
codex_home.as_path(),
|
||||
) {
|
||||
otel_manager.counter(
|
||||
session_telemetry.counter(
|
||||
"codex.windows_sandbox.legacy_setup_preflight_failed",
|
||||
1,
|
||||
&[],
|
||||
@@ -2545,7 +2551,7 @@ impl App {
|
||||
{
|
||||
self.chat_widget.clear_windows_sandbox_setup_status();
|
||||
if let Some(started_at) = self.windows_sandbox.setup_started_at.take() {
|
||||
self.otel_manager.record_duration(
|
||||
self.session_telemetry.record_duration(
|
||||
"codex.windows_sandbox.elevated_setup_duration_ms",
|
||||
started_at.elapsed(),
|
||||
&[("result", "success")],
|
||||
@@ -3713,7 +3719,7 @@ mod tests {
|
||||
use codex_core::config::ConfigBuilder;
|
||||
use codex_core::config::ConfigOverrides;
|
||||
use codex_core::config::types::ModelAvailabilityNuxConfig;
|
||||
use codex_otel::OtelManager;
|
||||
use codex_otel::SessionTelemetry;
|
||||
use codex_protocol::ThreadId;
|
||||
use codex_protocol::config_types::CollaborationMode;
|
||||
use codex_protocol::config_types::CollaborationModeMask;
|
||||
@@ -5276,11 +5282,11 @@ mod tests {
|
||||
);
|
||||
let file_search = FileSearchManager::new(config.cwd.clone(), app_event_tx.clone());
|
||||
let model = codex_core::test_support::get_model_offline(config.model.as_deref());
|
||||
let otel_manager = test_otel_manager(&config, model.as_str());
|
||||
let session_telemetry = test_session_telemetry(&config, model.as_str());
|
||||
|
||||
App {
|
||||
server,
|
||||
otel_manager,
|
||||
session_telemetry,
|
||||
app_event_tx,
|
||||
chat_widget,
|
||||
auth_manager,
|
||||
@@ -5335,12 +5341,12 @@ mod tests {
|
||||
);
|
||||
let file_search = FileSearchManager::new(config.cwd.clone(), app_event_tx.clone());
|
||||
let model = codex_core::test_support::get_model_offline(config.model.as_deref());
|
||||
let otel_manager = test_otel_manager(&config, model.as_str());
|
||||
let session_telemetry = test_session_telemetry(&config, model.as_str());
|
||||
|
||||
(
|
||||
App {
|
||||
server,
|
||||
otel_manager,
|
||||
session_telemetry,
|
||||
app_event_tx,
|
||||
chat_widget,
|
||||
auth_manager,
|
||||
@@ -5391,9 +5397,9 @@ mod tests {
|
||||
panic!("expected UserTurn op, saw: {seen:?}");
|
||||
}
|
||||
|
||||
fn test_otel_manager(config: &Config, model: &str) -> OtelManager {
|
||||
fn test_session_telemetry(config: &Config, model: &str) -> SessionTelemetry {
|
||||
let model_info = codex_core::test_support::construct_model_info_offline(model, config);
|
||||
OtelManager::new(
|
||||
SessionTelemetry::new(
|
||||
ThreadId::new(),
|
||||
model,
|
||||
model_info.slug.as_str(),
|
||||
|
||||
Reference in new issue
Block a user