llm-strings 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +339 -339
  3. package/dist/ai-sdk.cjs +1146 -117
  4. package/dist/ai-sdk.d.cts +1 -1
  5. package/dist/ai-sdk.d.ts +1 -1
  6. package/dist/ai-sdk.js +95 -58
  7. package/dist/{chunk-7HE4RH6X.js → chunk-4BE457QA.js} +16 -29
  8. package/dist/{chunk-TQJ2ABCT.js → chunk-6HQOCOQI.js} +1 -2
  9. package/dist/{chunk-NZR5DUX5.js → chunk-7Z7DCLZN.js} +14 -3
  10. package/dist/{chunk-OCJX4QFJ.js → chunk-PCJDQTOV.js} +520 -76
  11. package/dist/index.cjs +542 -95
  12. package/dist/index.d.cts +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +4 -5
  15. package/dist/normalize.cjs +1065 -63
  16. package/dist/normalize.d.cts +1 -1
  17. package/dist/normalize.d.ts +1 -1
  18. package/dist/normalize.js +2 -3
  19. package/dist/parse.cjs +1075 -1
  20. package/dist/parse.d.cts +4 -4
  21. package/dist/parse.d.ts +4 -4
  22. package/dist/parse.js +2 -3
  23. package/dist/{provider-core-B934MuhJ.d.cts → provider-core-B1GMszQP.d.cts} +2 -3
  24. package/dist/{provider-core-B934MuhJ.d.ts → provider-core-B1GMszQP.d.ts} +2 -3
  25. package/dist/providers.cjs +542 -697
  26. package/dist/providers.d.cts +3 -8
  27. package/dist/providers.d.ts +3 -8
  28. package/dist/providers.js +25 -624
  29. package/dist/validate.cjs +542 -95
  30. package/dist/validate.d.cts +1 -1
  31. package/dist/validate.d.ts +1 -1
  32. package/dist/validate.js +4 -5
  33. package/package.json +16 -2
  34. package/dist/ai-sdk.cjs.map +0 -1
  35. package/dist/ai-sdk.js.map +0 -1
  36. package/dist/chunk-7HE4RH6X.js.map +0 -1
  37. package/dist/chunk-NZR5DUX5.js.map +0 -1
  38. package/dist/chunk-OCJX4QFJ.js.map +0 -1
  39. package/dist/chunk-TQJ2ABCT.js.map +0 -1
  40. package/dist/index.cjs.map +0 -1
  41. package/dist/index.js.map +0 -1
  42. package/dist/normalize.cjs.map +0 -1
  43. package/dist/normalize.js.map +0 -1
  44. package/dist/parse.cjs.map +0 -1
  45. package/dist/parse.js.map +0 -1
  46. package/dist/providers.cjs.map +0 -1
  47. package/dist/providers.js.map +0 -1
  48. package/dist/validate.cjs.map +0 -1
  49. package/dist/validate.js.map +0 -1
package/dist/ai-sdk.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { NormalizeResult, NormalizeOptions } from './normalize.cjs';
2
2
  import { LlmConnectionConfig } from './parse.cjs';
3
- import { P as Provider } from './provider-core-B934MuhJ.cjs';
3
+ import { P as Provider } from './provider-core-B1GMszQP.cjs';
4
4
 
5
5
  type AiSdkProviderOptions = Record<string, Record<string, unknown>>;
6
6
  interface AiSdkProviderOptionsResult {
package/dist/ai-sdk.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { NormalizeResult, NormalizeOptions } from './normalize.js';
2
2
  import { LlmConnectionConfig } from './parse.js';
3
- import { P as Provider } from './provider-core-B934MuhJ.js';
3
+ import { P as Provider } from './provider-core-B1GMszQP.js';
4
4
 
5
5
  type AiSdkProviderOptions = Record<string, Record<string, unknown>>;
6
6
  interface AiSdkProviderOptionsResult {
package/dist/ai-sdk.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  normalize
3
- } from "./chunk-NZR5DUX5.js";
3
+ } from "./chunk-7Z7DCLZN.js";
4
4
  import {
5
5
  parse
6
- } from "./chunk-TQJ2ABCT.js";
7
- import "./chunk-OCJX4QFJ.js";
6
+ } from "./chunk-6HQOCOQI.js";
7
+ import "./chunk-PCJDQTOV.js";
8
8
 
