@intlayer/ai 8.10.0 → 8.11.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,13 +8,15 @@ let _intlayer_types_config = require("@intlayer/types/config");
8
8
 
9
9
  //#region src/aiSdk.ts
10
10
  const DEFAULT_PROVIDER = _intlayer_types_config.AiProviders.ANTHROPIC;
11
- const DEFAULT_MODEL = "claude-haiku-4-5-20251001";
11
+ const DEFAULT_MODEL = "claude-haiku-4-5";
12
12
  const DEFAULT_API_KEY = process.env.ANTHROPIC_API_KEY;
13
+ const isMaskedKey = (key) => !!key?.includes("*");
13
14
  const getAPIKey = (accessType, aiOptions, isAuthenticated = false) => {
14
- if (accessType.includes("public")) return aiOptions?.apiKey ?? DEFAULT_API_KEY;
15
- if (accessType.includes("apiKey") && aiOptions?.apiKey) return aiOptions?.apiKey;
16
- if (accessType.includes("registered_user") && isAuthenticated) return aiOptions?.apiKey ?? DEFAULT_API_KEY;
17
- if (accessType.includes("premium_user") && isAuthenticated) return aiOptions?.apiKey ?? DEFAULT_API_KEY;
15
+ const apiKey = aiOptions?.apiKey && !isMaskedKey(aiOptions.apiKey) ? aiOptions.apiKey : void 0;
16
+ if (accessType.includes("public")) return apiKey ?? DEFAULT_API_KEY;
17
+ if (accessType.includes("apiKey") && apiKey) return apiKey;
18
+ if (accessType.includes("registered_user") && isAuthenticated) return apiKey ?? DEFAULT_API_KEY;
19
+ if (accessType.includes("premium_user") && isAuthenticated) return apiKey ?? DEFAULT_API_KEY;
18
20
  };
