MCPcopy
hub / github.com/CodebuffAI/codebuff / getFreeModePrivacyDecision

Function getFreeModePrivacyDecision

web/src/server/free-mode-country.ts:150–185  ·  view source on GitHub ↗
(
  countryAccess: Pick<
    FreeModeCountryAccess,
    | 'allowed'
    | 'blockReason'
    | 'cfCountry'
    | 'ipPrivacy'
    | 'spurIpPrivacy'
    | 'spurStatus'
  >,
)

Source from the content-addressed store, hash-verified

148}
149
150export function getFreeModePrivacyDecision(
151 countryAccess: Pick<
152 FreeModeCountryAccess,
153 | 'allowed'
154 | 'blockReason'
155 | 'cfCountry'
156 | 'ipPrivacy'
157 | 'spurIpPrivacy'
158 | 'spurStatus'
159 >,
160): FreebuffPrivacyDecision {
161 if (countryAccess.allowed) {
162 return countryAccess.spurStatus === 'clean' &&
163 countryAccess.ipPrivacy?.signals.length
164 ? 'ipinfo_suspicious_spur_clean'
165 : 'allowed_clean'
166 }
167 if (countryAccess.cfCountry === CLOUDFLARE_TOR_COUNTRY) {
168 return 'cloudflare_tor_block'
169 }
170 if (countryAccess.blockReason === 'ip_privacy_lookup_failed') {
171 return 'ipinfo_failed_limited'
172 }
173 if (countryAccess.blockReason === 'anonymous_network') {
174 if (
175 hasHardBlockedPrivacySignal(countryAccess.ipPrivacy) &&
176 hasHardBlockedPrivacySignal(countryAccess.spurIpPrivacy)
177 ) {
178 return 'corroborated_block'
179 }
180 if (countryAccess.spurStatus === 'failed') {
181 return 'spur_failed_limited'
182 }
183 }
184 return 'limited_other'
185}
186
187export function getFreeModePrivacyProviderDecision(
188 countryAccess: Pick<

Callers 4

logCountryAccessFunction · 0.90
postChatCompletionsFunction · 0.90
setFunction · 0.90

Calls 1

Tested by

no test coverage detected