@shop-os/modelkit 0.1.10 → 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/index.cjs CHANGED
@@ -182,8 +182,7 @@ var Catalog = class _Catalog {
182
182
  };
183
183
 
184
184
  // src/catalog/image.ts
185
- var IMAGE_USAGE = { unit: "images", modality: "IMAGE" };
186
- var IMAGE_GENERATE_EDIT = { imageGenerate: true, imageEdit: true };
185
+ var IMAGE_USAGE = { unit: "images" };
187
186
  var GEMINI_RATIOS = [
188
187
  "1:1",
189
188
  "2:3",
@@ -215,8 +214,7 @@ function geminiImage(id, label, aliases, sizes, display, exposure) {
215
214
  defaults: { size: "1K", aspectRatio: "1:1" },
216
215
  usage: { ...IMAGE_USAGE, slug: "gemini" },
217
216
  pricingKind: "image_size",
218
- display,
219
- capabilities: { ...IMAGE_GENERATE_EDIT }
217
+ display
220
218
  };
221
219
  return model;
222
220
  }
@@ -303,8 +301,7 @@ var IMAGE_MODELS = [
303
301
  provider: "openai",
304
302
  description: "The most capable model for image editing and complex creative instructions. Excels at text rendering, visual consistency, design generation, and iterative refinement.",
305
303
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/1204b494-8962-4f7f-af5e-699a8bdc98e3_compressed.png"
306
- },
307
- capabilities: { ...IMAGE_GENERATE_EDIT }
304
+ }
308
305
  },
309
306
  {
310
307
  // Same Images API surface as gpt-image-2 plus the "xhigh" and "max" quality tiers.
@@ -338,8 +335,7 @@ var IMAGE_MODELS = [
338
335
  display: {
339
336
  provider: "openai",
340
337
  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."
341
- },
342
- capabilities: { ...IMAGE_GENERATE_EDIT }
338
+ }
343
339
  },
344
340
  {
345
341
  // Same Images API surface as gpt-image-2 plus the "xhigh" and "max" quality tiers.
@@ -373,8 +369,7 @@ var IMAGE_MODELS = [
373
369
  display: {
374
370
  provider: "openai",
375
371
  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."
376
- },
377
- capabilities: { ...IMAGE_GENERATE_EDIT }
372
+ }
378
373
  },
379
374
  {
380
375
  // Cowork allows 7 ratios; trigger-workflows allows 9 (adds 3:2, 9:21, drops 4:5/5:4).
@@ -412,8 +407,7 @@ var IMAGE_MODELS = [
412
407
  provider: "meta",
413
408
  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.",
414
409
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/characters/1787909065794-k9a7zz.png"
415
- },
416
- capabilities: { ...IMAGE_GENERATE_EDIT }
410
+ }
417
411
  },
418
412
  {
419
413
  id: "seedream-5-0-pro",
@@ -439,8 +433,7 @@ var IMAGE_MODELS = [
439
433
  provider: "bytedance",
440
434
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/3bba5d81-4e57-4e71-911b-cdfa05acca2c_compressed.png",
441
435
  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."
442
- },
443
- capabilities: { ...IMAGE_GENERATE_EDIT }
436
+ }
444
437
  },
445
438
  {
446
439
  id: "seedream-4.5",
@@ -477,8 +470,7 @@ var IMAGE_MODELS = [
477
470
  display: {
478
471
  provider: "bytedance",
479
472
  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."
480
- },
481
- capabilities: { ...IMAGE_GENERATE_EDIT }
473
+ }
482
474
  },
483
475
  {
484
476
  id: "flux-2-pro",
@@ -500,9 +492,9 @@ var IMAGE_MODELS = [
500
492
  pricingKind: "image_size",
501
493
  display: {
502
494
  provider: "black-forest-labs",
495
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/flux.png",
503
496
  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."
504
- },
505
- capabilities: { ...IMAGE_GENERATE_EDIT }
497
+ }
506
498
  },
507
499
  {
508
500
  // Prodia's gemini-3-pro jobs take aspect_ratio + resolution (1K/2K/4K), not
@@ -528,8 +520,7 @@ var IMAGE_MODELS = [
528
520
  display: {
529
521
  provider: "google",
530
522
  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."
531
- },
532
- capabilities: { ...IMAGE_GENERATE_EDIT }
523
+ }
533
524
  },
