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,311 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/llm-providers.ts
31
+ var llm_providers_exports = {};
32
+ __export(llm_providers_exports, {
33
+ createAnthropicProvider: () => createAnthropicProvider,
34
+ createAzureProvider: () => createAzureProvider,
35
+ createCohereProvider: () => createCohereProvider,
36
+ createDeepseekProvider: () => createDeepseekProvider,
37
+ createGoogleProvider: () => createGoogleProvider,
38
+ createGoogleVertexProvider: () => createGoogleVertexProvider,
39
+ createGroqProvider: () => createGroqProvider,
40
+ createLLMProvider: () => createLLMProvider,
41
+ createMistralProvider: () => createMistralProvider,
42
+ createOllamaProvider: () => createOllamaProvider,
43
+ createOpenaiProvider: () => createOpenaiProvider,
44
+ createPerplexityProvider: () => createPerplexityProvider,
45
+ createProviderFromEntry: () => createProviderFromEntry,
46
+ createTogetheraiProvider: () => createTogetheraiProvider,
47
+ createXaiProvider: () => createXaiProvider,
48
+ resolveProviderModelId: () => resolveProviderModelId
49
+ });
50
+ module.exports = __toCommonJS(llm_providers_exports);
51
+
52
+ // src/llm/fetchProvider.ts
53
+ var import_ai = require("ai");
54
+ function createFetchLLMProvider(config) {
55
+ return {
56
+ name: config.name,
57
+ // Store the factory so hosts can introspect or extend
58
+ model: config.createModel,
59
+ async chat(request) {
60
+ const body = typeof request === "object" && request !== null ? request : {};
61
+ const model = config.createModel(body.model);
62
+ const messages = (body.messages ?? []).map((message) => ({
63
+ role: message.role,
64
+ content: message.content
65
+ }));
66
+ const system = body.system;
67
+ const temperature = body.temperature;
68
+ const abortSignal = body.abortSignal;
69
+ if (body.stream !== false) {
70
+ const result2 = (0, import_ai.streamText)({ model, system, messages, temperature, abortSignal });
71
+ return (async function* () {
72
+ for await (const chunk of result2.textStream) {
73
+ yield chunk;
74
+ }
75
+ })();
76
+ }
77
+ const result = await (0, import_ai.generateText)({ model, system, messages, temperature, abortSignal });
78
+ return result.text;
79
+ }
80
+ };
81
+ }
82
+
83
+ // src/llm-providers.ts
84
+ var defaultModels = {
85
+ openai: "gpt-4o-mini",
86
+ anthropic: "claude-3-5-sonnet-20241022",
87
+ google: "gemini-1.5-flash",
88
+ deepseek: "deepseek-chat",
89
+ groq: "llama-3.1-8b-instant",
90
+ mistral: "mistral-small-latest",
91
+ cohere: "command-r-plus",
92
+ xai: "grok-beta",
93
+ togetherai: "meta-llama/Llama-3.1-8B-Instruct-Turbo",
94
+ perplexity: "sonar",
95
+ azure: "",
96
+ "google-vertex": "",
97
+ ollama: "llama3.1"
98
+ };
99
+ async function loadProviderFactory(provider) {
100
+ switch (provider) {
101
+ case "openai": {
102
+ const { createOpenAI } = await import("@ai-sdk/openai");
103
+ return (apiKey, baseUrl, options) => {
104
+ const sdk = createOpenAI({ apiKey, baseURL: baseUrl, ...options });
105
+ return (modelId) => sdk(modelId);
106
+ };
107
+ }
108
+ case "anthropic": {
109
+ const { createAnthropic } = await import("@ai-sdk/anthropic");
110
+ return (apiKey, baseUrl, options) => {
111
+ const sdk = createAnthropic({ apiKey, baseURL: baseUrl, ...options });
112
+ return (modelId) => sdk(modelId);
113
+ };
114
+ }
115
+ case "google": {
116
+ const { createGoogleGenerativeAI } = await import("@ai-sdk/google");
117
+ return (apiKey, baseUrl, options) => {
118
+ const sdk = createGoogleGenerativeAI({ apiKey, baseURL: baseUrl, ...options });
119
+ return (modelId) => sdk(modelId);
120
+ };
121
+ }
122
+ case "deepseek": {
123
+ const { createDeepSeek } = await import("@ai-sdk/deepseek");
124
+ return (apiKey, baseUrl, options) => {
125
+ const sdk = createDeepSeek({ apiKey, baseURL: baseUrl, ...options });
126
+ return (modelId) => sdk(modelId);
127
+ };
128
+ }
129
+ case "groq": {
130
+ const { createGroq } = await import("@ai-sdk/groq");
131
+ return (apiKey, baseUrl, options) => {
132
+ const sdk = createGroq({ apiKey, baseURL: baseUrl, ...options });
133
+ return (modelId) => sdk(modelId);
134
+ };
135
+ }
136
+ case "mistral": {
137
+ const { createMistral } = await import("@ai-sdk/mistral");
138
+ return (apiKey, baseUrl, options) => {
139
+ const sdk = createMistral({ apiKey, baseURL: baseUrl, ...options });
140
+ return (modelId) => sdk(modelId);
141
+ };
142
+ }
143
+ case "cohere": {
144
+ const { createCohere } = await import("@ai-sdk/cohere");
145
+ return (apiKey, baseUrl, options) => {
146
+ const sdk = createCohere({ apiKey, baseURL: baseUrl, ...options });
147
+ return (modelId) => sdk(modelId);
148
+ };
149
+ }
150
+ case "xai": {
151
+ const { createXai } = await import("@ai-sdk/xai");
152
+ return (apiKey, baseUrl, options) => {
153
+ const sdk = createXai({ apiKey, baseURL: baseUrl, ...options });
154
+ return (modelId) => sdk(modelId);
155
+ };
156
+ }
157
+ case "togetherai": {
158
+ const { createTogetherAI } = await import("@ai-sdk/togetherai");
159
+ return (apiKey, baseUrl, options) => {
160
+ const sdk = createTogetherAI({ apiKey, baseURL: baseUrl, ...options });
161
+ return (modelId) => sdk(modelId);
162
+ };
163
+ }
164
+ case "perplexity": {
165
+ const { createPerplexity } = await import("@ai-sdk/perplexity");
166
+ return (apiKey, baseUrl, options) => {
167
+ const sdk = createPerplexity({ apiKey, baseURL: baseUrl, ...options });
168
+ return (modelId) => sdk(modelId);
169
+ };
170
+ }
171
+ case "azure": {
172
+ const { createAzure } = await import("@ai-sdk/azure");
173
+ return (apiKey, _baseUrl, options) => {
174
+ const sdk = createAzure({ apiKey, ...options });
175
+ return (modelId) => sdk(modelId);
176
+ };
177
+ }
178
+ case "google-vertex": {
179
+ const { createVertex } = await import("@ai-sdk/google-vertex");
180
+ return (_apiKey, _baseUrl, options) => {
181
+ const sdk = createVertex({ ...options });
182
+ return (modelId) => sdk(modelId);
183
+ };
184
+ }
185
+ case "ollama": {
186
+ const { createOllama } = await import("ollama-ai-provider-v2");
187
+ return (_apiKey, baseUrl, options) => {
188
+ const sdk = createOllama({ baseURL: baseUrl, ...options });
189
+ return (modelId) => sdk(modelId);
190
+ };
191
+ }
192
+ default: {
193
+ const exhaustive = provider;
194
+ throw new Error(`Unsupported provider: ${String(exhaustive)}`);
195
+ }
196
+ }
197
+ }
198
+ async function createLLMProvider(config) {
199
+ const name = config.name ?? config.provider;
200
+ function resolveModel(modelId) {
201
+ return modelId ?? config.model ?? defaultModels[config.provider] ?? "";
202
+ }
203
+ const createProviderModel = await loadProviderFactory(config.provider);
204
+ const modelFactory = createProviderModel(config.apiKey, config.baseUrl, config.options);
205
+ return createFetchLLMProvider({
206
+ name,
207
+ createModel: (modelId) => modelFactory(resolveModel(modelId))
208
+ });
209
+ }
210
+ async function createOpenAICompatibleProvider(config) {
211
+ const name = config.name ?? config.provider;
212
+ const { createOpenAICompatible } = await import("@ai-sdk/openai-compatible");
213
+ function resolveModel(modelId) {
214
+ return modelId ?? config.model ?? "gpt-4o-mini";
215
+ }
216
+ const sdk = createOpenAICompatible({
217
+ name: config.provider,
218
+ baseURL: config.baseUrl ?? "https://api.openai.com/v1",
219
+ apiKey: config.apiKey,
220
+ ...config.options
221
+ });
222
+ return createFetchLLMProvider({
223
+ name,
224
+ createModel: (modelId) => sdk(resolveModel(modelId))
225
+ });
226
+ }
227
+ function createOpenaiProvider(config = {}) {
228
+ return createLLMProvider({ provider: "openai", ...config });
229
+ }
230
+ function createAnthropicProvider(config = {}) {
231
+ return createLLMProvider({ provider: "anthropic", ...config });
232
+ }
233
+ function createGoogleProvider(config = {}) {
234
+ return createLLMProvider({ provider: "google", ...config });
235
+ }
236
+ function createDeepseekProvider(config = {}) {
237
+ return createLLMProvider({ provider: "deepseek", ...config });
238
+ }
239
+ function createGroqProvider(config = {}) {
240
+ return createLLMProvider({ provider: "groq", ...config });
241
+ }
242
+ function createMistralProvider(config = {}) {
243
+ return createLLMProvider({ provider: "mistral", ...config });
244
+ }
245
+ function createCohereProvider(config = {}) {
246
+ return createLLMProvider({ provider: "cohere", ...config });
247
+ }
248
+ function createXaiProvider(config = {}) {
249
+ return createLLMProvider({ provider: "xai", ...config });
250
+ }
251
+ function createTogetheraiProvider(config = {}) {
252
+ return createLLMProvider({ provider: "togetherai", ...config });
253
+ }
254
+ function createPerplexityProvider(config = {}) {
255
+ return createLLMProvider({ provider: "perplexity", ...config });
256
+ }
257
+ function createAzureProvider(config = {}) {
258
+ return createLLMProvider({ provider: "azure", ...config });
259
+ }
260
+ function createGoogleVertexProvider(config = {}) {
261
+ return createLLMProvider({ provider: "google-vertex", ...config });
262
+ }
263
+ function createOllamaProvider(config = {}) {
264
+ return createLLMProvider({ provider: "ollama", ...config });
265
+ }
266
+ function resolveProviderModelId(entry) {
267
+ const firstModelKey = entry.models ? Object.keys(entry.models)[0] : void 0;
268
+ if (firstModelKey) {
269
+ return `${entry.name}/${firstModelKey}`;
270
+ }
271
+ return entry.name;
272
+ }
273
+ function createProviderFromEntry(entry) {
274
+ const providerId = entry.name;
275
+ const firstModelKey = entry.models ? Object.keys(entry.models)[0] : void 0;
276
+ const firstModelName = firstModelKey ? entry.models?.[firstModelKey]?.name : void 0;
277
+ const configWithoutProvider = {
278
+ name: entry.name,
279
+ apiKey: entry.apiKey,
280
+ baseUrl: entry.baseUrl,
281
+ model: firstModelName,
282
+ options: entry.options
283
+ };
284
+ if (!defaultModels[providerId]) {
285
+ return createOpenAICompatibleProvider({ provider: entry.name, ...configWithoutProvider });
286
+ }
287
+ return createLLMProvider({
288
+ provider: providerId,
289
+ ...configWithoutProvider
290
+ });
291
+ }
292
+ // Annotate the CommonJS export names for ESM import in node:
293
+ 0 && (module.exports = {
294
+ createAnthropicProvider,
295
+ createAzureProvider,
296
+ createCohereProvider,
297
+ createDeepseekProvider,
298
+ createGoogleProvider,
299
+ createGoogleVertexProvider,
300
+ createGroqProvider,
301
+ createLLMProvider,
302
+ createMistralProvider,
303
+ createOllamaProvider,
304
+ createOpenaiProvider,
305
+ createPerplexityProvider,
306
+ createProviderFromEntry,
307
+ createTogetheraiProvider,
308
+ createXaiProvider,
309
+ resolveProviderModelId
310
+ });
311
+ //# sourceMappingURL=llm-providers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/llm-providers.ts","../src/llm/fetchProvider.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","/**\n * Provider-agnostic LLM provider — wraps any Vercel AI SDK LanguageModelV1.\n *\n * The core does NOT depend on @ai-sdk/openai or any specific provider.\n * Hosts inject their own `createModel` factory:\n *\n * import { createOpenAI } from '@ai-sdk/openai';\n * const openai = createOpenAI({ baseURL: '...', apiKey: '...' });\n * const provider = createFetchLLMProvider({\n * name: 'openai',\n * createModel: (id) => openai(id ?? 'gpt-4o-mini'),\n * });\n *\n * Or for Anthropic:\n * import { createAnthropic } from '@ai-sdk/anthropic';\n * const anthropic = createAnthropic({ apiKey: '...' });\n * const provider = createFetchLLMProvider({\n * name: 'claude',\n * createModel: (id) => anthropic(id ?? 'claude-3-5-sonnet-20241022'),\n * });\n *\n * Works with every @ai-sdk/* provider: openai, anthropic, google, deepseek,\n * cohere, mistral, azure, bedrock, groq, ollama, openrouter, together, etc.\n */\n\nimport type { LanguageModelV1 } from 'ai';\nimport { generateText, streamText } from 'ai';\n\nimport type { ILLMProvider } from '../types.js';\n\n// ─── Config ────────────────────────────────────────────────────────────\n\nexport interface FetchLLMProviderConfig {\n /** Display name. */\n name: string;\n /**\n * Factory: given an optional model id, return a LanguageModelV1 from any @ai-sdk/* provider.\n * The factory is responsible for picking a default model when `modelId` is omitted.\n */\n createModel: (modelId?: string) => LanguageModelV1;\n}\n\n// ─── Factory ───────────────────────────────────────────────────────────\n\n/**\n * Create an `ILLMProvider` that delegates to the Vercel AI SDK.\n *\n * Provider-agnostic — hosts supply their own `createModel` factory.\n * Supports every @ai-sdk/* provider (OpenAI, Anthropic, Google, DeepSeek,\n * Groq, Ollama, OpenRouter, Together, Bedrock, Azure, Mistral, Cohere…).\n *\n * @example\n * ```ts\n * import { createOpenAI } from '@ai-sdk/openai';\n * const openai = createOpenAI({ baseURL: 'https://api.openai.com/v1', apiKey });\n * const provider = createFetchLLMProvider({\n * name: 'openai',\n * createModel: (modelId) => openai(modelId ?? 'gpt-4o-mini'),\n * });\n * ```\n */\nexport function createFetchLLMProvider(config: FetchLLMProviderConfig): ILLMProvider {\n return {\n name: config.name,\n // Store the factory so hosts can introspect or extend\n model: config.createModel as unknown as LanguageModelV1,\n async chat(request: unknown) {\n const body = (typeof request === 'object' && request !== null ? request : {}) as {\n messages?: Array<{ role: string; content: string }>;\n model?: string;\n stream?: boolean;\n max_tokens?: number;\n temperature?: number;\n system?: string;\n abortSignal?: AbortSignal;\n };\n\n const model = config.createModel(body.model);\n\n const messages = (body.messages ?? []).map((message) => ({\n role: message.role as 'system' | 'user' | 'assistant',\n content: message.content,\n }));\n\n const system = body.system;\n const temperature = body.temperature;\n const abortSignal = body.abortSignal;\n\n if (body.stream !== false) {\n const result = streamText({ model, system, messages, temperature, abortSignal });\n return (async function*() {\n for await (const chunk of result.textStream) {\n yield chunk;\n }\n })();\n }\n\n const result = await generateText({ model, system, messages, temperature, abortSignal });\n return result.text;\n },\n };\n}\n"],"mappings":"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","names":["result"]}
@@ -0,0 +1,111 @@
1
+ import { a0 as ILLMProvider } from './types-B0Jm2l38.cjs';
2
+
3
+ /**
4
+ * Pre-built, config-driven LLM providers.
5
+ *
6
+ * Exposes every major @ai-sdk/* provider through a single entry point so hosts
7
+ * can switch providers by changing a string in user config — no need to install
8
+ * AI SDK packages individually.
9
+ *
10
+ * ```ts
11
+ * import { createLLMProvider } from 'memeloop/llm-providers';
12
+ *
13
+ * const provider = createLLMProvider({
14
+ * provider: 'openai',
15
+ * baseUrl: 'https://api.openai.com/v1',
16
+ * apiKey: process.env.OPENAI_API_KEY,
17
+ * model: 'gpt-4o',
18
+ * });
19
+ * ```
20
+ *
21
+ * For custom providers, or to keep bundle size minimal, use the generic
22
+ * `createFetchLLMProvider` exported from `memeloop` and supply your own
23
+ * `createModel` factory.
24
+ *
25
+ * `createLLMProvider` is async because it dynamically imports the selected
26
+ * AI SDK provider on first use. Host bundlers can then decide whether to
27
+ * bundle, split, or externalize those provider dependencies for their runtime.
28
+ */
29
+
30
+ type LLMProviderId = 'openai' | 'anthropic' | 'google' | 'deepseek' | 'groq' | 'mistral' | 'cohere' | 'xai' | 'togetherai' | 'perplexity' | 'azure' | 'google-vertex' | 'ollama';
31
+ interface LLMProviderConfig {
32
+ /** Provider id. */
33
+ provider: LLMProviderId;
34
+ /** Display name (defaults to provider id). */
35
+ name?: string;
36
+ /** API key or credential. */
37
+ apiKey?: string;
38
+ /** Override the provider's default API base URL. */
39
+ baseUrl?: string;
40
+ /** Default model id. When omitted a provider-specific default is used. */
41
+ model?: string;
42
+ /** Provider-specific options passed through to the AI SDK factory. */
43
+ options?: Record<string, unknown>;
44
+ }
45
+ /** A provider entry from any host config (loose shape used by CLI/Desktop). */
46
+ interface ConfiguredProviderEntry {
47
+ /** Provider id matching LLMProviderId. */
48
+ name: string;
49
+ /** API base URL. */
50
+ baseUrl?: string;
51
+ /** API key. */
52
+ apiKey?: string;
53
+ /** Provider-specific options. */
54
+ options?: Record<string, unknown>;
55
+ /** Available models; the first key is used as the default model. */
56
+ models?: Record<string, {
57
+ name: string;
58
+ }>;
59
+ }
60
+ /**
61
+ * Create an `ILLMProvider` from a config-driven provider id.
62
+ *
63
+ * Switches implementation based on `config.provider`.
64
+ * The selected provider's AI SDK package is loaded on demand, so hosts only
65
+ * pay the dependency cost for providers they actually use.
66
+ */
67
+ declare function createLLMProvider(config: LLMProviderConfig): Promise<ILLMProvider>;
68
+ type ProviderConfigWithoutId = Omit<LLMProviderConfig, 'provider'>;
69
+ /** Convenience factory for OpenAI. */
70
+ declare function createOpenaiProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
71
+ /** Convenience factory for Anthropic. */
72
+ declare function createAnthropicProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
73
+ /** Convenience factory for Google Generative AI. */
74
+ declare function createGoogleProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
75
+ /** Convenience factory for DeepSeek. */
76
+ declare function createDeepseekProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
77
+ /** Convenience factory for Groq. */
78
+ declare function createGroqProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
79
+ /** Convenience factory for Mistral. */
80
+ declare function createMistralProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
81
+ /** Convenience factory for Cohere. */
82
+ declare function createCohereProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
83
+ /** Convenience factory for xAI. */
84
+ declare function createXaiProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
85
+ /** Convenience factory for Together AI. */
86
+ declare function createTogetheraiProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
87
+ /** Convenience factory for Perplexity. */
88
+ declare function createPerplexityProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
89
+ /** Convenience factory for Azure OpenAI. */
90
+ declare function createAzureProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
91
+ /** Convenience factory for Google Vertex. */
92
+ declare function createGoogleVertexProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
93
+ /** Convenience factory for Ollama. */
94
+ declare function createOllamaProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
95
+ /**
96
+ * Resolve the default model name from a host config entry.
97
+ * Uses the first key in `entry.models` if present, otherwise falls back
98
+ * to the provider-specific default.
99
+ */
100
+ declare function resolveProviderModelId(entry: ConfiguredProviderEntry): string;
101
+ /**
102
+ * Convert a loose host config entry into an `ILLMProvider` via the core registry.
103
+ * Provider id is taken from `entry.name`. Model id is inferred from `entry.models`
104
+ * or the provider-specific default.
105
+ *
106
+ * Unknown provider names fall back to OpenAI-compatible mode, preserving CLI/Desktop
107
+ * behavior where arbitrary OpenAI-compatible endpoints can be configured with any name.
108
+ */
109
+ declare function createProviderFromEntry(entry: ConfiguredProviderEntry): Promise<ILLMProvider>;
110
+
111
+ export { type ConfiguredProviderEntry, type LLMProviderConfig, type LLMProviderId, createAnthropicProvider, createAzureProvider, createCohereProvider, createDeepseekProvider, createGoogleProvider, createGoogleVertexProvider, createGroqProvider, createLLMProvider, createMistralProvider, createOllamaProvider, createOpenaiProvider, createPerplexityProvider, createProviderFromEntry, createTogetheraiProvider, createXaiProvider, resolveProviderModelId };
@@ -0,0 +1,111 @@
1
+ import { a0 as ILLMProvider } from './types-B0Jm2l38.js';
2
+
3
+ /**
4
+ * Pre-built, config-driven LLM providers.
5
+ *
6
+ * Exposes every major @ai-sdk/* provider through a single entry point so hosts
7
+ * can switch providers by changing a string in user config — no need to install
8
+ * AI SDK packages individually.
9
+ *
10
+ * ```ts
11
+ * import { createLLMProvider } from 'memeloop/llm-providers';
12
+ *
13
+ * const provider = createLLMProvider({
14
+ * provider: 'openai',
15
+ * baseUrl: 'https://api.openai.com/v1',
16
+ * apiKey: process.env.OPENAI_API_KEY,
17
+ * model: 'gpt-4o',
18
+ * });
19
+ * ```
20
+ *
21
+ * For custom providers, or to keep bundle size minimal, use the generic
22
+ * `createFetchLLMProvider` exported from `memeloop` and supply your own
23
+ * `createModel` factory.
24
+ *
25
+ * `createLLMProvider` is async because it dynamically imports the selected
26
+ * AI SDK provider on first use. Host bundlers can then decide whether to
27
+ * bundle, split, or externalize those provider dependencies for their runtime.
28
+ */
29
+
30
+ type LLMProviderId = 'openai' | 'anthropic' | 'google' | 'deepseek' | 'groq' | 'mistral' | 'cohere' | 'xai' | 'togetherai' | 'perplexity' | 'azure' | 'google-vertex' | 'ollama';
31
+ interface LLMProviderConfig {
32
+ /** Provider id. */
33
+ provider: LLMProviderId;
34
+ /** Display name (defaults to provider id). */
35
+ name?: string;
36
+ /** API key or credential. */
37
+ apiKey?: string;
38
+ /** Override the provider's default API base URL. */
39
+ baseUrl?: string;
40
+ /** Default model id. When omitted a provider-specific default is used. */
41
+ model?: string;
42
+ /** Provider-specific options passed through to the AI SDK factory. */
43
+ options?: Record<string, unknown>;
44
+ }
45
+ /** A provider entry from any host config (loose shape used by CLI/Desktop). */
46
+ interface ConfiguredProviderEntry {
47
+ /** Provider id matching LLMProviderId. */
48
+ name: string;
49
+ /** API base URL. */
50
+ baseUrl?: string;
51
+ /** API key. */
52
+ apiKey?: string;
53
+ /** Provider-specific options. */
54
+ options?: Record<string, unknown>;
55
+ /** Available models; the first key is used as the default model. */
56
+ models?: Record<string, {
57
+ name: string;
58
+ }>;
59
+ }
60
+ /**
61
+ * Create an `ILLMProvider` from a config-driven provider id.
62
+ *
63
+ * Switches implementation based on `config.provider`.
64
+ * The selected provider's AI SDK package is loaded on demand, so hosts only
65
+ * pay the dependency cost for providers they actually use.
66
+ */
67
+ declare function createLLMProvider(config: LLMProviderConfig): Promise<ILLMProvider>;
68
+ type ProviderConfigWithoutId = Omit<LLMProviderConfig, 'provider'>;
69
+ /** Convenience factory for OpenAI. */
70
+ declare function createOpenaiProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
71
+ /** Convenience factory for Anthropic. */
72
+ declare function createAnthropicProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
73
+ /** Convenience factory for Google Generative AI. */
74
+ declare function createGoogleProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
75
+ /** Convenience factory for DeepSeek. */
76
+ declare function createDeepseekProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
77
+ /** Convenience factory for Groq. */
78
+ declare function createGroqProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
79
+ /** Convenience factory for Mistral. */
80
+ declare function createMistralProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
81
+ /** Convenience factory for Cohere. */
82
+ declare function createCohereProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
83
+ /** Convenience factory for xAI. */
84
+ declare function createXaiProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
85
+ /** Convenience factory for Together AI. */
86
+ declare function createTogetheraiProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
87
+ /** Convenience factory for Perplexity. */
88
+ declare function createPerplexityProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
89
+ /** Convenience factory for Azure OpenAI. */
90
+ declare function createAzureProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
91
+ /** Convenience factory for Google Vertex. */
92
+ declare function createGoogleVertexProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
93
+ /** Convenience factory for Ollama. */
94
+ declare function createOllamaProvider(config?: ProviderConfigWithoutId): Promise<ILLMProvider>;
95
+ /**
96
+ * Resolve the default model name from a host config entry.
97
+ * Uses the first key in `entry.models` if present, otherwise falls back
98
+ * to the provider-specific default.
99
+ */
100
+ declare function resolveProviderModelId(entry: ConfiguredProviderEntry): string;
101
+ /**
102
+ * Convert a loose host config entry into an `ILLMProvider` via the core registry.
103
+ * Provider id is taken from `entry.name`. Model id is inferred from `entry.models`
104
+ * or the provider-specific default.
105
+ *
106
+ * Unknown provider names fall back to OpenAI-compatible mode, preserving CLI/Desktop
107
+ * behavior where arbitrary OpenAI-compatible endpoints can be configured with any name.
108
+ */
109
+ declare function createProviderFromEntry(entry: ConfiguredProviderEntry): Promise<ILLMProvider>;
110
+
111
+ export { type ConfiguredProviderEntry, type LLMProviderConfig, type LLMProviderId, createAnthropicProvider, createAzureProvider, createCohereProvider, createDeepseekProvider, createGoogleProvider, createGoogleVertexProvider, createGroqProvider, createLLMProvider, createMistralProvider, createOllamaProvider, createOpenaiProvider, createPerplexityProvider, createProviderFromEntry, createTogetheraiProvider, createXaiProvider, resolveProviderModelId };