/** * Provider Type Detection Utilities * * Functions to detect provider types based on provider configuration. * These are pure functions that only depend on provider.type and provider.id. * * NOTE: These functions should match the logic in @renderer/utils/provider.ts */ import type { MinimalProvider } from './types' /** * Check if provider is Anthropic type */ export function isAnthropicProvider
(provider: P): boolean { return provider.type === 'anthropic' } /** * Check if provider is OpenAI Response type (openai-response) * NOTE: This matches isOpenAIProvider in renderer/utils/provider.ts */ export function isOpenAIProvider
(provider: P): boolean { return provider.type === 'openai-response' } /** * Check if provider is Gemini type */ export function isGeminiProvider
(provider: P): boolean { return provider.type === 'gemini' } /** * Check if provider is Azure OpenAI type */ export function isAzureOpenAIProvider
(provider: P): boolean { return provider.type === 'azure-openai' } /** * Check if provider is Vertex AI type */ export function isVertexProvider
(provider: P): boolean { return provider.type === 'vertexai' } /** * Check if provider is AWS Bedrock type */ export function isAwsBedrockProvider
(provider: P): boolean { return provider.type === 'aws-bedrock' } export function isAIGatewayProvider
(provider: P): boolean { return provider.type === 'gateway' } export function isOllamaProvider
(provider: P): boolean { return provider.type === 'ollama' } /** * Check if Azure OpenAI provider uses responses endpoint * Matches isAzureResponsesEndpoint in renderer/utils/provider.ts */ export function isAzureResponsesEndpoint
(provider: P): boolean { return provider.apiVersion === 'preview' || provider.apiVersion === 'v1' } /** * Check if provider is Cherry AI type * Matches isCherryAIProvider in renderer/utils/provider.ts */ export function isCherryAIProvider
(provider: P): boolean { return provider.id === 'cherryai' } /** * Check if provider is Perplexity type * Matches isPerplexityProvider in renderer/utils/provider.ts */ export function isPerplexityProvider
(provider: P): boolean { return provider.id === 'perplexity' } /** * Check if provider is new-api type (supports multiple backends) * Matches isNewApiProvider in renderer/utils/provider.ts */ export function isNewApiProvider
(provider: P): boolean { return ['new-api', 'cherryin'].includes(provider.id) || provider.type === ('new-api' as string) } /** * Check if provider is OpenAI compatible * Matches isOpenAICompatibleProvider in renderer/utils/provider.ts */ export function isOpenAICompatibleProvider
(provider: P): boolean { return ['openai', 'new-api', 'mistral'].includes(provider.type) }