534
525
  {
535
526
  // Nano Banana (img2img.v2) is flat-rate with aspect_ratio only; 3:2, 4:5,
@@ -554,8 +545,7 @@ var IMAGE_MODELS = [
554
545
  display: {
555
546
  provider: "google",
556
547
  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."
557
- },
558
- capabilities: { ...IMAGE_GENERATE_EDIT }
548
+ }
559
549
  },
560
550
  {
561
551
  // WAN 2.7 takes `images` (up to 9) and a `size` enum whose exact values
@@ -576,13 +566,12 @@ var IMAGE_MODELS = [
576
566
  supports: []
577
567
  },
578
568
  defaults: { size: "1K", aspectRatio: "1:1" },
579
- usage: { unit: "compute_seconds", modality: "IMAGE" },
569
+ usage: { unit: "compute_seconds" },
580
570
  pricingKind: "image_size",
581
571
  display: {
582
572
  provider: "alibaba",
583
573
  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)."
584
- },
585
- capabilities: { ...IMAGE_GENERATE_EDIT }
574
+ }
586
575
  },
587
576
  {
588
577
  // Qwen Image 2 Pro has aspect_ratio but no size input; resolution follows
@@ -604,13 +593,12 @@ var IMAGE_MODELS = [
604
593
  supports: []
605
594
  },
606
595
  defaults: { aspectRatio: "1:1" },
607
- usage: { unit: "compute_seconds", modality: "IMAGE" },
596
+ usage: { unit: "compute_seconds" },
608
597
  pricingKind: "image_size",
609
598
  display: {
610
599
  provider: "alibaba",
611
600
  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."
612
- },
613
- capabilities: { ...IMAGE_GENERATE_EDIT }
601
+ }
614
602
  },
615
603
  {
616
604
  // Qwen Image Edit Plus takes aspect_ratio (or match_input_image) and
@@ -632,13 +620,12 @@ var IMAGE_MODELS = [
632
620
  supports: ["outputFormat"]
633
621
  },
634
622
  defaults: { outputFormat: "png" },
635
- usage: { unit: "compute_seconds", modality: "IMAGE" },
623
+ usage: { unit: "compute_seconds" },
636
624
  pricingKind: "image_size",
637
625
  display: {
638
626
  provider: "alibaba",
639
627
  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."
640
- },
641
- capabilities: { ...IMAGE_GENERATE_EDIT }
628
+ }
642
629
  }
643
630
  ];
644
631
 
@@ -660,7 +647,7 @@ var OTHER_MODELS = [
660
647
  supports: []
661
648
  },
662
649
  defaults: {},
663
- usage: { unit: "images", modality: "AUDIO" },
650
+ usage: { unit: "images" },
664
651
  pricingKind: "flat",
