@shop-os/modelkit 0.1.9 → 0.1.11

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.
package/dist/catalog.cjs CHANGED
@@ -134,8 +134,7 @@ var Catalog = class _Catalog {
134
134
  };
135
135
 
136
136
  // src/catalog/image.ts
137
- var IMAGE_USAGE = { unit: "images", modality: "IMAGE" };
138
- var IMAGE_GENERATE_EDIT = { imageGenerate: true, imageEdit: true };
137
+ var IMAGE_USAGE = { unit: "images" };
139
138
  var GEMINI_RATIOS = [
140
139
  "1:1",
141
140
  "2:3",
@@ -167,8 +166,7 @@ function geminiImage(id, label, aliases, sizes, display, exposure) {
167
166
  defaults: { size: "1K", aspectRatio: "1:1" },
168
167
  usage: { ...IMAGE_USAGE, slug: "gemini" },
169
168
  pricingKind: "image_size",
170
- display,
171
- capabilities: { ...IMAGE_GENERATE_EDIT }
169
+ display
172
170
  };
173
171
  return model;
174
172
  }
@@ -255,8 +253,7 @@ var IMAGE_MODELS = [
255
253
  provider: "openai",
256
254
  description: "The most capable model for image editing and complex creative instructions. Excels at text rendering, visual consistency, design generation, and iterative refinement.",
257
255
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/1204b494-8962-4f7f-af5e-699a8bdc98e3_compressed.png"
258
- },
259
- capabilities: { ...IMAGE_GENERATE_EDIT }
256
+ }
260
257
  },
261
258
  {
262
259
  // Same Images API surface as gpt-image-2 plus the "xhigh" and "max" quality tiers.
@@ -290,8 +287,7 @@ var IMAGE_MODELS = [
290
287
  display: {
291
288
  provider: "openai",
292
289
  description: "OpenAI's most capable GPT Image 2.5 tier, built for editing precision; takes text and image input and outputs images in low, medium, high, xhigh, or max quality."
293
- },
294
- capabilities: { ...IMAGE_GENERATE_EDIT }
290
+ }
295
291
  },
296
292
  {
297
293
  // Same Images API surface as gpt-image-2 plus the "xhigh" and "max" quality tiers.
@@ -325,8 +321,7 @@ var IMAGE_MODELS = [
325
321
  display: {
326
322
  provider: "openai",
327
323
  description: "OpenAI's fastest GPT Image 2.5 tier for high-quality everyday image generation and editing; takes text and image input and outputs images."
328
- },
329
- capabilities: { ...IMAGE_GENERATE_EDIT }
324
+ }
330
325
  },
331
326
  {
332
327
  // Cowork allows 7 ratios; trigger-workflows allows 9 (adds 3:2, 9:21, drops 4:5/5:4).
@@ -364,8 +359,7 @@ var IMAGE_MODELS = [
364
359
  provider: "meta",
365
360
  description: "Meta's image model with built-in world knowledge and strong prompt adherence. Great for concept-rich scenes, realistic compositions, and reference-guided edits.",
366
361
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/characters/1787909065794-k9a7zz.png"
367
- },
368
- capabilities: { ...IMAGE_GENERATE_EDIT }
362
+ }
369
363
  },
370
364
  {
371
365
  id: "seedream-5-0-pro",
@@ -389,9 +383,9 @@ var IMAGE_MODELS = [
389
383
  pricingKind: "image_size",
390
384
  display: {
391
385
  provider: "bytedance",
386
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/3bba5d81-4e57-4e71-911b-cdfa05acca2c_compressed.png",
392
387
  description: "ByteDance Seedream 5.0 Pro text-to-image and multi-reference image-to-image (up to 10 inputs) with region editing; outputs 1K, 1.5K, or 2K."
393
- },
394
- capabilities: { ...IMAGE_GENERATE_EDIT }
388
+ }
395
389
  },
396
390
  {
397
391
  id: "seedream-4.5",
@@ -428,8 +422,7 @@ var IMAGE_MODELS = [
428
422
  display: {
429
423
  provider: "bytedance",
430
424
  description: "ByteDance Seedream 4.5 text-to-image and image-to-image with up to 14 reference images and batch image-set generation; outputs 2K or 4K."
431
- },
432
- capabilities: { ...IMAGE_GENERATE_EDIT }
425
+ }
433
426
  },
434
427
  {
435
428
  id: "flux-2-pro",
@@ -451,9 +444,9 @@ var IMAGE_MODELS = [
451
444
  pricingKind: "image_size",
452
445
  display: {
453
446
  provider: "black-forest-labs",
447
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/flux.png",
454
448
  description: "Black Forest Labs FLUX.2 [pro] text-to-image and multi-reference editing model served via Prodia; takes a prompt and up to 8 input images and outputs up to 4096x4096."
455
- },
456
- capabilities: { ...IMAGE_GENERATE_EDIT }
449
+ }
457
450
  },
458
451
  {
459
452
  // Prodia's gemini-3-pro jobs take aspect_ratio + resolution (1K/2K/4K), not
@@ -479,8 +472,7 @@ var IMAGE_MODELS = [
479
472
  display: {
480
473
  provider: "google",
481
474
  description: "Google Gemini 3 Pro image generation and editing served via Prodia; takes a prompt plus up to 3 reference images and outputs 1K, 2K, or 4K."
482
- },
483
- capabilities: { ...IMAGE_GENERATE_EDIT }
475
+ }
484
476
  },
