source dump of claude code
at main 40 lines 1.3 kB view raw
1import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/index.js' 2import { isEnvTruthy } from '../envUtils.js' 3 4export type APIProvider = 'firstParty' | 'bedrock' | 'vertex' | 'foundry' 5 6export function getAPIProvider(): APIProvider { 7 return isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) 8 ? 'bedrock' 9 : isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) 10 ? 'vertex' 11 : isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) 12 ? 'foundry' 13 : 'firstParty' 14} 15 16export function getAPIProviderForStatsig(): AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS { 17 return getAPIProvider() as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS 18} 19 20/** 21 * Check if ANTHROPIC_BASE_URL is a first-party Anthropic API URL. 22 * Returns true if not set (default API) or points to api.anthropic.com 23 * (or api-staging.anthropic.com for ant users). 24 */ 25export function isFirstPartyAnthropicBaseUrl(): boolean { 26 const baseUrl = process.env.ANTHROPIC_BASE_URL 27 if (!baseUrl) { 28 return true 29 } 30 try { 31 const host = new URL(baseUrl).host 32 const allowedHosts = ['api.anthropic.com'] 33 if (process.env.USER_TYPE === 'ant') { 34 allowedHosts.push('api-staging.anthropic.com') 35 } 36 return allowedHosts.includes(host) 37 } catch { 38 return false 39 } 40}