665
652
  display: {
666
653
  provider: "google",
@@ -683,7 +670,7 @@ var OTHER_MODELS = [
683
670
  supports: []
684
671
  },
685
672
  defaults: {},
686
- usage: { unit: "images", modality: "AUDIO" },
673
+ usage: { unit: "images" },
687
674
  pricingKind: "flat",
688
675
  display: {
689
676
  provider: "google",
@@ -706,7 +693,7 @@ var OTHER_MODELS = [
706
693
  supports: ["seed", "negativePrompt"]
707
694
  },
708
695
  defaults: {},
709
- usage: { unit: "compute_seconds", modality: "AUDIO" },
696
+ usage: { unit: "compute_seconds" },
710
697
  pricingKind: "flat",
711
698
  display: {
712
699
  provider: "google",
@@ -729,7 +716,7 @@ var OTHER_MODELS = [
729
716
  supports: ["seed", "negativePrompt"]
730
717
  },
731
718
  defaults: { durationSeconds: 8 },
732
- usage: { unit: "compute_seconds", modality: "AUDIO" },
719
+ usage: { unit: "compute_seconds" },
733
720
  pricingKind: "flat",
734
721
  display: {
735
722
  provider: "mmaudio",
@@ -752,7 +739,7 @@ var OTHER_MODELS = [
752
739
  },
753
740
  defaults: { durationSeconds: 15, instrumental: true },
754
741
  // Replicate's run() does not report predict_time; billed by generated length.
755
- usage: { unit: "seconds", modality: "AUDIO" },
742
+ usage: { unit: "seconds" },
756
743
  pricingKind: "flat",
757
744
  display: {
758
745
  provider: "elevenlabs",
@@ -775,13 +762,13 @@ var OTHER_MODELS = [
775
762
  supports: ["scaleFactor", "outputFormat", "upscale"]
776
763
  },
777
764
  defaults: { scaleFactor: 2, outputFormat: "png" },
778
- usage: { unit: "compute_seconds", modality: "IMAGE" },
765
+ usage: { unit: "compute_seconds" },
779
766
  pricingKind: "flat",
780
767
  display: {
781
768
  provider: "topaz",
769
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/topazlabs.png",
782
770
  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."
783
- },
784
- capabilities: { imageEdit: true }
771
+ }
785
772
  },
786
773
  {
787
774
  id: "bg-remove",
@@ -798,19 +785,30 @@ var OTHER_MODELS = [
798
785
  supports: []
799
786
  },
800
787
  defaults: {},
801
- usage: { unit: "images", modality: "IMAGE" },
788
+ usage: { unit: "images" },
802
789
  pricingKind: "flat",
803
790
  display: {
804
791
  provider: "prodia",
805
792
  description: "Prodia background removal; takes one input image and returns a PNG cut-out of the subject plus an optional black-and-white mask."
806
- },
807
- capabilities: { imageEdit: true }
793
+ }
808
794
  }
809
795
  ];
810
796
 
811
797
  // src/catalog/text.ts
812
- var TEXT_USAGE = { unit: "tokens", modality: "TEXT" };
798
+ var TEXT_USAGE = { unit: "tokens" };
799
+ var CDN = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image";
800
+ var PROVIDER_LOGOS = {
801
+ anthropic: `${CDN}/25fad392-188c-4829-a3d0-c4fa02d1c8cd.png`,
802
+ openai: `${CDN}/1204b494-8962-4f7f-af5e-699a8bdc98e3.png`,
803
+ google: `${CDN}/192485d2-a76a-4657-9c06-930b2c70badd.png`,
804
+ deepseek: `${CDN}/9b7406d2-a696-4558-ab79-90a37e3f4574.png`,
805
+ xai: `${CDN}/858b7fcc-9bd5-411d-aea1-a7b35ecfffab.png`,
806
+ moonshot: `${CDN}/5a1e2eae-3474-4fac-9c74-a93f41ee6f67.png`,
807
+ minimax: `${CDN}/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png`
808
+ };
813
809
  function text(id, label, providerModelId, extra) {
810
+ const display = extra?.display;
811
+ const logo = display && !display.logo ? PROVIDER_LOGOS[display.provider] : void 0;
814
812
  return {
815
813
  id,
816
814
  aliases: [],
@@ -824,7 +822,8 @@ function text(id, label, providerModelId, extra) {
824
822
  defaults: {},
825
823
  usage: { ...TEXT_USAGE },
826
824
  pricingKind: "token",
827
- ...extra
825
+ ...extra,
826
+ ...display && logo ? { display: { ...display, logo } } : {}
828
827
  };
829
828
  }
830
829
  var ANTHROPIC_THINKING = {
@@ -843,7 +842,7 @@ var TEXT_MODELS = [
843
842
  costTier: 2,
844
843
  description: "OpenAI GPT-4o flagship multimodal model; text and image input, 128K-token context."
845
844
  },
846
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
845
+ capabilities: { vision: true, contextWindow: 128e3 }
847
846
  }),
848
847
  text("gpt-4o-mini", "GPT-4o mini", "gpt-4o-mini", {
849
848
  exposure: "internal",
@@ -852,7 +851,7 @@ var TEXT_MODELS = [
852
851
  costTier: 1,
853
852
  description: "OpenAI GPT-4o mini fast, low-cost multimodal model; text and image input, 128K-token context."
854
853
  },
855
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
854
+ capabilities: { vision: true, contextWindow: 128e3 }
856
855
  }),
857
856
  text("gpt-5.1", "GPT-5.1", "gpt-5.1", {
858
857
  exposure: "catalog",
@@ -861,7 +860,7 @@ var TEXT_MODELS = [
861
860
  costTier: 3,
862
861
  description: "OpenAI GPT-5.1 reasoning model for coding and agentic tasks; text and image input, 400K-token context."
863
862
  },
864
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
863
+ capabilities: { vision: true, contextWindow: 4e5 }
865
864
  }),
866
865
  text("gpt-5.2", "GPT-5.2", "gpt-5.2", {
867
866
  exposure: "catalog",
@@ -870,7 +869,7 @@ var TEXT_MODELS = [
870
869
  costTier: 3,
871
870
  description: "OpenAI GPT-5.2 reasoning model for complex professional work; text and image input, 400K-token context."
872
871
  },
873
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
872
+ capabilities: { vision: true, contextWindow: 4e5 }
874
873
  }),
875
874
  // 1.05M-token context: https://platform.openai.com/docs/models/gpt-5.4
876
875
  text("gpt-5.4", "GPT-5.4", "gpt-5.4", {
@@ -882,8 +881,6 @@ var TEXT_MODELS = [
882
881
  },
883
882
  capabilities: {
884
883
  vision: true,
885
- tools: true,
886
- structuredOutput: true,
887
884
  contextWindow: 105e4
888
885
  }
889
886
  }),
@@ -896,7 +893,7 @@ var TEXT_MODELS = [
896
893
  costTier: 1,
897
894
  description: "OpenAI GPT-5.4 mini efficient reasoning model for high-volume workloads; text and image input, 400K-token context."
898
895
  },
899
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
896
+ capabilities: { vision: true, contextWindow: 4e5 }
900
897
  }),