485
477
  {
486
478
  // Nano Banana (img2img.v2) is flat-rate with aspect_ratio only; 3:2, 4:5,
@@ -505,8 +497,7 @@ var IMAGE_MODELS = [
505
497
  display: {
506
498
  provider: "google",
507
499
  description: "Google Nano Banana image generation and editing served via Prodia; takes a prompt plus 1-3 input images and matches the first input's aspect ratio in roughly 8 seconds."
508
- },
509
- capabilities: { ...IMAGE_GENERATE_EDIT }
500
+ }
510
501
  },
511
502
  {
512
503
  // WAN 2.7 takes `images` (up to 9) and a `size` enum whose exact values
@@ -527,13 +518,12 @@ var IMAGE_MODELS = [
527
518
  supports: []
528
519
  },
529
520
  defaults: { size: "1K", aspectRatio: "1:1" },
530
- usage: { unit: "compute_seconds", modality: "IMAGE" },
521
+ usage: { unit: "compute_seconds" },
531
522
  pricingKind: "image_size",
532
523
  display: {
533
524
  provider: "alibaba",
534
525
  description: "Alibaba Wan 2.7 Image Pro text-to-image and image-editing model; takes a prompt plus up to 9 reference images and generates up to 4K (4096x4096)."
535
- },
536
- capabilities: { ...IMAGE_GENERATE_EDIT }
526
+ }
537
527
  },
538
528
  {
539
529
  // Qwen Image 2 Pro has aspect_ratio but no size input; resolution follows
@@ -555,13 +545,12 @@ var IMAGE_MODELS = [
555
545
  supports: []
556
546
  },
557
547
  defaults: { aspectRatio: "1:1" },
558
- usage: { unit: "compute_seconds", modality: "IMAGE" },
548
+ usage: { unit: "compute_seconds" },
559
549
  pricingKind: "image_size",
560
550
  display: {
561
551
  provider: "alibaba",
562
552
  description: "Alibaba Qwen Image 2 Pro unified text-to-image and editing model; takes a prompt plus an optional single reference image and generates native 2K output."
563
- },
564
- capabilities: { ...IMAGE_GENERATE_EDIT }
553
+ }
565
554
  },
566
555
  {
567
556
  // Qwen Image Edit Plus takes aspect_ratio (or match_input_image) and
@@ -583,17 +572,17 @@ var IMAGE_MODELS = [
583
572
  supports: ["outputFormat"]
584
573
  },
585
574
  defaults: { outputFormat: "png" },
586
- usage: { unit: "compute_seconds", modality: "IMAGE" },
575
+ usage: { unit: "compute_seconds" },
587
576
  pricingKind: "image_size",
588
577
  display: {
589
578
  provider: "alibaba",
590
579
  description: "Alibaba Qwen Image Edit Plus with Lightning and a skin-retouching LoRA; takes one or more reference images plus an edit prompt and outputs webp, jpg, or png."
591
- },
592
- capabilities: { ...IMAGE_GENERATE_EDIT }
580
+ }
593
581
  }
594
582
  ];
595
583
 
596
584
  // src/catalog/other.ts
