Struct Cache Telemetry Event

View as Markdown

Generated from cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-ffi.

pub struct CacheTelemetryEvent {
    pub request_id: Uuid,
    pub agent_identity: AgentIdentity,
    pub cache_read_tokens: u64,
    pub cache_creation_tokens: u64,
    pub total_prompt_tokens: u64,
    pub hit_rate: f64,
    pub miss_reason: Option<CacheMissReason>,
    pub miss_diagnosis: Option<CacheMissDiagnosis>,
    pub provider: String,
    pub timestamp: DateTime<Utc>,
}

Per-call cache telemetry event.

Captures provider-agnostic cache metrics for a single LLM request. The agent_identity field cross-references the Phase 3 AgentIdentity type for per-agent grouping.

Fields

request_id: Uuid

Request ID this telemetry pertains to.

agent_identity: AgentIdentity

Identity of the agent that issued the request.

cache_read_tokens: u64

Number of tokens served from cache.

cache_creation_tokens: u64

Number of tokens written to cache.

total_prompt_tokens: u64

Total prompt tokens (for hit rate calculation).

hit_rate: f64

Computed cache hit rate [0.0, 1.0].

miss_reason: Option<CacheMissReason>

Reason for cache miss, if applicable.

miss_diagnosis: Option<CacheMissDiagnosis>

Structured miss diagnosis, when the miss can be justified safely.

provider: String

Provider name (e.g., “anthropic”, “openai”).

timestamp: DateTime<Utc>

When this telemetry was recorded.

Implementations

impl CacheTelemetryEvent

impl CacheTelemetryEvent

compute_hit_rate

pub fn compute_hit_rate(cache_read_tokens: u64, total_prompt_tokens: u64) -> f64

Computes hit rate from token counts. Returns 0.0 if total_prompt_tokens is zero to avoid division by zero.

from_usage

pub fn from_usage(
    request_id: Uuid,
    agent_identity: AgentIdentity,
    provider: CacheTelemetryProvider,
    usage: &Usage,
    timestamp: DateTime<Utc>,
    request_facts: Option<&CacheRequestFacts>,
) -> Option<Self>

Builds a canonical cache telemetry event from normalized usage fields.

Returns None when the normalized usage payload does not contain prompt_tokens, because Phase 10 does not invent missing totals.

Trait Implementations

impl Clone for CacheTelemetryEvent

impl Clone for CacheTelemetryEvent

clone

fn clone(&self) -> CacheTelemetryEvent

clone_from

fn clone_from(&mut self, source: &Self)

impl Debug for CacheTelemetryEvent

impl Debug for CacheTelemetryEvent

fmt

fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl<'de> Deserialize<'de> for CacheTelemetryEvent

impl<'de> Deserialize<'de> for CacheTelemetryEvent

deserialize

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
    __D: Deserializer<'de>,

impl PartialEq for CacheTelemetryEvent

impl PartialEq for CacheTelemetryEvent

eq

fn eq(&self, other: &CacheTelemetryEvent) -> bool

ne

fn ne(&self, other: &Rhs) -> bool

impl Serialize for CacheTelemetryEvent

impl Serialize for CacheTelemetryEvent

serialize

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where
    __S: Serializer,

impl StructuralPartialEq for CacheTelemetryEvent

impl StructuralPartialEq for CacheTelemetryEvent