llm-strings 1.0.1 → 1.1.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 (50) hide show
  1. package/README.md +95 -14
  2. package/dist/chunk-FCEV23OT.js +37 -0
  3. package/dist/chunk-FCEV23OT.js.map +1 -0
  4. package/dist/chunk-MGWGNZDJ.cjs +116 -0
  5. package/dist/chunk-MGWGNZDJ.cjs.map +1 -0
  6. package/dist/chunk-MPIHGH6L.js +116 -0
  7. package/dist/chunk-MPIHGH6L.js.map +1 -0
  8. package/dist/chunk-N6NVBE43.cjs +37 -0
  9. package/dist/chunk-N6NVBE43.cjs.map +1 -0
  10. package/dist/chunk-NSCBY4VD.cjs +370 -0
  11. package/dist/chunk-NSCBY4VD.cjs.map +1 -0
  12. package/dist/chunk-RSUXM42X.cjs +180 -0
  13. package/dist/chunk-RSUXM42X.cjs.map +1 -0
  14. package/dist/chunk-UYMVUTLV.js +180 -0
  15. package/dist/chunk-UYMVUTLV.js.map +1 -0
  16. package/dist/chunk-XID353H7.js +370 -0
  17. package/dist/chunk-XID353H7.js.map +1 -0
  18. package/dist/index.cjs +12 -806
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +4 -80
  21. package/dist/index.d.ts +4 -80
  22. package/dist/index.js +11 -764
  23. package/dist/index.js.map +1 -1
  24. package/dist/normalize.cjs +8 -0
  25. package/dist/normalize.cjs.map +1 -0
  26. package/dist/normalize.d.cts +33 -0
  27. package/dist/normalize.d.ts +33 -0
  28. package/dist/normalize.js +8 -0
  29. package/dist/normalize.js.map +1 -0
  30. package/dist/parse.cjs +9 -0
  31. package/dist/parse.cjs.map +1 -0
  32. package/dist/parse.d.cts +32 -0
  33. package/dist/parse.d.ts +32 -0
  34. package/dist/parse.js +9 -0
  35. package/dist/parse.js.map +1 -0
  36. package/dist/provider-core-DinpG40u.d.cts +53 -0
  37. package/dist/provider-core-DinpG40u.d.ts +53 -0
  38. package/dist/providers.cjs +37 -392
  39. package/dist/providers.cjs.map +1 -1
  40. package/dist/providers.d.cts +4 -42
  41. package/dist/providers.d.ts +4 -42
  42. package/dist/providers.js +20 -336
  43. package/dist/providers.js.map +1 -1
  44. package/dist/validate.cjs +10 -0
  45. package/dist/validate.cjs.map +1 -0
  46. package/dist/validate.d.cts +21 -0
  47. package/dist/validate.d.ts +21 -0
  48. package/dist/validate.js +10 -0
  49. package/dist/validate.js.map +1 -0
  50. package/package.json +33 -1