585
+ var GOOGLE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
597
586
  var OTHER_MODELS = [
598
587
  {
599
588
  id: "lyria-3-clip-preview",
@@ -610,10 +599,11 @@ var OTHER_MODELS = [
610
599
  supports: []
611
600
  },
612
601
  defaults: {},
613
- usage: { unit: "images", modality: "AUDIO" },
602
+ usage: { unit: "images" },
614
603
  pricingKind: "flat",
615
604
  display: {
616
605
  provider: "google",
606
+ logo: GOOGLE_LOGO,
617
607
  description: "Google Lyria 3 Clip short music clips, loops, and previews; takes text and up to 10 image prompts and returns a fixed 30-second MP3 plus lyrics."
618
608
  },
619
609
  capabilities: {}
@@ -632,10 +622,11 @@ var OTHER_MODELS = [
632
622
  supports: []
633
623
  },
634
624
  defaults: {},
635
- usage: { unit: "images", modality: "AUDIO" },
625
+ usage: { unit: "images" },
636
626
  pricingKind: "flat",
637
627
  display: {
638
628
  provider: "google",
629
+ logo: GOOGLE_LOGO,
639
630
  description: "Google Lyria 3 Pro flagship music model for full-length songs with verses, choruses, and bridges; takes text and up to 10 image prompts and returns MP3 plus lyrics."
640
631
  },
641
632
  capabilities: {}
@@ -654,7 +645,7 @@ var OTHER_MODELS = [
654
645
  supports: ["seed", "negativePrompt"]
655
646
  },
656
647
  defaults: {},
657
- usage: { unit: "compute_seconds", modality: "AUDIO" },
648
+ usage: { unit: "compute_seconds" },
658
649
  pricingKind: "flat",
659
650
  display: {
660
651
  provider: "google",
@@ -677,7 +668,7 @@ var OTHER_MODELS = [
677
668
  supports: ["seed", "negativePrompt"]
678
669
  },
679
670
  defaults: { durationSeconds: 8 },
680
- usage: { unit: "compute_seconds", modality: "AUDIO" },
671
+ usage: { unit: "compute_seconds" },
681
672
  pricingKind: "flat",
682
673
  display: {
683
674
  provider: "mmaudio",
@@ -700,7 +691,7 @@ var OTHER_MODELS = [
700
691
  },
701
692
  defaults: { durationSeconds: 15, instrumental: true },
702
693
  // Replicate's run() does not report predict_time; billed by generated length.
703
- usage: { unit: "seconds", modality: "AUDIO" },
694
+ usage: { unit: "seconds" },
704
695
  pricingKind: "flat",
705
696
  display: {
706
697
  provider: "elevenlabs",
@@ -723,13 +714,13 @@ var OTHER_MODELS = [
723
714
  supports: ["scaleFactor", "outputFormat", "upscale"]
724
715
  },
725
716
  defaults: { scaleFactor: 2, outputFormat: "png" },
726
- usage: { unit: "compute_seconds", modality: "IMAGE" },
717
+ usage: { unit: "compute_seconds" },
727
718
  pricingKind: "flat",
728
719
  display: {
729
720
  provider: "topaz",
721
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/topazlabs.png",
730
722
  description: "Topaz Labs AI image upscaling on Replicate; takes one input image and upscales up to 6x with selectable enhancement models and optional face enhancement."
731
- },
732
- capabilities: { imageEdit: true }
723
+ }
733
724
  },
734
725
  {
735
726
  id: "bg-remove",
@@ -746,19 +737,30 @@ var OTHER_MODELS = [
746
737
  supports: []
747
738
  },
748
739
  defaults: {},
749
- usage: { unit: "images", modality: "IMAGE" },
740
+ usage: { unit: "images" },
750
741
  pricingKind: "flat",
751
742
  display: {
752
743
  provider: "prodia",
753
744
  description: "Prodia background removal; takes one input image and returns a PNG cut-out of the subject plus an optional black-and-white mask."
754
- },
755
- capabilities: { imageEdit: true }
745
+ }
756
746
  }
757
747
  ];
758
748
 
759
749
  // src/catalog/text.ts
760
- var TEXT_USAGE = { unit: "tokens", modality: "TEXT" };
750
+ var TEXT_USAGE = { unit: "tokens" };
751
+ var CDN = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image";
752
+ var PROVIDER_LOGOS = {
753
+ anthropic: `${CDN}/25fad392-188c-4829-a3d0-c4fa02d1c8cd.png`,
754
+ openai: `${CDN}/1204b494-8962-4f7f-af5e-699a8bdc98e3.png`,
755
+ google: `${CDN}/192485d2-a76a-4657-9c06-930b2c70badd.png`,
756
+ deepseek: `${CDN}/9b7406d2-a696-4558-ab79-90a37e3f4574.png`,
757
+ xai: `${CDN}/858b7fcc-9bd5-411d-aea1-a7b35ecfffab.png`,
758
+ moonshot: `${CDN}/5a1e2eae-3474-4fac-9c74-a93f41ee6f67.png`,
759
+ minimax: `${CDN}/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png`
760
+ };
761
761
  function text(id, label, providerModelId, extra) {
762
+ const display = extra?.display;
763
+ const logo = display && !display.logo ? PROVIDER_LOGOS[display.provider] : void 0;
762
764
  return {
763
765
  id,
764
766
  aliases: [],
@@ -772,7 +774,8 @@ function text(id, label, providerModelId, extra) {
772
774
  defaults: {},
773
775
  usage: { ...TEXT_USAGE },
774
776
  pricingKind: "token",
775
- ...extra
777
+ ...extra,
778
+ ...display && logo ? { display: { ...display, logo } } : {}
776
779
  };
777
780
  }
778
781
  var ANTHROPIC_THINKING = {
@@ -791,7 +794,7 @@ var TEXT_MODELS = [
791
794
  costTier: 2,
792
795
  description: "OpenAI GPT-4o flagship multimodal model; text and image input, 128K-token context."
793
796
  },
794
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
797
+ capabilities: { vision: true, contextWindow: 128e3 }
795
798
  }),
796
799
  text("gpt-4o-mini", "GPT-4o mini", "gpt-4o-mini", {
797
800
  exposure: "internal",
@@ -800,7 +803,7 @@ var TEXT_MODELS = [
800
803
  costTier: 1,
801
804
  description: "OpenAI GPT-4o mini fast, low-cost multimodal model; text and image input, 128K-token context."
802
805
  },
803
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
806
+ capabilities: { vision: true, contextWindow: 128e3 }
804
807
  }),
805
808
  text("gpt-5.1", "GPT-5.1", "gpt-5.1", {
806
809
  exposure: "catalog",
@@ -809,7 +812,7 @@ var TEXT_MODELS = [
809
812
  costTier: 3,
810
813
  description: "OpenAI GPT-5.1 reasoning model for coding and agentic tasks; text and image input, 400K-token context."
811
814
  },
812
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
815
+ capabilities: { vision: true, contextWindow: 4e5 }
813
816
  }),
814
817
  text("gpt-5.2", "GPT-5.2", "gpt-5.2", {
815
818
  exposure: "catalog",
@@ -818,7 +821,7 @@ var TEXT_MODELS = [
818
821
  costTier: 3,
819
822
  description: "OpenAI GPT-5.2 reasoning model for complex professional work; text and image input, 400K-token context."
820
823
  },
821
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
824
+ capabilities: { vision: true, contextWindow: 4e5 }
822
825
  }),
823
826
  // 1.05M-token context: https://platform.openai.com/docs/models/gpt-5.4
824
827
  text("gpt-5.4", "GPT-5.4", "gpt-5.4", {
@@ -830,8 +833,6 @@ var TEXT_MODELS = [
830
833
  },
831
834
  capabilities: {
832
835
  vision: true,
833
- tools: true,
834
- structuredOutput: true,
835
836
  contextWindow: 105e4
836
837
  }
837
838
  }),
@@ -844,7 +845,7 @@ var TEXT_MODELS = [
844
845
  costTier: 1,
845
846
  description: "OpenAI GPT-5.4 mini efficient reasoning model for high-volume workloads; text and image input, 400K-token context."
846
847
  },
847
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
848
+ capabilities: { vision: true, contextWindow: 4e5 }
848
849
  }),
