memeloop 0.0.1

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.
Files changed (137) hide show
  1. package/dist/anthropic.cjs +72 -0
  2. package/dist/anthropic.cjs.map +1 -0
  3. package/dist/anthropic.d.cts +21 -0
  4. package/dist/anthropic.d.ts +21 -0
  5. package/dist/anthropic.js +21 -0
  6. package/dist/anthropic.js.map +1 -0
  7. package/dist/azure.cjs +72 -0
  8. package/dist/azure.cjs.map +1 -0
  9. package/dist/azure.d.cts +21 -0
  10. package/dist/azure.d.ts +21 -0
  11. package/dist/azure.js +21 -0
  12. package/dist/azure.js.map +1 -0
  13. package/dist/chunk-3CN7DFBL.js +4894 -0
  14. package/dist/chunk-3CN7DFBL.js.map +1 -0
  15. package/dist/chunk-4AZ4D7U5.js +32 -0
  16. package/dist/chunk-4AZ4D7U5.js.map +1 -0
  17. package/dist/chunk-6ON4XSOV.js +63 -0
  18. package/dist/chunk-6ON4XSOV.js.map +1 -0
  19. package/dist/chunk-DJQNGIXX.js +4793 -0
  20. package/dist/chunk-DJQNGIXX.js.map +1 -0
  21. package/dist/chunk-FKQP6AOQ.js +32 -0
  22. package/dist/chunk-FKQP6AOQ.js.map +1 -0
  23. package/dist/chunk-OVJ7JJBA.js +35 -0
  24. package/dist/chunk-OVJ7JJBA.js.map +1 -0
  25. package/dist/chunk-P4UZ7IXC.js +42 -0
  26. package/dist/chunk-P4UZ7IXC.js.map +1 -0
  27. package/dist/chunk-YHJ2AEFR.js +4933 -0
  28. package/dist/chunk-YHJ2AEFR.js.map +1 -0
  29. package/dist/chunk-YVK7RYRO.js +4973 -0
  30. package/dist/chunk-YVK7RYRO.js.map +1 -0
  31. package/dist/code-assistant.json +114 -0
  32. package/dist/cohere.cjs +72 -0
  33. package/dist/cohere.cjs.map +1 -0
  34. package/dist/cohere.d.cts +21 -0
  35. package/dist/cohere.d.ts +21 -0
  36. package/dist/cohere.js +21 -0
  37. package/dist/cohere.js.map +1 -0
  38. package/dist/deepseek.cjs +72 -0
  39. package/dist/deepseek.cjs.map +1 -0
  40. package/dist/deepseek.d.cts +21 -0
  41. package/dist/deepseek.d.ts +21 -0
  42. package/dist/deepseek.js +21 -0
  43. package/dist/deepseek.js.map +1 -0
  44. package/dist/dist-65U7OYRG.js +1257 -0
  45. package/dist/dist-65U7OYRG.js.map +1 -0
  46. package/dist/fetchProvider-Cu4WkU5O.d.cts +819 -0
  47. package/dist/fetchProvider-Cu4WkU5O.d.ts +819 -0
  48. package/dist/frontend-ui-ux.json +105 -0
  49. package/dist/general-assistant.json +95 -0
  50. package/dist/git-master.json +51 -0
  51. package/dist/google-vertex.cjs +72 -0
  52. package/dist/google-vertex.cjs.map +1 -0
  53. package/dist/google-vertex.d.cts +21 -0
  54. package/dist/google-vertex.d.ts +21 -0
  55. package/dist/google-vertex.js +21 -0
  56. package/dist/google-vertex.js.map +1 -0
  57. package/dist/google.cjs +72 -0
  58. package/dist/google.cjs.map +1 -0
  59. package/dist/google.d.cts +21 -0
  60. package/dist/google.d.ts +21 -0
  61. package/dist/google.js +21 -0
  62. package/dist/google.js.map +1 -0
  63. package/dist/groq.cjs +72 -0
  64. package/dist/groq.cjs.map +1 -0
  65. package/dist/groq.d.cts +21 -0
  66. package/dist/groq.d.ts +21 -0
  67. package/dist/groq.js +21 -0
  68. package/dist/groq.js.map +1 -0
  69. package/dist/index.cjs +8916 -0
  70. package/dist/index.cjs.map +1 -0
  71. package/dist/index.d.cts +1816 -0
  72. package/dist/index.d.mts +3203 -0
  73. package/dist/index.d.ts +1816 -0
  74. package/dist/index.js +4040 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/index.mjs +7064 -0
  77. package/dist/index.mjs.map +1 -0
  78. package/dist/llm-providers.cjs +311 -0
  79. package/dist/llm-providers.cjs.map +1 -0
  80. package/dist/llm-providers.d.cts +111 -0
  81. package/dist/llm-providers.d.ts +111 -0
  82. package/dist/llm-providers.js +232 -0
  83. package/dist/llm-providers.js.map +1 -0
  84. package/dist/loop-api.cjs +4924 -0
  85. package/dist/loop-api.cjs.map +1 -0
  86. package/dist/loop-api.d.cts +11 -0
  87. package/dist/loop-api.d.ts +11 -0
  88. package/dist/loop-api.js +189 -0
  89. package/dist/loop-api.js.map +1 -0
  90. package/dist/mistral.cjs +72 -0
  91. package/dist/mistral.cjs.map +1 -0
  92. package/dist/mistral.d.cts +21 -0
  93. package/dist/mistral.d.ts +21 -0
  94. package/dist/mistral.js +21 -0
  95. package/dist/mistral.js.map +1 -0
  96. package/dist/multipart-parser-EJCXIUHC.js +372 -0
  97. package/dist/multipart-parser-EJCXIUHC.js.map +1 -0
  98. package/dist/openai.cjs +72 -0
  99. package/dist/openai.cjs.map +1 -0
  100. package/dist/openai.d.cts +21 -0
  101. package/dist/openai.d.ts +21 -0
  102. package/dist/openai.js +21 -0
  103. package/dist/openai.js.map +1 -0
  104. package/dist/perplexity.cjs +72 -0
  105. package/dist/perplexity.cjs.map +1 -0
  106. package/dist/perplexity.d.cts +21 -0
  107. package/dist/perplexity.d.ts +21 -0
  108. package/dist/perplexity.js +21 -0
  109. package/dist/perplexity.js.map +1 -0
  110. package/dist/playwright.json +52 -0
  111. package/dist/promptConcat-BJdazTg5.d.cts +1832 -0
  112. package/dist/promptConcat-BJdazTg5.d.ts +1832 -0
  113. package/dist/promptConcat-CAkpni_8.d.cts +1834 -0
  114. package/dist/promptConcat-CAkpni_8.d.ts +1834 -0
  115. package/dist/promptConcat-CfH5-GAE.d.cts +1036 -0
  116. package/dist/promptConcat-ChcAZOOL.d.ts +1036 -0
  117. package/dist/promptConcat-G5TnJVRy.d.cts +1800 -0
  118. package/dist/promptConcat-G5TnJVRy.d.ts +1800 -0
  119. package/dist/promptConcat-L72eowzp.d.ts +1090 -0
  120. package/dist/promptConcat-eLHdN7K8.d.cts +1090 -0
  121. package/dist/src-VTSXKG72.js +1409 -0
  122. package/dist/src-VTSXKG72.js.map +1 -0
  123. package/dist/togetherai.cjs +72 -0
  124. package/dist/togetherai.cjs.map +1 -0
  125. package/dist/togetherai.d.cts +21 -0
  126. package/dist/togetherai.d.ts +21 -0
  127. package/dist/togetherai.js +21 -0
  128. package/dist/togetherai.js.map +1 -0
  129. package/dist/types-B0Jm2l38.d.cts +767 -0
  130. package/dist/types-B0Jm2l38.d.ts +767 -0
  131. package/dist/xai.cjs +72 -0
  132. package/dist/xai.cjs.map +1 -0
  133. package/dist/xai.d.cts +21 -0
  134. package/dist/xai.d.ts +21 -0
  135. package/dist/xai.js +21 -0
  136. package/dist/xai.js.map +1 -0
  137. package/package.json +87 -0