9
9
  // src/ai-sdk.ts
10
10
  var PROVIDER_OPTION_KEYS = {
@@ -377,6 +377,7 @@ function addGatewayOption(options, key, value) {
377
377
  };
378
378
  const directKeys = /* @__PURE__ */ new Set([
379
379
  "sort",
380
+ "caching",
380
381
  "user",
381
382
  "zeroDataRetention",
382
383
  "disallowPromptTraining",
@@ -400,10 +401,63 @@ function addGatewayOption(options, key, value) {
400
401
  }
401
402
  function addOpenRouterOption(options, key, value) {
402
403
  const target = "openrouter";
404
+ const providerKey = key.startsWith("provider.") ? key.slice(9) : key;
405
+ const providerListKeys = /* @__PURE__ */ new Set([
406
+ "order",
407
+ "only",
408
+ "ignore",
409
+ "quantizations"
410
+ ]);
411
+ const providerObjectKeys = /* @__PURE__ */ new Set([
412
+ "provider",
413
+ "sort",
414
+ "preferred_min_throughput",
415
+ "preferred_max_latency",
416
+ "max_price"
417
+ ]);
418
+ const providerScalarKeys = /* @__PURE__ */ new Set([
419
+ "allow_fallbacks",
420
+ "require_parameters",
421
+ "data_collection",
422
+ "zdr",
423
+ "enforce_distillable_text"
424
+ ]);
403
425
  if (key === "models") {
404
426
  setProviderOption(options, target, "models", parseStringList(value));
405
427
  return;
406
428
  }
429
+ if (key === "transforms") {
430
+ setProviderOption(options, target, "transforms", parseStringList(value));
431
+ return;
432
+ }
433
+ if (key === "plugins") {
434
+ const parsed = parseJson(value);
435
+ setProviderOption(
436
+ options,
437
+ target,
438
+ "plugins",
439
+ Array.isArray(parsed) ? parsed : parseStringList(value)
440
+ );
441
+ return;
442
+ }
443
+ if (key.startsWith("provider.") || providerListKeys.has(providerKey) || providerScalarKeys.has(providerKey) || providerObjectKeys.has(providerKey)) {
444
+ if (providerKey === "provider") {
445
+ mergeObjectOption(options, target, "provider", value);
446
+ return;
447
+ }
448
+ const current = options[target]?.provider;
449
+ const providerOptions = current && typeof current === "object" && !Array.isArray(current) ? { ...current } : {};
450
+ if (providerListKeys.has(providerKey)) {
451
+ providerOptions[providerKey] = parseStringList(value);
452
+ } else if (providerObjectKeys.has(providerKey)) {
453
+ const parsed = parseJson(value);
454
+ providerOptions[providerKey] = parsed !== void 0 ? parsed : typedValue(value);
455
+ } else {
456
+ providerOptions[providerKey] = typedValue(value);
457
+ }
458
+ setProviderOption(options, target, "provider", providerOptions);
459
+ return;
460
+ }
407
461
  if (key === "reasoning") {
408
462
  mergeObjectOption(options, target, "reasoning", value);
409
463
  return;
@@ -445,65 +499,49 @@ function addOpenRouterOption(options, key, value) {
445
499
  function addFlexibleProviderOption(options, target, key, value) {
446
500
  setProviderOption(options, target, key, typedValue(value));
447
501
  }
502
+ var PROVIDER_OPTION_HANDLERS = {
503
+ openai: addOpenAiOption,
504
+ azure: (options, key, value) => addOpenAiOption(options, key, value, "azure"),
505
+ anthropic: addAnthropicOption,
506
+ google: addGoogleOption,
507
+ "google-vertex": (options, key, value) => addGoogleOption(options, key, value, "vertex"),
508
+ mistral: addMistralOption,
509
+ cohere: addCohereOption,
510
+ bedrock: addBedrockOption,
511
+ openrouter: addOpenRouterOption,
512
+ xai: (options, key, value) => addOpenAiOption(options, key, value, "xai"),
513
+ groq: (options, key, value) => addOpenAiOption(options, key, value, "groq"),
514
+ fal: (options, key, value) => addFlexibleProviderOption(options, "fal", key, value),
515
+ deepinfra: (options, key, value) => addOpenAiOption(options, key, value, "deepinfra"),
516
+ "black-forest-labs": (options, key, value) => addFlexibleProviderOption(options, "blackForestLabs", key, value),
517
+ together: (options, key, value) => addOpenAiOption(options, key, value, "together"),
518
+ fireworks: (options, key, value) => addOpenAiOption(options, key, value, "fireworks"),
519
+ deepseek: (options, key, value) => addOpenAiOption(options, key, value, "deepseek"),
520
+ moonshotai: (options, key, value) => addOpenAiOption(options, key, value, "moonshotai"),
521
+ perplexity: (options, key, value) => addOpenAiOption(options, key, value, "perplexity"),
522
+ alibaba: (options, key, value) => addOpenAiOption(options, key, value, "alibaba"),
523
+ cerebras: (options, key, value) => addOpenAiOption(options, key, value, "cerebras"),
524
+ replicate: (options, key, value) => addFlexibleProviderOption(options, "replicate", key, value),
525
+ prodia: (options, key, value) => addFlexibleProviderOption(options, "prodia", key, value),
526
+ luma: (options, key, value) => addFlexibleProviderOption(options, "luma", key, value),
527
+ bytedance: (options, key, value) => addFlexibleProviderOption(options, "bytedance", key, value),
528
+ kling: (options, key, value) => addFlexibleProviderOption(options, "kling", key, value),
529
+ elevenlabs: (options, key, value) => addFlexibleProviderOption(options, "elevenlabs", key, value),
530
+ assemblyai: (options, key, value) => addFlexibleProviderOption(options, "assemblyai", key, value),
531
+ deepgram: (options, key, value) => addFlexibleProviderOption(options, "deepgram", key, value),
532
+ gladia: (options, key, value) => addFlexibleProviderOption(options, "gladia", key, value),
533
+ lmnt: (options, key, value) => addFlexibleProviderOption(options, "lmnt", key, value),
534
+ hume: (options, key, value) => addFlexibleProviderOption(options, "hume", key, value),
535
+ revai: (options, key, value) => addFlexibleProviderOption(options, "revai", key, value),
536
+ baseten: (options, key, value) => addOpenAiOption(options, key, value, "baseten"),
537
+ huggingface: (options, key, value) => addOpenAiOption(options, key, value, "huggingface")
538
+ };
448
539
  function addProviderSpecificOption(options, provider, key, value, includeGatewayOptions) {
449
540
  if (provider === "vercel") {
450
541
  if (includeGatewayOptions) addGatewayOption(options, key, value);
451
542
  return;
452
543
  }
453
- if (provider === "openai") addOpenAiOption(options, key, value);
454
- if (provider === "azure") addOpenAiOption(options, key, value, "azure");
455
- if (provider === "anthropic") addAnthropicOption(options, key, value);
456
- if (provider === "google") addGoogleOption(options, key, value);
457
- if (provider === "google-vertex")
458
- addGoogleOption(options, key, value, "vertex");
459
- if (provider === "mistral") addMistralOption(options, key, value);
460
- if (provider === "cohere") addCohereOption(options, key, value);
461
- if (provider === "bedrock") addBedrockOption(options, key, value);
462
- if (provider === "openrouter") addOpenRouterOption(options, key, value);
463
- if (provider === "xai") addOpenAiOption(options, key, value, "xai");
464
- if (provider === "groq") addOpenAiOption(options, key, value, "groq");
465
- if (provider === "fal") addFlexibleProviderOption(options, "fal", key, value);
466
- if (provider === "deepinfra")
467
- addOpenAiOption(options, key, value, "deepinfra");
468
- if (provider === "black-forest-labs")
469
- addFlexibleProviderOption(options, "blackForestLabs", key, value);
470
- if (provider === "together") addOpenAiOption(options, key, value, "together");
471
- if (provider === "fireworks")
472
- addOpenAiOption(options, key, value, "fireworks");
473
- if (provider === "deepseek") addOpenAiOption(options, key, value, "deepseek");
474
- if (provider === "moonshotai")
475
- addOpenAiOption(options, key, value, "moonshotai");
476
- if (provider === "perplexity")
477
- addOpenAiOption(options, key, value, "perplexity");
478
- if (provider === "alibaba") addOpenAiOption(options, key, value, "alibaba");
479
- if (provider === "cerebras") addOpenAiOption(options, key, value, "cerebras");
480
- if (provider === "replicate")
481
- addFlexibleProviderOption(options, "replicate", key, value);
482
- if (provider === "prodia")
483
- addFlexibleProviderOption(options, "prodia", key, value);
484
- if (provider === "luma")
485
- addFlexibleProviderOption(options, "luma", key, value);
486
- if (provider === "bytedance")
487
- addFlexibleProviderOption(options, "bytedance", key, value);
488
- if (provider === "kling")
489
- addFlexibleProviderOption(options, "kling", key, value);
490
- if (provider === "elevenlabs")
491
- addFlexibleProviderOption(options, "elevenlabs", key, value);
492
- if (provider === "assemblyai")
493
- addFlexibleProviderOption(options, "assemblyai", key, value);
494
- if (provider === "deepgram")
495
- addFlexibleProviderOption(options, "deepgram", key, value);
496
- if (provider === "gladia")
497
- addFlexibleProviderOption(options, "gladia", key, value);
498
- if (provider === "lmnt")
499
- addFlexibleProviderOption(options, "lmnt", key, value);
500
- if (provider === "hume")
501
- addFlexibleProviderOption(options, "hume", key, value);
502
- if (provider === "revai")
503
- addFlexibleProviderOption(options, "revai", key, value);
504
- if (provider === "baseten") addOpenAiOption(options, key, value, "baseten");
505
- if (provider === "huggingface")
506
- addOpenAiOption(options, key, value, "huggingface");
544
+ PROVIDER_OPTION_HANDLERS[provider](options, key, value);
507
545
  }
508
546
  function createAiSdkProviderOptions(configOrResult, options = {}) {
509
547
  const normalized = typeof configOrResult === "string" ? normalize(parse(configOrResult), options) : "changes" in configOrResult && "subProvider" in configOrResult ? configOrResult : normalize(configOrResult, options);
@@ -541,4 +579,3 @@ function createAiSdkProviderOptions(configOrResult, options = {}) {
541
579
  export {
542
580
  createAiSdkProviderOptions
543
581
  };
544
- //# sourceMappingURL=ai-sdk.js.map
@@ -1,18 +1,15 @@
1
1
  import {
2
2
  normalize
3
- } from "./chunk-NZR5DUX5.js";
3
+ } from "./chunk-7Z7DCLZN.js";
4
4
  import {
5
5
  parse
6
- } from "./chunk-TQJ2ABCT.js";
6
+ } from "./chunk-6HQOCOQI.js";
7
7
  import {
8
8
  PARAM_SPECS,
9
9
  PROVIDER_PARAMS,
10
- REASONING_MODEL_UNSUPPORTED,
11
10
  bedrockSupportsCaching,
12
- canHostOpenAIModels,
13
- detectBedrockModelFamily,
14
- isReasoningModel
15
- } from "./chunk-OCJX4QFJ.js";
11
+ detectBedrockModelFamily
12
+ } from "./chunk-PCJDQTOV.js";
16
13
 
17
14
  // src/validate.ts
18
15
  function buildReverseParamMap(provider) {
@@ -62,15 +59,8 @@ function validate(connectionString, options = {}) {
62
59
  const gatewayReverseMap = subProvider ? buildReverseParamMap(provider) : void 0;
63
60
  const knownParams = subProvider ? buildSubProviderKnownParams(provider, subProvider) : new Set(Object.values(PROVIDER_PARAMS[provider]));
64
61
  for (const [key, value] of Object.entries(config.params)) {
65
- if (canHostOpenAIModels(provider) && isReasoningModel(config.model) && REASONING_MODEL_UNSUPPORTED.has(key)) {
66
- issues.push({
67
- param: key,
68
- value,
69
- message: `"${key}" is not supported by OpenAI reasoning model "${config.model}". Use "reasoning_effort" instead of temperature for controlling output.`,
70
- severity: "error"
71
- });
72
- continue;
73
- }
62
+ const subProviderSpecResult = subProvider && gatewayReverseMap ? lookupSubProviderSpec(key, gatewayReverseMap, subProvider) : void 0;
63
+ const gatewayOwnSpec = subProvider && !subProviderSpecResult?.spec ? PARAM_SPECS[provider]?.[key] : void 0;
74
64
  if (provider === "bedrock") {
75
65
  const family = detectBedrockModelFamily(config.model);
76
66
  if (key === "topK" && family && family !== "anthropic" && family !== "cohere" && family !== "mistral") {
@@ -92,20 +82,18 @@ function validate(connectionString, options = {}) {
92
82
  continue;
93
83
  }
94
84
  }
95
- if (!knownParams.has(key) && !specs[key]) {
96
- issues.push({
97
- param: key,
98
- value,
99
- message: `Unknown param "${key}" for ${effectiveProvider}.`,
100
- severity: options.strict ? "error" : "warning"
101
- });
85
+ if (!knownParams.has(key) && !specs[key] && !gatewayOwnSpec) {
86
+ if (options.strict) {
87
+ issues.push({
88
+ param: key,
89
+ value,
90
+ message: `Unknown param "${key}" for ${effectiveProvider}.`,
91
+ severity: "error"
92
+ });
93
+ }
102
94
  continue;
103
95
  }
104
- let spec = specs[key];
105
- if (subProvider && gatewayReverseMap && !spec) {
106
- const result = lookupSubProviderSpec(key, gatewayReverseMap, subProvider);
107
- spec = result.spec;
108
- }
96
+ const spec = subProviderSpecResult?.spec ?? gatewayOwnSpec ?? specs[key];
109
97
  if (!spec) continue;
110
98
  if ((effectiveProvider === "anthropic" || provider === "bedrock" && detectBedrockModelFamily(config.model) === "anthropic") && (key === "temperature" || key === "top_p" || key === "topP")) {
111
99
  const otherKey = key === "temperature" ? provider === "bedrock" ? "topP" : "top_p" : "temperature";
@@ -173,4 +161,3 @@ function validate(connectionString, options = {}) {
173
161
  export {
174
162
  validate
175
163
  };
176
- //# sourceMappingURL=chunk-7HE4RH6X.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveHostAlias
3
- } from "./chunk-OCJX4QFJ.js";
3
+ } from "./chunk-PCJDQTOV.js";
4
4
 
5
5
  // src/parse.ts
6
6
  function parse(connectionString) {
@@ -40,4 +40,3 @@ export {
40
40
  parse,
41
41
  build
42
42
  };
43
- //# sourceMappingURL=chunk-TQJ2ABCT.js.map
@@ -2,8 +2,8 @@ import {
2
2
  ALIASES,
3
3
  CACHE_TTLS,
4
4
  CACHE_VALUES,
5
- DURATION_RE,
6
5
  PROVIDER_PARAMS,
6
+ REASONING_MODEL_UNSUPPORTED,
7
7
  bedrockSupportsCaching,
8
8
  canHostOpenAIModels,
9
9
  detectGatewaySubProvider,
@@ -11,9 +11,10 @@ import {
11
11
  isGatewayProvider,
12
12
  isReasoningModel,
13
13
  providerFromHostAlias
14
- } from "./chunk-OCJX4QFJ.js";
14
+ } from "./chunk-PCJDQTOV.js";
15
15
 
16
16
  // src/normalize.ts
17
+ var DURATION_RE = /^\d+[mh]$/;
17
18
  function normalize(config, options = {}) {
18
19
  const provider = (config.hostAlias ? providerFromHostAlias(config.hostAlias) : void 0) ?? detectProvider(config.host);
19
20
  const subProvider = provider && isGatewayProvider(provider) ? detectGatewaySubProvider(config.model) : void 0;
@@ -101,6 +102,17 @@ function normalize(config, options = {}) {
101
102
  }
102
103
  key = "max_completion_tokens";
103
104
  }
105
+ if (provider && canHostOpenAIModels(provider) && isReasoningModel(config.model) && REASONING_MODEL_UNSUPPORTED.has(key)) {
106
+ if (options.verbose) {
107
+ changes.push({
108
+ from: key,
109
+ to: "(dropped)",
110
+ value,
111
+ reason: `${provider} reasoning model "${config.model}" does not support "${key}"`
112
+ });
113
+ }
114
+ continue;
115
+ }
104
116
  params[key] = value;
105
117
  }
106
118
  return {
@@ -114,4 +126,3 @@ function normalize(config, options = {}) {
114
126
  export {
115
127
  normalize
116
128
  };
117
- //# sourceMappingURL=chunk-NZR5DUX5.js.map