849
850
  text("gpt-5.5", "GPT-5.5", "gpt-5.5", {
850
851
  exposure: "catalog",
@@ -855,15 +856,13 @@ var TEXT_MODELS = [
855
856
  },
856
857
  capabilities: {
857
858
  vision: true,
858
- tools: true,
859
- structuredOutput: true,
860
859
  contextWindow: 105e4
861
860
  }
862
861
  }),
863
862
  text("gpt-5.6-luna", "GPT-5.6 Luna", "gpt-5.6-luna", {
864
- providerOptions: OPENAI_REASONING,
865
863
  exposure: "catalog",
866
864
  display: {
865
+ chat: { providerOptions: OPENAI_REASONING },
867
866
  provider: "openai",
868
867
  costTier: 1,
869
868
  description: "OpenAI GPT-5.6 Luna cost-optimized tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
@@ -871,15 +870,13 @@ var TEXT_MODELS = [
871
870
  capabilities: {
872
871
  reasoning: true,
873
872
  vision: true,
874
- tools: true,
875
- structuredOutput: true,
876
873
  contextWindow: 105e4
877
874
  }
878
875
  }),
879
876
  text("gpt-5.6-terra", "GPT-5.6 Terra", "gpt-5.6-terra", {
880
- providerOptions: OPENAI_REASONING,
881
877
  exposure: "catalog",
882
878
  display: {
879
+ chat: { providerOptions: OPENAI_REASONING },
883
880
  provider: "openai",
884
881
  costTier: 2,
885
882
  description: "OpenAI GPT-5.6 Terra balanced tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
@@ -887,15 +884,13 @@ var TEXT_MODELS = [
887
884
  capabilities: {
888
885
  reasoning: true,
889
886
  vision: true,
890
- tools: true,
891
- structuredOutput: true,
892
887
  contextWindow: 105e4
893
888
  }
894
889
  }),
895
890
  text("gpt-5.6-sol", "GPT-5.6 Sol", "gpt-5.6-sol", {
896
- providerOptions: OPENAI_REASONING,
897
891
  exposure: "catalog",
898
892
  display: {
893
+ chat: { providerOptions: OPENAI_REASONING },
899
894
  provider: "openai",
900
895
  costTier: 3,
901
896
  description: "OpenAI GPT-5.6 Sol flagship tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
@@ -903,8 +898,6 @@ var TEXT_MODELS = [
903
898
  capabilities: {
904
899
  reasoning: true,
905
900
  vision: true,
906
- tools: true,
907
- structuredOutput: true,
908
901
  contextWindow: 105e4
909
902
  }
910
903
  }),
@@ -917,11 +910,10 @@ var TEXT_MODELS = [
917
910
  costTier: 2,
918
911
  description: "Anthropic Claude Sonnet 4.5 (legacy) balanced model; text and image input, 200K-token context."
919
912
  },
920
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 2e5 }
913
+ capabilities: { vision: true, contextWindow: 2e5 }
921
914
  }),
922
915
  // Anthropic retired the dated 4.0 ids; callers that still send them get 4.6.
923
916
  text("claude-sonnet-4-6", "Claude Sonnet 4.6", "claude-sonnet-4-6", {
924
- providerOptions: ANTHROPIC_THINKING,
925
917
  exposure: "catalog",
926
918
  aliases: [
927
919
  "claude-sonnet-4.6",
@@ -930,6 +922,7 @@ var TEXT_MODELS = [
930
922
  "claude-sonnet-4-20250514"
931
923
  ],
932
924
  display: {
925
+ chat: { providerOptions: ANTHROPIC_THINKING },
933
926
  provider: "anthropic",
934
927
  costTier: 2,
935
928
  description: "Anthropic Claude Sonnet 4.6 (legacy) balanced model; text and image input, 1M-token context."
@@ -937,15 +930,13 @@ var TEXT_MODELS = [
937
930
  capabilities: {
938
931
  reasoning: true,
939
932
  vision: true,
940
- tools: true,
941
- structuredOutput: true,
942
933
  contextWindow: 1e6
943
934
  }
944
935
  }),
945
936
  text("claude-sonnet-5", "Claude Sonnet 5", "claude-sonnet-5", {
946
- providerOptions: ANTHROPIC_ADAPTIVE,
947
937
  exposure: "catalog",
948
938
  display: {
939
+ chat: { providerOptions: ANTHROPIC_ADAPTIVE },
949
940
  provider: "anthropic",
950
941
  costTier: 3,
951
942
  description: "Anthropic Claude Sonnet 5 current balanced model; text and image input, 1M-token context."
@@ -953,16 +944,14 @@ var TEXT_MODELS = [
953
944
  capabilities: {
954
945
  reasoning: true,
955
946
  vision: true,
956
- tools: true,
957
- structuredOutput: true,
958
947
  contextWindow: 1e6
959
948
  }
960
949
  }),
961
950
  text("claude-opus-4-8", "Claude Opus 4.8", "claude-opus-4-8", {
962
- providerOptions: ANTHROPIC_ADAPTIVE,
963
951
  exposure: "catalog",
964
952
  aliases: ["claude-opus-4.8", "claude-opus-4", "claude-opus-4.0", "claude-opus-4-20250514"],
965
953
  display: {
954
+ chat: { providerOptions: ANTHROPIC_ADAPTIVE },
966
955
  provider: "anthropic",
967
956
  costTier: 3,
968
957
  description: "Anthropic Claude Opus 4.8 (legacy) frontier model; text and image input, 1M-token context."
@@ -970,16 +959,14 @@ var TEXT_MODELS = [
970
959
  capabilities: {
971
960
  reasoning: true,
972
961
  vision: true,
973
- tools: true,
974
- structuredOutput: true,
975
962
  contextWindow: 1e6
976
963
  }
977
964
  }),
978
965
  text("claude-haiku-4-5", "Claude Haiku 4.5", "claude-haiku-4-5", {
979
- providerOptions: ANTHROPIC_THINKING,
980
966
  exposure: "catalog",
981
967
  aliases: ["claude-haiku-4.5", "claude-haiku-4-5-20251001", "claude-haiku-4"],
982
968
  display: {
969
+ chat: { providerOptions: ANTHROPIC_THINKING },
983
970
  provider: "anthropic",
984
971
  costTier: 1,
985
972
  description: "Anthropic Claude Haiku 4.5 fast model with near-frontier intelligence; text and image input, 200K-token context."
@@ -987,8 +974,6 @@ var TEXT_MODELS = [
987
974
  capabilities: {
988
975
  reasoning: true,
989
976
  vision: true,
990
- tools: true,
991
- structuredOutput: true,
992
977
  contextWindow: 2e5
993
978
  }
994
979
  }),
@@ -1002,8 +987,6 @@ var TEXT_MODELS = [
1002
987
  },
1003
988
  capabilities: {
1004
989
  vision: true,
1005
- tools: true,
1006
- structuredOutput: true,
1007
990
  contextWindow: 1e6
1008
991
  }
1009
992
  }),
@@ -1016,8 +999,6 @@ var TEXT_MODELS = [
1016
999
  },
1017
1000
  capabilities: {
1018
1001
  vision: true,
1019
- tools: true,
1020
- structuredOutput: true,
1021
1002
  contextWindow: 1e6
1022
1003
  }
1023
1004
  }),
@@ -1030,8 +1011,6 @@ var TEXT_MODELS = [
1030
1011
  },
1031
1012
  capabilities: {
1032
1013
  vision: true,
1033
- tools: true,
1034
- structuredOutput: true,
1035
1014
  contextWindow: 1048576
1036
1015
  }
1037
1016
  }),
@@ -1044,8 +1023,6 @@ var TEXT_MODELS = [
1044
1023
  },
1045
1024
  capabilities: {
1046
1025
  vision: true,
1047
- tools: true,
1048
- structuredOutput: true,
1049
1026
  contextWindow: 1048576
1050
1027
  }
1051
1028
  }),
@@ -1058,8 +1035,6 @@ var TEXT_MODELS = [
1058
1035
  },
1059
1036
  capabilities: {
1060
1037
  vision: true,
1061
- tools: true,
1062
- structuredOutput: true,
1063
1038
  contextWindow: 1048576
1064
1039
  }
1065
1040
  }),
@@ -1072,8 +1047,6 @@ var TEXT_MODELS = [
1072
1047
  },
1073
1048
  capabilities: {
1074
1049
  vision: true,
1075
- tools: true,
1076
- structuredOutput: true,
1077
1050
  contextWindow: 1048576
1078
1051
  }
1079
1052
  }),