@@ -0,0 +1,232 @@
1
+ import {
2
+ createFetchLLMProvider
3
+ } from "./chunk-OVJ7JJBA.js";
4
+
5
+ // src/llm-providers.ts
6
+ var defaultModels = {
7
+ openai: "gpt-4o-mini",
8
+ anthropic: "claude-3-5-sonnet-20241022",
9
+ google: "gemini-1.5-flash",
10
+ deepseek: "deepseek-chat",
11
+ groq: "llama-3.1-8b-instant",
12
+ mistral: "mistral-small-latest",
13
+ cohere: "command-r-plus",
14
+ xai: "grok-beta",
15
+ togetherai: "meta-llama/Llama-3.1-8B-Instruct-Turbo",
16
+ perplexity: "sonar",
17
+ azure: "",
18
+ "google-vertex": "",
19
+ ollama: "llama3.1"
20
+ };
21
+ async function loadProviderFactory(provider) {
22
+ switch (provider) {
23
+ case "openai": {
24
+ const { createOpenAI } = await import("@ai-sdk/openai");
25
+ return (apiKey, baseUrl, options) => {
26
+ const sdk = createOpenAI({ apiKey, baseURL: baseUrl, ...options });
27
+ return (modelId) => sdk(modelId);
28
+ };
29
+ }
30
+ case "anthropic": {
31
+ const { createAnthropic } = await import("@ai-sdk/anthropic");
32
+ return (apiKey, baseUrl, options) => {
33
+ const sdk = createAnthropic({ apiKey, baseURL: baseUrl, ...options });
34
+ return (modelId) => sdk(modelId);
35
+ };
36
+ }
37
+ case "google": {
38
+ const { createGoogleGenerativeAI } = await import("@ai-sdk/google");
39
+ return (apiKey, baseUrl, options) => {
40
+ const sdk = createGoogleGenerativeAI({ apiKey, baseURL: baseUrl, ...options });
41
+ return (modelId) => sdk(modelId);
42
+ };
43
+ }
44
+ case "deepseek": {
45
+ const { createDeepSeek } = await import("@ai-sdk/deepseek");
46
+ return (apiKey, baseUrl, options) => {
47
+ const sdk = createDeepSeek({ apiKey, baseURL: baseUrl, ...options });
48
+ return (modelId) => sdk(modelId);
49
+ };
50
+ }
51
+ case "groq": {
52
+ const { createGroq } = await import("@ai-sdk/groq");
53
+ return (apiKey, baseUrl, options) => {
54
+ const sdk = createGroq({ apiKey, baseURL: baseUrl, ...options });
55
+ return (modelId) => sdk(modelId);
56
+ };
57
+ }
58
+ case "mistral": {
59
+ const { createMistral } = await import("@ai-sdk/mistral");
60
+ return (apiKey, baseUrl, options) => {
61
+ const sdk = createMistral({ apiKey, baseURL: baseUrl, ...options });
62
+ return (modelId) => sdk(modelId);
63
+ };
64
+ }
65
+ case "cohere": {
66
+ const { createCohere } = await import("@ai-sdk/cohere");
67
+ return (apiKey, baseUrl, options) => {
68
+ const sdk = createCohere({ apiKey, baseURL: baseUrl, ...options });
69
+ return (modelId) => sdk(modelId);
70
+ };
71
+ }
72
+ case "xai": {
73
+ const { createXai } = await import("@ai-sdk/xai");
74
+ return (apiKey, baseUrl, options) => {
75
+ const sdk = createXai({ apiKey, baseURL: baseUrl, ...options });
76
+ return (modelId) => sdk(modelId);
77
+ };
78
+ }
79
+ case "togetherai": {
80
+ const { createTogetherAI } = await import("@ai-sdk/togetherai");
81
+ return (apiKey, baseUrl, options) => {
82
+ const sdk = createTogetherAI({ apiKey, baseURL: baseUrl, ...options });
83
+ return (modelId) => sdk(modelId);
84
+ };
85
+ }
86
+ case "perplexity": {
87
+ const { createPerplexity } = await import("@ai-sdk/perplexity");
88
+ return (apiKey, baseUrl, options) => {
89
+ const sdk = createPerplexity({ apiKey, baseURL: baseUrl, ...options });
90
+ return (modelId) => sdk(modelId);
91
+ };
92
+ }
93
+ case "azure": {
94
+ const { createAzure } = await import("@ai-sdk/azure");
95
+ return (apiKey, _baseUrl, options) => {
96
+ const sdk = createAzure({ apiKey, ...options });
97
+ return (modelId) => sdk(modelId);
98
+ };
99
+ }
100
+ case "google-vertex": {
101
+ const { createVertex } = await import("@ai-sdk/google-vertex");
102
+ return (_apiKey, _baseUrl, options) => {
103
+ const sdk = createVertex({ ...options });
104
+ return (modelId) => sdk(modelId);
105
+ };
106
+ }
107
+ case "ollama": {
108
+ const { createOllama } = await import("ollama-ai-provider-v2");
109
+ return (_apiKey, baseUrl, options) => {
110
+ const sdk = createOllama({ baseURL: baseUrl, ...options });
111
+ return (modelId) => sdk(modelId);
112
+ };
113
+ }
114
+ default: {
115
+ const exhaustive = provider;
116
+ throw new Error(`Unsupported provider: ${String(exhaustive)}`);
117
+ }
118
+ }
119
+ }
120
+ async function createLLMProvider(config) {
121
+ const name = config.name ?? config.provider;
122
+ function resolveModel(modelId) {
123
+ return modelId ?? config.model ?? defaultModels[config.provider] ?? "";
124
+ }
125
+ const createProviderModel = await loadProviderFactory(config.provider);
126
+ const modelFactory = createProviderModel(config.apiKey, config.baseUrl, config.options);
127
+ return createFetchLLMProvider({
128
+ name,
129
+ createModel: (modelId) => modelFactory(resolveModel(modelId))
130
+ });
131
+ }
132
+ async function createOpenAICompatibleProvider(config) {
133
+ const name = config.name ?? config.provider;
134
+ const { createOpenAICompatible } = await import("@ai-sdk/openai-compatible");
135
+ function resolveModel(modelId) {
136
+ return modelId ?? config.model ?? "gpt-4o-mini";
137
+ }
138
+ const sdk = createOpenAICompatible({
139
+ name: config.provider,
140
+ baseURL: config.baseUrl ?? "https://api.openai.com/v1",
141
+ apiKey: config.apiKey,
142
+ ...config.options
143
+ });
144
+ return createFetchLLMProvider({
145
+ name,
146
+ createModel: (modelId) => sdk(resolveModel(modelId))
147
+ });
148
+ }
149
+ function createOpenaiProvider(config = {}) {
150
+ return createLLMProvider({ provider: "openai", ...config });
151
+ }
152
+ function createAnthropicProvider(config = {}) {
153
+ return createLLMProvider({ provider: "anthropic", ...config });
154
+ }
155
+ function createGoogleProvider(config = {}) {
156
+ return createLLMProvider({ provider: "google", ...config });
157
+ }
158
+ function createDeepseekProvider(config = {}) {
159
+ return createLLMProvider({ provider: "deepseek", ...config });
160
+ }
161
+ function createGroqProvider(config = {}) {
162
+ return createLLMProvider({ provider: "groq", ...config });
163
+ }
164
+ function createMistralProvider(config = {}) {
165
+ return createLLMProvider({ provider: "mistral", ...config });
166
+ }
167
+ function createCohereProvider(config = {}) {
168
+ return createLLMProvider({ provider: "cohere", ...config });
169
+ }
170
+ function createXaiProvider(config = {}) {
171
+ return createLLMProvider({ provider: "xai", ...config });
172
+ }
173
+ function createTogetheraiProvider(config = {}) {
174
+ return createLLMProvider({ provider: "togetherai", ...config });
175
+ }
176
+ function createPerplexityProvider(config = {}) {
177
+ return createLLMProvider({ provider: "perplexity", ...config });
178
+ }
179
+ function createAzureProvider(config = {}) {
180
+ return createLLMProvider({ provider: "azure", ...config });
181
+ }
182
+ function createGoogleVertexProvider(config = {}) {
183
+ return createLLMProvider({ provider: "google-vertex", ...config });
184
+ }
185
+ function createOllamaProvider(config = {}) {
186
+ return createLLMProvider({ provider: "ollama", ...config });
187
+ }
188
+ function resolveProviderModelId(entry) {
189
+ const firstModelKey = entry.models ? Object.keys(entry.models)[0] : void 0;
190
+ if (firstModelKey) {
191
+ return `${entry.name}/${firstModelKey}`;
192
+ }
193
+ return entry.name;
194
+ }
195
+ function createProviderFromEntry(entry) {
196
+ const providerId = entry.name;
197
+ const firstModelKey = entry.models ? Object.keys(entry.models)[0] : void 0;
198
+ const firstModelName = firstModelKey ? entry.models?.[firstModelKey]?.name : void 0;
199
+ const configWithoutProvider = {
200
+ name: entry.name,
201
+ apiKey: entry.apiKey,
202
+ baseUrl: entry.baseUrl,
203
+ model: firstModelName,
204
+ options: entry.options
205
+ };
206
+ if (!defaultModels[providerId]) {
207
+ return createOpenAICompatibleProvider({ provider: entry.name, ...configWithoutProvider });
208
+ }
209
+ return createLLMProvider({
210
+ provider: providerId,
211
+ ...configWithoutProvider
212
+ });
213
+ }
214
+ export {
215
+ createAnthropicProvider,
216
+ createAzureProvider,
217
+ createCohereProvider,
218
+ createDeepseekProvider,
219
+ createGoogleProvider,
220
+ createGoogleVertexProvider,
221
+ createGroqProvider,
222
+ createLLMProvider,
223
+ createMistralProvider,
224
+ createOllamaProvider,
225
+ createOpenaiProvider,
226
+ createPerplexityProvider,
227
+ createProviderFromEntry,
228
+ createTogetheraiProvider,
229
+ createXaiProvider,
230
+ resolveProviderModelId
231
+ };
232
+ //# sourceMappingURL=llm-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/llm-providers.ts"],"sourcesContent":["/**\n * Pre-built, config-driven LLM providers.\n *\n * Exposes every major @ai-sdk/* provider through a single entry point so hosts\n * can switch providers by changing a string in user config — no need to install\n * AI SDK packages individually.\n *\n * ```ts\n * import { createLLMProvider } from 'memeloop/llm-providers';\n *\n * const provider = createLLMProvider({\n * provider: 'openai',\n * baseUrl: 'https://api.openai.com/v1',\n * apiKey: process.env.OPENAI_API_KEY,\n * model: 'gpt-4o',\n * });\n * ```\n *\n * For custom providers, or to keep bundle size minimal, use the generic\n * `createFetchLLMProvider` exported from `memeloop` and supply your own\n * `createModel` factory.\n *\n * `createLLMProvider` is async because it dynamically imports the selected\n * AI SDK provider on first use. Host bundlers can then decide whether to\n * bundle, split, or externalize those provider dependencies for their runtime.\n */\n\nimport type { LanguageModelV1 } from 'ai';\n\nimport { createFetchLLMProvider } from './llm/fetchProvider.js';\nimport type { ILLMProvider } from './types.js';\n\n// ─── Provider ids ──────────────────────────────────────────────────────\n\nexport type LLMProviderId =\n | 'openai'\n | 'anthropic'\n | 'google'\n | 'deepseek'\n | 'groq'\n | 'mistral'\n | 'cohere'\n | 'xai'\n | 'togetherai'\n | 'perplexity'\n | 'azure'\n | 'google-vertex'\n | 'ollama';\n\n// ─── Config ────────────────────────────────────────────────────────────\n\nexport interface LLMProviderConfig {\n /** Provider id. */\n provider: LLMProviderId;\n /** Display name (defaults to provider id). */\n name?: string;\n /** API key or credential. */\n apiKey?: string;\n /** Override the provider's default API base URL. */\n baseUrl?: string;\n /** Default model id. When omitted a provider-specific default is used. */\n model?: string;\n /** Provider-specific options passed through to the AI SDK factory. */\n options?: Record<string, unknown>;\n}\n\n/** A provider entry from any host config (loose shape used by CLI/Desktop). */\nexport interface ConfiguredProviderEntry {\n /** Provider id matching LLMProviderId. */\n name: string;\n /** API base URL. */\n baseUrl?: string;\n /** API key. */\n apiKey?: string;\n /** Provider-specific options. */\n options?: Record<string, unknown>;\n /** Available models; the first key is used as the default model. */\n models?: Record<string, { name: string }>;\n}\n\n// ─── Defaults ──────────────────────────────────────────────────────────\n\nconst defaultModels: Record<LLMProviderId, string> = {\n openai: 'gpt-4o-mini',\n anthropic: 'claude-3-5-sonnet-20241022',\n google: 'gemini-1.5-flash',\n deepseek: 'deepseek-chat',\n groq: 'llama-3.1-8b-instant',\n mistral: 'mistral-small-latest',\n cohere: 'command-r-plus',\n xai: 'grok-beta',\n togetherai: 'meta-llama/Llama-3.1-8B-Instruct-Turbo',\n perplexity: 'sonar',\n azure: '',\n 'google-vertex': '',\n ollama: 'llama3.1',\n};\n\n// ─── Unified factory ───────────────────────────────────────────────────\n\n/**\n * Dynamic loader for AI SDK provider factories.\n *\n * Each provider is imported on demand so that hosts only load the SDK packages\n * they actually use. This avoids eagerly loading Node-only providers in hosts\n * that bundle or externalize this entry for multiple runtimes.\n */\nasync function loadProviderFactory(provider: LLMProviderId): Promise<\n (apiKey: string | undefined, baseUrl: string | undefined, options: Record<string, unknown> | undefined) => (modelId: string) => LanguageModelV1\n> {\n switch (provider) {\n case 'openai': {\n const { createOpenAI } = await import('@ai-sdk/openai');\n return (apiKey, baseUrl, options) => {\n const sdk = createOpenAI({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'anthropic': {\n const { createAnthropic } = await import('@ai-sdk/anthropic');\n return (apiKey, baseUrl, options) => {\n const sdk = createAnthropic({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'google': {\n const { createGoogleGenerativeAI } = await import('@ai-sdk/google');\n return (apiKey, baseUrl, options) => {\n const sdk = createGoogleGenerativeAI({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'deepseek': {\n const { createDeepSeek } = await import('@ai-sdk/deepseek');\n return (apiKey, baseUrl, options) => {\n const sdk = createDeepSeek({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'groq': {\n const { createGroq } = await import('@ai-sdk/groq');\n return (apiKey, baseUrl, options) => {\n const sdk = createGroq({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'mistral': {\n const { createMistral } = await import('@ai-sdk/mistral');\n return (apiKey, baseUrl, options) => {\n const sdk = createMistral({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'cohere': {\n const { createCohere } = await import('@ai-sdk/cohere');\n return (apiKey, baseUrl, options) => {\n const sdk = createCohere({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'xai': {\n const { createXai } = await import('@ai-sdk/xai');\n return (apiKey, baseUrl, options) => {\n const sdk = createXai({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'togetherai': {\n const { createTogetherAI } = await import('@ai-sdk/togetherai');\n return (apiKey, baseUrl, options) => {\n const sdk = createTogetherAI({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'perplexity': {\n const { createPerplexity } = await import('@ai-sdk/perplexity');\n return (apiKey, baseUrl, options) => {\n const sdk = createPerplexity({ apiKey, baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'azure': {\n const { createAzure } = await import('@ai-sdk/azure');\n return (apiKey, _baseUrl, options) => {\n const sdk = createAzure({ apiKey, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'google-vertex': {\n const { createVertex } = await import('@ai-sdk/google-vertex');\n return (_apiKey, _baseUrl, options) => {\n const sdk = createVertex({ ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n case 'ollama': {\n const { createOllama } = await import('ollama-ai-provider-v2');\n return (_apiKey, baseUrl, options) => {\n const sdk = createOllama({ baseURL: baseUrl, ...options });\n return (modelId) => sdk(modelId) as unknown as LanguageModelV1;\n };\n }\n default: {\n const exhaustive: never = provider;\n throw new Error(`Unsupported provider: ${String(exhaustive)}`);\n }\n }\n}\n\n/**\n * Create an `ILLMProvider` from a config-driven provider id.\n *\n * Switches implementation based on `config.provider`.\n * The selected provider's AI SDK package is loaded on demand, so hosts only\n * pay the dependency cost for providers they actually use.\n */\nexport async function createLLMProvider(config: LLMProviderConfig): Promise<ILLMProvider> {\n const name = config.name ?? config.provider;\n\n function resolveModel(modelId?: string): string {\n return modelId ?? config.model ?? defaultModels[config.provider] ?? '';\n }\n\n const createProviderModel = await loadProviderFactory(config.provider);\n const modelFactory = createProviderModel(config.apiKey, config.baseUrl, config.options);\n\n return createFetchLLMProvider({\n name,\n createModel: (modelId?: string) => modelFactory(resolveModel(modelId)),\n });\n}\n\n/** Fallback OpenAI-compatible provider for unknown provider ids. */\nasync function createOpenAICompatibleProvider(config: Omit<LLMProviderConfig, 'provider'> & { provider: string }): Promise<ILLMProvider> {\n const name = config.name ?? config.provider;\n const { createOpenAICompatible } = await import('@ai-sdk/openai-compatible');\n\n function resolveModel(modelId?: string): string {\n return modelId ?? config.model ?? 'gpt-4o-mini';\n }\n\n const sdk = createOpenAICompatible({\n name: config.provider,\n baseURL: config.baseUrl ?? 'https://api.openai.com/v1',\n apiKey: config.apiKey,\n ...config.options,\n });\n\n return createFetchLLMProvider({\n name,\n createModel: (modelId?: string) => sdk(resolveModel(modelId)) as unknown as LanguageModelV1,\n });\n}\n\n// ─── Convenience per-provider factories ────────────────────────────────\n\ntype ProviderConfigWithoutId = Omit<LLMProviderConfig, 'provider'>;\n\n/** Convenience factory for OpenAI. */\nexport function createOpenaiProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'openai', ...config });\n}\n\n/** Convenience factory for Anthropic. */\nexport function createAnthropicProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'anthropic', ...config });\n}\n\n/** Convenience factory for Google Generative AI. */\nexport function createGoogleProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'google', ...config });\n}\n\n/** Convenience factory for DeepSeek. */\nexport function createDeepseekProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'deepseek', ...config });\n}\n\n/** Convenience factory for Groq. */\nexport function createGroqProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'groq', ...config });\n}\n\n/** Convenience factory for Mistral. */\nexport function createMistralProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'mistral', ...config });\n}\n\n/** Convenience factory for Cohere. */\nexport function createCohereProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'cohere', ...config });\n}\n\n/** Convenience factory for xAI. */\nexport function createXaiProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'xai', ...config });\n}\n\n/** Convenience factory for Together AI. */\nexport function createTogetheraiProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'togetherai', ...config });\n}\n\n/** Convenience factory for Perplexity. */\nexport function createPerplexityProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'perplexity', ...config });\n}\n\n/** Convenience factory for Azure OpenAI. */\nexport function createAzureProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'azure', ...config });\n}\n\n/** Convenience factory for Google Vertex. */\nexport function createGoogleVertexProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'google-vertex', ...config });\n}\n\n/** Convenience factory for Ollama. */\nexport function createOllamaProvider(config: ProviderConfigWithoutId = {}): Promise<ILLMProvider> {\n return createLLMProvider({ provider: 'ollama', ...config });\n}\n\n// ─── Host config mapping ───────────────────────────────────────────────\n\n/**\n * Resolve the default model name from a host config entry.\n * Uses the first key in `entry.models` if present, otherwise falls back\n * to the provider-specific default.\n */\nexport function resolveProviderModelId(entry: ConfiguredProviderEntry): string {\n const firstModelKey = entry.models ? Object.keys(entry.models)[0] : undefined;\n if (firstModelKey) {\n return `${entry.name}/${firstModelKey}`;\n }\n return entry.name;\n}\n\n/**\n * Convert a loose host config entry into an `ILLMProvider` via the core registry.\n * Provider id is taken from `entry.name`. Model id is inferred from `entry.models`\n * or the provider-specific default.\n *\n * Unknown provider names fall back to OpenAI-compatible mode, preserving CLI/Desktop\n * behavior where arbitrary OpenAI-compatible endpoints can be configured with any name.\n */\nexport function createProviderFromEntry(entry: ConfiguredProviderEntry): Promise<ILLMProvider> {\n const providerId = entry.name as LLMProviderId;\n const firstModelKey = entry.models ? Object.keys(entry.models)[0] : undefined;\n const firstModelName = firstModelKey ? entry.models?.[firstModelKey]?.name : undefined;\n const configWithoutProvider = {\n name: entry.name,\n apiKey: entry.apiKey,\n baseUrl: entry.baseUrl,\n model: firstModelName,\n options: entry.options,\n };\n\n if (!defaultModels[providerId]) {\n return createOpenAICompatibleProvider({ provider: entry.name, ...configWithoutProvider });\n }\n\n return createLLMProvider({\n provider: providerId,\n ...configWithoutProvider,\n });\n}\n"],"mappings":";;;;;AAkFA,IAAM,gBAA+C;AAAA,EACnD,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,QAAQ;AACV;AAWA,eAAe,oBAAoB,UAEjC;AACA,UAAQ,UAAU;AAAA,IAChB,KAAK,UAAU;AACb,YAAM,EAAE,aAAa,IAAI,MAAM,OAAO,gBAAgB;AACtD,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,aAAa,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AACjE,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,YAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,mBAAmB;AAC5D,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,gBAAgB,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AACpE,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM,EAAE,yBAAyB,IAAI,MAAM,OAAO,gBAAgB;AAClE,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,yBAAyB,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AAC7E,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,YAAM,EAAE,eAAe,IAAI,MAAM,OAAO,kBAAkB;AAC1D,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,eAAe,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AACnE,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,YAAM,EAAE,WAAW,IAAI,MAAM,OAAO,cAAc;AAClD,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,WAAW,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AAC/D,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,YAAM,EAAE,cAAc,IAAI,MAAM,OAAO,iBAAiB;AACxD,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,cAAc,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AAClE,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM,EAAE,aAAa,IAAI,MAAM,OAAO,gBAAgB;AACtD,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,aAAa,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AACjE,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,OAAO;AACV,YAAM,EAAE,UAAU,IAAI,MAAM,OAAO,aAAa;AAChD,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,UAAU,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AAC9D,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,cAAc;AACjB,YAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,oBAAoB;AAC9D,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,iBAAiB,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AACrE,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,cAAc;AACjB,YAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,oBAAoB;AAC9D,aAAO,CAAC,QAAQ,SAAS,YAAY;AACnC,cAAM,MAAM,iBAAiB,EAAE,QAAQ,SAAS,SAAS,GAAG,QAAQ,CAAC;AACrE,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,SAAS;AACZ,YAAM,EAAE,YAAY,IAAI,MAAM,OAAO,eAAe;AACpD,aAAO,CAAC,QAAQ,UAAU,YAAY;AACpC,cAAM,MAAM,YAAY,EAAE,QAAQ,GAAG,QAAQ,CAAC;AAC9C,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,YAAM,EAAE,aAAa,IAAI,MAAM,OAAO,uBAAuB;AAC7D,aAAO,CAAC,SAAS,UAAU,YAAY;AACrC,cAAM,MAAM,aAAa,EAAE,GAAG,QAAQ,CAAC;AACvC,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM,EAAE,aAAa,IAAI,MAAM,OAAO,uBAAuB;AAC7D,aAAO,CAAC,SAAS,SAAS,YAAY;AACpC,cAAM,MAAM,aAAa,EAAE,SAAS,SAAS,GAAG,QAAQ,CAAC;AACzD,eAAO,CAAC,YAAY,IAAI,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,SAAS;AACP,YAAM,aAAoB;AAC1B,YAAM,IAAI,MAAM,yBAAyB,OAAO,UAAU,CAAC,EAAE;AAAA,IAC/D;AAAA,EACF;AACF;AASA,eAAsB,kBAAkB,QAAkD;AACxF,QAAM,OAAO,OAAO,QAAQ,OAAO;AAEnC,WAAS,aAAa,SAA0B;AAC9C,WAAO,WAAW,OAAO,SAAS,cAAc,OAAO,QAAQ,KAAK;AAAA,EACtE;AAEA,QAAM,sBAAsB,MAAM,oBAAoB,OAAO,QAAQ;AACrE,QAAM,eAAe,oBAAoB,OAAO,QAAQ,OAAO,SAAS,OAAO,OAAO;AAEtF,SAAO,uBAAuB;AAAA,IAC5B;AAAA,IACA,aAAa,CAAC,YAAqB,aAAa,aAAa,OAAO,CAAC;AAAA,EACvE,CAAC;AACH;AAGA,eAAe,+BAA+B,QAA2F;AACvI,QAAM,OAAO,OAAO,QAAQ,OAAO;AACnC,QAAM,EAAE,uBAAuB,IAAI,MAAM,OAAO,2BAA2B;AAE3E,WAAS,aAAa,SAA0B;AAC9C,WAAO,WAAW,OAAO,SAAS;AAAA,EACpC;AAEA,QAAM,MAAM,uBAAuB;AAAA,IACjC,MAAM,OAAO;AAAA,IACb,SAAS,OAAO,WAAW;AAAA,IAC3B,QAAQ,OAAO;AAAA,IACf,GAAG,OAAO;AAAA,EACZ,CAAC;AAED,SAAO,uBAAuB;AAAA,IAC5B;AAAA,IACA,aAAa,CAAC,YAAqB,IAAI,aAAa,OAAO,CAAC;AAAA,EAC9D,CAAC;AACH;AAOO,SAAS,qBAAqB,SAAkC,CAAC,GAA0B;AAChG,SAAO,kBAAkB,EAAE,UAAU,UAAU,GAAG,OAAO,CAAC;AAC5D;AAGO,SAAS,wBAAwB,SAAkC,CAAC,GAA0B;AACnG,SAAO,kBAAkB,EAAE,UAAU,aAAa,GAAG,OAAO,CAAC;AAC/D;AAGO,SAAS,qBAAqB,SAAkC,CAAC,GAA0B;AAChG,SAAO,kBAAkB,EAAE,UAAU,UAAU,GAAG,OAAO,CAAC;AAC5D;AAGO,SAAS,uBAAuB,SAAkC,CAAC,GAA0B;AAClG,SAAO,kBAAkB,EAAE,UAAU,YAAY,GAAG,OAAO,CAAC;AAC9D;AAGO,SAAS,mBAAmB,SAAkC,CAAC,GAA0B;AAC9F,SAAO,kBAAkB,EAAE,UAAU,QAAQ,GAAG,OAAO,CAAC;AAC1D;AAGO,SAAS,sBAAsB,SAAkC,CAAC,GAA0B;AACjG,SAAO,kBAAkB,EAAE,UAAU,WAAW,GAAG,OAAO,CAAC;AAC7D;AAGO,SAAS,qBAAqB,SAAkC,CAAC,GAA0B;AAChG,SAAO,kBAAkB,EAAE,UAAU,UAAU,GAAG,OAAO,CAAC;AAC5D;AAGO,SAAS,kBAAkB,SAAkC,CAAC,GAA0B;AAC7F,SAAO,kBAAkB,EAAE,UAAU,OAAO,GAAG,OAAO,CAAC;AACzD;AAGO,SAAS,yBAAyB,SAAkC,CAAC,GAA0B;AACpG,SAAO,kBAAkB,EAAE,UAAU,cAAc,GAAG,OAAO,CAAC;AAChE;AAGO,SAAS,yBAAyB,SAAkC,CAAC,GAA0B;AACpG,SAAO,kBAAkB,EAAE,UAAU,cAAc,GAAG,OAAO,CAAC;AAChE;AAGO,SAAS,oBAAoB,SAAkC,CAAC,GAA0B;AAC/F,SAAO,kBAAkB,EAAE,UAAU,SAAS,GAAG,OAAO,CAAC;AAC3D;AAGO,SAAS,2BAA2B,SAAkC,CAAC,GAA0B;AACtG,SAAO,kBAAkB,EAAE,UAAU,iBAAiB,GAAG,OAAO,CAAC;AACnE;AAGO,SAAS,qBAAqB,SAAkC,CAAC,GAA0B;AAChG,SAAO,kBAAkB,EAAE,UAAU,UAAU,GAAG,OAAO,CAAC;AAC5D;AASO,SAAS,uBAAuB,OAAwC;AAC7E,QAAM,gBAAgB,MAAM,SAAS,OAAO,KAAK,MAAM,MAAM,EAAE,CAAC,IAAI;AACpE,MAAI,eAAe;AACjB,WAAO,GAAG,MAAM,IAAI,IAAI,aAAa;AAAA,EACvC;AACA,SAAO,MAAM;AACf;AAUO,SAAS,wBAAwB,OAAuD;AAC7F,QAAM,aAAa,MAAM;AACzB,QAAM,gBAAgB,MAAM,SAAS,OAAO,KAAK,MAAM,MAAM,EAAE,CAAC,IAAI;AACpE,QAAM,iBAAiB,gBAAgB,MAAM,SAAS,aAAa,GAAG,OAAO;AAC7E,QAAM,wBAAwB;AAAA,IAC5B,MAAM,MAAM;AAAA,IACZ,QAAQ,MAAM;AAAA,IACd,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,IACP,SAAS,MAAM;AAAA,EACjB;AAEA,MAAI,CAAC,cAAc,UAAU,GAAG;AAC9B,WAAO,+BAA+B,EAAE,UAAU,MAAM,MAAM,GAAG,sBAAsB,CAAC;AAAA,EAC1F;AAEA,SAAO,kBAAkB;AAAA,IACvB,UAAU;AAAA,IACV,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}