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