901
898
  text("gpt-5.5", "GPT-5.5", "gpt-5.5", {
902
899
  exposure: "catalog",
@@ -907,8 +904,6 @@ var TEXT_MODELS = [
907
904
  },
908
905
  capabilities: {
909
906
  vision: true,
910
- tools: true,
911
- structuredOutput: true,
912
907
  contextWindow: 105e4
913
908
  }
914
909
  }),
@@ -923,8 +918,6 @@ var TEXT_MODELS = [
923
918
  capabilities: {
924
919
  reasoning: true,
925
920
  vision: true,
926
- tools: true,
927
- structuredOutput: true,
928
921
  contextWindow: 105e4
929
922
  }
930
923
  }),
@@ -939,8 +932,6 @@ var TEXT_MODELS = [
939
932
  capabilities: {
940
933
  reasoning: true,
941
934
  vision: true,
942
- tools: true,
943
- structuredOutput: true,
944
935
  contextWindow: 105e4
945
936
  }
946
937
  }),
@@ -955,8 +946,6 @@ var TEXT_MODELS = [
955
946
  capabilities: {
956
947
  reasoning: true,
957
948
  vision: true,
958
- tools: true,
959
- structuredOutput: true,
960
949
  contextWindow: 105e4
961
950
  }
962
951
  }),
@@ -969,7 +958,7 @@ var TEXT_MODELS = [
969
958
  costTier: 2,
970
959
  description: "Anthropic Claude Sonnet 4.5 (legacy) balanced model; text and image input, 200K-token context."
971
960
  },
972
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 2e5 }
961
+ capabilities: { vision: true, contextWindow: 2e5 }
973
962
  }),
974
963
  // Anthropic retired the dated 4.0 ids; callers that still send them get 4.6.
975
964
  text("claude-sonnet-4-6", "Claude Sonnet 4.6", "claude-sonnet-4-6", {
@@ -989,8 +978,6 @@ var TEXT_MODELS = [
989
978
  capabilities: {
990
979
  reasoning: true,
991
980
  vision: true,
992
- tools: true,
993
- structuredOutput: true,
994
981
  contextWindow: 1e6
995
982
  }
996
983
  }),
@@ -1005,8 +992,6 @@ var TEXT_MODELS = [
1005
992
  capabilities: {
1006
993
  reasoning: true,
1007
994
  vision: true,
1008
- tools: true,
1009
- structuredOutput: true,
1010
995
  contextWindow: 1e6
1011
996
  }
1012
997
  }),
@@ -1022,8 +1007,6 @@ var TEXT_MODELS = [
1022
1007
  capabilities: {
1023
1008
  reasoning: true,
1024
1009
  vision: true,
1025
- tools: true,
1026
- structuredOutput: true,
1027
1010
  contextWindow: 1e6
1028
1011
  }
1029
1012
  }),
