Codex Handbook
otel/src/lib.rs 79 lines
pub(crate) mod config;mod events;pub(crate) mod metrics;pub(crate) mod provider;pub(crate) mod trace_context;mod otlp;mod targets;use crate::metrics::Result as MetricsResult;use serde::Serialize;use strum_macros::Display;pub use crate::config::OtelExporter;pub use crate::config::OtelHttpProtocol;pub use crate::config::OtelSettings;pub use crate::config::OtelTlsConfig;pub use crate::config::StatsigMetricsSettings;pub use crate::config::validate_span_attributes;pub use crate::events::session_telemetry::AuthEnvTelemetryMetadata;pub use crate::events::session_telemetry::SessionTelemetry;pub use crate::events::session_telemetry::SessionTelemetryMetadata;pub use crate::metrics::runtime_metrics::RuntimeMetricTotals;pub use crate::metrics::runtime_metrics::RuntimeMetricsSummary;pub use crate::metrics::timer::Timer;pub use crate::metrics::*;pub use crate::provider::OtelProvider;pub use crate::trace_context::context_from_w3c_trace_context;pub use crate::trace_context::current_span_trace_id;pub use crate::trace_context::current_span_w3c_trace_context;pub use crate::trace_context::set_parent_from_context;pub use crate::trace_context::set_parent_from_w3c_trace_context;pub use crate::trace_context::span_w3c_trace_context;pub use crate::trace_context::traceparent_context_from_env;pub use crate::trace_context::validate_tracestate_entries;pub use crate::trace_context::validate_tracestate_member;pub use codex_utils_string::sanitize_metric_tag_value;#[derive(Debug, Clone, Serialize, Display)]#[serde(rename_all = "snake_case")]pub enum ToolDecisionSource {    AutomatedReviewer,    Config,    User,}/// Maps to API/auth `AuthMode` to avoid a circular dependency on codex-core.#[derive(Debug, Clone, Copy, PartialEq, Eq, Display)]pub enum TelemetryAuthMode {    ApiKey,    Chatgpt,}impl From<codex_app_server_protocol::AuthMode> for TelemetryAuthMode {    fn from(mode: codex_app_server_protocol::AuthMode) -> Self {        match mode {            codex_app_server_protocol::AuthMode::ApiKey            | codex_app_server_protocol::AuthMode::BedrockApiKey => Self::ApiKey,            codex_app_server_protocol::AuthMode::Chatgpt            | codex_app_server_protocol::AuthMode::ChatgptAuthTokens            | codex_app_server_protocol::AuthMode::AgentIdentity            | codex_app_server_protocol::AuthMode::PersonalAccessToken => Self::Chatgpt,        }    }}/// Start a metrics timer using the globally installed metrics client.pub fn start_global_timer(name: &str, tags: &[(&str, &str)]) -> MetricsResult<Timer> {    let Some(metrics) = crate::metrics::global() else {        return Err(MetricsError::ExporterDisabled);    };    metrics.start_timer(name, tags)}/// Returns the resolved Statsig metrics settings for the globally installed/// OTEL metrics client, if the active metrics exporter is Statsig.pub fn global_statsig_metrics_settings() -> Option<StatsigMetricsSettings> {    crate::metrics::global_statsig_settings()}