@@ -1086,8 +1059,6 @@ var TEXT_MODELS = [
1086
1059
  },
1087
1060
  capabilities: {
1088
1061
  vision: true,
1089
- tools: true,
1090
- structuredOutput: true,
1091
1062
  contextWindow: 1048576
1092
1063
  }
1093
1064
  }),
@@ -1101,8 +1072,6 @@ var TEXT_MODELS = [
1101
1072
  },
1102
1073
  capabilities: {
1103
1074
  vision: true,
1104
- tools: true,
1105
- structuredOutput: true,
1106
1075
  contextWindow: 1048576
1107
1076
  }
1108
1077
  }),
@@ -1115,8 +1084,6 @@ var TEXT_MODELS = [
1115
1084
  },
1116
1085
  capabilities: {
1117
1086
  vision: true,
1118
- tools: true,
1119
- structuredOutput: true,
1120
1087
  contextWindow: 1048576
1121
1088
  }
1122
1089
  }),
@@ -1135,8 +1102,6 @@ var TEXT_MODELS = [
1135
1102
  },
1136
1103
  capabilities: {
1137
1104
  vision: true,
1138
- tools: true,
1139
- structuredOutput: true,
1140
1105
  contextWindow: 1048576
1141
1106
  }
1142
1107
  }),
@@ -1149,8 +1114,6 @@ var TEXT_MODELS = [
1149
1114
  },
1150
1115
  capabilities: {
1151
1116
  vision: true,
1152
- tools: false,
1153
- structuredOutput: true,
1154
1117
  contextWindow: 128e3
1155
1118
  }