@@ -1,377 +1,21 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/providers.ts
21
- var providers_exports = {};
22
- __export(providers_exports, {
23
- ALIASES: () => ALIASES,
24
- CACHE_TTLS: () => CACHE_TTLS,
25
- CACHE_VALUES: () => CACHE_VALUES,
26
- CANONICAL_PARAM_SPECS: () => CANONICAL_PARAM_SPECS,
27
- DURATION_RE: () => DURATION_RE,
28
- MODELS: () => MODELS,
29
- PARAM_SPECS: () => PARAM_SPECS,
30
- PROVIDER_META: () => PROVIDER_META,
31
- PROVIDER_PARAMS: () => PROVIDER_PARAMS,
32
- REASONING_MODEL_UNSUPPORTED: () => REASONING_MODEL_UNSUPPORTED,
33
- bedrockSupportsCaching: () => bedrockSupportsCaching,
34
- canHostOpenAIModels: () => canHostOpenAIModels,
35
- detectBedrockModelFamily: () => detectBedrockModelFamily,
36
- detectProvider: () => detectProvider,
37
- isReasoningModel: () => isReasoningModel
38
- });
39
- module.exports = __toCommonJS(providers_exports);
40
- function detectProvider(host) {
41
- if (host.includes("openrouter")) return "openrouter";
42
- if (host.includes("gateway.ai.vercel")) return "vercel";
43
- if (host.includes("amazonaws") || host.includes("bedrock")) return "bedrock";
44
- if (host.includes("openai")) return "openai";
45
- if (host.includes("anthropic") || host.includes("claude")) return "anthropic";
46
- if (host.includes("googleapis") || host.includes("google")) return "google";
47
- if (host.includes("mistral")) return "mistral";
48
- if (host.includes("cohere")) return "cohere";
49
- return void 0;
50
- }
51
- var ALIASES = {
52
- // temperature
53
- temp: "temperature",
54
- // max_tokens
55
- max: "max_tokens",
56
- max_out: "max_tokens",
57
- max_output: "max_tokens",
58
- max_output_tokens: "max_tokens",
59
- max_completion_tokens: "max_tokens",
60
- maxOutputTokens: "max_tokens",
61
- maxTokens: "max_tokens",
62
- // top_p
63
- topp: "top_p",
64
- topP: "top_p",
65
- nucleus: "top_p",
66
- // top_k
67
- topk: "top_k",
68
- topK: "top_k",
69
- // frequency_penalty
70
- freq: "frequency_penalty",
71
- freq_penalty: "frequency_penalty",
72
- frequencyPenalty: "frequency_penalty",
73
- repetition_penalty: "frequency_penalty",
74
- // presence_penalty
75
- pres: "presence_penalty",
76
- pres_penalty: "presence_penalty",
77
- presencePenalty: "presence_penalty",
78
- // stop
79
- stop_sequences: "stop",
80
- stopSequences: "stop",
81
- stop_sequence: "stop",
82
- // seed
83
- random_seed: "seed",
84
- randomSeed: "seed",
85
- // n (completions count)
86
- candidateCount: "n",
87
- candidate_count: "n",
88
- num_completions: "n",
89
- // effort / reasoning
90
- reasoning_effort: "effort",
91
- reasoning: "effort",
92
- // cache
93
- cache_control: "cache",
94
- cacheControl: "cache",
95
- cachePoint: "cache",
96
- cache_point: "cache"
97
- };
98
- var PROVIDER_PARAMS = {
99
- openai: {
100
- temperature: "temperature",
101
- max_tokens: "max_tokens",
102
- top_p: "top_p",
103
- frequency_penalty: "frequency_penalty",
104
- presence_penalty: "presence_penalty",
105
- stop: "stop",
106
- n: "n",
107
- seed: "seed",
108
- stream: "stream",
109
- effort: "reasoning_effort"
110
- },
111
- anthropic: {
112
- temperature: "temperature",
113
- max_tokens: "max_tokens",
114
- top_p: "top_p",
115
- top_k: "top_k",
116
- stop: "stop_sequences",
117
- stream: "stream",
118
- effort: "effort",
119
- cache: "cache_control",
120
- cache_ttl: "cache_ttl"
121
- },
122
- google: {
123
- temperature: "temperature",
124
- max_tokens: "maxOutputTokens",
125
- top_p: "topP",
126
- top_k: "topK",
127
- frequency_penalty: "frequencyPenalty",
128
- presence_penalty: "presencePenalty",
129
- stop: "stopSequences",
130
- n: "candidateCount",
131
- stream: "stream",
132
- seed: "seed",
133
- responseMimeType: "responseMimeType",
134
- responseSchema: "responseSchema"
135
- },
136
- mistral: {
137
- temperature: "temperature",
138
- max_tokens: "max_tokens",
139
- top_p: "top_p",
140
- frequency_penalty: "frequency_penalty",
141
- presence_penalty: "presence_penalty",
142
- stop: "stop",
143
- n: "n",
144
- seed: "random_seed",
145
- stream: "stream",
146
- safe_prompt: "safe_prompt",
147
- min_tokens: "min_tokens"
148
- },
149
- cohere: {
150
- temperature: "temperature",
151
- max_tokens: "max_tokens",
152
- top_p: "p",
153
- top_k: "k",
154
- frequency_penalty: "frequency_penalty",
155
- presence_penalty: "presence_penalty",
156
- stop: "stop_sequences",
157
- stream: "stream",
158
- seed: "seed"
159
- },
160
- bedrock: {
161
- // Bedrock Converse API uses camelCase
162
- temperature: "temperature",
163
- max_tokens: "maxTokens",
164
- top_p: "topP",
165
- top_k: "topK",
166
- // Claude models via additionalModelRequestFields
167
- stop: "stopSequences",
168
- stream: "stream",
169
- cache: "cache_control",
170
- cache_ttl: "cache_ttl"
171
- },
172
- openrouter: {
173
- // OpenAI-compatible API with extra routing params
174
- temperature: "temperature",
175
- max_tokens: "max_tokens",
176
- top_p: "top_p",
177
- top_k: "top_k",
178
- frequency_penalty: "frequency_penalty",
179
- presence_penalty: "presence_penalty",
180
- stop: "stop",
181
- n: "n",
182
- seed: "seed",
183
- stream: "stream",
184
- effort: "reasoning_effort"
185
- },
186
- vercel: {
187
- // OpenAI-compatible gateway
188
- temperature: "temperature",
189
- max_tokens: "max_tokens",
190
- top_p: "top_p",
191
- top_k: "top_k",
192
- frequency_penalty: "frequency_penalty",
193
- presence_penalty: "presence_penalty",
194
- stop: "stop",
195
- n: "n",
196
- seed: "seed",
197
- stream: "stream",
198
- effort: "reasoning_effort"
199
- }
200
- };
201
- var PARAM_SPECS = {
202
- openai: {
203
- temperature: { type: "number", min: 0, max: 2 },
204
- max_tokens: { type: "number", min: 1 },
205
- top_p: { type: "number", min: 0, max: 1 },
206
- frequency_penalty: { type: "number", min: -2, max: 2 },
207
- presence_penalty: { type: "number", min: -2, max: 2 },
208
- stop: { type: "string" },
209
- n: { type: "number", min: 1 },
210
- seed: { type: "number" },
211
- stream: { type: "boolean" },
212
- reasoning_effort: {
213
- type: "string",
214
- values: ["none", "minimal", "low", "medium", "high", "xhigh"]
215
- }
216
- },
217
- anthropic: {
218
- temperature: { type: "number", min: 0, max: 1 },
219
- max_tokens: { type: "number", min: 1 },
220
- top_p: { type: "number", min: 0, max: 1 },
221
- top_k: { type: "number", min: 0 },
222
- stop_sequences: { type: "string" },
223
- stream: { type: "boolean" },
224
- effort: { type: "string", values: ["low", "medium", "high", "max"] },
225
- cache_control: { type: "string", values: ["ephemeral"] },
226
- cache_ttl: { type: "string", values: ["5m", "1h"] }
227
- },
228
- google: {
229
- temperature: { type: "number", min: 0, max: 2 },
230
- maxOutputTokens: { type: "number", min: 1 },
231
- topP: { type: "number", min: 0, max: 1 },
232
- topK: { type: "number", min: 0 },
233
- frequencyPenalty: { type: "number", min: -2, max: 2 },
234
- presencePenalty: { type: "number", min: -2, max: 2 },
235
- stopSequences: { type: "string" },
236
- candidateCount: { type: "number", min: 1 },
237
- stream: { type: "boolean" },
238
- seed: { type: "number" },
239
- responseMimeType: { type: "string" },
240
- responseSchema: { type: "string" }
241
- },
242
- mistral: {
243
- temperature: { type: "number", min: 0, max: 1 },
244
- max_tokens: { type: "number", min: 1 },
245
- top_p: { type: "number", min: 0, max: 1 },
246
- frequency_penalty: { type: "number", min: -2, max: 2 },
247
- presence_penalty: { type: "number", min: -2, max: 2 },
248
- stop: { type: "string" },
249
- n: { type: "number", min: 1 },
250
- random_seed: { type: "number" },
251
- stream: { type: "boolean" },
252
- safe_prompt: { type: "boolean" },
253
- min_tokens: { type: "number", min: 0 }
254
- },
255
- cohere: {
256
- temperature: { type: "number", min: 0, max: 1 },
257
- max_tokens: { type: "number", min: 1 },
258
- p: { type: "number", min: 0, max: 1 },
259
- k: { type: "number", min: 0, max: 500 },
260
- frequency_penalty: { type: "number", min: 0, max: 1 },
261
- presence_penalty: { type: "number", min: 0, max: 1 },
262
- stop_sequences: { type: "string" },
263
- stream: { type: "boolean" },
264
- seed: { type: "number" }
265
- },
266
- bedrock: {
267
- // Converse API inferenceConfig params
268
- temperature: { type: "number", min: 0, max: 1 },
269
- maxTokens: { type: "number", min: 1 },
270
- topP: { type: "number", min: 0, max: 1 },
271
- topK: { type: "number", min: 0 },
272
- stopSequences: { type: "string" },
273
- stream: { type: "boolean" },
274
- cache_control: { type: "string", values: ["ephemeral"] },
275
- cache_ttl: { type: "string", values: ["5m", "1h"] }
276
- },
277
- openrouter: {
278
- // Loose validation — proxies to many providers with varying ranges
279
- temperature: { type: "number", min: 0, max: 2 },
280
- max_tokens: { type: "number", min: 1 },
281
- top_p: { type: "number", min: 0, max: 1 },
282
- top_k: { type: "number", min: 0 },
283
- frequency_penalty: { type: "number", min: -2, max: 2 },
284
- presence_penalty: { type: "number", min: -2, max: 2 },
285
- stop: { type: "string" },
286
- n: { type: "number", min: 1 },
287
- seed: { type: "number" },
288
- stream: { type: "boolean" },
289
- reasoning_effort: {
290
- type: "string",
291
- values: ["none", "minimal", "low", "medium", "high", "xhigh"]
292
- }
293
- },
294
- vercel: {
295
- // Loose validation — proxies to many providers with varying ranges
296
- temperature: { type: "number", min: 0, max: 2 },
297
- max_tokens: { type: "number", min: 1 },
298
- top_p: { type: "number", min: 0, max: 1 },
299
- top_k: { type: "number", min: 0 },
300
- frequency_penalty: { type: "number", min: -2, max: 2 },
301
- presence_penalty: { type: "number", min: -2, max: 2 },
302
- stop: { type: "string" },
303
- n: { type: "number", min: 1 },
304
- seed: { type: "number" },
305
- stream: { type: "boolean" },
306
- reasoning_effort: {
307
- type: "string",
308
- values: ["none", "minimal", "low", "medium", "high", "xhigh"]
309
- }
310
- }
311
- };
312
- function isReasoningModel(model) {
313
- const name = model.includes("/") ? model.split("/").pop() : model;
314
- return /^o[134]/.test(name);
315
- }
316
- function canHostOpenAIModels(provider) {
317
- return provider === "openai" || provider === "openrouter" || provider === "vercel";
318
- }
319
- var REASONING_MODEL_UNSUPPORTED = /* @__PURE__ */ new Set([
320
- "temperature",
321
- "top_p",
322
- "frequency_penalty",
323
- "presence_penalty",
324
- "n"
325
- ]);
326
- function detectBedrockModelFamily(model) {
327
- const parts = model.split(".");
328
- let prefix = parts[0];
329
- if (["us", "eu", "apac", "global"].includes(prefix) && parts.length > 1) {
330
- prefix = parts[1];
331
- }
332
- const families = [
333
- "anthropic",
334
- "meta",
335
- "amazon",
336
- "mistral",
337
- "cohere",
338
- "ai21"
339
- ];
340
- return families.find((f) => prefix === f);
341
- }
342
- function bedrockSupportsCaching(model) {
343
- const family = detectBedrockModelFamily(model);
344
- if (family === "anthropic") return true;
345
- if (family === "amazon" && model.includes("nova")) return true;
346
- return false;
347
- }
348
- var CACHE_VALUES = {
349
- openai: void 0,
350
- // OpenAI auto-caches; no explicit param
351
- anthropic: "ephemeral",
352
- google: void 0,
353
- // Google uses explicit caching API, not a param
354
- mistral: void 0,
355
- cohere: void 0,
356
- bedrock: "ephemeral",
357
- // Supported for Claude models on Bedrock
358
- openrouter: void 0,
359
- // Depends on underlying provider
360
- vercel: void 0
361
- // Depends on underlying provider
362
- };
363
- var CACHE_TTLS = {
364
- openai: void 0,
365
- anthropic: ["5m", "1h"],
366
- google: void 0,
367
- mistral: void 0,
368
- cohere: void 0,
369
- bedrock: ["5m", "1h"],
370
- // Claude on Bedrock uses same TTLs as direct Anthropic
371
- openrouter: void 0,
372
- vercel: void 0
373
- };
374
- var DURATION_RE = /^\d+[mh]$/;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+ var _chunkNSCBY4VDcjs = require('./chunk-NSCBY4VD.cjs');
17
+
18
+ // src/provider-meta.ts
375
19
  var PROVIDER_META = [
376
20
  { id: "openai", name: "OpenAI", host: "api.openai.com", color: "#10a37f" },
377
21
  { id: "anthropic", name: "Anthropic", host: "api.anthropic.com", color: "#e8956a" },
@@ -540,22 +184,23 @@ var CANONICAL_PARAM_SPECS = {
540
184
  effort: { type: "enum", values: ["none", "minimal", "low", "medium", "high", "xhigh"], default: "medium", description: "Reasoning effort" }
541
185
  }
542
186
  };
