import axios from 'axios' import { getOauthConfig, OAUTH_BETA_HEADER } from 'src/constants/oauth.js' import type { OAuthProfileResponse } from 'src/services/oauth/types.js' import { getAnthropicApiKey } from 'src/utils/auth.js' import { getGlobalConfig } from 'src/utils/config.js' import { logError } from 'src/utils/log.js' export async function getOauthProfileFromApiKey(): Promise< OAuthProfileResponse | undefined > { // Assumes interactive session const config = getGlobalConfig() const accountUuid = config.oauthAccount?.accountUuid const apiKey = getAnthropicApiKey() // Need both account UUID and API key to check if (!accountUuid || !apiKey) { return } const endpoint = `${getOauthConfig().BASE_API_URL}/api/claude_cli_profile` try { const response = await axios.get(endpoint, { headers: { 'x-api-key': apiKey, 'anthropic-beta': OAUTH_BETA_HEADER, }, params: { account_uuid: accountUuid, }, timeout: 10000, }) return response.data } catch (error) { logError(error as Error) } } export async function getOauthProfileFromOauthToken( accessToken: string, ): Promise { const endpoint = `${getOauthConfig().BASE_API_URL}/api/oauth/profile` try { const response = await axios.get(endpoint, { headers: { Authorization: `Bearer ${accessToken}`, 'Content-Type': 'application/json', }, timeout: 10000, }) return response.data } catch (error) { logError(error as Error) } }