Skip to main content

MetricEvent

Struct MetricEvent 

Source
pub struct MetricEvent {
Show 39 fields pub ts: u64, pub tool: &'static str, pub duration_ms: u64, pub output_chars: usize, pub param_path_depth: usize, pub max_depth: Option<u32>, pub result: &'static str, pub error_type: Option<String>, pub error_subtype: Option<String>, pub session_id: Option<String>, pub seq: Option<u32>, pub cache_hit: Option<bool>, pub cache_tier: Option<&'static str>, pub cache_write_failure: Option<bool>, pub exit_code: Option<i32>, pub timed_out: bool, pub output_truncated: Option<bool>, pub chars_threshold_breach: bool, pub file_ext: Option<&'static str>, pub filter_applied: Option<String>, pub language: Option<String>, pub git_ref_used: bool, pub summary_mode: bool, pub is_paginated: bool, pub fields_projected: bool, pub match_mode: Option<String>, pub follow_depth: Option<u32>, pub import_lookup: bool, pub def_use: bool, pub impl_only: bool, pub stdin_provided: bool, pub timeout_configured_ms: Option<i64>, pub drain_timeout_ms: Option<i64>, pub working_dir_used: bool, pub l1_eviction_count: Option<u64>, pub l2_entry_count: Option<u64>, pub l2_size_bytes: Option<u64>, pub stdout_bytes_raw: Option<u64>, pub stderr_bytes_raw: Option<u64>,
}
Expand description

A single metric event emitted by a tool invocation.

Fields§

§ts: u64§tool: &'static str§duration_ms: u64§output_chars: usize§param_path_depth: usize§max_depth: Option<u32>§result: &'static str§error_type: Option<String>§error_subtype: Option<String>§session_id: Option<String>§seq: Option<u32>§cache_hit: Option<bool>§cache_tier: Option<&'static str>§cache_write_failure: Option<bool>

Set to Some(true) when an L2 disk cache write fails (dir, tempfile, write, or rename). Drives the cache_write_failures_total OTEL counter.

§exit_code: Option<i32>§timed_out: bool§output_truncated: Option<bool>§chars_threshold_breach: bool

True when output_chars > 30_000; fires for the top ~0.33% of exec_command calls (p99.7 of 27,981 observed calls). Early-warning signal for responses approaching the per-stream byte-cap threshold.

§file_ext: Option<&'static str>

File extension of the analyzed path, lowercased. Some("rs") for known extensions, Some("other") for unrecognized extensions, None when the path has no extension. Only populated for analyze_file and analyze_module.

§filter_applied: Option<String>

Name of the filter rule that matched and transformed exec_command output. None when no filter fired or for non-exec_command tools.

§language: Option<String>

Human-readable programming language name derived from the file extension (e.g., Some("Rust") for .rs files). None when the path has no extension or the extension is not recognized. Only populated for analyze_file and analyze_module.

§git_ref_used: bool

Whether the tool call used a git_ref parameter. Populated by analyze_directory and analyze_symbol.

§summary_mode: bool

Whether the tool call used summary=true or was auto-summarized. Populated by analyze_directory, analyze_file, and analyze_symbol.

§is_paginated: bool

Whether the tool call used pagination (cursor was provided). Populated by analyze_directory, analyze_file, and analyze_symbol.

§fields_projected: bool

Whether the fields parameter was provided to analyze_file. Populated by analyze_file.

§match_mode: Option<String>

Symbol matching mode used by analyze_symbol (e.g., “exact”, “insensitive”). None when not an analyze_symbol call.

§follow_depth: Option<u32>

Call graph traversal depth for analyze_symbol (default 1).

§import_lookup: bool

Whether import_lookup=true was set on analyze_symbol.

§def_use: bool

Whether def_use=true was set on analyze_symbol.

§impl_only: bool

Whether impl_only=true was set on analyze_symbol.

§stdin_provided: bool

Whether stdin was provided to exec_command.

§timeout_configured_ms: Option<i64>

Configured timeout in milliseconds for exec_command. None means no limit.

§drain_timeout_ms: Option<i64>

Drain timeout in milliseconds for exec_command. None means default (500ms).

§working_dir_used: bool

Whether a working_dir parameter was provided. Populated by edit_overwrite, edit_replace, and exec_command.

§l1_eviction_count: Option<u64>

L1 cache eviction count at the time of metric emission. Only populated for cache-related metrics.

§l2_entry_count: Option<u64>

L2 disk cache entry count at the time of metric emission. Only populated for cache-related metrics.

§l2_size_bytes: Option<u64>

L2 disk cache total size in bytes at the time of metric emission. Only populated for cache-related metrics.

§stdout_bytes_raw: Option<u64>

Approximate stdout bytes read before any truncation, counted as line.len() + 1 per LinesStream line (last line and CRLF not exact). Only populated for exec_command when output_truncated=true, timed_out=false, and no drain-abort.

§stderr_bytes_raw: Option<u64>

Approximate stderr bytes read before any truncation, counted as line.len() + 1 per LinesStream line (last line and CRLF not exact). Only populated for exec_command when output_truncated=true, timed_out=false, and no drain-abort.

Trait Implementations§

Source§

impl Clone for MetricEvent

Source§

fn clone(&self) -> MetricEvent

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for MetricEvent

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for MetricEvent

Source§

fn default() -> MetricEvent

Returns the “default value” for a type. Read more
Source§

impl Deserialize<'static> for MetricEvent

Source§

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

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for MetricEvent

Source§

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

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more