Skip to main content

tau_agent_base/
subscription_usage.rs

1//! Subscription usage types and OAuth token detection.
2//!
3//! These are pure data types used by the wire protocol. The actual
4//! OAuth flow and credential storage lives in `tau-agent-lib::auth`.
5
6use serde::{Deserialize, Serialize};
7
8/// Check if an API key is an OAuth token (starts with `sk-ant-oat`).
9pub fn is_oauth_token(key: &str) -> bool {
10    key.starts_with("sk-ant-oat")
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize, Default)]
14pub struct UsageBucket {
15    pub utilization: Option<f64>,
16    pub resets_at: Option<String>,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, Default)]
20pub struct ExtraUsage {
21    #[serde(default)]
22    pub is_enabled: bool,
23    pub monthly_limit: Option<f64>,
24    pub used_credits: Option<f64>,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize, Default)]
28pub struct SubscriptionUsage {
29    pub five_hour: Option<UsageBucket>,
30    pub seven_day: Option<UsageBucket>,
31    pub seven_day_sonnet: Option<UsageBucket>,
32    pub seven_day_opus: Option<UsageBucket>,
33    pub extra_usage: Option<ExtraUsage>,
34}