19
21
  const getModelName = (provider, isUserProvidedKey, userModel) => {
20
22
  if (isUserProvidedKey || provider === _intlayer_types_config.AiProviders.OLLAMA || provider === _intlayer_types_config.AiProviders.LMSTUDIO) {
@@ -216,12 +218,19 @@ const checkAISDKAccess = async (aiConfig) => {
216
218
  */
217
219
  const getAIConfig = async (options, isAuthenticated = false) => {
218
220
  const { userOptions, projectOptions, defaultOptions, accessType = ["registered_user"] } = options;
219
- const aiOptions = {
220
- provider: DEFAULT_PROVIDER,
221
- ...defaultOptions,
222
- ...projectOptions,
223
- ...userOptions
221
+ const mergeWithoutUndefined = (...sources) => {
222
+ const result = { provider: DEFAULT_PROVIDER };
223
+ for (const source of sources) {
224
+ if (!source) continue;
225
+ for (const [key, value] of Object.entries(source)) {
226
+ if (value === void 0) continue;
227
+ if (key === "apiKey" && isMaskedKey(value)) continue;
228
+ result[key] = value;
229
+ }
230
+ }
231
+ return result;
224
232
  };
233
+ const aiOptions = mergeWithoutUndefined(defaultOptions, projectOptions, userOptions);
225
234
  const apiKey = getAPIKey(accessType, aiOptions, isAuthenticated);
226
235
  if (!apiKey && aiOptions.provider !== _intlayer_types_config.AiProviders.OLLAMA && aiOptions.provider !== _intlayer_types_config.AiProviders.LMSTUDIO) throw new Error(`API key for ${aiOptions.provider} is missing`);
227
236
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"aiSdk.cjs","names":["AiProviders","x","ANSIColors"],"sources":["../../src/aiSdk.ts"],"sourcesContent":["import type { AlibabaProvider, createAlibaba } from '@ai-sdk/alibaba';\nimport type {\n AmazonBedrockProvider,\n createAmazonBedrock,\n} from '@ai-sdk/amazon-bedrock';\nimport type { AnthropicProvider, createAnthropic } from '@ai-sdk/anthropic';\nimport type { createDeepSeek, DeepSeekProvider } from '@ai-sdk/deepseek';\nimport type { createFireworks, FireworksProvider } from '@ai-sdk/fireworks';\nimport type {\n createGoogleGenerativeAI,\n GoogleGenerativeAIProvider,\n} from '@ai-sdk/google';\nimport type {\n createVertex,\n GoogleVertexProvider as VertexProvider,\n} from '@ai-sdk/google-vertex';\nimport type { createGroq, GroqProvider } from '@ai-sdk/groq';\nimport type {\n createHuggingFace,\n HuggingFaceProvider,\n} from '@ai-sdk/huggingface';\nimport type { createMistral, MistralProvider } from '@ai-sdk/mistral';\nimport type { createOpenAI, OpenAIProvider } from '@ai-sdk/openai';\nimport type {\n createOpenAICompatible,\n OpenAICompatibleProvider,\n} from '@ai-sdk/openai-compatible';\nimport type { createTogetherAI, TogetherAIProvider } from '@ai-sdk/togetherai';\nimport * as ANSIColors from '@intlayer/config/colors';\nimport { colorize, logger, x } from '@intlayer/config/logger';\nimport { AiProviders } from '@intlayer/types/config';\nimport type {\n createOpenRouter,\n OpenRouterProvider,\n} from '@openrouter/ai-sdk-provider';\nimport type {\n AssistantModelMessage,\n generateText,\n SystemModelMessage,\n ToolModelMessage,\n UserModelMessage,\n} from 'ai';\nimport { generateText as generateTextFn } from 'ai';\n\nconst DEFAULT_PROVIDER = AiProviders.ANTHROPIC;\nconst DEFAULT_MODEL = 'claude-haiku-4-5-20251001';\nconst DEFAULT_API_KEY = process.env.ANTHROPIC_API_KEY;\n\nexport { AiProviders as AIProvider };\n\ntype AnthropicModel = Parameters<AnthropicProvider>[0];\ntype DeepSeekModel = Parameters<DeepSeekProvider>[0];\ntype MistralModel = Parameters<MistralProvider>[0];\ntype OpenAIModel = Parameters<OpenAIProvider>[0];\ntype OpenRouterModel = Parameters<OpenRouterProvider>[0];\ntype GoogleModel = Parameters<GoogleGenerativeAIProvider>[0];\ntype VertexModel = Parameters<VertexProvider>[0];\ntype AlibabaModel = Parameters<AlibabaProvider>[0];\ntype AmazonBedrockModel = Parameters<AmazonBedrockProvider>[0];\ntype FireworksModel = Parameters<FireworksProvider>[0];\ntype GroqModel = Parameters<GroqProvider>[0];\ntype HuggingFaceModel = Parameters<HuggingFaceProvider>[0];\ntype TogetherAIModel = Parameters<TogetherAIProvider>[0];\ntype LMStudioModel = Parameters<OpenAICompatibleProvider>[0];\n\nexport type OpenAIProviderOptions = Parameters<typeof createOpenAI>[0];\nexport type AnthropicProviderOptions = Parameters<typeof createAnthropic>[0];\nexport type MistralProviderOptions = Parameters<typeof createMistral>[0];\nexport type DeepSeekProviderOptions = Parameters<typeof createDeepSeek>[0];\nexport type GoogleProviderOptions = Parameters<\n typeof createGoogleGenerativeAI\n>[0];\nexport type VertexProviderOptions = Parameters<typeof createVertex>[0];\nexport type OpenRouterProviderOptions = Parameters<typeof createOpenRouter>[0];\nexport type AlibabaProviderOptions = Parameters<typeof createAlibaba>[0];\nexport type FireworksProviderOptions = Parameters<typeof createFireworks>[0];\nexport type GroqProviderOptions = Parameters<typeof createGroq>[0];\nexport type HuggingFaceProviderOptions = Parameters<\n typeof createHuggingFace\n>[0];\nexport type AmazonBedrockProviderOptions = Parameters<\n typeof createAmazonBedrock\n>[0];\nexport type TogetherAIProviderOptions = Parameters<typeof createTogetherAI>[0];\nexport type LMStudioProviderOptions = Parameters<\n typeof createOpenAICompatible\n>[0];\n\nexport type SystemMessage =\n | string\n | SystemModelMessage\n | SystemModelMessage[]\n | undefined;\n\nexport type Messages = (\n | UserModelMessage\n | AssistantModelMessage\n | ToolModelMessage\n)[];\n\n/**\n * Supported AI models\n */\nexport type Model =\n | AnthropicModel\n | DeepSeekModel\n | MistralModel\n | OpenAIModel\n | OpenRouterModel\n | GoogleModel\n | VertexModel\n | AlibabaModel\n | AmazonBedrockModel\n | FireworksModel\n | GroqModel\n | HuggingFaceModel\n | TogetherAIModel\n | LMStudioModel\n | (string & {});\n\n/**\n * Supported AI SDK providers\n */\n\nexport type ReasoningEffort = 'minimal' | 'low' | 'medium' | 'high' | 'none';\n\n/**\n * Common options for all AI providers\n */\ntype CommonAIOptions = {\n model?: Model;\n temperature?: number;\n baseURL?: string;\n apiKey?: string;\n applicationContext?: string;\n dataSerialization?: 'json' | 'toon';\n};\n\nexport type AIOptions = (\n | ({\n provider: AiProviders.OPENAI | `${AiProviders.OPENAI}`;\n } & OpenAIProviderOptions)\n | ({\n provider: AiProviders.ANTHROPIC | `${AiProviders.ANTHROPIC}`;\n } & AnthropicProviderOptions)\n | ({\n provider: AiProviders.MISTRAL | `${AiProviders.MISTRAL}`;\n } & MistralProviderOptions)\n | ({\n provider: AiProviders.DEEPSEEK | `${AiProviders.DEEPSEEK}`;\n } & DeepSeekProviderOptions)\n | ({\n provider: AiProviders.GEMINI | `${AiProviders.GEMINI}`;\n } & GoogleProviderOptions)\n | ({\n provider:\n | AiProviders.GOOGLEGENERATIVEAI\n | `${AiProviders.GOOGLEGENERATIVEAI}`;\n } & GoogleProviderOptions)\n | ({\n provider: AiProviders.OLLAMA | `${AiProviders.OLLAMA}`;\n } & OpenAIProviderOptions)\n | ({\n provider: AiProviders.OPENROUTER | `${AiProviders.OPENROUTER}`;\n } & OpenRouterProviderOptions)\n | ({\n provider: AiProviders.ALIBABA | `${AiProviders.ALIBABA}`;\n } & AlibabaProviderOptions)\n | ({\n provider: AiProviders.FIREWORKS | `${AiProviders.FIREWORKS}`;\n } & FireworksProviderOptions)\n | ({\n provider: AiProviders.GROQ | `${AiProviders.GROQ}`;\n } & GroqProviderOptions)\n | ({\n provider: AiProviders.HUGGINGFACE | `${AiProviders.HUGGINGFACE}`;\n } & HuggingFaceProviderOptions)\n | ({\n provider: AiProviders.BEDROCK | `${AiProviders.BEDROCK}`;\n } & AmazonBedrockProviderOptions)\n | ({\n provider: AiProviders.GOOGLEVERTEX | `${AiProviders.GOOGLEVERTEX}`;\n } & VertexProviderOptions)\n | ({\n provider: AiProviders.TOGETHERAI | `${AiProviders.TOGETHERAI}`;\n } & TogetherAIProviderOptions)\n | ({\n provider: AiProviders.LMSTUDIO | `${AiProviders.LMSTUDIO}`;\n } & LMStudioProviderOptions)\n | ({ provider?: undefined } & OpenAIProviderOptions)\n) &\n CommonAIOptions;\n\n// Define the structure of messages used in chat completions\nexport type ChatCompletionRequestMessage = {\n role: 'system' | 'user' | 'assistant'; // The role of the message sender\n content: string; // The text content of the message\n timestamp?: Date; // The timestamp of the message\n};\n\ntype AccessType = 'apiKey' | 'registered_user' | 'premium_user' | 'public';\n\nconst getAPIKey = (\n accessType: AccessType[],\n aiOptions?: AIOptions,\n isAuthenticated: boolean = false\n) => {\n if (accessType.includes('public')) {\n return aiOptions?.apiKey ?? DEFAULT_API_KEY;\n }\n\n if (accessType.includes('apiKey') && aiOptions?.apiKey) {\n return aiOptions?.apiKey;\n }\n\n if (accessType.includes('registered_user') && isAuthenticated) {\n return aiOptions?.apiKey ?? DEFAULT_API_KEY;\n }\n\n // TODO: Implement premium user access\n if (accessType.includes('premium_user') && isAuthenticated) {\n return aiOptions?.apiKey ?? DEFAULT_API_KEY;\n }\n\n return undefined;\n};\n\nconst getModelName = (\n provider: AiProviders,\n isUserProvidedKey: boolean,\n userModel?: Model\n): Model => {\n // If the user provides their own API key, allow custom model selection\n if (\n isUserProvidedKey ||\n provider === AiProviders.OLLAMA ||\n provider === AiProviders.LMSTUDIO\n ) {\n if (userModel) {\n return userModel;\n }\n\n // No custom model specified — fall back to the default\n return DEFAULT_MODEL;\n }\n\n // Using backend's default API key — always use the default model,\n // ignore any custom model the user may have passed\n return DEFAULT_MODEL;\n};\n\nconst getLanguageModel = async (\n aiOptions: AIOptions,\n apiKey: string | undefined\n) => {\n const loadModule = async <T>(packageName: string): Promise<T> => {\n try {\n return (await import(packageName)) as T;\n } catch {\n logger(\n `${x} The package \"${colorize(packageName, ANSIColors.GREEN)}\" is required to use this AI provider. Please install it using: ${colorize(`npm install ${packageName}`, ANSIColors.GREY_DARK)}`,\n {\n level: 'error',\n }\n );\n process.exit();\n }\n };\n\n const provider = aiOptions.provider ?? AiProviders.OPENAI;\n const selectedModel = getModelName(\n provider as AiProviders,\n !!aiOptions.apiKey, // true only when the user explicitly provided their own key\n aiOptions.model\n );\n\n const baseURL = aiOptions.baseURL;\n\n switch (provider) {\n case AiProviders.OPENAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAI } =\n await loadModule<typeof import('@ai-sdk/openai')>('@ai-sdk/openai');\n\n return createOpenAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.ANTHROPIC: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAnthropic } =\n await loadModule<typeof import('@ai-sdk/anthropic')>(\n '@ai-sdk/anthropic'\n );\n\n return createAnthropic({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.MISTRAL: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createMistral } =\n await loadModule<typeof import('@ai-sdk/mistral')>('@ai-sdk/mistral');\n\n return createMistral({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.DEEPSEEK: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createDeepSeek } =\n await loadModule<typeof import('@ai-sdk/deepseek')>('@ai-sdk/deepseek');\n\n return createDeepSeek({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.GEMINI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGoogleGenerativeAI } =\n await loadModule<typeof import('@ai-sdk/google')>('@ai-sdk/google');\n\n return createGoogleGenerativeAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.GOOGLEVERTEX: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createVertex } = await loadModule<\n typeof import('@ai-sdk/google-vertex')\n >('@ai-sdk/google-vertex');\n\n return createVertex({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel as string);\n }\n\n case AiProviders.GOOGLEGENERATIVEAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGoogleGenerativeAI } =\n await loadModule<typeof import('@ai-sdk/google')>('@ai-sdk/google');\n\n return createGoogleGenerativeAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel as string);\n }\n\n case AiProviders.OLLAMA: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAI } =\n await loadModule<typeof import('@ai-sdk/openai')>('@ai-sdk/openai');\n\n // Ollama compatible mode:\n const ollama = createOpenAI({\n baseURL: baseURL ?? 'http://localhost:11434/v1',\n apiKey: apiKey ?? 'ollama', // Required but unused by Ollama\n ...otherOptions,\n });\n\n return ollama.chat(selectedModel);\n }\n\n case AiProviders.OPENROUTER: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenRouter } = await loadModule<\n typeof import('@openrouter/ai-sdk-provider')\n >('@openrouter/ai-sdk-provider');\n\n const openrouter = createOpenRouter({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return openrouter(selectedModel as string);\n }\n\n case AiProviders.ALIBABA: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAlibaba } =\n await loadModule<typeof import('@ai-sdk/alibaba')>('@ai-sdk/alibaba');\n\n const alibaba = createAlibaba({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return alibaba(selectedModel as string);\n }\n\n case AiProviders.FIREWORKS: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createFireworks } =\n await loadModule<typeof import('@ai-sdk/fireworks')>(\n '@ai-sdk/fireworks'\n );\n\n const fireworks = createFireworks({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return fireworks(selectedModel as string);\n }\n\n case AiProviders.GROQ: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGroq } =\n await loadModule<typeof import('@ai-sdk/groq')>('@ai-sdk/groq');\n\n const groq = createGroq({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return groq(selectedModel as string);\n }\n\n case AiProviders.HUGGINGFACE: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createHuggingFace } = await loadModule<\n typeof import('@ai-sdk/huggingface')\n >('@ai-sdk/huggingface');\n\n const huggingface = createHuggingFace({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return huggingface(selectedModel as string);\n }\n\n case AiProviders.BEDROCK: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAmazonBedrock } = await loadModule<\n typeof import('@ai-sdk/amazon-bedrock')\n >('@ai-sdk/amazon-bedrock');\n\n const bedrock = createAmazonBedrock({\n accessKeyId: apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return bedrock(selectedModel as string);\n }\n\n case AiProviders.TOGETHERAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createTogetherAI } =\n await loadModule<typeof import('@ai-sdk/togetherai')>(\n '@ai-sdk/togetherai'\n );\n\n const togetherai = createTogetherAI({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return togetherai(selectedModel as string);\n }\n\n case AiProviders.LMSTUDIO: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAICompatible } = await loadModule<\n typeof import('@ai-sdk/openai-compatible')\n >('@ai-sdk/openai-compatible');\n\n const lmstudio = createOpenAICompatible({\n name: 'lmstudio',\n baseURL: baseURL ?? 'http://localhost:1234/v1',\n ...otherOptions,\n });\n\n return lmstudio(selectedModel as string);\n }\n\n default: {\n throw new Error(`Provider ${provider} not supported`);\n }\n }\n};\n\nexport type AIConfig = Omit<Parameters<typeof generateText>[0], 'prompt'> & {\n reasoningEffort?: ReasoningEffort;\n textVerbosity?: 'low' | 'medium' | 'high';\n dataSerialization?: 'json' | 'toon';\n};\n\nexport type AIConfigOptions = {\n userOptions?: AIOptions;\n projectOptions?: AIOptions;\n defaultOptions?: AIOptions;\n accessType?: AccessType[];\n};\n\n/**\n * Sends a minimal request to verify that the configured AI provider credentials\n * are valid and reachable before starting any bulk operation.\n *\n * @returns true if access is confirmed, false otherwise\n */\nexport const checkAISDKAccess = async (\n aiConfig: AIConfig\n): Promise<{ hasAIAccess: boolean; error?: string }> => {\n try {\n await generateTextFn({\n ...aiConfig,\n messages: [\n {\n role: 'user',\n content: 'ping',\n },\n ],\n maxOutputTokens: 20,\n });\n return { hasAIAccess: true };\n } catch (error) {\n return { hasAIAccess: false, error: (error as Error).message };\n }\n};\n\n/**\n * Get AI model configuration based on the selected provider and options\n * This function handles the configuration for different AI providers\n *\n * @param options Configuration options including provider, API keys, models and temperature\n * @returns Configured AI model ready to use with generateText\n */\nexport const getAIConfig = async (\n options: AIConfigOptions,\n isAuthenticated: boolean = false\n): Promise<AIConfig> => {\n const {\n userOptions,\n projectOptions,\n defaultOptions,\n accessType = ['registered_user'],\n } = options;\n\n const aiOptions = {\n provider: DEFAULT_PROVIDER,\n ...defaultOptions,\n ...projectOptions,\n ...userOptions,\n } as AIOptions;\n\n const apiKey = getAPIKey(accessType, aiOptions, isAuthenticated);\n\n // Check if API key is provided\n if (\n !apiKey &&\n aiOptions.provider !== AiProviders.OLLAMA &&\n aiOptions.provider !== AiProviders.LMSTUDIO\n ) {\n throw new Error(`API key for ${aiOptions.provider} is missing`);\n }\n\n const languageModel = await getLanguageModel(aiOptions, apiKey);\n\n return {\n model: languageModel,\n temperature: aiOptions.temperature,\n dataSerialization: aiOptions.dataSerialization,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"aiSdk.cjs","names":["AiProviders","x","ANSIColors"],"sources":["../../src/aiSdk.ts"],"sourcesContent":["import type { AlibabaProvider, createAlibaba } from '@ai-sdk/alibaba';\nimport type {\n AmazonBedrockProvider,\n createAmazonBedrock,\n} from '@ai-sdk/amazon-bedrock';\nimport type { AnthropicProvider, createAnthropic } from '@ai-sdk/anthropic';\nimport type { createDeepSeek, DeepSeekProvider } from '@ai-sdk/deepseek';\nimport type { createFireworks, FireworksProvider } from '@ai-sdk/fireworks';\nimport type {\n createGoogleGenerativeAI,\n GoogleGenerativeAIProvider,\n} from '@ai-sdk/google';\nimport type {\n createVertex,\n GoogleVertexProvider as VertexProvider,\n} from '@ai-sdk/google-vertex';\nimport type { createGroq, GroqProvider } from '@ai-sdk/groq';\nimport type {\n createHuggingFace,\n HuggingFaceProvider,\n} from '@ai-sdk/huggingface';\nimport type { createMistral, MistralProvider } from '@ai-sdk/mistral';\nimport type { createOpenAI, OpenAIProvider } from '@ai-sdk/openai';\nimport type {\n createOpenAICompatible,\n OpenAICompatibleProvider,\n} from '@ai-sdk/openai-compatible';\nimport type { createTogetherAI, TogetherAIProvider } from '@ai-sdk/togetherai';\nimport * as ANSIColors from '@intlayer/config/colors';\nimport { colorize, logger, x } from '@intlayer/config/logger';\nimport { AiProviders } from '@intlayer/types/config';\nimport type {\n createOpenRouter,\n OpenRouterProvider,\n} from '@openrouter/ai-sdk-provider';\nimport type {\n AssistantModelMessage,\n generateText,\n SystemModelMessage,\n ToolModelMessage,\n UserModelMessage,\n} from 'ai';\nimport { generateText as generateTextFn } from 'ai';\n\nconst DEFAULT_PROVIDER = AiProviders.ANTHROPIC;\nconst DEFAULT_MODEL = 'claude-haiku-4-5';\nconst DEFAULT_API_KEY = process.env.ANTHROPIC_API_KEY;\n\nexport { AiProviders as AIProvider };\n\ntype AnthropicModel = Parameters<AnthropicProvider>[0];\ntype DeepSeekModel = Parameters<DeepSeekProvider>[0];\ntype MistralModel = Parameters<MistralProvider>[0];\ntype OpenAIModel = Parameters<OpenAIProvider>[0];\ntype OpenRouterModel = Parameters<OpenRouterProvider>[0];\ntype GoogleModel = Parameters<GoogleGenerativeAIProvider>[0];\ntype VertexModel = Parameters<VertexProvider>[0];\ntype AlibabaModel = Parameters<AlibabaProvider>[0];\ntype AmazonBedrockModel = Parameters<AmazonBedrockProvider>[0];\ntype FireworksModel = Parameters<FireworksProvider>[0];\ntype GroqModel = Parameters<GroqProvider>[0];\ntype HuggingFaceModel = Parameters<HuggingFaceProvider>[0];\ntype TogetherAIModel = Parameters<TogetherAIProvider>[0];\ntype LMStudioModel = Parameters<OpenAICompatibleProvider>[0];\n\nexport type OpenAIProviderOptions = Parameters<typeof createOpenAI>[0];\nexport type AnthropicProviderOptions = Parameters<typeof createAnthropic>[0];\nexport type MistralProviderOptions = Parameters<typeof createMistral>[0];\nexport type DeepSeekProviderOptions = Parameters<typeof createDeepSeek>[0];\nexport type GoogleProviderOptions = Parameters<\n typeof createGoogleGenerativeAI\n>[0];\nexport type VertexProviderOptions = Parameters<typeof createVertex>[0];\nexport type OpenRouterProviderOptions = Parameters<typeof createOpenRouter>[0];\nexport type AlibabaProviderOptions = Parameters<typeof createAlibaba>[0];\nexport type FireworksProviderOptions = Parameters<typeof createFireworks>[0];\nexport type GroqProviderOptions = Parameters<typeof createGroq>[0];\nexport type HuggingFaceProviderOptions = Parameters<\n typeof createHuggingFace\n>[0];\nexport type AmazonBedrockProviderOptions = Parameters<\n typeof createAmazonBedrock\n>[0];\nexport type TogetherAIProviderOptions = Parameters<typeof createTogetherAI>[0];\nexport type LMStudioProviderOptions = Parameters<\n typeof createOpenAICompatible\n>[0];\n\nexport type SystemMessage =\n | string\n | SystemModelMessage\n | SystemModelMessage[]\n | undefined;\n\nexport type Messages = (\n | UserModelMessage\n | AssistantModelMessage\n | ToolModelMessage\n)[];\n\n/**\n * Supported AI models\n */\nexport type Model =\n | AnthropicModel\n | DeepSeekModel\n | MistralModel\n | OpenAIModel\n | OpenRouterModel\n | GoogleModel\n | VertexModel\n | AlibabaModel\n | AmazonBedrockModel\n | FireworksModel\n | GroqModel\n | HuggingFaceModel\n | TogetherAIModel\n | LMStudioModel\n | (string & {});\n\n/**\n * Supported AI SDK providers\n */\n\nexport type ReasoningEffort = 'minimal' | 'low' | 'medium' | 'high' | 'none';\n\n/**\n * Common options for all AI providers\n */\ntype CommonAIOptions = {\n model?: Model;\n temperature?: number;\n baseURL?: string;\n apiKey?: string;\n applicationContext?: string;\n dataSerialization?: 'json' | 'toon';\n};\n\nexport type AIOptions = (\n | ({\n provider: AiProviders.OPENAI | `${AiProviders.OPENAI}`;\n } & OpenAIProviderOptions)\n | ({\n provider: AiProviders.ANTHROPIC | `${AiProviders.ANTHROPIC}`;\n } & AnthropicProviderOptions)\n | ({\n provider: AiProviders.MISTRAL | `${AiProviders.MISTRAL}`;\n } & MistralProviderOptions)\n | ({\n provider: AiProviders.DEEPSEEK | `${AiProviders.DEEPSEEK}`;\n } & DeepSeekProviderOptions)\n | ({\n provider: AiProviders.GEMINI | `${AiProviders.GEMINI}`;\n } & GoogleProviderOptions)\n | ({\n provider:\n | AiProviders.GOOGLEGENERATIVEAI\n | `${AiProviders.GOOGLEGENERATIVEAI}`;\n } & GoogleProviderOptions)\n | ({\n provider: AiProviders.OLLAMA | `${AiProviders.OLLAMA}`;\n } & OpenAIProviderOptions)\n | ({\n provider: AiProviders.OPENROUTER | `${AiProviders.OPENROUTER}`;\n } & OpenRouterProviderOptions)\n | ({\n provider: AiProviders.ALIBABA | `${AiProviders.ALIBABA}`;\n } & AlibabaProviderOptions)\n | ({\n provider: AiProviders.FIREWORKS | `${AiProviders.FIREWORKS}`;\n } & FireworksProviderOptions)\n | ({\n provider: AiProviders.GROQ | `${AiProviders.GROQ}`;\n } & GroqProviderOptions)\n | ({\n provider: AiProviders.HUGGINGFACE | `${AiProviders.HUGGINGFACE}`;\n } & HuggingFaceProviderOptions)\n | ({\n provider: AiProviders.BEDROCK | `${AiProviders.BEDROCK}`;\n } & AmazonBedrockProviderOptions)\n | ({\n provider: AiProviders.GOOGLEVERTEX | `${AiProviders.GOOGLEVERTEX}`;\n } & VertexProviderOptions)\n | ({\n provider: AiProviders.TOGETHERAI | `${AiProviders.TOGETHERAI}`;\n } & TogetherAIProviderOptions)\n | ({\n provider: AiProviders.LMSTUDIO | `${AiProviders.LMSTUDIO}`;\n } & LMStudioProviderOptions)\n | ({ provider?: undefined } & OpenAIProviderOptions)\n) &\n CommonAIOptions;\n\n// Define the structure of messages used in chat completions\nexport type ChatCompletionRequestMessage = {\n role: 'system' | 'user' | 'assistant'; // The role of the message sender\n content: string; // The text content of the message\n timestamp?: Date; // The timestamp of the message\n};\n\ntype AccessType = 'apiKey' | 'registered_user' | 'premium_user' | 'public';\n\nconst isMaskedKey = (key?: string): boolean => !!key?.includes('*');\n\nconst getAPIKey = (\n accessType: AccessType[],\n aiOptions?: AIOptions,\n isAuthenticated: boolean = false\n) => {\n const apiKey =\n aiOptions?.apiKey && !isMaskedKey(aiOptions.apiKey)\n ? aiOptions.apiKey\n : undefined;\n\n if (accessType.includes('public')) {\n return apiKey ?? DEFAULT_API_KEY;\n }\n\n if (accessType.includes('apiKey') && apiKey) {\n return apiKey;\n }\n\n if (accessType.includes('registered_user') && isAuthenticated) {\n return apiKey ?? DEFAULT_API_KEY;\n }\n\n // TODO: Implement premium user access\n if (accessType.includes('premium_user') && isAuthenticated) {\n return apiKey ?? DEFAULT_API_KEY;\n }\n\n return undefined;\n};\n\nconst getModelName = (\n provider: AiProviders,\n isUserProvidedKey: boolean,\n userModel?: Model\n): Model => {\n // If the user provides their own API key, allow custom model selection\n if (\n isUserProvidedKey ||\n provider === AiProviders.OLLAMA ||\n provider === AiProviders.LMSTUDIO\n ) {\n if (userModel) {\n return userModel;\n }\n\n // No custom model specified — fall back to the default\n return DEFAULT_MODEL;\n }\n\n // Using backend's default API key — always use the default model,\n // ignore any custom model the user may have passed\n return DEFAULT_MODEL;\n};\n\nconst getLanguageModel = async (\n aiOptions: AIOptions,\n apiKey: string | undefined\n) => {\n const loadModule = async <T>(packageName: string): Promise<T> => {\n try {\n return (await import(packageName)) as T;\n } catch {\n logger(\n `${x} The package \"${colorize(packageName, ANSIColors.GREEN)}\" is required to use this AI provider. Please install it using: ${colorize(`npm install ${packageName}`, ANSIColors.GREY_DARK)}`,\n {\n level: 'error',\n }\n );\n process.exit();\n }\n };\n\n const provider = aiOptions.provider ?? AiProviders.OPENAI;\n const selectedModel = getModelName(\n provider as AiProviders,\n !!aiOptions.apiKey, // true only when the user explicitly provided their own key\n aiOptions.model\n );\n\n const baseURL = aiOptions.baseURL;\n\n switch (provider) {\n case AiProviders.OPENAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAI } =\n await loadModule<typeof import('@ai-sdk/openai')>('@ai-sdk/openai');\n\n return createOpenAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.ANTHROPIC: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAnthropic } =\n await loadModule<typeof import('@ai-sdk/anthropic')>(\n '@ai-sdk/anthropic'\n );\n\n return createAnthropic({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.MISTRAL: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createMistral } =\n await loadModule<typeof import('@ai-sdk/mistral')>('@ai-sdk/mistral');\n\n return createMistral({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.DEEPSEEK: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createDeepSeek } =\n await loadModule<typeof import('@ai-sdk/deepseek')>('@ai-sdk/deepseek');\n\n return createDeepSeek({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.GEMINI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGoogleGenerativeAI } =\n await loadModule<typeof import('@ai-sdk/google')>('@ai-sdk/google');\n\n return createGoogleGenerativeAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.GOOGLEVERTEX: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createVertex } = await loadModule<\n typeof import('@ai-sdk/google-vertex')\n >('@ai-sdk/google-vertex');\n\n return createVertex({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel as string);\n }\n\n case AiProviders.GOOGLEGENERATIVEAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGoogleGenerativeAI } =\n await loadModule<typeof import('@ai-sdk/google')>('@ai-sdk/google');\n\n return createGoogleGenerativeAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel as string);\n }\n\n case AiProviders.OLLAMA: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAI } =\n await loadModule<typeof import('@ai-sdk/openai')>('@ai-sdk/openai');\n\n // Ollama compatible mode:\n const ollama = createOpenAI({\n baseURL: baseURL ?? 'http://localhost:11434/v1',\n apiKey: apiKey ?? 'ollama', // Required but unused by Ollama\n ...otherOptions,\n });\n\n return ollama.chat(selectedModel);\n }\n\n case AiProviders.OPENROUTER: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenRouter } = await loadModule<\n typeof import('@openrouter/ai-sdk-provider')\n >('@openrouter/ai-sdk-provider');\n\n const openrouter = createOpenRouter({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return openrouter(selectedModel as string);\n }\n\n case AiProviders.ALIBABA: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAlibaba } =\n await loadModule<typeof import('@ai-sdk/alibaba')>('@ai-sdk/alibaba');\n\n const alibaba = createAlibaba({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return alibaba(selectedModel as string);\n }\n\n case AiProviders.FIREWORKS: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createFireworks } =\n await loadModule<typeof import('@ai-sdk/fireworks')>(\n '@ai-sdk/fireworks'\n );\n\n const fireworks = createFireworks({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return fireworks(selectedModel as string);\n }\n\n case AiProviders.GROQ: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGroq } =\n await loadModule<typeof import('@ai-sdk/groq')>('@ai-sdk/groq');\n\n const groq = createGroq({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return groq(selectedModel as string);\n }\n\n case AiProviders.HUGGINGFACE: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createHuggingFace } = await loadModule<\n typeof import('@ai-sdk/huggingface')\n >('@ai-sdk/huggingface');\n\n const huggingface = createHuggingFace({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return huggingface(selectedModel as string);\n }\n\n case AiProviders.BEDROCK: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAmazonBedrock } = await loadModule<\n typeof import('@ai-sdk/amazon-bedrock')\n >('@ai-sdk/amazon-bedrock');\n\n const bedrock = createAmazonBedrock({\n accessKeyId: apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return bedrock(selectedModel as string);\n }\n\n case AiProviders.TOGETHERAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createTogetherAI } =\n await loadModule<typeof import('@ai-sdk/togetherai')>(\n '@ai-sdk/togetherai'\n );\n\n const togetherai = createTogetherAI({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return togetherai(selectedModel as string);\n }\n\n case AiProviders.LMSTUDIO: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAICompatible } = await loadModule<\n typeof import('@ai-sdk/openai-compatible')\n >('@ai-sdk/openai-compatible');\n\n const lmstudio = createOpenAICompatible({\n name: 'lmstudio',\n baseURL: baseURL ?? 'http://localhost:1234/v1',\n ...otherOptions,\n });\n\n return lmstudio(selectedModel as string);\n }\n\n default: {\n throw new Error(`Provider ${provider} not supported`);\n }\n }\n};\n\nexport type AIConfig = Omit<Parameters<typeof generateText>[0], 'prompt'> & {\n reasoningEffort?: ReasoningEffort;\n textVerbosity?: 'low' | 'medium' | 'high';\n dataSerialization?: 'json' | 'toon';\n};\n\nexport type AIConfigOptions = {\n userOptions?: AIOptions;\n projectOptions?: AIOptions;\n defaultOptions?: AIOptions;\n accessType?: AccessType[];\n};\n\n/**\n * Sends a minimal request to verify that the configured AI provider credentials\n * are valid and reachable before starting any bulk operation.\n *\n * @returns true if access is confirmed, false otherwise\n */\nexport const checkAISDKAccess = async (\n aiConfig: AIConfig\n): Promise<{ hasAIAccess: boolean; error?: string }> => {\n try {\n await generateTextFn({\n ...aiConfig,\n messages: [\n {\n role: 'user',\n content: 'ping',\n },\n ],\n maxOutputTokens: 20,\n });\n return { hasAIAccess: true };\n } catch (error) {\n return { hasAIAccess: false, error: (error as Error).message };\n }\n};\n\n/**\n * Get AI model configuration based on the selected provider and options\n * This function handles the configuration for different AI providers\n *\n * @param options Configuration options including provider, API keys, models and temperature\n * @returns Configured AI model ready to use with generateText\n */\nexport const getAIConfig = async (\n options: AIConfigOptions,\n isAuthenticated: boolean = false\n): Promise<AIConfig> => {\n const {\n userOptions,\n projectOptions,\n defaultOptions,\n accessType = ['registered_user'],\n } = options;\n\n const mergeWithoutUndefined = (...sources: (AIOptions | undefined)[]) => {\n const result: Record<string, unknown> = { provider: DEFAULT_PROVIDER };\n for (const source of sources) {\n if (!source) continue;\n for (const [key, value] of Object.entries(source)) {\n if (value === undefined) continue;\n if (key === 'apiKey' && isMaskedKey(value as string)) continue;\n result[key] = value;\n }\n }\n return result;\n };\n\n const aiOptions = mergeWithoutUndefined(\n defaultOptions,\n projectOptions,\n userOptions\n ) as AIOptions;\n\n const apiKey = getAPIKey(accessType, aiOptions, isAuthenticated);\n\n // Check if API key is provided\n if (\n !apiKey &&\n aiOptions.provider !== AiProviders.OLLAMA &&\n aiOptions.provider !== AiProviders.LMSTUDIO\n ) {\n throw new Error(`API key for ${aiOptions.provider} is missing`);\n }\n\n const languageModel = await getLanguageModel(aiOptions, apiKey);\n\n return {\n model: languageModel,\n temperature: aiOptions.temperature,\n dataSerialization: aiOptions.dataSerialization,\n };\n};\n"],"mappings":"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"}
@@ -5,13 +5,15 @@ import { AiProviders } from "@intlayer/types/config";
5
5
 
6
6
  //#region src/aiSdk.ts
7
7
  const DEFAULT_PROVIDER = AiProviders.ANTHROPIC;
8
- const DEFAULT_MODEL = "claude-haiku-4-5-20251001";
8
+ const DEFAULT_MODEL = "claude-haiku-4-5";
9
9
  const DEFAULT_API_KEY = process.env.ANTHROPIC_API_KEY;
10
+ const isMaskedKey = (key) => !!key?.includes("*");
10
11
  const getAPIKey = (accessType, aiOptions, isAuthenticated = false) => {
11
- if (accessType.includes("public")) return aiOptions?.apiKey ?? DEFAULT_API_KEY;
12
- if (accessType.includes("apiKey") && aiOptions?.apiKey) return aiOptions?.apiKey;
13
- if (accessType.includes("registered_user") && isAuthenticated) return aiOptions?.apiKey ?? DEFAULT_API_KEY;
14
- if (accessType.includes("premium_user") && isAuthenticated) return aiOptions?.apiKey ?? DEFAULT_API_KEY;
12
+ const apiKey = aiOptions?.apiKey && !isMaskedKey(aiOptions.apiKey) ? aiOptions.apiKey : void 0;
13
+ if (accessType.includes("public")) return apiKey ?? DEFAULT_API_KEY;
14
+ if (accessType.includes("apiKey") && apiKey) return apiKey;
15
+ if (accessType.includes("registered_user") && isAuthenticated) return apiKey ?? DEFAULT_API_KEY;
16
+ if (accessType.includes("premium_user") && isAuthenticated) return apiKey ?? DEFAULT_API_KEY;
15
17
  };
16
18
  const getModelName = (provider, isUserProvidedKey, userModel) => {
17
19
  if (isUserProvidedKey || provider === AiProviders.OLLAMA || provider === AiProviders.LMSTUDIO) {
@@ -213,12 +215,19 @@ const checkAISDKAccess = async (aiConfig) => {
213
215
  */
214
216
  const getAIConfig = async (options, isAuthenticated = false) => {
215
217
  const { userOptions, projectOptions, defaultOptions, accessType = ["registered_user"] } = options;
216
- const aiOptions = {
217
- provider: DEFAULT_PROVIDER,
218
- ...defaultOptions,
219
- ...projectOptions,
220
- ...userOptions
218
+ const mergeWithoutUndefined = (...sources) => {
219
+ const result = { provider: DEFAULT_PROVIDER };
220
+ for (const source of sources) {
221
+ if (!source) continue;
222
+ for (const [key, value] of Object.entries(source)) {
223
+ if (value === void 0) continue;
224
+ if (key === "apiKey" && isMaskedKey(value)) continue;
225
+ result[key] = value;
226
+ }
227
+ }
228
+ return result;
221
229
  };
230
+ const aiOptions = mergeWithoutUndefined(defaultOptions, projectOptions, userOptions);
222
231
  const apiKey = getAPIKey(accessType, aiOptions, isAuthenticated);
223
232
  if (!apiKey && aiOptions.provider !== AiProviders.OLLAMA && aiOptions.provider !== AiProviders.LMSTUDIO) throw new Error(`API key for ${aiOptions.provider} is missing`);
224
233
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"aiSdk.mjs","names":["generateTextFn"],"sources":["../../src/aiSdk.ts"],"sourcesContent":["import type { AlibabaProvider, createAlibaba } from '@ai-sdk/alibaba';\nimport type {\n AmazonBedrockProvider,\n createAmazonBedrock,\n} from '@ai-sdk/amazon-bedrock';\nimport type { AnthropicProvider, createAnthropic } from '@ai-sdk/anthropic';\nimport type { createDeepSeek, DeepSeekProvider } from '@ai-sdk/deepseek';\nimport type { createFireworks, FireworksProvider } from '@ai-sdk/fireworks';\nimport type {\n createGoogleGenerativeAI,\n GoogleGenerativeAIProvider,\n} from '@ai-sdk/google';\nimport type {\n createVertex,\n GoogleVertexProvider as VertexProvider,\n} from '@ai-sdk/google-vertex';\nimport type { createGroq, GroqProvider } from '@ai-sdk/groq';\nimport type {\n createHuggingFace,\n HuggingFaceProvider,\n} from '@ai-sdk/huggingface';\nimport type { createMistral, MistralProvider } from '@ai-sdk/mistral';\nimport type { createOpenAI, OpenAIProvider } from '@ai-sdk/openai';\nimport type {\n createOpenAICompatible,\n OpenAICompatibleProvider,\n} from '@ai-sdk/openai-compatible';\nimport type { createTogetherAI, TogetherAIProvider } from '@ai-sdk/togetherai';\nimport * as ANSIColors from '@intlayer/config/colors';\nimport { colorize, logger, x } from '@intlayer/config/logger';\nimport { AiProviders } from '@intlayer/types/config';\nimport type {\n createOpenRouter,\n OpenRouterProvider,\n} from '@openrouter/ai-sdk-provider';\nimport type {\n AssistantModelMessage,\n generateText,\n SystemModelMessage,\n ToolModelMessage,\n UserModelMessage,\n} from 'ai';\nimport { generateText as generateTextFn } from 'ai';\n\nconst DEFAULT_PROVIDER = AiProviders.ANTHROPIC;\nconst DEFAULT_MODEL = 'claude-haiku-4-5-20251001';\nconst DEFAULT_API_KEY = process.env.ANTHROPIC_API_KEY;\n\nexport { AiProviders as AIProvider };\n\ntype AnthropicModel = Parameters<AnthropicProvider>[0];\ntype DeepSeekModel = Parameters<DeepSeekProvider>[0];\ntype MistralModel = Parameters<MistralProvider>[0];\ntype OpenAIModel = Parameters<OpenAIProvider>[0];\ntype OpenRouterModel = Parameters<OpenRouterProvider>[0];\ntype GoogleModel = Parameters<GoogleGenerativeAIProvider>[0];\ntype VertexModel = Parameters<VertexProvider>[0];\ntype AlibabaModel = Parameters<AlibabaProvider>[0];\ntype AmazonBedrockModel = Parameters<AmazonBedrockProvider>[0];\ntype FireworksModel = Parameters<FireworksProvider>[0];\ntype GroqModel = Parameters<GroqProvider>[0];\ntype HuggingFaceModel = Parameters<HuggingFaceProvider>[0];\ntype TogetherAIModel = Parameters<TogetherAIProvider>[0];\ntype LMStudioModel = Parameters<OpenAICompatibleProvider>[0];\n\nexport type OpenAIProviderOptions = Parameters<typeof createOpenAI>[0];\nexport type AnthropicProviderOptions = Parameters<typeof createAnthropic>[0];\nexport type MistralProviderOptions = Parameters<typeof createMistral>[0];\nexport type DeepSeekProviderOptions = Parameters<typeof createDeepSeek>[0];\nexport type GoogleProviderOptions = Parameters<\n typeof createGoogleGenerativeAI\n>[0];\nexport type VertexProviderOptions = Parameters<typeof createVertex>[0];\nexport type OpenRouterProviderOptions = Parameters<typeof createOpenRouter>[0];\nexport type AlibabaProviderOptions = Parameters<typeof createAlibaba>[0];\nexport type FireworksProviderOptions = Parameters<typeof createFireworks>[0];\nexport type GroqProviderOptions = Parameters<typeof createGroq>[0];\nexport type HuggingFaceProviderOptions = Parameters<\n typeof createHuggingFace\n>[0];\nexport type AmazonBedrockProviderOptions = Parameters<\n typeof createAmazonBedrock\n>[0];\nexport type TogetherAIProviderOptions = Parameters<typeof createTogetherAI>[0];\nexport type LMStudioProviderOptions = Parameters<\n typeof createOpenAICompatible\n>[0];\n\nexport type SystemMessage =\n | string\n | SystemModelMessage\n | SystemModelMessage[]\n | undefined;\n\nexport type Messages = (\n | UserModelMessage\n | AssistantModelMessage\n | ToolModelMessage\n)[];\n\n/**\n * Supported AI models\n */\nexport type Model =\n | AnthropicModel\n | DeepSeekModel\n | MistralModel\n | OpenAIModel\n | OpenRouterModel\n | GoogleModel\n | VertexModel\n | AlibabaModel\n | AmazonBedrockModel\n | FireworksModel\n | GroqModel\n | HuggingFaceModel\n | TogetherAIModel\n | LMStudioModel\n | (string & {});\n\n/**\n * Supported AI SDK providers\n */\n\nexport type ReasoningEffort = 'minimal' | 'low' | 'medium' | 'high' | 'none';\n\n/**\n * Common options for all AI providers\n */\ntype CommonAIOptions = {\n model?: Model;\n temperature?: number;\n baseURL?: string;\n apiKey?: string;\n applicationContext?: string;\n dataSerialization?: 'json' | 'toon';\n};\n\nexport type AIOptions = (\n | ({\n provider: AiProviders.OPENAI | `${AiProviders.OPENAI}`;\n } & OpenAIProviderOptions)\n | ({\n provider: AiProviders.ANTHROPIC | `${AiProviders.ANTHROPIC}`;\n } & AnthropicProviderOptions)\n | ({\n provider: AiProviders.MISTRAL | `${AiProviders.MISTRAL}`;\n } & MistralProviderOptions)\n | ({\n provider: AiProviders.DEEPSEEK | `${AiProviders.DEEPSEEK}`;\n } & DeepSeekProviderOptions)\n | ({\n provider: AiProviders.GEMINI | `${AiProviders.GEMINI}`;\n } & GoogleProviderOptions)\n | ({\n provider:\n | AiProviders.GOOGLEGENERATIVEAI\n | `${AiProviders.GOOGLEGENERATIVEAI}`;\n } & GoogleProviderOptions)\n | ({\n provider: AiProviders.OLLAMA | `${AiProviders.OLLAMA}`;\n } & OpenAIProviderOptions)\n | ({\n provider: AiProviders.OPENROUTER | `${AiProviders.OPENROUTER}`;\n } & OpenRouterProviderOptions)\n | ({\n provider: AiProviders.ALIBABA | `${AiProviders.ALIBABA}`;\n } & AlibabaProviderOptions)\n | ({\n provider: AiProviders.FIREWORKS | `${AiProviders.FIREWORKS}`;\n } & FireworksProviderOptions)\n | ({\n provider: AiProviders.GROQ | `${AiProviders.GROQ}`;\n } & GroqProviderOptions)\n | ({\n provider: AiProviders.HUGGINGFACE | `${AiProviders.HUGGINGFACE}`;\n } & HuggingFaceProviderOptions)\n | ({\n provider: AiProviders.BEDROCK | `${AiProviders.BEDROCK}`;\n } & AmazonBedrockProviderOptions)\n | ({\n provider: AiProviders.GOOGLEVERTEX | `${AiProviders.GOOGLEVERTEX}`;\n } & VertexProviderOptions)\n | ({\n provider: AiProviders.TOGETHERAI | `${AiProviders.TOGETHERAI}`;\n } & TogetherAIProviderOptions)\n | ({\n provider: AiProviders.LMSTUDIO | `${AiProviders.LMSTUDIO}`;\n } & LMStudioProviderOptions)\n | ({ provider?: undefined } & OpenAIProviderOptions)\n) &\n CommonAIOptions;\n\n// Define the structure of messages used in chat completions\nexport type ChatCompletionRequestMessage = {\n role: 'system' | 'user' | 'assistant'; // The role of the message sender\n content: string; // The text content of the message\n timestamp?: Date; // The timestamp of the message\n};\n\ntype AccessType = 'apiKey' | 'registered_user' | 'premium_user' | 'public';\n\nconst getAPIKey = (\n accessType: AccessType[],\n aiOptions?: AIOptions,\n isAuthenticated: boolean = false\n) => {\n if (accessType.includes('public')) {\n return aiOptions?.apiKey ?? DEFAULT_API_KEY;\n }\n\n if (accessType.includes('apiKey') && aiOptions?.apiKey) {\n return aiOptions?.apiKey;\n }\n\n if (accessType.includes('registered_user') && isAuthenticated) {\n return aiOptions?.apiKey ?? DEFAULT_API_KEY;\n }\n\n // TODO: Implement premium user access\n if (accessType.includes('premium_user') && isAuthenticated) {\n return aiOptions?.apiKey ?? DEFAULT_API_KEY;\n }\n\n return undefined;\n};\n\nconst getModelName = (\n provider: AiProviders,\n isUserProvidedKey: boolean,\n userModel?: Model\n): Model => {\n // If the user provides their own API key, allow custom model selection\n if (\n isUserProvidedKey ||\n provider === AiProviders.OLLAMA ||\n provider === AiProviders.LMSTUDIO\n ) {\n if (userModel) {\n return userModel;\n }\n\n // No custom model specified — fall back to the default\n return DEFAULT_MODEL;\n }\n\n // Using backend's default API key — always use the default model,\n // ignore any custom model the user may have passed\n return DEFAULT_MODEL;\n};\n\nconst getLanguageModel = async (\n aiOptions: AIOptions,\n apiKey: string | undefined\n) => {\n const loadModule = async <T>(packageName: string): Promise<T> => {\n try {\n return (await import(packageName)) as T;\n } catch {\n logger(\n `${x} The package \"${colorize(packageName, ANSIColors.GREEN)}\" is required to use this AI provider. Please install it using: ${colorize(`npm install ${packageName}`, ANSIColors.GREY_DARK)}`,\n {\n level: 'error',\n }\n );\n process.exit();\n }\n };\n\n const provider = aiOptions.provider ?? AiProviders.OPENAI;\n const selectedModel = getModelName(\n provider as AiProviders,\n !!aiOptions.apiKey, // true only when the user explicitly provided their own key\n aiOptions.model\n );\n\n const baseURL = aiOptions.baseURL;\n\n switch (provider) {\n case AiProviders.OPENAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAI } =\n await loadModule<typeof import('@ai-sdk/openai')>('@ai-sdk/openai');\n\n return createOpenAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.ANTHROPIC: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAnthropic } =\n await loadModule<typeof import('@ai-sdk/anthropic')>(\n '@ai-sdk/anthropic'\n );\n\n return createAnthropic({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.MISTRAL: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createMistral } =\n await loadModule<typeof import('@ai-sdk/mistral')>('@ai-sdk/mistral');\n\n return createMistral({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.DEEPSEEK: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createDeepSeek } =\n await loadModule<typeof import('@ai-sdk/deepseek')>('@ai-sdk/deepseek');\n\n return createDeepSeek({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.GEMINI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGoogleGenerativeAI } =\n await loadModule<typeof import('@ai-sdk/google')>('@ai-sdk/google');\n\n return createGoogleGenerativeAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.GOOGLEVERTEX: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createVertex } = await loadModule<\n typeof import('@ai-sdk/google-vertex')\n >('@ai-sdk/google-vertex');\n\n return createVertex({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel as string);\n }\n\n case AiProviders.GOOGLEGENERATIVEAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGoogleGenerativeAI } =\n await loadModule<typeof import('@ai-sdk/google')>('@ai-sdk/google');\n\n return createGoogleGenerativeAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel as string);\n }\n\n case AiProviders.OLLAMA: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAI } =\n await loadModule<typeof import('@ai-sdk/openai')>('@ai-sdk/openai');\n\n // Ollama compatible mode:\n const ollama = createOpenAI({\n baseURL: baseURL ?? 'http://localhost:11434/v1',\n apiKey: apiKey ?? 'ollama', // Required but unused by Ollama\n ...otherOptions,\n });\n\n return ollama.chat(selectedModel);\n }\n\n case AiProviders.OPENROUTER: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenRouter } = await loadModule<\n typeof import('@openrouter/ai-sdk-provider')\n >('@openrouter/ai-sdk-provider');\n\n const openrouter = createOpenRouter({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return openrouter(selectedModel as string);\n }\n\n case AiProviders.ALIBABA: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAlibaba } =\n await loadModule<typeof import('@ai-sdk/alibaba')>('@ai-sdk/alibaba');\n\n const alibaba = createAlibaba({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return alibaba(selectedModel as string);\n }\n\n case AiProviders.FIREWORKS: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createFireworks } =\n await loadModule<typeof import('@ai-sdk/fireworks')>(\n '@ai-sdk/fireworks'\n );\n\n const fireworks = createFireworks({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return fireworks(selectedModel as string);\n }\n\n case AiProviders.GROQ: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGroq } =\n await loadModule<typeof import('@ai-sdk/groq')>('@ai-sdk/groq');\n\n const groq = createGroq({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return groq(selectedModel as string);\n }\n\n case AiProviders.HUGGINGFACE: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createHuggingFace } = await loadModule<\n typeof import('@ai-sdk/huggingface')\n >('@ai-sdk/huggingface');\n\n const huggingface = createHuggingFace({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return huggingface(selectedModel as string);\n }\n\n case AiProviders.BEDROCK: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAmazonBedrock } = await loadModule<\n typeof import('@ai-sdk/amazon-bedrock')\n >('@ai-sdk/amazon-bedrock');\n\n const bedrock = createAmazonBedrock({\n accessKeyId: apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return bedrock(selectedModel as string);\n }\n\n case AiProviders.TOGETHERAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createTogetherAI } =\n await loadModule<typeof import('@ai-sdk/togetherai')>(\n '@ai-sdk/togetherai'\n );\n\n const togetherai = createTogetherAI({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return togetherai(selectedModel as string);\n }\n\n case AiProviders.LMSTUDIO: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAICompatible } = await loadModule<\n typeof import('@ai-sdk/openai-compatible')\n >('@ai-sdk/openai-compatible');\n\n const lmstudio = createOpenAICompatible({\n name: 'lmstudio',\n baseURL: baseURL ?? 'http://localhost:1234/v1',\n ...otherOptions,\n });\n\n return lmstudio(selectedModel as string);\n }\n\n default: {\n throw new Error(`Provider ${provider} not supported`);\n }\n }\n};\n\nexport type AIConfig = Omit<Parameters<typeof generateText>[0], 'prompt'> & {\n reasoningEffort?: ReasoningEffort;\n textVerbosity?: 'low' | 'medium' | 'high';\n dataSerialization?: 'json' | 'toon';\n};\n\nexport type AIConfigOptions = {\n userOptions?: AIOptions;\n projectOptions?: AIOptions;\n defaultOptions?: AIOptions;\n accessType?: AccessType[];\n};\n\n/**\n * Sends a minimal request to verify that the configured AI provider credentials\n * are valid and reachable before starting any bulk operation.\n *\n * @returns true if access is confirmed, false otherwise\n */\nexport const checkAISDKAccess = async (\n aiConfig: AIConfig\n): Promise<{ hasAIAccess: boolean; error?: string }> => {\n try {\n await generateTextFn({\n ...aiConfig,\n messages: [\n {\n role: 'user',\n content: 'ping',\n },\n ],\n maxOutputTokens: 20,\n });\n return { hasAIAccess: true };\n } catch (error) {\n return { hasAIAccess: false, error: (error as Error).message };\n }\n};\n\n/**\n * Get AI model configuration based on the selected provider and options\n * This function handles the configuration for different AI providers\n *\n * @param options Configuration options including provider, API keys, models and temperature\n * @returns Configured AI model ready to use with generateText\n */\nexport const getAIConfig = async (\n options: AIConfigOptions,\n isAuthenticated: boolean = false\n): Promise<AIConfig> => {\n const {\n userOptions,\n projectOptions,\n defaultOptions,\n accessType = ['registered_user'],\n } = options;\n\n const aiOptions = {\n provider: DEFAULT_PROVIDER,\n ...defaultOptions,\n ...projectOptions,\n ...userOptions,\n } as AIOptions;\n\n const apiKey = getAPIKey(accessType, aiOptions, isAuthenticated);\n\n // Check if API key is provided\n if (\n !apiKey &&\n aiOptions.provider !== AiProviders.OLLAMA &&\n aiOptions.provider !== AiProviders.LMSTUDIO\n ) {\n throw new Error(`API key for ${aiOptions.provider} is missing`);\n }\n\n const languageModel = await getLanguageModel(aiOptions, apiKey);\n\n return {\n model: languageModel,\n temperature: aiOptions.temperature,\n dataSerialization: aiOptions.dataSerialization,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"aiSdk.mjs","names":["generateTextFn"],"sources":["../../src/aiSdk.ts"],"sourcesContent":["import type { AlibabaProvider, createAlibaba } from '@ai-sdk/alibaba';\nimport type {\n AmazonBedrockProvider,\n createAmazonBedrock,\n} from '@ai-sdk/amazon-bedrock';\nimport type { AnthropicProvider, createAnthropic } from '@ai-sdk/anthropic';\nimport type { createDeepSeek, DeepSeekProvider } from '@ai-sdk/deepseek';\nimport type { createFireworks, FireworksProvider } from '@ai-sdk/fireworks';\nimport type {\n createGoogleGenerativeAI,\n GoogleGenerativeAIProvider,\n} from '@ai-sdk/google';\nimport type {\n createVertex,\n GoogleVertexProvider as VertexProvider,\n} from '@ai-sdk/google-vertex';\nimport type { createGroq, GroqProvider } from '@ai-sdk/groq';\nimport type {\n createHuggingFace,\n HuggingFaceProvider,\n} from '@ai-sdk/huggingface';\nimport type { createMistral, MistralProvider } from '@ai-sdk/mistral';\nimport type { createOpenAI, OpenAIProvider } from '@ai-sdk/openai';\nimport type {\n createOpenAICompatible,\n OpenAICompatibleProvider,\n} from '@ai-sdk/openai-compatible';\nimport type { createTogetherAI, TogetherAIProvider } from '@ai-sdk/togetherai';\nimport * as ANSIColors from '@intlayer/config/colors';\nimport { colorize, logger, x } from '@intlayer/config/logger';\nimport { AiProviders } from '@intlayer/types/config';\nimport type {\n createOpenRouter,\n OpenRouterProvider,\n} from '@openrouter/ai-sdk-provider';\nimport type {\n AssistantModelMessage,\n generateText,\n SystemModelMessage,\n ToolModelMessage,\n UserModelMessage,\n} from 'ai';\nimport { generateText as generateTextFn } from 'ai';\n\nconst DEFAULT_PROVIDER = AiProviders.ANTHROPIC;\nconst DEFAULT_MODEL = 'claude-haiku-4-5';\nconst DEFAULT_API_KEY = process.env.ANTHROPIC_API_KEY;\n\nexport { AiProviders as AIProvider };\n\ntype AnthropicModel = Parameters<AnthropicProvider>[0];\ntype DeepSeekModel = Parameters<DeepSeekProvider>[0];\ntype MistralModel = Parameters<MistralProvider>[0];\ntype OpenAIModel = Parameters<OpenAIProvider>[0];\ntype OpenRouterModel = Parameters<OpenRouterProvider>[0];\ntype GoogleModel = Parameters<GoogleGenerativeAIProvider>[0];\ntype VertexModel = Parameters<VertexProvider>[0];\ntype AlibabaModel = Parameters<AlibabaProvider>[0];\ntype AmazonBedrockModel = Parameters<AmazonBedrockProvider>[0];\ntype FireworksModel = Parameters<FireworksProvider>[0];\ntype GroqModel = Parameters<GroqProvider>[0];\ntype HuggingFaceModel = Parameters<HuggingFaceProvider>[0];\ntype TogetherAIModel = Parameters<TogetherAIProvider>[0];\ntype LMStudioModel = Parameters<OpenAICompatibleProvider>[0];\n\nexport type OpenAIProviderOptions = Parameters<typeof createOpenAI>[0];\nexport type AnthropicProviderOptions = Parameters<typeof createAnthropic>[0];\nexport type MistralProviderOptions = Parameters<typeof createMistral>[0];\nexport type DeepSeekProviderOptions = Parameters<typeof createDeepSeek>[0];\nexport type GoogleProviderOptions = Parameters<\n typeof createGoogleGenerativeAI\n>[0];\nexport type VertexProviderOptions = Parameters<typeof createVertex>[0];\nexport type OpenRouterProviderOptions = Parameters<typeof createOpenRouter>[0];\nexport type AlibabaProviderOptions = Parameters<typeof createAlibaba>[0];\nexport type FireworksProviderOptions = Parameters<typeof createFireworks>[0];\nexport type GroqProviderOptions = Parameters<typeof createGroq>[0];\nexport type HuggingFaceProviderOptions = Parameters<\n typeof createHuggingFace\n>[0];\nexport type AmazonBedrockProviderOptions = Parameters<\n typeof createAmazonBedrock\n>[0];\nexport type TogetherAIProviderOptions = Parameters<typeof createTogetherAI>[0];\nexport type LMStudioProviderOptions = Parameters<\n typeof createOpenAICompatible\n>[0];\n\nexport type SystemMessage =\n | string\n | SystemModelMessage\n | SystemModelMessage[]\n | undefined;\n\nexport type Messages = (\n | UserModelMessage\n | AssistantModelMessage\n | ToolModelMessage\n)[];\n\n/**\n * Supported AI models\n */\nexport type Model =\n | AnthropicModel\n | DeepSeekModel\n | MistralModel\n | OpenAIModel\n | OpenRouterModel\n | GoogleModel\n | VertexModel\n | AlibabaModel\n | AmazonBedrockModel\n | FireworksModel\n | GroqModel\n | HuggingFaceModel\n | TogetherAIModel\n | LMStudioModel\n | (string & {});\n\n/**\n * Supported AI SDK providers\n */\n\nexport type ReasoningEffort = 'minimal' | 'low' | 'medium' | 'high' | 'none';\n\n/**\n * Common options for all AI providers\n */\ntype CommonAIOptions = {\n model?: Model;\n temperature?: number;\n baseURL?: string;\n apiKey?: string;\n applicationContext?: string;\n dataSerialization?: 'json' | 'toon';\n};\n\nexport type AIOptions = (\n | ({\n provider: AiProviders.OPENAI | `${AiProviders.OPENAI}`;\n } & OpenAIProviderOptions)\n | ({\n provider: AiProviders.ANTHROPIC | `${AiProviders.ANTHROPIC}`;\n } & AnthropicProviderOptions)\n | ({\n provider: AiProviders.MISTRAL | `${AiProviders.MISTRAL}`;\n } & MistralProviderOptions)\n | ({\n provider: AiProviders.DEEPSEEK | `${AiProviders.DEEPSEEK}`;\n } & DeepSeekProviderOptions)\n | ({\n provider: AiProviders.GEMINI | `${AiProviders.GEMINI}`;\n } & GoogleProviderOptions)\n | ({\n provider:\n | AiProviders.GOOGLEGENERATIVEAI\n | `${AiProviders.GOOGLEGENERATIVEAI}`;\n } & GoogleProviderOptions)\n | ({\n provider: AiProviders.OLLAMA | `${AiProviders.OLLAMA}`;\n } & OpenAIProviderOptions)\n | ({\n provider: AiProviders.OPENROUTER | `${AiProviders.OPENROUTER}`;\n } & OpenRouterProviderOptions)\n | ({\n provider: AiProviders.ALIBABA | `${AiProviders.ALIBABA}`;\n } & AlibabaProviderOptions)\n | ({\n provider: AiProviders.FIREWORKS | `${AiProviders.FIREWORKS}`;\n } & FireworksProviderOptions)\n | ({\n provider: AiProviders.GROQ | `${AiProviders.GROQ}`;\n } & GroqProviderOptions)\n | ({\n provider: AiProviders.HUGGINGFACE | `${AiProviders.HUGGINGFACE}`;\n } & HuggingFaceProviderOptions)\n | ({\n provider: AiProviders.BEDROCK | `${AiProviders.BEDROCK}`;\n } & AmazonBedrockProviderOptions)\n | ({\n provider: AiProviders.GOOGLEVERTEX | `${AiProviders.GOOGLEVERTEX}`;\n } & VertexProviderOptions)\n | ({\n provider: AiProviders.TOGETHERAI | `${AiProviders.TOGETHERAI}`;\n } & TogetherAIProviderOptions)\n | ({\n provider: AiProviders.LMSTUDIO | `${AiProviders.LMSTUDIO}`;\n } & LMStudioProviderOptions)\n | ({ provider?: undefined } & OpenAIProviderOptions)\n) &\n CommonAIOptions;\n\n// Define the structure of messages used in chat completions\nexport type ChatCompletionRequestMessage = {\n role: 'system' | 'user' | 'assistant'; // The role of the message sender\n content: string; // The text content of the message\n timestamp?: Date; // The timestamp of the message\n};\n\ntype AccessType = 'apiKey' | 'registered_user' | 'premium_user' | 'public';\n\nconst isMaskedKey = (key?: string): boolean => !!key?.includes('*');\n\nconst getAPIKey = (\n accessType: AccessType[],\n aiOptions?: AIOptions,\n isAuthenticated: boolean = false\n) => {\n const apiKey =\n aiOptions?.apiKey && !isMaskedKey(aiOptions.apiKey)\n ? aiOptions.apiKey\n : undefined;\n\n if (accessType.includes('public')) {\n return apiKey ?? DEFAULT_API_KEY;\n }\n\n if (accessType.includes('apiKey') && apiKey) {\n return apiKey;\n }\n\n if (accessType.includes('registered_user') && isAuthenticated) {\n return apiKey ?? DEFAULT_API_KEY;\n }\n\n // TODO: Implement premium user access\n if (accessType.includes('premium_user') && isAuthenticated) {\n return apiKey ?? DEFAULT_API_KEY;\n }\n\n return undefined;\n};\n\nconst getModelName = (\n provider: AiProviders,\n isUserProvidedKey: boolean,\n userModel?: Model\n): Model => {\n // If the user provides their own API key, allow custom model selection\n if (\n isUserProvidedKey ||\n provider === AiProviders.OLLAMA ||\n provider === AiProviders.LMSTUDIO\n ) {\n if (userModel) {\n return userModel;\n }\n\n // No custom model specified — fall back to the default\n return DEFAULT_MODEL;\n }\n\n // Using backend's default API key — always use the default model,\n // ignore any custom model the user may have passed\n return DEFAULT_MODEL;\n};\n\nconst getLanguageModel = async (\n aiOptions: AIOptions,\n apiKey: string | undefined\n) => {\n const loadModule = async <T>(packageName: string): Promise<T> => {\n try {\n return (await import(packageName)) as T;\n } catch {\n logger(\n `${x} The package \"${colorize(packageName, ANSIColors.GREEN)}\" is required to use this AI provider. Please install it using: ${colorize(`npm install ${packageName}`, ANSIColors.GREY_DARK)}`,\n {\n level: 'error',\n }\n );\n process.exit();\n }\n };\n\n const provider = aiOptions.provider ?? AiProviders.OPENAI;\n const selectedModel = getModelName(\n provider as AiProviders,\n !!aiOptions.apiKey, // true only when the user explicitly provided their own key\n aiOptions.model\n );\n\n const baseURL = aiOptions.baseURL;\n\n switch (provider) {\n case AiProviders.OPENAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAI } =\n await loadModule<typeof import('@ai-sdk/openai')>('@ai-sdk/openai');\n\n return createOpenAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.ANTHROPIC: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAnthropic } =\n await loadModule<typeof import('@ai-sdk/anthropic')>(\n '@ai-sdk/anthropic'\n );\n\n return createAnthropic({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.MISTRAL: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createMistral } =\n await loadModule<typeof import('@ai-sdk/mistral')>('@ai-sdk/mistral');\n\n return createMistral({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.DEEPSEEK: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createDeepSeek } =\n await loadModule<typeof import('@ai-sdk/deepseek')>('@ai-sdk/deepseek');\n\n return createDeepSeek({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.GEMINI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGoogleGenerativeAI } =\n await loadModule<typeof import('@ai-sdk/google')>('@ai-sdk/google');\n\n return createGoogleGenerativeAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel);\n }\n\n case AiProviders.GOOGLEVERTEX: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createVertex } = await loadModule<\n typeof import('@ai-sdk/google-vertex')\n >('@ai-sdk/google-vertex');\n\n return createVertex({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel as string);\n }\n\n case AiProviders.GOOGLEGENERATIVEAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGoogleGenerativeAI } =\n await loadModule<typeof import('@ai-sdk/google')>('@ai-sdk/google');\n\n return createGoogleGenerativeAI({\n apiKey,\n baseURL,\n ...otherOptions,\n })(selectedModel as string);\n }\n\n case AiProviders.OLLAMA: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAI } =\n await loadModule<typeof import('@ai-sdk/openai')>('@ai-sdk/openai');\n\n // Ollama compatible mode:\n const ollama = createOpenAI({\n baseURL: baseURL ?? 'http://localhost:11434/v1',\n apiKey: apiKey ?? 'ollama', // Required but unused by Ollama\n ...otherOptions,\n });\n\n return ollama.chat(selectedModel);\n }\n\n case AiProviders.OPENROUTER: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenRouter } = await loadModule<\n typeof import('@openrouter/ai-sdk-provider')\n >('@openrouter/ai-sdk-provider');\n\n const openrouter = createOpenRouter({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return openrouter(selectedModel as string);\n }\n\n case AiProviders.ALIBABA: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAlibaba } =\n await loadModule<typeof import('@ai-sdk/alibaba')>('@ai-sdk/alibaba');\n\n const alibaba = createAlibaba({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return alibaba(selectedModel as string);\n }\n\n case AiProviders.FIREWORKS: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createFireworks } =\n await loadModule<typeof import('@ai-sdk/fireworks')>(\n '@ai-sdk/fireworks'\n );\n\n const fireworks = createFireworks({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return fireworks(selectedModel as string);\n }\n\n case AiProviders.GROQ: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createGroq } =\n await loadModule<typeof import('@ai-sdk/groq')>('@ai-sdk/groq');\n\n const groq = createGroq({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return groq(selectedModel as string);\n }\n\n case AiProviders.HUGGINGFACE: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createHuggingFace } = await loadModule<\n typeof import('@ai-sdk/huggingface')\n >('@ai-sdk/huggingface');\n\n const huggingface = createHuggingFace({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return huggingface(selectedModel as string);\n }\n\n case AiProviders.BEDROCK: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createAmazonBedrock } = await loadModule<\n typeof import('@ai-sdk/amazon-bedrock')\n >('@ai-sdk/amazon-bedrock');\n\n const bedrock = createAmazonBedrock({\n accessKeyId: apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return bedrock(selectedModel as string);\n }\n\n case AiProviders.TOGETHERAI: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createTogetherAI } =\n await loadModule<typeof import('@ai-sdk/togetherai')>(\n '@ai-sdk/togetherai'\n );\n\n const togetherai = createTogetherAI({\n apiKey,\n baseURL,\n ...otherOptions,\n });\n\n return togetherai(selectedModel as string);\n }\n\n case AiProviders.LMSTUDIO: {\n const {\n provider,\n model,\n temperature,\n applicationContext,\n dataSerialization,\n apiKey: _apiKey,\n baseURL: _baseURL,\n ...otherOptions\n } = aiOptions as any;\n\n const { createOpenAICompatible } = await loadModule<\n typeof import('@ai-sdk/openai-compatible')\n >('@ai-sdk/openai-compatible');\n\n const lmstudio = createOpenAICompatible({\n name: 'lmstudio',\n baseURL: baseURL ?? 'http://localhost:1234/v1',\n ...otherOptions,\n });\n\n return lmstudio(selectedModel as string);\n }\n\n default: {\n throw new Error(`Provider ${provider} not supported`);\n }\n }\n};\n\nexport type AIConfig = Omit<Parameters<typeof generateText>[0], 'prompt'> & {\n reasoningEffort?: ReasoningEffort;\n textVerbosity?: 'low' | 'medium' | 'high';\n dataSerialization?: 'json' | 'toon';\n};\n\nexport type AIConfigOptions = {\n userOptions?: AIOptions;\n projectOptions?: AIOptions;\n defaultOptions?: AIOptions;\n accessType?: AccessType[];\n};\n\n/**\n * Sends a minimal request to verify that the configured AI provider credentials\n * are valid and reachable before starting any bulk operation.\n *\n * @returns true if access is confirmed, false otherwise\n */\nexport const checkAISDKAccess = async (\n aiConfig: AIConfig\n): Promise<{ hasAIAccess: boolean; error?: string }> => {\n try {\n await generateTextFn({\n ...aiConfig,\n messages: [\n {\n role: 'user',\n content: 'ping',\n },\n ],\n maxOutputTokens: 20,\n });\n return { hasAIAccess: true };\n } catch (error) {\n return { hasAIAccess: false, error: (error as Error).message };\n }\n};\n\n/**\n * Get AI model configuration based on the selected provider and options\n * This function handles the configuration for different AI providers\n *\n * @param options Configuration options including provider, API keys, models and temperature\n * @returns Configured AI model ready to use with generateText\n */\nexport const getAIConfig = async (\n options: AIConfigOptions,\n isAuthenticated: boolean = false\n): Promise<AIConfig> => {\n const {\n userOptions,\n projectOptions,\n defaultOptions,\n accessType = ['registered_user'],\n } = options;\n\n const mergeWithoutUndefined = (...sources: (AIOptions | undefined)[]) => {\n const result: Record<string, unknown> = { provider: DEFAULT_PROVIDER };\n for (const source of sources) {\n if (!source) continue;\n for (const [key, value] of Object.entries(source)) {\n if (value === undefined) continue;\n if (key === 'apiKey' && isMaskedKey(value as string)) continue;\n result[key] = value;\n }\n }\n return result;\n };\n\n const aiOptions = mergeWithoutUndefined(\n defaultOptions,\n projectOptions,\n userOptions\n ) as AIOptions;\n\n const apiKey = getAPIKey(accessType, aiOptions, isAuthenticated);\n\n // Check if API key is provided\n if (\n !apiKey &&\n aiOptions.provider !== AiProviders.OLLAMA &&\n aiOptions.provider !== AiProviders.LMSTUDIO\n ) {\n throw new Error(`API key for ${aiOptions.provider} is missing`);\n }\n\n const languageModel = await getLanguageModel(aiOptions, apiKey);\n\n return {\n model: languageModel,\n temperature: aiOptions.temperature,\n dataSerialization: aiOptions.dataSerialization,\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"aiSdk.d.ts","names":[],"sources":["../../src/aiSdk.ts"],"mappings":"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"}
1
+ {"version":3,"file":"aiSdk.d.ts","names":[],"sources":["../../src/aiSdk.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/ai",
3
- "version": "8.10.0",
3
+ "version": "8.11.0-canary.0",
4
4
  "private": false,
5
5
  "description": "SDK that provides AI capabilities for Intlayer applications",
6
6
  "keywords": [
@@ -73,22 +73,23 @@
73
73
  },
74
74
  "dependencies": {
75
75
  "@ai-sdk/anthropic": "3.0.78",
76
- "@ai-sdk/google": "3.0.75",
77
- "@ai-sdk/openai": "3.0.64",
78
- "@intlayer/api": "8.10.0",
79
- "@intlayer/config": "8.10.0",
80
- "@intlayer/core": "8.10.0",
81
- "@intlayer/types": "8.10.0",
82
- "@toon-format/toon": "2.2.0",
83
- "ai": "6.0.185",
76
+ "@ai-sdk/google": "3.0.78",
77
+ "@ai-sdk/mcp": "^1.0.42",
78
+ "@ai-sdk/openai": "3.0.65",
79
+ "@intlayer/api": "8.11.0-canary.0",
80
+ "@intlayer/config": "8.11.0-canary.0",
81
+ "@intlayer/core": "8.11.0-canary.0",
82
+ "@intlayer/types": "8.11.0-canary.0",
83
+ "@toon-format/toon": "2.3.0",
84
+ "ai": "6.0.190",
84
85
  "zod": "4.4.3"
85
86
  },
86
87
  "devDependencies": {
87
- "@ai-sdk/alibaba": "1.0.23",
88
+ "@ai-sdk/alibaba": "1.0.24",
88
89
  "@ai-sdk/amazon-bedrock": "4.0.107",
89
90
  "@ai-sdk/deepseek": "2.0.35",
90
91
  "@ai-sdk/fireworks": "2.0.52",
91
- "@ai-sdk/google": "3.0.75",
92
+ "@ai-sdk/google": "3.0.78",
92
93
  "@ai-sdk/google-vertex": "^4.0.131",
93
94
  "@ai-sdk/groq": "3.0.39",
94
95
  "@ai-sdk/huggingface": "1.0.49",
@@ -103,7 +104,7 @@
103
104
  "rimraf": "6.1.3",
104
105
  "tsdown": "0.22.00",
105
106
  "typescript": "6.0.3",
106
- "vitest": "4.1.6"
107
+ "vitest": "4.1.7"
107
108
  },
108
109
  "peerDependencies": {
109
110
  "@ai-sdk/alibaba": "<=1.0.0",