1156
1119
  }),
@@ -1163,8 +1126,6 @@ var TEXT_MODELS = [
1163
1126
  },
1164
1127
  capabilities: {
1165
1128
  vision: true,
1166
- tools: false,
1167
- structuredOutput: true,
1168
1129
  contextWindow: 2e5
1169
1130
  }
1170
1131
  }),
@@ -1177,8 +1138,6 @@ var TEXT_MODELS = [
1177
1138
  },
1178
1139
  capabilities: {
1179
1140
  vision: true,
1180
- tools: false,
1181
- structuredOutput: true,
1182
1141
  contextWindow: 128e3
1183
1142
  }
1184
1143
  }),
@@ -1186,10 +1145,10 @@ var TEXT_MODELS = [
1186
1145
  // Flash rates (https://api-docs.deepseek.com/news/news260910/); the old id
1187
1146
  // stays an alias so stored selections keep resolving.
1188
1147
  text("deepseek-flash", "DeepSeek V4.1 Flash", "deepseek-flash", {
1189
- providerOptions: DEEPSEEK_THINKING,
1190
1148
  aliases: ["deepseek-v4-flash"],
1191
1149
  exposure: "catalog",
1192
1150
  display: {
1151
+ chat: { providerOptions: DEEPSEEK_THINKING },
1193
1152
  provider: "deepseek",
1194
1153
  costTier: 1,
1195
1154
  recommended: true,
@@ -1198,15 +1157,13 @@ var TEXT_MODELS = [
1198
1157
  capabilities: {
1199
1158
  reasoning: true,
1200
1159
  vision: true,
1201
- tools: true,
1202
- structuredOutput: true,
1203
1160
  contextWindow: 1e6
1204
1161
  }
1205
1162
  }),
1206
1163
  text("deepseek-v4-pro", "DeepSeek V4 Pro", "deepseek-v4-pro", {
1207
- providerOptions: DEEPSEEK_THINKING,
1208
1164
  exposure: "catalog",
1209
1165
  display: {
1166
+ chat: { providerOptions: DEEPSEEK_THINKING },
1210
1167
  provider: "deepseek",
1211
1168
  costTier: 2,
1212
1169
  description: "DeepSeek V4 Pro thinking/non-thinking text model with tool calls and JSON output (no vision); 1M-token context and up to 384K output tokens."
@@ -1214,8 +1171,6 @@ var TEXT_MODELS = [
1214
1171
  capabilities: {
1215
1172
  reasoning: true,
1216
1173
  vision: false,
1217
- tools: true,
1218
- structuredOutput: true,
1219
1174
  contextWindow: 1e6
1220
1175
  }
1221
1176
  }),
@@ -1229,16 +1184,16 @@ var TEXT_MODELS = [
1229
1184
  },
1230
1185
  capabilities: {
1231
1186
  vision: true,
1232
- tools: true,
1233
- structuredOutput: true,
1234
1187
  contextWindow: 1e6
1235
1188
  }
1236
1189
  }),
1237
1190
  // Moonshot retired kimi-k2.5 on 2026-08-31 and no longer publishes its specs.
1238
1191
  text("kimi-k2.5", "Kimi K2.5", "kimi-k2.5", {
1239
- defaults: { temperature: 1 },
1240
- exposure: "catalog",
1192
+ lifecycle: "deprecated",
1193
+ replacedBy: "kimi-k3",
1194
+ exposure: "internal",
1241
1195
  display: {
1196
+ chat: { temperature: 1 },
1242
1197
  provider: "moonshot",
1243
1198
  costTier: 2,
1244
1199
  description: "Moonshot Kimi K2.5; the provider retired the model on 2026-08-31 and calls now return a model-not-found error."
@@ -1246,9 +1201,9 @@ var TEXT_MODELS = [
1246
1201
  capabilities: {}
1247
1202
  }),
1248
1203
  text("kimi-k3", "Kimi K3", "kimi-k3", {
1249
- defaults: { temperature: 1 },
1250
1204
  exposure: "catalog",
1251
1205
  display: {
1206
+ chat: { temperature: 1 },
1252
1207
  provider: "moonshot",
1253
1208
  costTier: 2,
1254
1209
  description: "Moonshot Kimi K3 flagship model with native visual understanding and always-on thinking; text, image, and video input, 1M-token context."
@@ -1256,8 +1211,6 @@ var TEXT_MODELS = [
1256
1211
  capabilities: {
1257
1212
  reasoning: true,
1258
1213
  vision: true,
1259
- tools: true,
1260
- structuredOutput: true,
1261
1214
  contextWindow: 1e6
1262
1215
  }
1263
1216
  }),
@@ -1271,12 +1224,12 @@ var TEXT_MODELS = [
1271
1224
  costTier: 2,
1272
1225
  description: "MiniMax M3 frontier multimodal model for agentic reasoning, tool use, and coding; text, image, and video input, 1M-token context."
1273
1226
  },
1274
- capabilities: { vision: true, tools: true, contextWindow: 1e6 }
1227
+ capabilities: { vision: true, contextWindow: 1e6 }
1275
1228
  })
1276
1229
  ];
1277
1230
 
1278
1231
  // src/catalog/video.ts
1279
- var VIDEO_USAGE = { unit: "seconds", modality: "VIDEO" };
1232
+ var VIDEO_USAGE = { unit: "seconds" };
1280
1233
  var SEEDANCE_RATIOS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16", "adaptive"];
1281
1234
  var KLING_RATIOS = ["16:9", "9:16", "1:1", "adaptive"];
1282
1235
  var OMNI_RATIOS = ["16:9", "9:16"];
@@ -1285,7 +1238,8 @@ var H3_RATIOS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16"];
1285
1238
  var H3_REFERENCE_RATIOS = ["adaptive", ...H3_RATIOS];
1286
1239
  var NEGATIVE_PROMPT = "blur, distort, and low quality";
1287
1240
  var FRAMES_EXCLUDE_REFERENCES = { framesExcludeReferences: true };
1288
- var GOOGLE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
1241
+ var BYTEDANCE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/3bba5d81-4e57-4e71-911b-cdfa05acca2c_compressed.png";
1242
+ var GOOGLE_LOGO2 = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
1289
1243
  var VIDEO_MODELS = [
1290
1244
  {
1291
1245
  id: "veo-3.1",
@@ -1314,7 +1268,7 @@ var VIDEO_MODELS = [
1314
1268
  display: {
1315
1269
  provider: "google",
1316
1270
  description: "Google's highest-quality video generation model. Supports up to 4K resolution and 8-second clips with reference image conditioning.",
1317
- logo: GOOGLE_LOGO
1271
+ logo: GOOGLE_LOGO2
1318
1272
  },
1319
1273
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
1320
1274
  },
@@ -1406,7 +1360,7 @@ var VIDEO_MODELS = [
1406
1360
  display: {
1407
1361
  provider: "google",
1408
1362
  description: "Google's conversational video model with native audio, human support, and natural language editing. Aspect ratio only \u2014 resolution and duration are model-determined.",
1409
- logo: GOOGLE_LOGO
1363
+ logo: GOOGLE_LOGO2
1410
1364
  },
1411
1365
  capabilities: { acceptsSourceVideo: true }
1412
1366
  },
@@ -1431,6 +1385,7 @@ var VIDEO_MODELS = [
1431
1385
  pricingKind: "video_per_second",
1432
1386
  display: {
1433
1387
  provider: "google",
1388
+ logo: GOOGLE_LOGO2,
1434
1389
  description: "Google Gemini Omni Flash 1.1 conversational video generation and editing; text, image, and up to 10-second video input, 3-10 second output at up to 4K and 24 FPS."
1435
1390
  },
1436
1391
  capabilities: { acceptsSourceVideo: true }
@@ -1448,7 +1403,7 @@ var VIDEO_MODELS = [
1448
1403
  constraints: {
1449
1404
  aspectRatios: [...SEEDANCE_RATIOS],
1450
1405
  resolutions: ["480p", "720p", "1080p", "4k"],
1451
- durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1406
+ durations: { min: 4, max: 15 },
1452
1407
  durationPresets: [4, 6, 8, 10, 12, 15],
1453
1408
  references: { images: 9, videos: 3, audios: 3, audioOnly: false },
1454
1409
  ratioIgnoredWith: ["firstFrame"],
@@ -1465,7 +1420,7 @@ var VIDEO_MODELS = [
1465
1420
  display: {
1466
1421
  provider: "bytedance",
1467
1422
  description: "High-quality AI video generation with reference image conditioning. Supports 4-15 second clips with human preprocessing.",
1468
- logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/3bba5d81-4e57-4e71-911b-cdfa05acca2c_compressed.png"
1423
+ logo: BYTEDANCE_LOGO
1469
1424
  },
1470
1425
  capabilities: { acceptsSourceVideo: true, ...FRAMES_EXCLUDE_REFERENCES }
1471
1426
  },
@@ -1481,7 +1436,7 @@ var VIDEO_MODELS = [
1481
1436
  constraints: {
1482
1437
  aspectRatios: [...SEEDANCE_RATIOS],
1483
1438
  resolutions: ["480p", "720p"],
1484
- durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1439
+ durations: { min: 4, max: 15 },
1485
1440
  references: { images: 9, videos: 3, audios: 3, audioOnly: false },
1486
1441
  ratioIgnoredWith: ["firstFrame"],
1487
1442
  supports: ["generateAudio", "seed", "lastFrame", "watermark"]
@@ -1496,6 +1451,7 @@ var VIDEO_MODELS = [
1496
1451
  pricingKind: "video_per_second",
1497
1452
  display: {
1498
1453
  provider: "bytedance",
1454
+ logo: BYTEDANCE_LOGO,
1499
1455
  description: "Speed- and cost-optimized ByteDance Seedance 2.0 Fast; text plus image, video, and audio references to generate or edit 4-15 second clips."
1500
1456
  },
1501
1457
  capabilities: { acceptsSourceVideo: true, ...FRAMES_EXCLUDE_REFERENCES }
@@ -1528,6 +1484,7 @@ var VIDEO_MODELS = [
1528
1484
  pricingKind: "video_per_second",
1529
1485
  display: {
1530
1486
  provider: "bytedance",
1487
+ logo: BYTEDANCE_LOGO,
1531
1488
  description: "ByteDance Seedance 2.5 for long-form storytelling and omni-reference generation/editing; up to 50 reference assets and 4-30 second clips at up to 1080p."
1532
1489
  },
1533
1490
  capabilities: { acceptsSourceVideo: true, ...FRAMES_EXCLUDE_REFERENCES }
@@ -1552,7 +1509,7 @@ var VIDEO_MODELS = [
1552
1509
  },
1553
1510
  // No resolution default: xAI picks its own unless the caller asks.
1554
1511
  defaults: { durationSeconds: 8, aspectRatio: "16:9" },
1555
- usage: { unit: "reported_cost_usd", modality: "VIDEO" },
1512
+ usage: { unit: "reported_cost_usd", slug: "grok" },
1556
1513
  pricingKind: "video_per_second",
1557
1514
  display: {
1558
1515
  provider: "xai",
@@ -1582,10 +1539,11 @@ var VIDEO_MODELS = [
1582
1539
  cfgScale: 0.5,
1583
1540
  negativePrompt: NEGATIVE_PROMPT
1584
1541
  },
1585
- usage: { ...VIDEO_USAGE, slug: "grok" },
1542
+ usage: { ...VIDEO_USAGE },
1586
1543
  pricingKind: "video_per_second",
1587
1544
  display: {
1588
1545
  provider: "kuaishou",
1546
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1589
1547
  description: "Kuaishou Kling 2.5 Turbo Pro image-to-video; animates a single input image from a text prompt with an optional end image, 5- or 10-second clips."
1590
1548
  },
1591
1549
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1616,6 +1574,7 @@ var VIDEO_MODELS = [
1616
1574
  pricingKind: "video_per_second",
1617
1575
  display: {
1618
1576
  provider: "kuaishou",
1577
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1619
1578
  description: "Kuaishou Kling 3.0 Pro image-to-video; a required start image plus a text prompt (or multi-shot prompts) with optional end image and native audio, 3-15 second clips."
1620
1579
  },
1621
1580
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1649,10 +1608,11 @@ var VIDEO_MODELS = [
1649
1608
  supports: ["generateAudio", "lastFrame"]
1650
1609
  },
1651
1610
  defaults: { durationSeconds: 5, aspectRatio: "16:9", generateAudio: false, mode: "pro" },
1652
- usage: { unit: "compute_seconds", modality: "VIDEO" },
1611
+ usage: { unit: "compute_seconds" },
1653
1612
  pricingKind: "video_per_second",
1654
1613
  display: {
1655
1614
  provider: "kuaishou",
1615
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1656
1616
  description: "Kuaishou Kling Video 3.0 Omni unified generation and editing from text, start/end images, up to 7 reference images, and reference video; up to 15 seconds at up to 1080p."
1657
1617
  },
1658
1618
  capabilities: {}
@@ -1682,6 +1642,7 @@ var VIDEO_MODELS = [
1682
1642
  pricingKind: "video_per_second",
1683
1643
  display: {
1684
1644
  provider: "minimax",
1645
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1685
1646
  description: "MiniMax H3 multimodal video model for text-to-video, image-to-video (first/last frame), and reference-to-video with native audio, up to 2K."
1686
1647
  },
1687
1648
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1711,6 +1672,7 @@ var VIDEO_MODELS = [
1711
1672
  pricingKind: "video_per_second",
1712
1673
  display: {
1713
1674
  provider: "minimax",
1675
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1714
1676
  description: "High-speed MiniMax H3 Max variant for text-to-video and image-to-video (first/last frame) only, up to 768p."
1715
1677
  },
1716
1678
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1741,6 +1703,7 @@ var VIDEO_MODELS = [
1741
1703
  pricingKind: "video_per_second",
1742
1704
  display: {
1743
1705
  provider: "minimax",
1706
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1744
1707
  description: "MiniMax H3 reference-to-video mode guided by up to 9 reference images, 3 reference videos, and 3 audio clips; reference and image-to-video inputs cannot be mixed."
1745
1708
  },
1746
1709
  capabilities: {}
@@ -1771,6 +1734,7 @@ var VIDEO_MODELS = [
1771
1734
  pricingKind: "video_per_second",
1772
1735
  display: {
1773
1736
  provider: "minimax",
1737
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1774
1738
  description: "MiniMax H3 Max reference-to-video on fal; conditions on reference images, videos, and audio. MiniMax's own docs do not list a reference mode for H3 Max."
1775
1739
  },
1776
1740
  capabilities: {}
@@ -1796,6 +1760,7 @@ var VIDEO_MODELS = [
1796
1760
  pricingKind: "video_per_second",
1797
1761
  display: {
1798
1762
  provider: "kuaishou",
1763
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1799
1764
  description: "Kuaishou Kling O1 Reference Video-to-Video; a prompt plus a 3-10 second reference video (optional reference images) generates 3-10 second clips preserving motion and camera language."
1800
1765
  },
1801
1766
  capabilities: { acceptsSourceVideo: true }
@@ -1815,10 +1780,11 @@ var VIDEO_MODELS = [
1815
1780
  supports: ["lastFrame"]
1816
1781
  },
1817
1782
  defaults: { durationSeconds: 6, resolution: "768p" },
1818
- usage: { unit: "compute_seconds", modality: "VIDEO" },
1783
+ usage: { unit: "compute_seconds" },
1819
1784
  pricingKind: "video_per_second",
1820
1785
  display: {
1821
1786
  provider: "minimax",
1787
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1822
1788
  description: "MiniMax Hailuo 02 text-to-video and image-to-video model with realistic physics and strong prompt following; outputs 768p at 6 or 10 seconds."
1823
1789
  },
1824
1790
  capabilities: {}