systemprompt_models/profile/
rate_limits.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
6pub struct TierMultipliers {
7 #[serde(default = "default_admin_multiplier")]
8 pub admin: f64,
9
10 #[serde(default = "default_user_multiplier")]
11 pub user: f64,
12
13 #[serde(default = "default_a2a_multiplier")]
14 pub a2a: f64,
15
16 #[serde(default = "default_mcp_multiplier")]
17 pub mcp: f64,
18
19 #[serde(default = "default_service_multiplier")]
20 pub service: f64,
21
22 #[serde(default = "default_anon_multiplier")]
23 pub anon: f64,
24}
25
26pub const fn default_admin_multiplier() -> f64 {
27 10.0
28}
29pub const fn default_user_multiplier() -> f64 {
30 1.0
31}
32pub const fn default_a2a_multiplier() -> f64 {
33 5.0
34}
35pub const fn default_mcp_multiplier() -> f64 {
36 5.0
37}
38pub const fn default_service_multiplier() -> f64 {
39 5.0
40}
41pub const fn default_anon_multiplier() -> f64 {
42 0.5
43}
44
45impl Default for TierMultipliers {
46 fn default() -> Self {
47 Self {
48 admin: default_admin_multiplier(),
49 user: default_user_multiplier(),
50 a2a: default_a2a_multiplier(),
51 mcp: default_mcp_multiplier(),
52 service: default_service_multiplier(),
53 anon: default_anon_multiplier(),
54 }
55 }
56}
57
58#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
59pub struct RateLimitsConfig {
60 #[serde(default)]
61 pub disabled: bool,
62
63 #[serde(default = "default_oauth_public")]
64 pub oauth_public_per_second: u64,
65
66 #[serde(default = "default_oauth_auth")]
67 pub oauth_auth_per_second: u64,
68
69 #[serde(default = "default_contexts")]
70 pub contexts_per_second: u64,
71
72 #[serde(default = "default_tasks")]
73 pub tasks_per_second: u64,
74
75 #[serde(default = "default_artifacts")]
76 pub artifacts_per_second: u64,
77
78 #[serde(default = "default_agent_registry")]
79 pub agent_registry_per_second: u64,
80
81 #[serde(default = "default_agents")]
82 pub agents_per_second: u64,
83
84 #[serde(default = "default_mcp_registry")]
85 pub mcp_registry_per_second: u64,
86
87 #[serde(default = "default_mcp")]
88 pub mcp_per_second: u64,
89
90 #[serde(default = "default_stream")]
91 pub stream_per_second: u64,
92
93 #[serde(default = "default_content")]
94 pub content_per_second: u64,
95
96 #[serde(default = "default_burst")]
97 pub burst_multiplier: u64,
98
99 #[serde(default)]
100 pub tier_multipliers: TierMultipliers,
101}
102
103pub const fn default_oauth_public() -> u64 {
104 10
105}
106pub const fn default_oauth_auth() -> u64 {
107 10
108}
109pub const fn default_contexts() -> u64 {
110 100
111}
112pub const fn default_tasks() -> u64 {
113 50
114}
115pub const fn default_artifacts() -> u64 {
116 50
117}
118pub const fn default_agent_registry() -> u64 {
119 50
120}
121pub const fn default_agents() -> u64 {
122 20
123}
124pub const fn default_mcp_registry() -> u64 {
125 50
126}
127pub const fn default_mcp() -> u64 {
128 200
129}
130pub const fn default_stream() -> u64 {
131 100
132}
133pub const fn default_content() -> u64 {
134 50
135}
136pub const fn default_burst() -> u64 {
137 3
138}
139
140impl Default for RateLimitsConfig {
141 fn default() -> Self {
142 Self {
143 disabled: false,
144 oauth_public_per_second: default_oauth_public(),
145 oauth_auth_per_second: default_oauth_auth(),
146 contexts_per_second: default_contexts(),
147 tasks_per_second: default_tasks(),
148 artifacts_per_second: default_artifacts(),
149 agent_registry_per_second: default_agent_registry(),
150 agents_per_second: default_agents(),
151 mcp_registry_per_second: default_mcp_registry(),
152 mcp_per_second: default_mcp(),
153 stream_per_second: default_stream(),
154 content_per_second: default_content(),
155 burst_multiplier: default_burst(),
156 tier_multipliers: TierMultipliers::default(),
157 }
158 }
159}