Skip to main content

BudgetManager

Struct BudgetManager 

Source
pub struct BudgetManager { /* private fields */ }
Expand description

Manages budgets for all agents with sliding window reset semantics.

Implementations§

Source§

impl BudgetManager

Source

pub fn new() -> Self

Creates a new empty budget manager.

Source

pub fn set_budget(&self, limit: BudgetLimit)

Sets or updates the budget for an agent.

Source

pub fn remove_budget(&self, agent_id: &AgentId)

Removes the budget for an agent.

Source

pub fn reserve( &self, agent_id: &AgentId, tokens: u64, ) -> Result<(), BudgetExceeded>

Attempts to reserve tokens for an agent.

Returns Ok(()) if the tokens can be reserved. Returns Err(BudgetExceeded) if the agent has exceeded its token budget.

The usage window is automatically reset if it has expired.

Source

pub fn release(&self, agent_id: &AgentId, tokens_used: u64)

Releases tokens back (e.g., on retry or error).

Tokens are subtracted from usage. Does not allow negative usage.

Source

pub fn track_call(&self, agent_id: &AgentId) -> Result<(), BudgetExceeded>

Tracks a call for an agent.

Returns Err(BudgetExceeded) if the call limit has been exceeded.

Source

pub fn remaining(&self, agent_id: &AgentId) -> BudgetInfo

Returns current budget information for an agent.

Source

pub fn can_schedule(&self, agent_id: &AgentId) -> bool

Returns true if an agent can be scheduled (has budget remaining).

Source

pub fn reset_window(&self, agent_id: &AgentId)

Manually resets the usage window for an agent.

Source

pub fn full_info(&self, agent_id: &AgentId) -> Option<FullBudgetInfo>

Returns full budget information including limits and usage for an agent.

Returns None if no budget is configured for the agent.

Source

pub fn all_full_info(&self) -> Vec<FullBudgetInfo>

Returns full budget info for all agents with configured budgets.

Source

pub fn persist(&self, path: &Path) -> Result<()>

Persist budgets and usage to a JSON file at the given path.

Source

pub fn restore(&self, path: &Path) -> Result<()>

Restore budgets and usage from a JSON file at the given path.

Returns Ok(()) if the file doesn’t exist (empty state). Returns an error if the file exists but cannot be parsed.

Trait Implementations§

Source§

impl Default for BudgetManager

Source§

fn default() -> Self

Returns the “default value” for a type. 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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> Same for T

Source§

type Output = T

Should always be Self
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