@@ -1039,8 +1022,6 @@ var TEXT_MODELS = [
1039
1022
  capabilities: {
1040
1023
  reasoning: true,
1041
1024
  vision: true,
1042
- tools: true,
1043
- structuredOutput: true,
1044
1025
  contextWindow: 2e5
1045
1026
  }
1046
1027
  }),
@@ -1054,8 +1035,6 @@ var TEXT_MODELS = [
1054
1035
  },
1055
1036
  capabilities: {
1056
1037
  vision: true,
1057
- tools: true,
1058
- structuredOutput: true,
1059
1038
  contextWindow: 1e6
1060
1039
  }
1061
1040
  }),
@@ -1068,8 +1047,6 @@ var TEXT_MODELS = [
1068
1047
  },
1069
1048
  capabilities: {
1070
1049
  vision: true,
1071
- tools: true,
1072
- structuredOutput: true,
1073
1050
  contextWindow: 1e6
1074
1051
  }
1075
1052
  }),
@@ -1082,8 +1059,6 @@ var TEXT_MODELS = [
1082
1059
  },
1083
1060
  capabilities: {
1084
1061
  vision: true,
1085
- tools: true,
1086
- structuredOutput: true,
1087
1062
  contextWindow: 1048576
1088
1063
  }
1089
1064
  }),
@@ -1096,8 +1071,6 @@ var TEXT_MODELS = [
1096
1071
  },
1097
1072
  capabilities: {
1098
1073
  vision: true,
1099
- tools: true,
1100
- structuredOutput: true,
1101
1074
  contextWindow: 1048576
1102
1075
  }
1103
1076
  }),
@@ -1110,8 +1083,6 @@ var TEXT_MODELS = [
1110
1083
  },
1111
1084
  capabilities: {
1112
1085
  vision: true,
1113
- tools: true,
1114
- structuredOutput: true,
1115
1086
  contextWindow: 1048576
1116
1087
  }
1117
1088
  }),
@@ -1124,8 +1095,6 @@ var TEXT_MODELS = [
1124
1095
  },
1125
1096
  capabilities: {
1126
1097
  vision: true,
1127
- tools: true,
1128
- structuredOutput: true,
1129
1098
  contextWindow: 1048576
1130
1099
  }
1131
1100
  }),
@@ -1138,8 +1107,6 @@ var TEXT_MODELS = [
1138
1107
  },
1139
1108
  capabilities: {
1140
1109
  vision: true,
1141
- tools: true,
1142
- structuredOutput: true,
1143
1110
  contextWindow: 1048576
1144
1111
  }
1145
1112
  }),
@@ -1153,8 +1120,6 @@ var TEXT_MODELS = [
1153
1120
  },
1154
1121
  capabilities: {
1155
1122
  vision: true,
1156
- tools: true,
1157
- structuredOutput: true,
1158
1123
  contextWindow: 1048576
1159
1124
  }
1160
1125
  }),
@@ -1167,8 +1132,6 @@ var TEXT_MODELS = [
1167
1132
  },
1168
1133
  capabilities: {
1169
1134
  vision: true,
1170
- tools: true,
1171
- structuredOutput: true,
1172
1135
  contextWindow: 1048576
1173
1136
  }
1174
1137
  }),
@@ -1187,8 +1150,6 @@ var TEXT_MODELS = [
1187
1150
  },
1188
1151
  capabilities: {
1189
1152
  vision: true,
1190
- tools: true,
1191
- structuredOutput: true,
1192
1153
  contextWindow: 1048576
1193
1154
  }
1194
1155
  }),
@@ -1201,8 +1162,6 @@ var TEXT_MODELS = [
1201
1162
  },
1202
1163
  capabilities: {
1203
1164
  vision: true,
1204
- tools: false,
1205
- structuredOutput: true,
1206
1165
  contextWindow: 128e3
1207
1166
  }
1208
1167
  }),
@@ -1215,8 +1174,6 @@ var TEXT_MODELS = [
1215
1174
  },
1216
1175
  capabilities: {
1217
1176
  vision: true,
1218
- tools: false,
1219
- structuredOutput: true,
1220
1177
  contextWindow: 2e5
1221
1178
  }
1222
1179
  }),
