mirror of
https://github.com/openai/codex.git
synced 2026-10-28 18:58:46 +00:00
## Why TUI startup metrics report the selected app-server mode before a connection succeeds, which can misrepresent embedded fallback or failed startup. Daemon startup and update actions also need distinct outcome observations. ## What changed - Record `codex.tui.start` once after the first connection attempt, using the actual mode or `unconfirmed`, and include daemon selection and auto-start tags. - Add `codex.daemon.start` for TUI auto-start and `codex.daemon.update` for foreground CLI updates and TUI update handoffs, using existing analytics consent and identity handling. - Report TUI handoffs as `handoff_requested` and suppress duplicate child reporting. Remove the suppression flag when spawning long-lived daemon processes. - Tag daemon settings by enabled state and explicit presence, without exporting setting values or contents; report invalid or unreadable settings as `unknown`. ## Testing Add coverage for analytics defaults and explicit consent overrides, unconfirmed CLI updates, settings presence, and exactly-once launch observations. Extend the worktree TUI test to check startup tags and a single update handoff observation. GitOrigin-RevId: 176d2ee594f930033fa1ece55d4c1c9603dbbc16
22 lines
939 B
Rust
22 lines
939 B
Rust
//! Bounded observations for foreground callers. This module never exports telemetry;
|
|
//! in particular, the detached updater must not create a telemetry provider.
|
|
|
|
use std::path::Path;
|
|
|
|
/// Suppress child reporting when the foreground TUI handoff owns the observation.
|
|
pub const HANDOFF_ENV: &str = "CODEX_DAEMON_TELEMETRY_HANDOFF";
|
|
|
|
/// Only presence and enabled state leave the settings reader, never values or contents.
|
|
/// Missing files mean defaults; unreadable or invalid settings remain unknown.
|
|
pub async fn settings_tags(codex_home: &Path) -> [(&'static str, &'static str); 4] {
|
|
let path = codex_home
|
|
.join(crate::STATE_DIR_NAME)
|
|
.join(crate::SETTINGS_FILE_NAME);
|
|
crate::settings::telemetry_tags(&path).await.unwrap_or([
|
|
("auto_update", "unknown"),
|
|
("auto_update_setting", "unknown"),
|
|
("update_interval_setting", "unknown"),
|
|
("shutdown_grace_setting", "unknown"),
|
|
])
|
|
}
|