Skip to main content

RunCost

Struct RunCost 

Source
pub struct RunCost {
    pub run: RunId,
    pub itinerary: ItineraryId,
    pub agent: AgentName,
    pub pipeline: Option<PipelineName>,
    pub model: Option<String>,
    pub usage: TokenUsage,
    pub usd: f64,
    pub source: CostSource,
    pub at: Timestamp,
}
Expand description

What one run cost, and how well that is known.

Fields§

§run: RunId

The run this describes.

§itinerary: ItineraryId

The chain it belonged to.

§agent: AgentName

Which agent was run.

§pipeline: Option<PipelineName>

The pipeline whose trigger began this chain, when one did.

Carried here rather than only on the run record so that spend can be attributed to the workflow that caused it. “What does the nightly sweep cost me” is the first question a factory with several pipelines raises, and per-agent totals cannot answer it when an agent belongs to more than one.

§model: Option<String>

Which model, when the runner said.

§usage: TokenUsage

Tokens consumed, as far as they are known.

§usd: f64

Cost in US dollars. Always zero when source is CostSource::Unreported.

§source: CostSource

Where usd came from.

§at: Timestamp

When the run finished.

Implementations§

Source§

impl RunCost

Source

pub fn reported( run: RunId, itinerary: ItineraryId, agent: AgentName, model: Option<String>, usage: TokenUsage, usd: f64, ) -> Self

Records a cost the runner reported directly.

A non-finite or negative figure is treated as no report at all rather than trusted: it comes from parsing a child process’s output, and a NaN in a budget poisons every total downstream of it.

Source

pub fn unreported( run: RunId, itinerary: ItineraryId, agent: AgentName, model: Option<String>, ) -> Self

Records a run whose runner said nothing about cost.

Source

pub fn from_pipeline(self, pipeline: PipelineName) -> Self

Attributes the cost to the workflow that caused it.

Source

pub fn at(self, at: Timestamp) -> Self

Overrides when the run finished, for tests and for replaying a persisted ledger.

Trait Implementations§

Source§

impl Clone for RunCost

Source§

fn clone(&self) -> Self

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 RunCost

Source§

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

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

impl<'de> Deserialize<'de> for RunCost

Source§

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

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

impl PartialEq for RunCost

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for RunCost

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

impl StructuralPartialEq for RunCost

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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