@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio
112 lines (111 loc) • 3.76 kB
JavaScript
/**
* Provider-specific type definitions for NeuroLink
*/
import { AIProviderName, AnthropicModels, BedrockModels, GoogleAIModels, OpenAIModels, VertexModels, } from "../constants/enums.js";
/**
* Type guard to check if a configuration is an AnthropicProviderConfig
*
* @param config - The configuration object to check
* @returns True if the configuration is an AnthropicProviderConfig
*
* @example
* ```typescript
* const config = getProviderConfig();
* if (isAnthropicConfig(config)) {
* // TypeScript knows config is AnthropicProviderConfig here
* console.log(config.subscriptionTier);
* console.log(config.oauthConfig?.clientId);
* }
* ```
*/
export function isAnthropicConfig(config) {
if (config === null || config === undefined) {
return false;
}
if (typeof config !== "object") {
return false;
}
const configObj = config;
// Check for Anthropic-specific properties
// A config is considered Anthropic if it has:
// 1. An authMethod that is a valid AnthropicAuthMethod, OR
// 2. A subscriptionTier that is a valid ClaudeSubscriptionTier, OR
// 3. An oauthConfig object
const validAuthMethods = ["api_key", "oauth"];
const validSubscriptionTiers = [
"free",
"pro",
"max",
"max_5",
"max_20",
"api",
];
// Check for authMethod
if (configObj.authMethod !== undefined &&
typeof configObj.authMethod === "string" &&
validAuthMethods.includes(configObj.authMethod)) {
return true;
}
// Check for subscriptionTier
if (configObj.subscriptionTier !== undefined &&
typeof configObj.subscriptionTier === "string" &&
validSubscriptionTiers.includes(configObj.subscriptionTier)) {
return true;
}
// Check for oauthConfig
if (configObj.oauthConfig !== undefined &&
typeof configObj.oauthConfig === "object" &&
configObj.oauthConfig !== null) {
return true;
}
// Check for authConfig (AnthropicAuthConfig)
if (configObj.authConfig !== undefined &&
typeof configObj.authConfig === "object" &&
configObj.authConfig !== null) {
const authConfig = configObj.authConfig;
if (authConfig.method !== undefined &&
typeof authConfig.method === "string" &&
validAuthMethods.includes(authConfig.method)) {
return true;
}
}
return false;
}
/**
* Default model aliases for easy reference
*/
export const DEFAULT_MODEL_ALIASES = {
// Latest recommended models per provider
LATEST_OPENAI: OpenAIModels.GPT_4O,
FASTEST_OPENAI: OpenAIModels.GPT_4O_MINI,
LATEST_ANTHROPIC: AnthropicModels.CLAUDE_3_5_SONNET,
FASTEST_ANTHROPIC: AnthropicModels.CLAUDE_3_5_HAIKU,
LATEST_GOOGLE: GoogleAIModels.GEMINI_2_5_PRO,
FASTEST_GOOGLE: GoogleAIModels.GEMINI_2_5_FLASH,
// Best models by use case
BEST_CODING: AnthropicModels.CLAUDE_3_5_SONNET,
BEST_ANALYSIS: GoogleAIModels.GEMINI_2_5_PRO,
BEST_CREATIVE: AnthropicModels.CLAUDE_3_5_SONNET,
BEST_VALUE: GoogleAIModels.GEMINI_2_5_FLASH,
};
/**
* @deprecated Use DEFAULT_MODEL_ALIASES instead. Will be removed in future version.
*/
export const ModelAliases = DEFAULT_MODEL_ALIASES;
/**
* Default provider configurations
*/
export const DEFAULT_PROVIDER_CONFIGS = [
{
provider: AIProviderName.BEDROCK,
models: [BedrockModels.CLAUDE_3_7_SONNET, BedrockModels.CLAUDE_3_5_SONNET],
},
{
provider: AIProviderName.VERTEX,
models: [VertexModels.CLAUDE_4_0_SONNET, VertexModels.GEMINI_2_5_FLASH],
},
{
provider: AIProviderName.OPENAI,
models: [OpenAIModels.GPT_4O, OpenAIModels.GPT_4O_MINI],
},
];