Skip to main content

SessionData

Struct SessionData 

Source
pub struct SessionData {
Show 13 fields pub session_id: String, pub project: Option<String>, pub turns: Vec<ValidatedTurn>, pub subagents: Vec<Subagent>, pub plugins: Vec<PluginUsage>, pub skills: Vec<SkillUsage>, pub hooks: Vec<HookUsage>, pub first_timestamp: Option<DateTime<Utc>>, pub last_timestamp: Option<DateTime<Utc>>, pub version: Option<String>, pub quality: DataQuality, pub metadata: SessionMetadata, pub is_orphan: bool,
}
Expand description

Aggregated data from a single session.

Fields§

§session_id: String§project: Option<String>§turns: Vec<ValidatedTurn>§subagents: Vec<Subagent>

Subagent groups for this session. Each entry corresponds to one agent-<id>.jsonl file. Empty for sessions without subagents.

§plugins: Vec<PluginUsage>

Plugins used in this session (aggregated from main session turns’ attributionPlugin). Empty for pre-2.1.138 sessions.

§skills: Vec<SkillUsage>

Skills used in this session (aggregated from main session turns’ attributionSkill). Empty for pre-2.1.138 sessions.

§hooks: Vec<HookUsage>

Hooks triggered in this session (from stop_hook_summary system entries). Empty for sessions without hooks.

§first_timestamp: Option<DateTime<Utc>>§last_timestamp: Option<DateTime<Utc>>§version: Option<String>§quality: DataQuality§metadata: SessionMetadata§is_orphan: bool

Orphan session: the parent main session .jsonl was deleted, but subagent files under <uuid>/subagents/ still exist. Scanner picked them up and the loader created this session as a placeholder so the subagent data isn’t lost. Turn / token / cost totals still include these sessions; this flag only marks them for separate display.

Implementations§

Source§

impl SessionData

Source

pub fn all_responses(&self) -> Vec<&ValidatedTurn>

All API responses (main + every subagent), sorted by timestamp.

Source

pub fn total_turn_count(&self) -> usize

Total number of API responses (main + all subagent turns).

Source

pub fn agent_turn_count(&self) -> usize

Total number of agent API responses (sum across all subagents).

Source

pub fn subagent_type_aggregates( &self, calc: &PricingCalculator, ) -> Vec<SubagentTypeAggregate>

Group this session’s subagents by agent_type for chip rendering.

Each output entry corresponds to one agent_type string. Subagents with agent_type = None are grouped under the literal type "unknown" (data is preserved, never dropped). Output is sorted by agent_type ascending for deterministic JSON serialization.

Token / cost totals are summed across each subagent’s turns; the count field counts the number of Subagent instances per type (i.e. how many times that type was invoked in this session).

Trait Implementations§

Source§

impl Clone for SessionData

Source§

fn clone(&self) -> SessionData

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 SessionData

Source§

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

Formats the value using the given formatter. 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<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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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.