543
- // Annotate the CommonJS export names for ESM import in node:
544
- 0 && (module.exports = {
545
- ALIASES,
546
- CACHE_TTLS,
547
- CACHE_VALUES,
548
- CANONICAL_PARAM_SPECS,
549
- DURATION_RE,
550
- MODELS,
551
- PARAM_SPECS,
552
- PROVIDER_META,
553
- PROVIDER_PARAMS,
554
- REASONING_MODEL_UNSUPPORTED,
555
- bedrockSupportsCaching,
556
- canHostOpenAIModels,
557
- detectBedrockModelFamily,
558
- detectProvider,
559
- isReasoningModel
560
- });
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+ exports.ALIASES = _chunkNSCBY4VDcjs.ALIASES; exports.CACHE_TTLS = _chunkNSCBY4VDcjs.CACHE_TTLS; exports.CACHE_VALUES = _chunkNSCBY4VDcjs.CACHE_VALUES; exports.CANONICAL_PARAM_SPECS = CANONICAL_PARAM_SPECS; exports.DURATION_RE = _chunkNSCBY4VDcjs.DURATION_RE; exports.MODELS = MODELS; exports.PARAM_SPECS = _chunkNSCBY4VDcjs.PARAM_SPECS; exports.PROVIDER_META = PROVIDER_META; exports.PROVIDER_PARAMS = _chunkNSCBY4VDcjs.PROVIDER_PARAMS; exports.REASONING_MODEL_UNSUPPORTED = _chunkNSCBY4VDcjs.REASONING_MODEL_UNSUPPORTED; exports.bedrockSupportsCaching = _chunkNSCBY4VDcjs.bedrockSupportsCaching; exports.canHostOpenAIModels = _chunkNSCBY4VDcjs.canHostOpenAIModels; exports.detectBedrockModelFamily = _chunkNSCBY4VDcjs.detectBedrockModelFamily; exports.detectGatewaySubProvider = _chunkNSCBY4VDcjs.detectGatewaySubProvider; exports.detectProvider = _chunkNSCBY4VDcjs.detectProvider; exports.isGatewayProvider = _chunkNSCBY4VDcjs.isGatewayProvider; exports.isReasoningModel = _chunkNSCBY4VDcjs.isReasoningModel;
561
206
  //# sourceMappingURL=providers.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/providers.ts"],"sourcesContent":["export type Provider =\n | \"openai\"\n | \"anthropic\"\n | \"google\"\n | \"mistral\"\n | \"cohere\"\n | \"bedrock\"\n | \"openrouter\"\n | \"vercel\";\n\nexport function detectProvider(host: string): Provider | undefined {\n // Gateways and aggregators first — they proxy to other providers\n if (host.includes(\"openrouter\")) return \"openrouter\";\n if (host.includes(\"gateway.ai.vercel\")) return \"vercel\";\n // Bedrock before native providers since it hosts models from multiple vendors\n if (host.includes(\"amazonaws\") || host.includes(\"bedrock\")) return \"bedrock\";\n if (host.includes(\"openai\")) return \"openai\";\n if (host.includes(\"anthropic\") || host.includes(\"claude\")) return \"anthropic\";\n if (host.includes(\"googleapis\") || host.includes(\"google\")) return \"google\";\n if (host.includes(\"mistral\")) return \"mistral\";\n if (host.includes(\"cohere\")) return \"cohere\";\n return undefined;\n}\n\n/**\n * Shorthand aliases → canonical param name.\n * Canonical names use snake_case and follow OpenAI conventions where possible.\n */\nexport const ALIASES: Record<string, string> = {\n // temperature\n temp: \"temperature\",\n\n // max_tokens\n max: \"max_tokens\",\n max_out: \"max_tokens\",\n max_output: \"max_tokens\",\n max_output_tokens: \"max_tokens\",\n max_completion_tokens: \"max_tokens\",\n maxOutputTokens: \"max_tokens\",\n maxTokens: \"max_tokens\",\n\n // top_p\n topp: \"top_p\",\n topP: \"top_p\",\n nucleus: \"top_p\",\n\n // top_k\n topk: \"top_k\",\n topK: \"top_k\",\n\n // frequency_penalty\n freq: \"frequency_penalty\",\n freq_penalty: \"frequency_penalty\",\n frequencyPenalty: \"frequency_penalty\",\n repetition_penalty: \"frequency_penalty\",\n\n // presence_penalty\n pres: \"presence_penalty\",\n pres_penalty: \"presence_penalty\",\n presencePenalty: \"presence_penalty\",\n\n // stop\n stop_sequences: \"stop\",\n stopSequences: \"stop\",\n stop_sequence: \"stop\",\n\n // seed\n random_seed: \"seed\",\n randomSeed: \"seed\",\n\n // n (completions count)\n candidateCount: \"n\",\n candidate_count: \"n\",\n num_completions: \"n\",\n\n // effort / reasoning\n reasoning_effort: \"effort\",\n reasoning: \"effort\",\n\n // cache\n cache_control: \"cache\",\n cacheControl: \"cache\",\n cachePoint: \"cache\",\n cache_point: \"cache\",\n};\n\n/**\n * Canonical param name → provider-specific API param name.\n * Only includes params the provider actually supports.\n */\nexport const PROVIDER_PARAMS: Record<Provider, Record<string, string>> = {\n openai: {\n temperature: \"temperature\",\n max_tokens: \"max_tokens\",\n top_p: \"top_p\",\n frequency_penalty: \"frequency_penalty\",\n presence_penalty: \"presence_penalty\",\n stop: \"stop\",\n n: \"n\",\n seed: \"seed\",\n stream: \"stream\",\n effort: \"reasoning_effort\",\n },\n anthropic: {\n temperature: \"temperature\",\n max_tokens: \"max_tokens\",\n top_p: \"top_p\",\n top_k: \"top_k\",\n stop: \"stop_sequences\",\n stream: \"stream\",\n effort: \"effort\",\n cache: \"cache_control\",\n cache_ttl: \"cache_ttl\",\n },\n google: {\n temperature: \"temperature\",\n max_tokens: \"maxOutputTokens\",\n top_p: \"topP\",\n top_k: \"topK\",\n frequency_penalty: \"frequencyPenalty\",\n presence_penalty: \"presencePenalty\",\n stop: \"stopSequences\",\n n: \"candidateCount\",\n stream: \"stream\",\n seed: \"seed\",\n responseMimeType: \"responseMimeType\",\n responseSchema: \"responseSchema\",\n },\n mistral: {\n temperature: \"temperature\",\n max_tokens: \"max_tokens\",\n top_p: \"top_p\",\n frequency_penalty: \"frequency_penalty\",\n presence_penalty: \"presence_penalty\",\n stop: \"stop\",\n n: \"n\",\n seed: \"random_seed\",\n stream: \"stream\",\n safe_prompt: \"safe_prompt\",\n min_tokens: \"min_tokens\",\n },\n cohere: {\n temperature: \"temperature\",\n max_tokens: \"max_tokens\",\n top_p: \"p\",\n top_k: \"k\",\n frequency_penalty: \"frequency_penalty\",\n presence_penalty: \"presence_penalty\",\n stop: \"stop_sequences\",\n stream: \"stream\",\n seed: \"seed\",\n },\n bedrock: {\n // Bedrock Converse API uses camelCase\n temperature: \"temperature\",\n max_tokens: \"maxTokens\",\n top_p: \"topP\",\n top_k: \"topK\", // Claude models via additionalModelRequestFields\n stop: \"stopSequences\",\n stream: \"stream\",\n cache: \"cache_control\",\n cache_ttl: \"cache_ttl\",\n },\n openrouter: {\n // OpenAI-compatible API with extra routing params\n temperature: \"temperature\",\n max_tokens: \"max_tokens\",\n top_p: \"top_p\",\n top_k: \"top_k\",\n frequency_penalty: \"frequency_penalty\",\n presence_penalty: \"presence_penalty\",\n stop: \"stop\",\n n: \"n\",\n seed: \"seed\",\n stream: \"stream\",\n effort: \"reasoning_effort\",\n },\n vercel: {\n // OpenAI-compatible gateway\n temperature: \"temperature\",\n max_tokens: \"max_tokens\",\n top_p: \"top_p\",\n top_k: \"top_k\",\n frequency_penalty: \"frequency_penalty\",\n presence_penalty: \"presence_penalty\",\n stop: \"stop\",\n n: \"n\",\n seed: \"seed\",\n stream: \"stream\",\n effort: \"reasoning_effort\",\n },\n};\n\n/**\n * Validation specs per provider, keyed by provider-specific param name.\n */\nexport interface ParamSpec {\n type: \"number\" | \"string\" | \"boolean\";\n min?: number;\n max?: number;\n values?: string[];\n}\n\nexport const PARAM_SPECS: Record<Provider, Record<string, ParamSpec>> = {\n openai: {\n temperature: { type: \"number\", min: 0, max: 2 },\n max_tokens: { type: \"number\", min: 1 },\n top_p: { type: \"number\", min: 0, max: 1 },\n frequency_penalty: { type: \"number\", min: -2, max: 2 },\n presence_penalty: { type: \"number\", min: -2, max: 2 },\n stop: { type: \"string\" },\n n: { type: \"number\", min: 1 },\n seed: { type: \"number\" },\n stream: { type: \"boolean\" },\n reasoning_effort: {\n type: \"string\",\n values: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"],\n },\n },\n anthropic: {\n temperature: { type: \"number\", min: 0, max: 1 },\n max_tokens: { type: \"number\", min: 1 },\n top_p: { type: \"number\", min: 0, max: 1 },\n top_k: { type: \"number\", min: 0 },\n stop_sequences: { type: \"string\" },\n stream: { type: \"boolean\" },\n effort: { type: \"string\", values: [\"low\", \"medium\", \"high\", \"max\"] },\n cache_control: { type: \"string\", values: [\"ephemeral\"] },\n cache_ttl: { type: \"string\", values: [\"5m\", \"1h\"] },\n },\n google: {\n temperature: { type: \"number\", min: 0, max: 2 },\n maxOutputTokens: { type: \"number\", min: 1 },\n topP: { type: \"number\", min: 0, max: 1 },\n topK: { type: \"number\", min: 0 },\n frequencyPenalty: { type: \"number\", min: -2, max: 2 },\n presencePenalty: { type: \"number\", min: -2, max: 2 },\n stopSequences: { type: \"string\" },\n candidateCount: { type: \"number\", min: 1 },\n stream: { type: \"boolean\" },\n seed: { type: \"number\" },\n responseMimeType: { type: \"string\" },\n responseSchema: { type: \"string\" },\n },\n mistral: {\n temperature: { type: \"number\", min: 0, max: 1 },\n max_tokens: { type: \"number\", min: 1 },\n top_p: { type: \"number\", min: 0, max: 1 },\n frequency_penalty: { type: \"number\", min: -2, max: 2 },\n presence_penalty: { type: \"number\", min: -2, max: 2 },\n stop: { type: \"string\" },\n n: { type: \"number\", min: 1 },\n random_seed: { type: \"number\" },\n stream: { type: \"boolean\" },\n safe_prompt: { type: \"boolean\" },\n min_tokens: { type: \"number\", min: 0 },\n },\n cohere: {\n temperature: { type: \"number\", min: 0, max: 1 },\n max_tokens: { type: \"number\", min: 1 },\n p: { type: \"number\", min: 0, max: 1 },\n k: { type: \"number\", min: 0, max: 500 },\n frequency_penalty: { type: \"number\", min: 0, max: 1 },\n presence_penalty: { type: \"number\", min: 0, max: 1 },\n stop_sequences: { type: \"string\" },\n stream: { type: \"boolean\" },\n seed: { type: \"number\" },\n },\n bedrock: {\n // Converse API inferenceConfig params\n temperature: { type: \"number\", min: 0, max: 1 },\n maxTokens: { type: \"number\", min: 1 },\n topP: { type: \"number\", min: 0, max: 1 },\n topK: { type: \"number\", min: 0 },\n stopSequences: { type: \"string\" },\n stream: { type: \"boolean\" },\n cache_control: { type: \"string\", values: [\"ephemeral\"] },\n cache_ttl: { type: \"string\", values: [\"5m\", \"1h\"] },\n },\n openrouter: {\n // Loose validation — proxies to many providers with varying ranges\n temperature: { type: \"number\", min: 0, max: 2 },\n max_tokens: { type: \"number\", min: 1 },\n top_p: { type: \"number\", min: 0, max: 1 },\n top_k: { type: \"number\", min: 0 },\n frequency_penalty: { type: \"number\", min: -2, max: 2 },\n presence_penalty: { type: \"number\", min: -2, max: 2 },\n stop: { type: \"string\" },\n n: { type: \"number\", min: 1 },\n seed: { type: \"number\" },\n stream: { type: \"boolean\" },\n reasoning_effort: {\n type: \"string\",\n values: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"],\n },\n },\n vercel: {\n // Loose validation — proxies to many providers with varying ranges\n temperature: { type: \"number\", min: 0, max: 2 },\n max_tokens: { type: \"number\", min: 1 },\n top_p: { type: \"number\", min: 0, max: 1 },\n top_k: { type: \"number\", min: 0 },\n frequency_penalty: { type: \"number\", min: -2, max: 2 },\n presence_penalty: { type: \"number\", min: -2, max: 2 },\n stop: { type: \"string\" },\n n: { type: \"number\", min: 1 },\n seed: { type: \"number\" },\n stream: { type: \"boolean\" },\n reasoning_effort: {\n type: \"string\",\n values: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"],\n },\n },\n};\n\n/** OpenAI reasoning models don't support standard sampling params. */\nexport function isReasoningModel(model: string): boolean {\n // Strip gateway prefix: \"openai/o3\" → \"o3\"\n const name = model.includes(\"/\") ? model.split(\"/\").pop()! : model;\n return /^o[134]/.test(name);\n}\n\n/** Providers that can route to OpenAI models (and need reasoning-model checks). */\nexport function canHostOpenAIModels(provider: Provider): boolean {\n return provider === \"openai\" || provider === \"openrouter\" || provider === \"vercel\";\n}\n\nexport const REASONING_MODEL_UNSUPPORTED = new Set([\n \"temperature\",\n \"top_p\",\n \"frequency_penalty\",\n \"presence_penalty\",\n \"n\",\n]);\n\n/**\n * Bedrock model IDs are prefixed with the vendor name.\n * e.g. \"anthropic.claude-sonnet-4-5-20250929-v1:0\"\n */\nexport type BedrockModelFamily =\n | \"anthropic\"\n | \"meta\"\n | \"amazon\"\n | \"mistral\"\n | \"cohere\"\n | \"ai21\";\n\nexport function detectBedrockModelFamily(\n model: string,\n): BedrockModelFamily | undefined {\n // Handle cross-region inference profiles (e.g. \"us.anthropic.claude-sonnet-4-5...\")\n // and global inference profiles (e.g. \"global.anthropic.claude-sonnet-4-5...\")\n const parts = model.split(\".\");\n\n // If first part is a region prefix (us, eu, apac) or global, skip it\n let prefix = parts[0];\n if ([\"us\", \"eu\", \"apac\", \"global\"].includes(prefix) && parts.length > 1) {\n prefix = parts[1];\n }\n\n const families: BedrockModelFamily[] = [\n \"anthropic\",\n \"meta\",\n \"amazon\",\n \"mistral\",\n \"cohere\",\n \"ai21\",\n ];\n return families.find((f) => prefix === f);\n}\n\n/** Whether a Bedrock model supports prompt caching (Claude and Nova only). */\nexport function bedrockSupportsCaching(model: string): boolean {\n const family = detectBedrockModelFamily(model);\n if (family === \"anthropic\") return true;\n if (family === \"amazon\" && model.includes(\"nova\")) return true;\n return false;\n}\n\n/** Cache value normalization per provider. */\nexport const CACHE_VALUES: Record<Provider, string | undefined> = {\n openai: undefined, // OpenAI auto-caches; no explicit param\n anthropic: \"ephemeral\",\n google: undefined, // Google uses explicit caching API, not a param\n mistral: undefined,\n cohere: undefined,\n bedrock: \"ephemeral\", // Supported for Claude models on Bedrock\n openrouter: undefined, // Depends on underlying provider\n vercel: undefined, // Depends on underlying provider\n};\n\n/** Valid cache TTL values per provider. */\nexport const CACHE_TTLS: Record<Provider, string[] | undefined> = {\n openai: undefined,\n anthropic: [\"5m\", \"1h\"],\n google: undefined,\n mistral: undefined,\n cohere: undefined,\n bedrock: [\"5m\", \"1h\"], // Claude on Bedrock uses same TTLs as direct Anthropic\n openrouter: undefined,\n vercel: undefined,\n};\n\n/** Match a duration expression like \"5m\", \"1h\", \"30m\". */\nexport const DURATION_RE = /^\\d+[mh]$/;\n\n/* ------------------------------------------------------------------ */\n/* UI-consumable metadata for 3rd-party integrations */\n/* ------------------------------------------------------------------ */\n\nexport interface ProviderMeta {\n /** Provider identifier — matches the Provider union type. */\n id: Provider;\n /** Human-readable display name. */\n name: string;\n /** Default / canonical API hostname. */\n host: string;\n /** Brand color as a CSS hex value. */\n color: string;\n}\n\nexport const PROVIDER_META: ProviderMeta[] = [\n { id: \"openai\", name: \"OpenAI\", host: \"api.openai.com\", color: \"#10a37f\" },\n { id: \"anthropic\", name: \"Anthropic\", host: \"api.anthropic.com\", color: \"#e8956a\" },\n { id: \"google\", name: \"Google\", host: \"generativelanguage.googleapis.com\", color: \"#4285f4\" },\n { id: \"mistral\", name: \"Mistral\", host: \"api.mistral.ai\", color: \"#ff7000\" },\n { id: \"cohere\", name: \"Cohere\", host: \"api.cohere.com\", color: \"#39594d\" },\n { id: \"bedrock\", name: \"Bedrock\", host: \"bedrock-runtime.us-east-1.amazonaws.com\", color: \"#ff9900\" },\n { id: \"openrouter\", name: \"OpenRouter\", host: \"openrouter.ai\", color: \"#818cf8\" },\n { id: \"vercel\", name: \"Vercel\", host: \"gateway.ai.vercel.app\", color: \"#ededed\" },\n];\n\n/**\n * Suggested / common model IDs per provider, ordered by recency.\n * Not exhaustive — providers add models frequently.\n */\nexport const MODELS: Record<Provider, string[]> = {\n openai: [\n \"gpt-5.2\", \"gpt-5.2-pro\",\n \"gpt-4.1\", \"gpt-4.1-mini\", \"gpt-4.1-nano\",\n \"o3\", \"o3-mini\", \"o4-mini\", \"o1-pro\",\n ],\n anthropic: [\n \"claude-opus-4-6\", \"claude-sonnet-4-6\",\n \"claude-sonnet-4-5\", \"claude-haiku-4-5\",\n ],\n google: [\n \"gemini-3-pro-preview\", \"gemini-3-flash-preview\",\n \"gemini-2.5-pro\", \"gemini-2.5-flash\",\n ],\n mistral: [\n \"mistral-large-latest\", \"mistral-medium-latest\",\n \"mistral-small-latest\", \"codestral-latest\",\n \"magistral-medium-latest\",\n ],\n cohere: [\n \"command-a-03-2025\",\n \"command-r-plus-08-2024\", \"command-r-08-2024\",\n \"command-r7b-12-2024\",\n ],\n bedrock: [\n \"anthropic.claude-opus-4-6-v1\", \"anthropic.claude-sonnet-4-6-v1\",\n \"anthropic.claude-haiku-4-5-v1\",\n \"amazon.nova-pro-v1\", \"amazon.nova-lite-v1\",\n \"meta.llama3-70b-instruct-v1:0\",\n ],\n openrouter: [\n \"openai/gpt-5.2\", \"anthropic/claude-opus-4-6\",\n \"google/gemini-2.5-pro\", \"mistral/mistral-large-latest\",\n ],\n vercel: [\n \"openai/gpt-5.2\", \"anthropic/claude-opus-4-6\",\n \"google/gemini-2.5-pro\", \"google/gemini-3-pro-preview\",\n \"google/gemini-3-flash-preview\", \"mistral/mistral-large-latest\",\n \"qwen/qwen2.5-pro\",\n ],\n};\n\n/**\n * Canonical parameter spec — keyed by canonical (snake_case) param names\n * with defaults and descriptions for UI consumption.\n */\nexport interface CanonicalParamSpec {\n type: \"number\" | \"string\" | \"boolean\" | \"enum\";\n min?: number;\n max?: number;\n values?: string[];\n default?: string | number | boolean;\n description?: string;\n}\n\nexport const CANONICAL_PARAM_SPECS: Record<Provider, Record<string, CanonicalParamSpec>> = {\n openai: {\n temperature: { type: \"number\", min: 0, max: 2, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Completions count\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n effort: { type: \"enum\", values: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"], default: \"medium\", description: \"Reasoning effort\" },\n },\n anthropic: {\n temperature: { type: \"number\", min: 0, max: 1, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n effort: { type: \"enum\", values: [\"low\", \"medium\", \"high\", \"max\"], default: \"medium\", description: \"Thinking effort\" },\n cache: { type: \"enum\", values: [\"ephemeral\"], default: \"ephemeral\", description: \"Cache control\" },\n cache_ttl: { type: \"enum\", values: [\"5m\", \"1h\"], default: \"5m\", description: \"Cache TTL\" },\n },\n google: {\n temperature: { type: \"number\", min: 0, max: 2, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Candidate count\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n },\n mistral: {\n temperature: { type: \"number\", min: 0, max: 1, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Completions count\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n safe_prompt: { type: \"boolean\", default: false, description: \"Enable safe prompt\" },\n min_tokens: { type: \"number\", min: 0, default: 0, description: \"Minimum tokens\" },\n },\n cohere: {\n temperature: { type: \"number\", min: 0, max: 1, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling (p)\" },\n top_k: { type: \"number\", min: 0, max: 500, default: 40, description: \"Top-K sampling (k)\" },\n frequency_penalty: { type: \"number\", min: 0, max: 1, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: 0, max: 1, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n },\n bedrock: {\n temperature: { type: \"number\", min: 0, max: 1, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n cache: { type: \"enum\", values: [\"ephemeral\"], default: \"ephemeral\", description: \"Cache control\" },\n cache_ttl: { type: \"enum\", values: [\"5m\", \"1h\"], default: \"5m\", description: \"Cache TTL\" },\n },\n openrouter: {\n temperature: { type: \"number\", min: 0, max: 2, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Completions count\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n effort: { type: \"enum\", values: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"], default: \"medium\", description: \"Reasoning effort\" },\n },\n vercel: {\n temperature: { type: \"number\", min: 0, max: 2, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Completions count\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n effort: { type: \"enum\", values: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"], default: \"medium\", description: \"Reasoning effort\" },\n },\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["/Users/dan/code/oss/llm-strings/dist/providers.cjs","../src/provider-meta.ts"],"names":[],"mappings":"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","file":"/Users/dan/code/oss/llm-strings/dist/providers.cjs","sourcesContent":[null,"import type { Provider } from \"./provider-core.js\";\n\n/* ------------------------------------------------------------------ */\n/* UI-consumable metadata for 3rd-party integrations */\n/* ------------------------------------------------------------------ */\n\nexport interface ProviderMeta {\n /** Provider identifier — matches the Provider union type. */\n id: Provider;\n /** Human-readable display name. */\n name: string;\n /** Default / canonical API hostname. */\n host: string;\n /** Brand color as a CSS hex value. */\n color: string;\n}\n\nexport const PROVIDER_META: ProviderMeta[] = [\n { id: \"openai\", name: \"OpenAI\", host: \"api.openai.com\", color: \"#10a37f\" },\n { id: \"anthropic\", name: \"Anthropic\", host: \"api.anthropic.com\", color: \"#e8956a\" },\n { id: \"google\", name: \"Google\", host: \"generativelanguage.googleapis.com\", color: \"#4285f4\" },\n { id: \"mistral\", name: \"Mistral\", host: \"api.mistral.ai\", color: \"#ff7000\" },\n { id: \"cohere\", name: \"Cohere\", host: \"api.cohere.com\", color: \"#39594d\" },\n { id: \"bedrock\", name: \"Bedrock\", host: \"bedrock-runtime.us-east-1.amazonaws.com\", color: \"#ff9900\" },\n { id: \"openrouter\", name: \"OpenRouter\", host: \"openrouter.ai\", color: \"#818cf8\" },\n { id: \"vercel\", name: \"Vercel\", host: \"gateway.ai.vercel.app\", color: \"#ededed\" },\n];\n\n/**\n * Suggested / common model IDs per provider, ordered by recency.\n * Not exhaustive — providers add models frequently.\n */\nexport const MODELS: Record<Provider, string[]> = {\n openai: [\n \"gpt-5.2\", \"gpt-5.2-pro\",\n \"gpt-4.1\", \"gpt-4.1-mini\", \"gpt-4.1-nano\",\n \"o3\", \"o3-mini\", \"o4-mini\", \"o1-pro\",\n ],\n anthropic: [\n \"claude-opus-4-6\", \"claude-sonnet-4-6\",\n \"claude-sonnet-4-5\", \"claude-haiku-4-5\",\n ],\n google: [\n \"gemini-3-pro-preview\", \"gemini-3-flash-preview\",\n \"gemini-2.5-pro\", \"gemini-2.5-flash\",\n ],\n mistral: [\n \"mistral-large-latest\", \"mistral-medium-latest\",\n \"mistral-small-latest\", \"codestral-latest\",\n \"magistral-medium-latest\",\n ],\n cohere: [\n \"command-a-03-2025\",\n \"command-r-plus-08-2024\", \"command-r-08-2024\",\n \"command-r7b-12-2024\",\n ],\n bedrock: [\n \"anthropic.claude-opus-4-6-v1\", \"anthropic.claude-sonnet-4-6-v1\",\n \"anthropic.claude-haiku-4-5-v1\",\n \"amazon.nova-pro-v1\", \"amazon.nova-lite-v1\",\n \"meta.llama3-70b-instruct-v1:0\",\n ],\n openrouter: [\n \"openai/gpt-5.2\", \"anthropic/claude-opus-4-6\",\n \"google/gemini-2.5-pro\", \"mistral/mistral-large-latest\",\n ],\n vercel: [\n \"openai/gpt-5.2\", \"anthropic/claude-opus-4-6\",\n \"google/gemini-2.5-pro\", \"google/gemini-3-pro-preview\",\n \"google/gemini-3-flash-preview\", \"mistral/mistral-large-latest\",\n \"qwen/qwen2.5-pro\",\n ],\n};\n\n/**\n * Canonical parameter spec — keyed by canonical (snake_case) param names\n * with defaults and descriptions for UI consumption.\n */\nexport interface CanonicalParamSpec {\n type: \"number\" | \"string\" | \"boolean\" | \"enum\";\n min?: number;\n max?: number;\n values?: string[];\n default?: string | number | boolean;\n description?: string;\n}\n\nexport const CANONICAL_PARAM_SPECS: Record<Provider, Record<string, CanonicalParamSpec>> = {\n openai: {\n temperature: { type: \"number\", min: 0, max: 2, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Completions count\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n effort: { type: \"enum\", values: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"], default: \"medium\", description: \"Reasoning effort\" },\n },\n anthropic: {\n temperature: { type: \"number\", min: 0, max: 1, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n effort: { type: \"enum\", values: [\"low\", \"medium\", \"high\", \"max\"], default: \"medium\", description: \"Thinking effort\" },\n cache: { type: \"enum\", values: [\"ephemeral\"], default: \"ephemeral\", description: \"Cache control\" },\n cache_ttl: { type: \"enum\", values: [\"5m\", \"1h\"], default: \"5m\", description: \"Cache TTL\" },\n },\n google: {\n temperature: { type: \"number\", min: 0, max: 2, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Candidate count\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n },\n mistral: {\n temperature: { type: \"number\", min: 0, max: 1, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Completions count\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n safe_prompt: { type: \"boolean\", default: false, description: \"Enable safe prompt\" },\n min_tokens: { type: \"number\", min: 0, default: 0, description: \"Minimum tokens\" },\n },\n cohere: {\n temperature: { type: \"number\", min: 0, max: 1, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling (p)\" },\n top_k: { type: \"number\", min: 0, max: 500, default: 40, description: \"Top-K sampling (k)\" },\n frequency_penalty: { type: \"number\", min: 0, max: 1, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: 0, max: 1, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n },\n bedrock: {\n temperature: { type: \"number\", min: 0, max: 1, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n cache: { type: \"enum\", values: [\"ephemeral\"], default: \"ephemeral\", description: \"Cache control\" },\n cache_ttl: { type: \"enum\", values: [\"5m\", \"1h\"], default: \"5m\", description: \"Cache TTL\" },\n },\n openrouter: {\n temperature: { type: \"number\", min: 0, max: 2, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Completions count\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n effort: { type: \"enum\", values: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"], default: \"medium\", description: \"Reasoning effort\" },\n },\n vercel: {\n temperature: { type: \"number\", min: 0, max: 2, default: 0.7, description: \"Controls randomness\" },\n max_tokens: { type: \"number\", min: 1, default: 4096, description: \"Maximum output tokens\" },\n top_p: { type: \"number\", min: 0, max: 1, default: 1, description: \"Nucleus sampling\" },\n top_k: { type: \"number\", min: 0, default: 40, description: \"Top-K sampling\" },\n frequency_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize frequent tokens\" },\n presence_penalty: { type: \"number\", min: -2, max: 2, default: 0, description: \"Penalize repeated topics\" },\n stop: { type: \"string\", default: \"\", description: \"Stop sequences\" },\n n: { type: \"number\", min: 1, default: 1, description: \"Completions count\" },\n seed: { type: \"number\", default: \"\", description: \"Random seed\" },\n stream: { type: \"boolean\", default: false, description: \"Stream response\" },\n effort: { type: \"enum\", values: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"], default: \"medium\", description: \"Reasoning effort\" },\n },\n};\n"]}