@@ -1229,8 +1186,6 @@ var TEXT_MODELS = [
1229
1186
  },
1230
1187
  capabilities: {
1231
1188
  vision: true,
1232
- tools: false,
1233
- structuredOutput: true,
1234
1189
  contextWindow: 128e3
1235
1190
  }
1236
1191
  }),
@@ -1250,8 +1205,6 @@ var TEXT_MODELS = [
1250
1205
  capabilities: {
1251
1206
  reasoning: true,
1252
1207
  vision: true,
1253
- tools: true,
1254
- structuredOutput: true,
1255
1208
  contextWindow: 1e6
1256
1209
  }
1257
1210
  }),
@@ -1266,8 +1219,6 @@ var TEXT_MODELS = [
1266
1219
  capabilities: {
1267
1220
  reasoning: true,
1268
1221
  vision: false,
1269
- tools: true,
1270
- structuredOutput: true,
1271
1222
  contextWindow: 1e6
1272
1223
  }
1273
1224
  }),
@@ -1281,14 +1232,14 @@ var TEXT_MODELS = [
1281
1232
  },
1282
1233
  capabilities: {
1283
1234
  vision: true,
1284
- tools: true,
1285
- structuredOutput: true,
1286
1235
  contextWindow: 1e6
1287
1236
  }
1288
1237
  }),
1289
1238
  // Moonshot retired kimi-k2.5 on 2026-08-31 and no longer publishes its specs.
1290
1239
  text("kimi-k2.5", "Kimi K2.5", "kimi-k2.5", {
1291
- exposure: "catalog",
1240
+ lifecycle: "deprecated",
1241
+ replacedBy: "kimi-k3",
1242
+ exposure: "internal",
1292
1243
  display: {
1293
1244
  chat: { temperature: 1 },
1294
1245
  provider: "moonshot",
@@ -1308,8 +1259,6 @@ var TEXT_MODELS = [
1308
1259
  capabilities: {
1309
1260
  reasoning: true,
1310
1261
  vision: true,
1311
- tools: true,
1312
- structuredOutput: true,
1313
1262
  contextWindow: 1e6
1314
1263
  }
1315
1264
  }),
@@ -1323,12 +1272,12 @@ var TEXT_MODELS = [
1323
1272
  costTier: 2,
1324
1273
  description: "MiniMax M3 frontier multimodal model for agentic reasoning, tool use, and coding; text, image, and video input, 1M-token context."
1325
1274
  },
1326
- capabilities: { vision: true, tools: true, contextWindow: 1e6 }
1275
+ capabilities: { vision: true, contextWindow: 1e6 }
1327
1276
  })
1328
1277
  ];
1329
1278
 
1330
1279
  // src/catalog/video.ts
1331
- var VIDEO_USAGE = { unit: "seconds", modality: "VIDEO" };
1280
+ var VIDEO_USAGE = { unit: "seconds" };
1332
1281
  var SEEDANCE_RATIOS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16", "adaptive"];
1333
1282
  var KLING_RATIOS = ["16:9", "9:16", "1:1", "adaptive"];
1334
1283
  var OMNI_RATIOS = ["16:9", "9:16"];
