pub struct AgentMetrics {Show 17 fields
pub iterations: usize,
pub tool_calls: usize,
pub input_tokens: u32,
pub output_tokens: u32,
pub cache_read_tokens: u32,
pub cache_creation_tokens: u32,
pub execution_time_ms: u64,
pub errors: usize,
pub compactions: usize,
pub api_calls: usize,
pub total_cost_usd: f64,
pub tool_stats: HashMap<String, ToolStats>,
pub tool_call_records: Vec<ToolCallRecord>,
pub model_usage: HashMap<String, ModelUsage>,
pub server_tool_use: ServerToolUse,
pub permission_denials: Vec<PermissionDenial>,
pub api_time_ms: u64,
}Fields§
§iterations: usize§tool_calls: usize§input_tokens: u32§output_tokens: u32§cache_read_tokens: u32§cache_creation_tokens: u32§execution_time_ms: u64§errors: usize§compactions: usize§api_calls: usize§total_cost_usd: f64§tool_stats: HashMap<String, ToolStats>§tool_call_records: Vec<ToolCallRecord>§model_usage: HashMap<String, ModelUsage>§server_tool_use: ServerToolUse§permission_denials: Vec<PermissionDenial>§api_time_ms: u64Implementations§
Source§impl AgentMetrics
impl AgentMetrics
pub fn total_tokens(&self) -> u32
pub fn add_usage(&mut self, input: u32, output: u32)
pub fn add_usage_with_cache(&mut self, usage: &Usage)
pub fn cache_hit_rate(&self) -> f64
pub fn cache_tokens_saved(&self) -> u32
pub fn add_cost(&mut self, cost: f64)
pub fn record_tool( &mut self, tool_use_id: &str, name: &str, duration_ms: u64, is_error: bool, )
pub fn record_api_call(&mut self)
pub fn record_compaction(&mut self)
pub fn avg_tool_time_ms(&self) -> f64
Sourcepub fn record_model_usage(&mut self, model: &str, usage: &Usage)
pub fn record_model_usage(&mut self, model: &str, usage: &Usage)
Record usage for a specific model.
This enables per-model cost tracking like CLI’s modelUsage field.
Sourcepub fn record_api_call_with_timing(&mut self, duration_ms: u64)
pub fn record_api_call_with_timing(&mut self, duration_ms: u64)
Record an API call with timing information.
Sourcepub fn update_server_tool_use(&mut self, server_tool_use: ServerToolUse)
pub fn update_server_tool_use(&mut self, server_tool_use: ServerToolUse)
Update server_tool_use from API response.
This is for server-side tools executed by the API (e.g., Anthropic’s server-side RAG). Not to be confused with local tool usage.
Sourcepub fn update_server_tool_use_from_api(&mut self, usage: &ServerToolUseUsage)
pub fn update_server_tool_use_from_api(&mut self, usage: &ServerToolUseUsage)
Update server_tool_use from API response’s usage.server_tool_use field.
This parses the server tool usage directly from the API response.
Sourcepub fn record_permission_denial(&mut self, denial: PermissionDenial)
pub fn record_permission_denial(&mut self, denial: PermissionDenial)
Record a permission denial.
Sourcepub fn total_model_cost(&self) -> f64
pub fn total_model_cost(&self) -> f64
Get the total cost across all models.
Trait Implementations§
Source§impl Clone for AgentMetrics
impl Clone for AgentMetrics
Source§fn clone(&self) -> AgentMetrics
fn clone(&self) -> AgentMetrics
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for AgentMetrics
impl Debug for AgentMetrics
Source§impl Default for AgentMetrics
impl Default for AgentMetrics
Source§fn default() -> AgentMetrics
fn default() -> AgentMetrics
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for AgentMetrics
impl RefUnwindSafe for AgentMetrics
impl Send for AgentMetrics
impl Sync for AgentMetrics
impl Unpin for AgentMetrics
impl UnwindSafe for AgentMetrics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.