Struct CostTracker
pub struct CostTracker { /* private fields */ }Implementations§
Source§impl CostTracker
impl CostTracker
Sourcepub fn new(config: CostConfig, workspace_dir: &Path) -> Result<Self>
pub fn new(config: CostConfig, workspace_dir: &Path) -> Result<Self>
Create a new cost tracker.
pub fn config(&self) -> CostConfig
pub fn is_enabled(&self) -> bool
Sourcepub fn update_config(&self, config: CostConfig)
pub fn update_config(&self, config: CostConfig)
Hot-swap config so reloaded budget limits apply without a restart.
Sourcepub fn session_id(&self) -> &str
pub fn session_id(&self) -> &str
Get the session ID.
Sourcepub fn check_budget(&self, estimated_cost_usd: f64) -> Result<BudgetCheck>
pub fn check_budget(&self, estimated_cost_usd: f64) -> Result<BudgetCheck>
Check if a request is within budget.
Sourcepub fn record_usage(&self, usage: TokenUsage) -> Result<()>
pub fn record_usage(&self, usage: TokenUsage) -> Result<()>
Record a usage event without per-agent attribution.
Sourcepub fn record_usage_with_agent(
&self,
usage: TokenUsage,
agent_alias: Option<&str>,
) -> Result<()>
pub fn record_usage_with_agent( &self, usage: TokenUsage, agent_alias: Option<&str>, ) -> Result<()>
Record a usage event attributed to a specific agent alias. When
[cost].track_per_agent is false the alias is dropped before
persistence.
Sourcepub fn record_usage_with_task_attribution(
&self,
usage: TokenUsage,
agent_alias: Option<&str>,
task_id: Option<&str>,
) -> Result<()>
pub fn record_usage_with_task_attribution( &self, usage: TokenUsage, agent_alias: Option<&str>, task_id: Option<&str>, ) -> Result<()>
Record a usage event attributed to a specific agent alias and/or task.
Agent attribution still follows [cost].track_per_agent; task
attribution is independent because it keys feature-level usage back to
the durable control-plane task that spent it.
Sourcepub fn record_usage_with_owned_task_attribution(
&self,
usage: TokenUsage,
agent_alias: Option<&str>,
task_id: Option<String>,
) -> Result<()>
pub fn record_usage_with_owned_task_attribution( &self, usage: TokenUsage, agent_alias: Option<&str>, task_id: Option<String>, ) -> Result<()>
Record a usage event with an already-owned task id. Runtime attribution resolves the id from durable task state, so this avoids cloning that id again before persistence.
pub fn record_scoped_usage_with_owned_task_attribution( &self, usage: TokenUsage, agent_alias: Option<&str>, task_id: Option<String>, ) -> Result<()>
Sourcepub fn get_summary(&self) -> Result<CostSummary>
pub fn get_summary(&self) -> Result<CostSummary>
Get the current cost summary. When [cost].track_per_agent is
enabled, the response includes a by_agent rollup over today’s
records.
pub fn get_summary_in_bounds( &self, from: Option<DateTime<Utc>>, to: Option<DateTime<Utc>>, ) -> Result<CostSummary>
Sourcepub fn get_summary_for_agent(&self, agent_alias: &str) -> Result<CostSummary>
pub fn get_summary_for_agent(&self, agent_alias: &str) -> Result<CostSummary>
Get the current cost summary scoped to a single agent alias. The
session/day/month figures and by_model are filtered to records
attributed to that alias; by_agent is left empty since the
caller already chose the dimension.
Sourcepub fn get_summary_for_task(&self, task_id: &str) -> Result<CostSummary>
pub fn get_summary_for_task(&self, task_id: &str) -> Result<CostSummary>
Get usage summary for a durable attributed task. Totals are derived from persisted ledger rows carrying the task-attribution key; no consumed counters are stored on feature-specific extension records.
Sourcepub fn get_usage_totals_for_task(&self, task_id: &str) -> Result<(u64, f64)>
pub fn get_usage_totals_for_task(&self, task_id: &str) -> Result<(u64, f64)>
Get usage totals for a durable attributed task without building model/agent rollups. Totals are still derived from the canonical persisted ledger.
pub fn get_usage_totals_for_task_with_pricing( &self, task_id: &str, ) -> Result<(u64, f64, bool)>
Sourcepub fn get_daily_cost(&self, date: NaiveDate) -> Result<f64>
pub fn get_daily_cost(&self, date: NaiveDate) -> Result<f64>
Get the daily cost for a specific date.
Source§impl CostTracker
impl CostTracker
Sourcepub fn get_or_init_global(
config: CostConfig,
workspace_dir: &Path,
) -> Option<Arc<Self>>
pub fn get_or_init_global( config: CostConfig, workspace_dir: &Path, ) -> Option<Arc<Self>>
Return the process-global CostTracker, applying config to the
existing tracker on later calls and reusing the same Arc. Returns
None while cost tracking is disabled and no tracker exists yet; a
later reload flipping enabled to true constructs it on demand.
Auto Trait Implementations§
impl Freeze for CostTracker
impl !RefUnwindSafe for CostTracker
impl Send for CostTracker
impl Sync for CostTracker
impl Unpin for CostTracker
impl UnsafeUnpin for CostTracker
impl !UnwindSafe for CostTracker
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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