MCPcopy Create free account
hub / github.com/Noumena-Network/code / getRateLimitMessage

Function getRateLimitMessage

src/services/rateLimitMessages.ts:103–165  ·  view source on GitHub ↗
(
  limits: ClaudeAILimits,
  model: string,
)

Source from the content-addressed store, hash-verified

101 * Returns null if no message should be shown
102 */
103export function getRateLimitMessage(
104 limits: ClaudeAILimits,
105 model: string,
106): RateLimitMessage | null {
107 const sessionState = getCurrentRateLimitMessageSessionState()
108
109 // Check overage scenarios first (when subscription is rejected but overage is available)
110 // getUsingOverageText is rendered separately from warning.
111 if (limits.isUsingOverage) {
112 // Show warning if approaching overage spending limit
113 if (limits.overageStatus === 'allowed_warning') {
114 return {
115 message: "You're close to your extra usage spending limit",
116 severity: 'warning',
117 }
118 }
119 return null
120 }
121
122 // ERROR STATES - when limits are rejected
123 if (limits.status === 'rejected') {
124 return {
125 message: getLimitReachedText(limits, model, sessionState),
126 severity: 'error',
127 }
128 }
129
130 // WARNING STATES - when approaching limits with early warning
131 if (limits.status === 'allowed_warning') {
132 // Only show warnings when utilization is above threshold (70%)
133 // This prevents false warnings after week reset when API may send
134 // allowed_warning with stale data at low usage levels
135 const WARNING_THRESHOLD = 0.7
136 if (
137 limits.utilization !== undefined &&
138 limits.utilization < WARNING_THRESHOLD
139 ) {
140 return null
141 }
142
143 // Don't warn non-billing Team/Enterprise users about approaching plan limits
144 // if overages are enabled - they'll seamlessly roll into overage
145 const isTeamOrEnterprise =
146 sessionState.subscriptionType === 'team' ||
147 sessionState.subscriptionType === 'enterprise'
148
149 if (
150 isTeamOrEnterprise &&
151 sessionState.hasExtraUsageEnabled &&
152 !hasManagedPlanBillingAccess()
153 ) {
154 return null
155 }
156
157 const text = getEarlyWarningText(limits, sessionState)
158 if (text) {
159 return { message: text, severity: 'warning' }
160 }

Callers 2

getRateLimitErrorMessageFunction · 0.85
getRateLimitWarningFunction · 0.85

Calls 4

getLimitReachedTextFunction · 0.85
getEarlyWarningTextFunction · 0.85

Tested by

no test coverage detected