@@ -1502,7 +1451,7 @@ var VIDEO_MODELS = [
1502
1451
  constraints: {
1503
1452
  aspectRatios: [...SEEDANCE_RATIOS],
1504
1453
  resolutions: ["480p", "720p", "1080p", "4k"],
1505
- durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1454
+ durations: { min: 4, max: 15 },
1506
1455
  durationPresets: [4, 6, 8, 10, 12, 15],
1507
1456
  references: { images: 9, videos: 3, audios: 3, audioOnly: false },
1508
1457
  ratioIgnoredWith: ["firstFrame"],
@@ -1535,7 +1484,7 @@ var VIDEO_MODELS = [
1535
1484
  constraints: {
1536
1485
  aspectRatios: [...SEEDANCE_RATIOS],
1537
1486
  resolutions: ["480p", "720p"],
1538
- durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1487
+ durations: { min: 4, max: 15 },
1539
1488
  references: { images: 9, videos: 3, audios: 3, audioOnly: false },
1540
1489
  ratioIgnoredWith: ["firstFrame"],
1541
1490
  supports: ["generateAudio", "seed", "lastFrame", "watermark"]
@@ -1608,7 +1557,7 @@ var VIDEO_MODELS = [
1608
1557
  },
1609
1558
  // No resolution default: xAI picks its own unless the caller asks.
1610
1559
  defaults: { durationSeconds: 8, aspectRatio: "16:9" },
1611
- usage: { unit: "reported_cost_usd", modality: "VIDEO", slug: "grok" },
1560
+ usage: { unit: "reported_cost_usd", slug: "grok" },
1612
1561
  pricingKind: "video_per_second",
1613
1562
  display: {
1614
1563
  provider: "xai",
@@ -1642,6 +1591,7 @@ var VIDEO_MODELS = [
1642
1591
  pricingKind: "video_per_second",
1643
1592
  display: {
1644
1593
  provider: "kuaishou",
1594
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1645
1595
  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."
1646
1596
  },
1647
1597
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1672,6 +1622,7 @@ var VIDEO_MODELS = [
1672
1622
  pricingKind: "video_per_second",
1673
1623
  display: {
1674
1624
  provider: "kuaishou",
1625
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1675
1626
  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."
1676
1627
  },
1677
1628
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1705,10 +1656,11 @@ var VIDEO_MODELS = [
1705
1656
  supports: ["generateAudio", "lastFrame"]
1706
1657
  },
1707
1658
  defaults: { durationSeconds: 5, aspectRatio: "16:9", generateAudio: false, mode: "pro" },
1708
- usage: { unit: "compute_seconds", modality: "VIDEO" },
1659
+ usage: { unit: "compute_seconds" },
1709
1660
  pricingKind: "video_per_second",
1710
1661
  display: {
1711
1662
  provider: "kuaishou",
1663
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1712
1664
  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."
1713
1665
  },
1714
1666
  capabilities: {}
@@ -1738,6 +1690,7 @@ var VIDEO_MODELS = [
1738
1690
  pricingKind: "video_per_second",
1739
1691
  display: {
1740
1692
  provider: "minimax",
1693
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1741
1694
  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."
1742
1695
  },
1743
1696
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1767,6 +1720,7 @@ var VIDEO_MODELS = [
1767
1720
  pricingKind: "video_per_second",
1768
1721
  display: {
1769
1722
  provider: "minimax",
1723
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1770
1724
  description: "High-speed MiniMax H3 Max variant for text-to-video and image-to-video (first/last frame) only, up to 768p."
1771
1725
  },
1772
1726
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1797,6 +1751,7 @@ var VIDEO_MODELS = [
1797
1751
  pricingKind: "video_per_second",
1798
1752
  display: {
1799
1753
  provider: "minimax",
1754
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1800
1755
  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."
1801
1756
  },
1802
1757
  capabilities: {}
@@ -1827,6 +1782,7 @@ var VIDEO_MODELS = [
1827
1782
  pricingKind: "video_per_second",
1828
1783
  display: {
1829
1784
  provider: "minimax",
1785
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1830
1786
  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."
1831
1787
  },
1832
1788
  capabilities: {}
@@ -1852,6 +1808,7 @@ var VIDEO_MODELS = [
1852
1808
  pricingKind: "video_per_second",
1853
1809
  display: {
1854
1810
  provider: "kuaishou",
1811
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1855
1812
  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."
1856
1813
  },
1857
1814
  capabilities: { acceptsSourceVideo: true }
@@ -1871,10 +1828,11 @@ var VIDEO_MODELS = [
1871
1828
  supports: ["lastFrame"]
1872
1829
  },
1873
1830
  defaults: { durationSeconds: 6, resolution: "768p" },
1874
- usage: { unit: "compute_seconds", modality: "VIDEO" },
1831
+ usage: { unit: "compute_seconds" },
1875
1832
  pricingKind: "video_per_second",
1876
1833
  display: {
1877
1834
  provider: "minimax",
1835
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1878
1836
  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."
1879
1837
  },
1880
1838
  capabilities: {}
@@ -2522,7 +2480,7 @@ function passthroughTextModel(model) {
2522
2480
  exposure: "internal",
2523
2481
  constraints: {},
2524
2482
  defaults: {},
2525
- usage: { unit: "tokens", modality: "TEXT" },
2483
+ usage: { unit: "tokens" },
2526
2484
  pricingKind: "token"
2527
2485
  };
2528
2486
  }