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/providers.js CHANGED
@@ -2,7 +2,6 @@ import {
2
2
  ALIASES,
3
3
  CACHE_TTLS,
4
4
  CACHE_VALUES,
5
- DURATION_RE,
6
5
  HOST_ALIASES,
7
6
  PARAM_SPECS,
8
7
  PROVIDER_PARAMS,
@@ -14,9 +13,10 @@ import {
14
13
  detectProvider,
15
14
  isGatewayProvider,
16
15
  isReasoningModel,
16
+ modelMatchesFamily,
17
17
  providerFromHostAlias,
18
18
  resolveHostAlias
19
- } from "./chunk-OCJX4QFJ.js";
19
+ } from "./chunk-PCJDQTOV.js";
20
20
 
21
21
  // src/provider-meta.ts
22
22
  var PROVIDER_META = [
@@ -172,634 +172,35 @@ var PROVIDER_META = [
172
172
  color: "#ffcc4d"
173
173
  }
174
174
  ];
175
- var MODELS = {
176
- openai: [
177
- "gpt-5.2",
178
- "gpt-5.2-pro",
179
- "gpt-4.1",
180
- "gpt-4.1-mini",
181
- "gpt-4.1-nano",
182
- "o3",
183
- "o3-mini",
184
- "o4-mini",
185
- "o1-pro"
186
- ],
187
- azure: ["gpt-5.2", "gpt-4.1", "o3", "o4-mini"],
188
- anthropic: [
189
- "claude-opus-4-6",
190
- "claude-sonnet-4-6",
191
- "claude-sonnet-4-5",
192
- "claude-haiku-4-5"
193
- ],
194
- google: [
195
- "gemini-3-pro-preview",
196
- "gemini-3-flash-preview",
197
- "gemini-2.5-pro",
198
- "gemini-2.5-flash"
199
- ],
200
- "google-vertex": [
201
- "gemini-3-pro-preview",
202
- "gemini-3-flash-preview",
203
- "gemini-2.5-pro",
204
- "gemini-2.5-flash"
205
- ],
206
- mistral: [
207
- "mistral-large-latest",
208
- "mistral-medium-latest",
209
- "mistral-small-latest",
210
- "codestral-latest",
211
- "magistral-medium-latest"
212
- ],
213
- cohere: [
214
- "command-a-03-2025",
215
- "command-r-plus-08-2024",
216
- "command-r-08-2024",
217
- "command-r7b-12-2024"
218
- ],
219
- bedrock: [
220
- "anthropic.claude-opus-4-6-v1",
221
- "anthropic.claude-sonnet-4-6-v1",
222
- "anthropic.claude-haiku-4-5-v1",
223
- "amazon.nova-pro-v1",
224
- "amazon.nova-lite-v1",
225
- "meta.llama3-70b-instruct-v1:0"
226
- ],
227
- openrouter: [
228
- "openai/gpt-5.2",
229
- "anthropic/claude-opus-4-6",
230
- "google/gemini-2.5-pro",
231
- "mistral/mistral-large-latest"
232
- ],
233
- vercel: [
234
- "openai/gpt-5.2",
235
- "anthropic/claude-opus-4-6",
236
- "google/gemini-2.5-pro",
237
- "google/gemini-3-pro-preview",
238
- "google/gemini-3-flash-preview",
239
- "mistral/mistral-large-latest",
240
- "qwen/qwen2.5-pro"
241
- ],
242
- xai: ["grok-4", "grok-3", "grok-3-mini"],
243
- groq: ["openai/gpt-oss-120b", "llama-3.3-70b-versatile"],
244
- fal: ["fal-ai/flux-pro", "fal-ai/imagen4/preview"],
245
- deepinfra: [
246
- "meta-llama/Meta-Llama-3.1-70B-Instruct",
247
- "deepseek-ai/DeepSeek-V3"
248
- ],
249
- "black-forest-labs": ["flux-pro-1.1", "flux-kontext-pro"],
250
- together: [
251
- "meta-llama/Llama-3.3-70B-Instruct-Turbo",
252
- "deepseek-ai/DeepSeek-V3"
253
- ],
254
- fireworks: [
255
- "accounts/fireworks/models/llama-v3p1-70b-instruct",
256
- "accounts/fireworks/models/deepseek-v3"
257
- ],
258
- deepseek: ["deepseek-chat", "deepseek-reasoner"],
259
- moonshotai: ["kimi-k2-0905-preview", "moonshot-v1-128k"],
260
- perplexity: ["sonar", "sonar-pro", "sonar-reasoning"],
261
- alibaba: ["qwen-plus", "qwen-max", "qwen3-coder-plus"],
262
- cerebras: ["llama3.1-8b", "llama-3.3-70b"],
263
- replicate: [
264
- "black-forest-labs/flux-schnell",
265
- "meta/meta-llama-3-70b-instruct"
266
- ],
267
- prodia: ["sdxl", "flux-schnell"],
268
- luma: ["ray-2", "photon-1"],
269
- bytedance: ["seedream-4-0", "seedance-1-0-pro"],
270
- kling: ["kling-v2.1", "kling-v1.6"],
271
- elevenlabs: ["eleven_multilingual_v2", "eleven_turbo_v2_5"],
272
- assemblyai: ["universal"],
273
- deepgram: ["nova-3", "nova-2"],
274
- gladia: ["solaria-1"],
275
- lmnt: ["aurora"],
276
- hume: ["octave"],
277
- revai: ["machine"],
278
- baseten: ["meta-llama/Llama-3.1-8B-Instruct", "deepseek-ai/DeepSeek-R1"],
279
- huggingface: [
280
- "meta-llama/Llama-3.1-8B-Instruct",
281
- "mistralai/Mistral-7B-Instruct-v0.3"
282
- ]
283
- };
284
- var OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS = {
285
- temperature: {
286
- type: "number",
287
- min: 0,
288
- max: 2,
289
- default: 0.7,
290
- description: "Controls randomness"
291
- },
292
- max_tokens: {
293
- type: "number",
294
- min: 1,
295
- default: 4096,
296
- description: "Maximum output tokens"
297
- },
298
- top_p: {
299
- type: "number",
300
- min: 0,
301
- max: 1,
302
- default: 1,
303
- description: "Nucleus sampling"
304
- },
305
- top_k: {
306
- type: "number",
307
- min: 0,
308
- default: 40,
309
- description: "Top-K sampling"
310
- },
311
- frequency_penalty: {
312
- type: "number",
313
- min: -2,
314
- max: 2,
315
- default: 0,
316
- description: "Penalize frequent tokens"
317
- },
318
- presence_penalty: {
319
- type: "number",
320
- min: -2,
321
- max: 2,
322
- default: 0,
323
- description: "Penalize repeated topics"
324
- },
325
- stop: { type: "string", default: "", description: "Stop sequences" },
326
- n: { type: "number", min: 1, default: 1, description: "Completions count" },
327
- seed: { type: "number", default: "", description: "Random seed" },
328
- stream: { type: "boolean", default: false, description: "Stream response" },
329
- effort: {
330
- type: "enum",
331
- values: ["none", "minimal", "low", "medium", "high", "xhigh"],
332
- default: "medium",
333
- description: "Reasoning effort"
334
- }
335
- };
336
- var GOOGLE_COMPATIBLE_CANONICAL_PARAM_SPECS = {
337
- temperature: {
338
- type: "number",
339
- min: 0,
340
- max: 2,
341
- default: 0.7,
342
- description: "Controls randomness"
343
- },
344
- max_tokens: {
345
- type: "number",
346
- min: 1,
347
- default: 4096,
348
- description: "Maximum output tokens"
349
- },
350
- top_p: {
351
- type: "number",
352
- min: 0,
353
- max: 1,
354
- default: 1,
355
- description: "Nucleus sampling"
356
- },
357
- top_k: {
358
- type: "number",
359
- min: 0,
360
- default: 40,
361
- description: "Top-K sampling"
362
- },
363
- frequency_penalty: {
364
- type: "number",
365
- min: -2,
366
- max: 2,
367
- default: 0,
368
- description: "Penalize frequent tokens"
369
- },
370
- presence_penalty: {
371
- type: "number",
372
- min: -2,
373
- max: 2,
374
- default: 0,
375
- description: "Penalize repeated topics"
376
- },
377
- stop: { type: "string", default: "", description: "Stop sequences" },
378
- n: { type: "number", min: 1, default: 1, description: "Candidate count" },
379
- stream: { type: "boolean", default: false, description: "Stream response" },
380
- seed: { type: "number", default: "", description: "Random seed" }
381
- };
382
- var CANONICAL_PARAM_SPECS = {
383
- openai: {
384
- temperature: {
385
- type: "number",
386
- min: 0,
387
- max: 2,
388
- default: 0.7,
389
- description: "Controls randomness"
390
- },
391
- max_tokens: {
392
- type: "number",
393
- min: 1,
394
- default: 4096,
395
- description: "Maximum output tokens"
396
- },
397
- top_p: {
398
- type: "number",
399
- min: 0,
400
- max: 1,
401
- default: 1,
402
- description: "Nucleus sampling"
403
- },
404
- frequency_penalty: {
405
- type: "number",
406
- min: -2,
407
- max: 2,
408
- default: 0,
409
- description: "Penalize frequent tokens"
410
- },
411
- presence_penalty: {
412
- type: "number",
413
- min: -2,
414
- max: 2,
415
- default: 0,
416
- description: "Penalize repeated topics"
417
- },
418
- stop: { type: "string", default: "", description: "Stop sequences" },
419
- n: { type: "number", min: 1, default: 1, description: "Completions count" },
420
- seed: { type: "number", default: "", description: "Random seed" },
421
- stream: { type: "boolean", default: false, description: "Stream response" },
422
- effort: {
423
- type: "enum",
424
- values: ["none", "minimal", "low", "medium", "high", "xhigh"],
425
- default: "medium",
426
- description: "Reasoning effort"
175
+ function toCanonicalParamSpec(spec) {
176
+ return {
177
+ ...spec,
178
+ type: spec.values ? "enum" : spec.type,
179
+ default: spec.default ?? (spec.type === "string" && !spec.values ? "" : void 0)
180
+ };
181
+ }
182
+ function deriveCanonicalParamSpecs() {
183
+ const specs = {};
184
+ for (const provider of Object.keys(PROVIDER_PARAMS)) {
185
+ specs[provider] = {};
186
+ for (const [canonicalName, providerName] of Object.entries(
187
+ PROVIDER_PARAMS[provider]
188
+ )) {
189
+ const spec = PARAM_SPECS[provider][providerName];
190
+ if (spec) {
191
+ specs[provider][canonicalName] = toCanonicalParamSpec(spec);
192
+ }
427
193
  }
428
- },
429
- azure: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
430
- anthropic: {
431
- temperature: {
432
- type: "number",
433
- min: 0,
434
- max: 1,
435
- default: 0.7,
436
- description: "Controls randomness"
437
- },
438
- max_tokens: {
439
- type: "number",
440
- min: 1,
441
- default: 4096,
442
- description: "Maximum output tokens"
443
- },
444
- top_p: {
445
- type: "number",
446
- min: 0,
447
- max: 1,
448
- default: 1,
449
- description: "Nucleus sampling"
450
- },
451
- top_k: {
452
- type: "number",
453
- min: 0,
454
- default: 40,
455
- description: "Top-K sampling"
456
- },
457
- stop: { type: "string", default: "", description: "Stop sequences" },
458
- stream: { type: "boolean", default: false, description: "Stream response" },
459
- effort: {
460
- type: "enum",
461
- values: ["low", "medium", "high", "max"],
462
- default: "medium",
463
- description: "Thinking effort"
464
- },
465
- cache: {
466
- type: "enum",
467
- values: ["ephemeral"],
468
- default: "ephemeral",
469
- description: "Cache control"
470
- },
471
- cache_ttl: {
472
- type: "enum",
473
- values: ["5m", "1h"],
474
- default: "5m",
475
- description: "Cache TTL"
476
- }
477
- },
478
- google: {
479
- temperature: {
480
- type: "number",
481
- min: 0,
482
- max: 2,
483
- default: 0.7,
484
- description: "Controls randomness"
485
- },
486
- max_tokens: {
487
- type: "number",
488
- min: 1,
489
- default: 4096,
490
- description: "Maximum output tokens"
491
- },
492
- top_p: {
493
- type: "number",
494
- min: 0,
495
- max: 1,
496
- default: 1,
497
- description: "Nucleus sampling"
498
- },
499
- top_k: {
500
- type: "number",
501
- min: 0,
502
- default: 40,
503
- description: "Top-K sampling"
504
- },
505
- frequency_penalty: {
506
- type: "number",
507
- min: -2,
508
- max: 2,
509
- default: 0,
510
- description: "Penalize frequent tokens"
511
- },
512
- presence_penalty: {
513
- type: "number",
514
- min: -2,
515
- max: 2,
516
- default: 0,
517
- description: "Penalize repeated topics"
518
- },
519
- stop: { type: "string", default: "", description: "Stop sequences" },
520
- n: { type: "number", min: 1, default: 1, description: "Candidate count" },
521
- stream: { type: "boolean", default: false, description: "Stream response" },
522
- seed: { type: "number", default: "", description: "Random seed" }
523
- },
524
- "google-vertex": GOOGLE_COMPATIBLE_CANONICAL_PARAM_SPECS,
525
- mistral: {
526
- temperature: {
527
- type: "number",
528
- min: 0,
529
- max: 1,
530
- default: 0.7,
531
- description: "Controls randomness"
532
- },
533
- max_tokens: {
534
- type: "number",
535
- min: 1,
536
- default: 4096,
537
- description: "Maximum output tokens"
538
- },
539
- top_p: {
540
- type: "number",
541
- min: 0,
542
- max: 1,
543
- default: 1,
544
- description: "Nucleus sampling"
545
- },
546
- frequency_penalty: {
547
- type: "number",
548
- min: -2,
549
- max: 2,
550
- default: 0,
551
- description: "Penalize frequent tokens"
552
- },
553
- presence_penalty: {
554
- type: "number",
555
- min: -2,
556
- max: 2,
557
- default: 0,
558
- description: "Penalize repeated topics"
559
- },
560
- stop: { type: "string", default: "", description: "Stop sequences" },
561
- n: { type: "number", min: 1, default: 1, description: "Completions count" },
562
- seed: { type: "number", default: "", description: "Random seed" },
563
- stream: { type: "boolean", default: false, description: "Stream response" },
564
- safe_prompt: {
565
- type: "boolean",
566
- default: false,
567
- description: "Enable safe prompt"
568
- },
569
- min_tokens: {
570
- type: "number",
571
- min: 0,
572
- default: 0,
573
- description: "Minimum tokens"
574
- }
575
- },
576
- cohere: {
577
- temperature: {
578
- type: "number",
579
- min: 0,
580
- max: 1,
581
- default: 0.7,
582
- description: "Controls randomness"
583
- },
584
- max_tokens: {
585
- type: "number",
586
- min: 1,
587
- default: 4096,
588
- description: "Maximum output tokens"
589
- },
590
- top_p: {
591
- type: "number",
592
- min: 0,
593
- max: 1,
594
- default: 1,
595
- description: "Nucleus sampling (p)"
596
- },
597
- top_k: {
598
- type: "number",
599
- min: 0,
600
- max: 500,
601
- default: 40,
602
- description: "Top-K sampling (k)"
603
- },
604
- frequency_penalty: {
605
- type: "number",
606
- min: 0,
607
- max: 1,
608
- default: 0,
609
- description: "Penalize frequent tokens"
610
- },
611
- presence_penalty: {
612
- type: "number",
613
- min: 0,
614
- max: 1,
615
- default: 0,
616
- description: "Penalize repeated topics"
617
- },
618
- stop: { type: "string", default: "", description: "Stop sequences" },
619
- stream: { type: "boolean", default: false, description: "Stream response" },
620
- seed: { type: "number", default: "", description: "Random seed" }
621
- },
622
- bedrock: {
623
- temperature: {
624
- type: "number",
625
- min: 0,
626
- max: 1,
627
- default: 0.7,
628
- description: "Controls randomness"
629
- },
630
- max_tokens: {
631
- type: "number",
632
- min: 1,
633
- default: 4096,
634
- description: "Maximum output tokens"
635
- },
636
- top_p: {
637
- type: "number",
638
- min: 0,
639
- max: 1,
640
- default: 1,
641
- description: "Nucleus sampling"
642
- },
643
- top_k: {
644
- type: "number",
645
- min: 0,
646
- default: 40,
647
- description: "Top-K sampling"
648
- },
649
- stop: { type: "string", default: "", description: "Stop sequences" },
650
- stream: { type: "boolean", default: false, description: "Stream response" },
651
- cache: {
652
- type: "enum",
653
- values: ["ephemeral"],
654
- default: "ephemeral",
655
- description: "Cache control"
656
- },
657
- cache_ttl: {
658
- type: "enum",
659
- values: ["5m", "1h"],
660
- default: "5m",
661
- description: "Cache TTL"
662
- }
663
- },
664
- openrouter: {
665
- temperature: {
666
- type: "number",
667
- min: 0,
668
- max: 2,
669
- default: 0.7,
670
- description: "Controls randomness"
671
- },
672
- max_tokens: {
673
- type: "number",
674
- min: 1,
675
- default: 4096,
676
- description: "Maximum output tokens"
677
- },
678
- top_p: {
679
- type: "number",
680
- min: 0,
681
- max: 1,
682
- default: 1,
683
- description: "Nucleus sampling"
684
- },
685
- top_k: {
686
- type: "number",
687
- min: 0,
688
- default: 40,
689
- description: "Top-K sampling"
690
- },
691
- frequency_penalty: {
692
- type: "number",
693
- min: -2,
694
- max: 2,
695
- default: 0,
696
- description: "Penalize frequent tokens"
697
- },
698
- presence_penalty: {
699
- type: "number",
700
- min: -2,
701
- max: 2,
702
- default: 0,
703
- description: "Penalize repeated topics"
704
- },
705
- stop: { type: "string", default: "", description: "Stop sequences" },
706
- n: { type: "number", min: 1, default: 1, description: "Completions count" },
707
- seed: { type: "number", default: "", description: "Random seed" },
708
- stream: { type: "boolean", default: false, description: "Stream response" },
709
- effort: {
710
- type: "enum",
711
- values: ["none", "minimal", "low", "medium", "high", "xhigh"],
712
- default: "medium",
713
- description: "Reasoning effort"
714
- }
715
- },
716
- vercel: {
717
- temperature: {
718
- type: "number",
719
- min: 0,
720
- max: 2,
721
- default: 0.7,
722
- description: "Controls randomness"
723
- },
724
- max_tokens: {
725
- type: "number",
726
- min: 1,
727
- default: 4096,
728
- description: "Maximum output tokens"
729
- },
730
- top_p: {
731
- type: "number",
732
- min: 0,
733
- max: 1,
734
- default: 1,
735
- description: "Nucleus sampling"
736
- },
737
- top_k: {
738
- type: "number",
739
- min: 0,
740
- default: 40,
741
- description: "Top-K sampling"
742
- },
743
- frequency_penalty: {
744
- type: "number",
745
- min: -2,
746
- max: 2,
747
- default: 0,
748
- description: "Penalize frequent tokens"
749
- },
750
- presence_penalty: {
751
- type: "number",
752
- min: -2,
753
- max: 2,
754
- default: 0,
755
- description: "Penalize repeated topics"
756
- },
757
- stop: { type: "string", default: "", description: "Stop sequences" },
758
- n: { type: "number", min: 1, default: 1, description: "Completions count" },
759
- seed: { type: "number", default: "", description: "Random seed" },
760
- stream: { type: "boolean", default: false, description: "Stream response" },
761
- effort: {
762
- type: "enum",
763
- values: ["none", "minimal", "low", "medium", "high", "xhigh"],
764
- default: "medium",
765
- description: "Reasoning effort"
766
- }
767
- },
768
- xai: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
769
- groq: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
770
- fal: {},
771
- deepinfra: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
772
- "black-forest-labs": {},
773
- together: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
774
- fireworks: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
775
- deepseek: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
776
- moonshotai: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
777
- perplexity: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
778
- alibaba: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
779
- cerebras: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
780
- replicate: {},
781
- prodia: {},
782
- luma: {},
783
- bytedance: {},
784
- kling: {},
785
- elevenlabs: {},
786
- assemblyai: {},
787
- deepgram: {},
788
- gladia: {},
789
- lmnt: {},
790
- hume: {},
791
- revai: {},
792
- baseten: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS,
793
- huggingface: OPENAI_COMPATIBLE_CANONICAL_PARAM_SPECS
794
- };
194
+ }
195
+ return specs;
196
+ }
197
+ var CANONICAL_PARAM_SPECS = deriveCanonicalParamSpecs();
795
198
  export {
796
199
  ALIASES,
797
200
  CACHE_TTLS,
798
201
  CACHE_VALUES,
799
202
  CANONICAL_PARAM_SPECS,
800
- DURATION_RE,
801
203
  HOST_ALIASES,
802
- MODELS,
803
204
  PARAM_SPECS,
804
205
  PROVIDER_META,
805
206
  PROVIDER_PARAMS,
@@ -811,7 +212,7 @@ export {
811
212
  detectProvider,
812
213
  isGatewayProvider,
813
214
  isReasoningModel,
215
+ modelMatchesFamily,
814
216
  providerFromHostAlias,
815
217
  resolveHostAlias
816
218
  };
817
- //# sourceMappingURL=providers.js.map