@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/index.js CHANGED
@@ -99,8 +99,7 @@ var Catalog = class _Catalog {
99
99
  };
100
100
 
101
101
  // src/catalog/image.ts
102
- var IMAGE_USAGE = { unit: "images", modality: "IMAGE" };
103
- var IMAGE_GENERATE_EDIT = { imageGenerate: true, imageEdit: true };
102
+ var IMAGE_USAGE = { unit: "images" };
104
103
  var GEMINI_RATIOS = [
105
104
  "1:1",
106
105
  "2:3",
@@ -132,8 +131,7 @@ function geminiImage(id, label, aliases, sizes, display, exposure) {
132
131
  defaults: { size: "1K", aspectRatio: "1:1" },
133
132
  usage: { ...IMAGE_USAGE, slug: "gemini" },
134
133
  pricingKind: "image_size",
135
- display,
136
- capabilities: { ...IMAGE_GENERATE_EDIT }
134
+ display
137
135
  };
138
136
  return model;
139
137
  }
@@ -220,8 +218,7 @@ var IMAGE_MODELS = [
220
218
  provider: "openai",
221
219
  description: "The most capable model for image editing and complex creative instructions. Excels at text rendering, visual consistency, design generation, and iterative refinement.",
222
220
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/1204b494-8962-4f7f-af5e-699a8bdc98e3_compressed.png"
223
- },
224
- capabilities: { ...IMAGE_GENERATE_EDIT }
221
+ }
225
222
  },
226
223
  {
227
224
  // Same Images API surface as gpt-image-2 plus the "xhigh" and "max" quality tiers.
@@ -255,8 +252,7 @@ var IMAGE_MODELS = [
255
252
  display: {
256
253
  provider: "openai",
257
254
  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."
258
- },
259
- capabilities: { ...IMAGE_GENERATE_EDIT }
255
+ }
260
256
  },
261
257
  {
262
258
  // Same Images API surface as gpt-image-2 plus the "xhigh" and "max" quality tiers.
@@ -290,8 +286,7 @@ var IMAGE_MODELS = [
290
286
  display: {
291
287
  provider: "openai",
292
288
  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."
293
- },
294
- capabilities: { ...IMAGE_GENERATE_EDIT }
289
+ }
295
290
  },
296
291
  {
297
292
  // Cowork allows 7 ratios; trigger-workflows allows 9 (adds 3:2, 9:21, drops 4:5/5:4).
@@ -329,8 +324,7 @@ var IMAGE_MODELS = [
329
324
  provider: "meta",
330
325
  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.",
331
326
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/characters/1787909065794-k9a7zz.png"
332
- },
333
- capabilities: { ...IMAGE_GENERATE_EDIT }
327
+ }
334
328
  },
335
329
  {
336
330
  id: "seedream-5-0-pro",
@@ -354,9 +348,9 @@ var IMAGE_MODELS = [
354
348
  pricingKind: "image_size",
355
349
  display: {
356
350
  provider: "bytedance",
351
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/3bba5d81-4e57-4e71-911b-cdfa05acca2c_compressed.png",
357
352
  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."
358
- },
359
- capabilities: { ...IMAGE_GENERATE_EDIT }
353
+ }
360
354
  },
361
355
  {
362
356
  id: "seedream-4.5",
@@ -393,8 +387,7 @@ var IMAGE_MODELS = [
393
387
  display: {
394
388
  provider: "bytedance",
395
389
  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."
396
- },
397
- capabilities: { ...IMAGE_GENERATE_EDIT }
390
+ }
398
391
  },
399
392
  {
400
393
  id: "flux-2-pro",
@@ -416,9 +409,9 @@ var IMAGE_MODELS = [
416
409
  pricingKind: "image_size",
417
410
  display: {
418
411
  provider: "black-forest-labs",
412
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/flux.png",
419
413
  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."
420
- },
421
- capabilities: { ...IMAGE_GENERATE_EDIT }
414
+ }
422
415
  },
423
416
  {
424
417
  // Prodia's gemini-3-pro jobs take aspect_ratio + resolution (1K/2K/4K), not
@@ -444,8 +437,7 @@ var IMAGE_MODELS = [
444
437
  display: {
445
438
  provider: "google",
446
439
  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."
447
- },
448
- capabilities: { ...IMAGE_GENERATE_EDIT }
440
+ }
449
441
  },
450
442
  {
451
443
  // Nano Banana (img2img.v2) is flat-rate with aspect_ratio only; 3:2, 4:5,
@@ -470,8 +462,7 @@ var IMAGE_MODELS = [
470
462
  display: {
471
463
  provider: "google",
472
464
  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."
473
- },
474
- capabilities: { ...IMAGE_GENERATE_EDIT }
465
+ }
475
466
  },
476
467
  {
477
468
  // WAN 2.7 takes `images` (up to 9) and a `size` enum whose exact values
@@ -492,13 +483,12 @@ var IMAGE_MODELS = [
492
483
  supports: []
493
484
  },
494
485
  defaults: { size: "1K", aspectRatio: "1:1" },
495
- usage: { unit: "compute_seconds", modality: "IMAGE" },
486
+ usage: { unit: "compute_seconds" },
496
487
  pricingKind: "image_size",
497
488
  display: {
498
489
  provider: "alibaba",
499
490
  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)."
500
- },
501
- capabilities: { ...IMAGE_GENERATE_EDIT }
491
+ }
502
492
  },
503
493
  {
504
494
  // Qwen Image 2 Pro has aspect_ratio but no size input; resolution follows
@@ -520,13 +510,12 @@ var IMAGE_MODELS = [
520
510
  supports: []
521
511
  },
522
512
  defaults: { aspectRatio: "1:1" },
523
- usage: { unit: "compute_seconds", modality: "IMAGE" },
513
+ usage: { unit: "compute_seconds" },
524
514
  pricingKind: "image_size",
525
515
  display: {
526
516
  provider: "alibaba",
527
517
  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."
528
- },
529
- capabilities: { ...IMAGE_GENERATE_EDIT }
518
+ }
530
519
  },
531
520
  {
532
521
  // Qwen Image Edit Plus takes aspect_ratio (or match_input_image) and
@@ -548,17 +537,17 @@ var IMAGE_MODELS = [
548
537
  supports: ["outputFormat"]
549
538
  },
550
539
  defaults: { outputFormat: "png" },
551
- usage: { unit: "compute_seconds", modality: "IMAGE" },
540
+ usage: { unit: "compute_seconds" },
552
541
  pricingKind: "image_size",
553
542
  display: {
554
543
  provider: "alibaba",
555
544
  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."
556
- },
557
- capabilities: { ...IMAGE_GENERATE_EDIT }
545
+ }
558
546
  }
559
547
  ];
560
548
 
561
549
  // src/catalog/other.ts
550
+ var GOOGLE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
562
551
  var OTHER_MODELS = [
563
552
  {
564
553
  id: "lyria-3-clip-preview",
@@ -575,10 +564,11 @@ var OTHER_MODELS = [
575
564
  supports: []
576
565
  },
577
566
  defaults: {},
578
- usage: { unit: "images", modality: "AUDIO" },
567
+ usage: { unit: "images" },
579
568
  pricingKind: "flat",
580
569
  display: {
581
570
  provider: "google",
571
+ logo: GOOGLE_LOGO,
582
572
  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."
583
573
  },
584
574
  capabilities: {}
@@ -597,10 +587,11 @@ var OTHER_MODELS = [
597
587
  supports: []
598
588
  },
599
589
  defaults: {},
600
- usage: { unit: "images", modality: "AUDIO" },
590
+ usage: { unit: "images" },
601
591
  pricingKind: "flat",
602
592
  display: {
603
593
  provider: "google",
594
+ logo: GOOGLE_LOGO,
604
595
  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."
605
596
  },
606
597
  capabilities: {}
@@ -619,7 +610,7 @@ var OTHER_MODELS = [
619
610
  supports: ["seed", "negativePrompt"]
620
611
  },
621
612
  defaults: {},
622
- usage: { unit: "compute_seconds", modality: "AUDIO" },
613
+ usage: { unit: "compute_seconds" },
623
614
  pricingKind: "flat",
624
615
  display: {
625
616
  provider: "google",
@@ -642,7 +633,7 @@ var OTHER_MODELS = [
642
633
  supports: ["seed", "negativePrompt"]
643
634
  },
644
635
  defaults: { durationSeconds: 8 },
645
- usage: { unit: "compute_seconds", modality: "AUDIO" },
636
+ usage: { unit: "compute_seconds" },
646
637
  pricingKind: "flat",
647
638
  display: {
648
639
  provider: "mmaudio",
@@ -665,7 +656,7 @@ var OTHER_MODELS = [
665
656
  },
666
657
  defaults: { durationSeconds: 15, instrumental: true },
667
658
  // Replicate's run() does not report predict_time; billed by generated length.
668
- usage: { unit: "seconds", modality: "AUDIO" },
659
+ usage: { unit: "seconds" },
669
660
  pricingKind: "flat",
670
661
  display: {
671
662
  provider: "elevenlabs",
@@ -688,13 +679,13 @@ var OTHER_MODELS = [
688
679
  supports: ["scaleFactor", "outputFormat", "upscale"]
689
680
  },
690
681
  defaults: { scaleFactor: 2, outputFormat: "png" },
691
- usage: { unit: "compute_seconds", modality: "IMAGE" },
682
+ usage: { unit: "compute_seconds" },
692
683
  pricingKind: "flat",
693
684
  display: {
694
685
  provider: "topaz",
686
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/topazlabs.png",
695
687
  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."
696
- },
697
- capabilities: { imageEdit: true }
688
+ }
698
689
  },
699
690
  {
700
691
  id: "bg-remove",
@@ -711,19 +702,30 @@ var OTHER_MODELS = [
711
702
  supports: []
712
703
  },
713
704
  defaults: {},
714
- usage: { unit: "images", modality: "IMAGE" },
705
+ usage: { unit: "images" },
715
706
  pricingKind: "flat",
716
707
  display: {
717
708
  provider: "prodia",
718
709
  description: "Prodia background removal; takes one input image and returns a PNG cut-out of the subject plus an optional black-and-white mask."
719
- },
720
- capabilities: { imageEdit: true }
710
+ }
721
711
  }
722
712
  ];
723
713
 
724
714
  // src/catalog/text.ts
725
- var TEXT_USAGE = { unit: "tokens", modality: "TEXT" };
715
+ var TEXT_USAGE = { unit: "tokens" };
716
+ var CDN = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image";
717
+ var PROVIDER_LOGOS = {
718
+ anthropic: `${CDN}/25fad392-188c-4829-a3d0-c4fa02d1c8cd.png`,
719
+ openai: `${CDN}/1204b494-8962-4f7f-af5e-699a8bdc98e3.png`,
720
+ google: `${CDN}/192485d2-a76a-4657-9c06-930b2c70badd.png`,
721
+ deepseek: `${CDN}/9b7406d2-a696-4558-ab79-90a37e3f4574.png`,
722
+ xai: `${CDN}/858b7fcc-9bd5-411d-aea1-a7b35ecfffab.png`,
723
+ moonshot: `${CDN}/5a1e2eae-3474-4fac-9c74-a93f41ee6f67.png`,
724
+ minimax: `${CDN}/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png`
725
+ };
726
726
  function text(id, label, providerModelId, extra) {
727
+ const display = extra?.display;
728
+ const logo = display && !display.logo ? PROVIDER_LOGOS[display.provider] : void 0;
727
729
  return {
728
730
  id,
729
731
  aliases: [],
@@ -737,7 +739,8 @@ function text(id, label, providerModelId, extra) {
737
739
  defaults: {},
738
740
  usage: { ...TEXT_USAGE },
739
741
  pricingKind: "token",
740
- ...extra
742
+ ...extra,
743
+ ...display && logo ? { display: { ...display, logo } } : {}
741
744
  };
742
745
  }
743
746
  var ANTHROPIC_THINKING = {
@@ -756,7 +759,7 @@ var TEXT_MODELS = [
756
759
  costTier: 2,
757
760
  description: "OpenAI GPT-4o flagship multimodal model; text and image input, 128K-token context."
758
761
  },
759
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
762
+ capabilities: { vision: true, contextWindow: 128e3 }
760
763
  }),
761
764
  text("gpt-4o-mini", "GPT-4o mini", "gpt-4o-mini", {
762
765
  exposure: "internal",
@@ -765,7 +768,7 @@ var TEXT_MODELS = [
765
768
  costTier: 1,
766
769
  description: "OpenAI GPT-4o mini fast, low-cost multimodal model; text and image input, 128K-token context."
767
770
  },
768
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 128e3 }
771
+ capabilities: { vision: true, contextWindow: 128e3 }
769
772
  }),
770
773
  text("gpt-5.1", "GPT-5.1", "gpt-5.1", {
771
774
  exposure: "catalog",
@@ -774,7 +777,7 @@ var TEXT_MODELS = [
774
777
  costTier: 3,
775
778
  description: "OpenAI GPT-5.1 reasoning model for coding and agentic tasks; text and image input, 400K-token context."
776
779
  },
777
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
780
+ capabilities: { vision: true, contextWindow: 4e5 }
778
781
  }),
779
782
  text("gpt-5.2", "GPT-5.2", "gpt-5.2", {
780
783
  exposure: "catalog",
@@ -783,7 +786,7 @@ var TEXT_MODELS = [
783
786
  costTier: 3,
784
787
  description: "OpenAI GPT-5.2 reasoning model for complex professional work; text and image input, 400K-token context."
785
788
  },
786
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
789
+ capabilities: { vision: true, contextWindow: 4e5 }
787
790
  }),
788
791
  // 1.05M-token context: https://platform.openai.com/docs/models/gpt-5.4
789
792
  text("gpt-5.4", "GPT-5.4", "gpt-5.4", {
@@ -795,8 +798,6 @@ var TEXT_MODELS = [
795
798
  },
796
799
  capabilities: {
797
800
  vision: true,
798
- tools: true,
799
- structuredOutput: true,
800
801
  contextWindow: 105e4
801
802
  }
802
803
  }),
@@ -809,7 +810,7 @@ var TEXT_MODELS = [
809
810
  costTier: 1,
810
811
  description: "OpenAI GPT-5.4 mini efficient reasoning model for high-volume workloads; text and image input, 400K-token context."
811
812
  },
812
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 4e5 }
813
+ capabilities: { vision: true, contextWindow: 4e5 }
813
814
  }),
814
815
  text("gpt-5.5", "GPT-5.5", "gpt-5.5", {
815
816
  exposure: "catalog",
@@ -820,15 +821,13 @@ var TEXT_MODELS = [
820
821
  },
821
822
  capabilities: {
822
823
  vision: true,
823
- tools: true,
824
- structuredOutput: true,
825
824
  contextWindow: 105e4
826
825
  }
827
826
  }),
828
827
  text("gpt-5.6-luna", "GPT-5.6 Luna", "gpt-5.6-luna", {
829
- providerOptions: OPENAI_REASONING,
830
828
  exposure: "catalog",
831
829
  display: {
830
+ chat: { providerOptions: OPENAI_REASONING },
832
831
  provider: "openai",
833
832
  costTier: 1,
834
833
  description: "OpenAI GPT-5.6 Luna cost-optimized tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
@@ -836,15 +835,13 @@ var TEXT_MODELS = [
836
835
  capabilities: {
837
836
  reasoning: true,
838
837
  vision: true,
839
- tools: true,
840
- structuredOutput: true,
841
838
  contextWindow: 105e4
842
839
  }
843
840
  }),
844
841
  text("gpt-5.6-terra", "GPT-5.6 Terra", "gpt-5.6-terra", {
845
- providerOptions: OPENAI_REASONING,
846
842
  exposure: "catalog",
847
843
  display: {
844
+ chat: { providerOptions: OPENAI_REASONING },
848
845
  provider: "openai",
849
846
  costTier: 2,
850
847
  description: "OpenAI GPT-5.6 Terra balanced tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
@@ -852,15 +849,13 @@ var TEXT_MODELS = [
852
849
  capabilities: {
853
850
  reasoning: true,
854
851
  vision: true,
855
- tools: true,
856
- structuredOutput: true,
857
852
  contextWindow: 105e4
858
853
  }
859
854
  }),
860
855
  text("gpt-5.6-sol", "GPT-5.6 Sol", "gpt-5.6-sol", {
861
- providerOptions: OPENAI_REASONING,
862
856
  exposure: "catalog",
863
857
  display: {
858
+ chat: { providerOptions: OPENAI_REASONING },
864
859
  provider: "openai",
865
860
  costTier: 3,
866
861
  description: "OpenAI GPT-5.6 Sol flagship tier of the GPT-5.6 reasoning family; text and image input, 1.05M-token context."
@@ -868,8 +863,6 @@ var TEXT_MODELS = [
868
863
  capabilities: {
869
864
  reasoning: true,
870
865
  vision: true,
871
- tools: true,
872
- structuredOutput: true,
873
866
  contextWindow: 105e4
874
867
  }
875
868
  }),
@@ -882,11 +875,10 @@ var TEXT_MODELS = [
882
875
  costTier: 2,
883
876
  description: "Anthropic Claude Sonnet 4.5 (legacy) balanced model; text and image input, 200K-token context."
884
877
  },
885
- capabilities: { vision: true, tools: true, structuredOutput: true, contextWindow: 2e5 }
878
+ capabilities: { vision: true, contextWindow: 2e5 }
886
879
  }),
887
880
  // Anthropic retired the dated 4.0 ids; callers that still send them get 4.6.
888
881
  text("claude-sonnet-4-6", "Claude Sonnet 4.6", "claude-sonnet-4-6", {
889
- providerOptions: ANTHROPIC_THINKING,
890
882
  exposure: "catalog",
891
883
  aliases: [
892
884
  "claude-sonnet-4.6",
@@ -895,6 +887,7 @@ var TEXT_MODELS = [
895
887
  "claude-sonnet-4-20250514"
896
888
  ],
897
889
  display: {
890
+ chat: { providerOptions: ANTHROPIC_THINKING },
898
891
  provider: "anthropic",
899
892
  costTier: 2,
900
893
  description: "Anthropic Claude Sonnet 4.6 (legacy) balanced model; text and image input, 1M-token context."
@@ -902,15 +895,13 @@ var TEXT_MODELS = [
902
895
  capabilities: {
903
896
  reasoning: true,
904
897
  vision: true,
905
- tools: true,
906
- structuredOutput: true,
907
898
  contextWindow: 1e6
908
899
  }
909
900
  }),
910
901
  text("claude-sonnet-5", "Claude Sonnet 5", "claude-sonnet-5", {
911
- providerOptions: ANTHROPIC_ADAPTIVE,
912
902
  exposure: "catalog",
913
903
  display: {
904
+ chat: { providerOptions: ANTHROPIC_ADAPTIVE },
914
905
  provider: "anthropic",
915
906
  costTier: 3,
916
907
  description: "Anthropic Claude Sonnet 5 current balanced model; text and image input, 1M-token context."
@@ -918,16 +909,14 @@ var TEXT_MODELS = [
918
909
  capabilities: {
919
910
  reasoning: true,
920
911
  vision: true,
921
- tools: true,
922
- structuredOutput: true,
923
912
  contextWindow: 1e6
924
913
  }
925
914
  }),
926
915
  text("claude-opus-4-8", "Claude Opus 4.8", "claude-opus-4-8", {
927
- providerOptions: ANTHROPIC_ADAPTIVE,
928
916
  exposure: "catalog",
929
917
  aliases: ["claude-opus-4.8", "claude-opus-4", "claude-opus-4.0", "claude-opus-4-20250514"],
930
918
  display: {
919
+ chat: { providerOptions: ANTHROPIC_ADAPTIVE },
931
920
  provider: "anthropic",
932
921
  costTier: 3,
933
922
  description: "Anthropic Claude Opus 4.8 (legacy) frontier model; text and image input, 1M-token context."
@@ -935,16 +924,14 @@ var TEXT_MODELS = [
935
924
  capabilities: {
936
925
  reasoning: true,
937
926
  vision: true,
938
- tools: true,
939
- structuredOutput: true,
940
927
  contextWindow: 1e6
941
928
  }
942
929
  }),
943
930
  text("claude-haiku-4-5", "Claude Haiku 4.5", "claude-haiku-4-5", {
944
- providerOptions: ANTHROPIC_THINKING,
945
931
  exposure: "catalog",
946
932
  aliases: ["claude-haiku-4.5", "claude-haiku-4-5-20251001", "claude-haiku-4"],
947
933
  display: {
934
+ chat: { providerOptions: ANTHROPIC_THINKING },
948
935
  provider: "anthropic",
949
936
  costTier: 1,
950
937
  description: "Anthropic Claude Haiku 4.5 fast model with near-frontier intelligence; text and image input, 200K-token context."
@@ -952,8 +939,6 @@ var TEXT_MODELS = [
952
939
  capabilities: {
953
940
  reasoning: true,
954
941
  vision: true,
955
- tools: true,
956
- structuredOutput: true,
957
942
  contextWindow: 2e5
958
943
  }
959
944
  }),
@@ -967,8 +952,6 @@ var TEXT_MODELS = [
967
952
  },
968
953
  capabilities: {
969
954
  vision: true,
970
- tools: true,
971
- structuredOutput: true,
972
955
  contextWindow: 1e6
973
956
  }
974
957
  }),
@@ -981,8 +964,6 @@ var TEXT_MODELS = [
981
964
  },
982
965
  capabilities: {
983
966
  vision: true,
984
- tools: true,
985
- structuredOutput: true,
986
967
  contextWindow: 1e6
987
968
  }
988
969
  }),
@@ -995,8 +976,6 @@ var TEXT_MODELS = [
995
976
  },
996
977
  capabilities: {
997
978
  vision: true,
998
- tools: true,
999
- structuredOutput: true,
1000
979
  contextWindow: 1048576
1001
980
  }
1002
981
  }),
@@ -1009,8 +988,6 @@ var TEXT_MODELS = [
1009
988
  },
1010
989
  capabilities: {
1011
990
  vision: true,
1012
- tools: true,
1013
- structuredOutput: true,
1014
991
  contextWindow: 1048576
1015
992
  }
1016
993
  }),
@@ -1023,8 +1000,6 @@ var TEXT_MODELS = [
1023
1000
  },
1024
1001
  capabilities: {
1025
1002
  vision: true,
1026
- tools: true,
1027
- structuredOutput: true,
1028
1003
  contextWindow: 1048576
1029
1004
  }
1030
1005
  }),
@@ -1037,8 +1012,6 @@ var TEXT_MODELS = [
1037
1012
  },
1038
1013
  capabilities: {
1039
1014
  vision: true,
1040
- tools: true,
1041
- structuredOutput: true,
1042
1015
  contextWindow: 1048576
1043
1016
  }
1044
1017
  }),
@@ -1051,8 +1024,6 @@ var TEXT_MODELS = [
1051
1024
  },
1052
1025
  capabilities: {
1053
1026
  vision: true,
1054
- tools: true,
1055
- structuredOutput: true,
1056
1027
  contextWindow: 1048576
1057
1028
  }
1058
1029
  }),
@@ -1066,8 +1037,6 @@ var TEXT_MODELS = [
1066
1037
  },
1067
1038
  capabilities: {
1068
1039
  vision: true,
1069
- tools: true,
1070
- structuredOutput: true,
1071
1040
  contextWindow: 1048576
1072
1041
  }
1073
1042
  }),
@@ -1080,8 +1049,6 @@ var TEXT_MODELS = [
1080
1049
  },
1081
1050
  capabilities: {
1082
1051
  vision: true,
1083
- tools: true,
1084
- structuredOutput: true,
1085
1052
  contextWindow: 1048576
1086
1053
  }
1087
1054
  }),
@@ -1100,8 +1067,6 @@ var TEXT_MODELS = [
1100
1067
  },
1101
1068
  capabilities: {
1102
1069
  vision: true,
1103
- tools: true,
1104
- structuredOutput: true,
1105
1070
  contextWindow: 1048576
1106
1071
  }
1107
1072
  }),
@@ -1114,8 +1079,6 @@ var TEXT_MODELS = [
1114
1079
  },
1115
1080
  capabilities: {
1116
1081
  vision: true,
1117
- tools: false,
1118
- structuredOutput: true,
1119
1082
  contextWindow: 128e3
1120
1083
  }
1121
1084
  }),
@@ -1128,8 +1091,6 @@ var TEXT_MODELS = [
1128
1091
  },
1129
1092
  capabilities: {
1130
1093
  vision: true,
1131
- tools: false,
1132
- structuredOutput: true,
1133
1094
  contextWindow: 2e5
1134
1095
  }
1135
1096
  }),
@@ -1142,8 +1103,6 @@ var TEXT_MODELS = [
1142
1103
  },
1143
1104
  capabilities: {
1144
1105
  vision: true,
1145
- tools: false,
1146
- structuredOutput: true,
1147
1106
  contextWindow: 128e3
1148
1107
  }
1149
1108
  }),
@@ -1151,10 +1110,10 @@ var TEXT_MODELS = [
1151
1110
  // Flash rates (https://api-docs.deepseek.com/news/news260910/); the old id
1152
1111
  // stays an alias so stored selections keep resolving.
1153
1112
  text("deepseek-flash", "DeepSeek V4.1 Flash", "deepseek-flash", {
1154
- providerOptions: DEEPSEEK_THINKING,
1155
1113
  aliases: ["deepseek-v4-flash"],
1156
1114
  exposure: "catalog",
1157
1115
  display: {
1116
+ chat: { providerOptions: DEEPSEEK_THINKING },
1158
1117
  provider: "deepseek",
1159
1118
  costTier: 1,
1160
1119
  recommended: true,
@@ -1163,15 +1122,13 @@ var TEXT_MODELS = [
1163
1122
  capabilities: {
1164
1123
  reasoning: true,
1165
1124
  vision: true,
1166
- tools: true,
1167
- structuredOutput: true,
1168
1125
  contextWindow: 1e6
1169
1126
  }
1170
1127
  }),
1171
1128
  text("deepseek-v4-pro", "DeepSeek V4 Pro", "deepseek-v4-pro", {
1172
- providerOptions: DEEPSEEK_THINKING,
1173
1129
  exposure: "catalog",
1174
1130
  display: {
1131
+ chat: { providerOptions: DEEPSEEK_THINKING },
1175
1132
  provider: "deepseek",
1176
1133
  costTier: 2,
1177
1134
  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."
@@ -1179,8 +1136,6 @@ var TEXT_MODELS = [
1179
1136
  capabilities: {
1180
1137
  reasoning: true,
1181
1138
  vision: false,
1182
- tools: true,
1183
- structuredOutput: true,
1184
1139
  contextWindow: 1e6
1185
1140
  }
1186
1141
  }),
@@ -1194,16 +1149,16 @@ var TEXT_MODELS = [
1194
1149
  },
1195
1150
  capabilities: {
1196
1151
  vision: true,
1197
- tools: true,
1198
- structuredOutput: true,
1199
1152
  contextWindow: 1e6
1200
1153
  }
1201
1154
  }),
1202
1155
  // Moonshot retired kimi-k2.5 on 2026-08-31 and no longer publishes its specs.
1203
1156
  text("kimi-k2.5", "Kimi K2.5", "kimi-k2.5", {
1204
- defaults: { temperature: 1 },
1205
- exposure: "catalog",
1157
+ lifecycle: "deprecated",
1158
+ replacedBy: "kimi-k3",
1159
+ exposure: "internal",
1206
1160
  display: {
1161
+ chat: { temperature: 1 },
1207
1162
  provider: "moonshot",
1208
1163
  costTier: 2,
1209
1164
  description: "Moonshot Kimi K2.5; the provider retired the model on 2026-08-31 and calls now return a model-not-found error."
@@ -1211,9 +1166,9 @@ var TEXT_MODELS = [
1211
1166
  capabilities: {}
1212
1167
  }),
1213
1168
  text("kimi-k3", "Kimi K3", "kimi-k3", {
1214
- defaults: { temperature: 1 },
1215
1169
  exposure: "catalog",
1216
1170
  display: {
1171
+ chat: { temperature: 1 },
1217
1172
  provider: "moonshot",
1218
1173
  costTier: 2,
1219
1174
  description: "Moonshot Kimi K3 flagship model with native visual understanding and always-on thinking; text, image, and video input, 1M-token context."
@@ -1221,8 +1176,6 @@ var TEXT_MODELS = [
1221
1176
  capabilities: {
1222
1177
  reasoning: true,
1223
1178
  vision: true,
1224
- tools: true,
1225
- structuredOutput: true,
1226
1179
  contextWindow: 1e6
1227
1180
  }
1228
1181
  }),
@@ -1236,12 +1189,12 @@ var TEXT_MODELS = [
1236
1189
  costTier: 2,
1237
1190
  description: "MiniMax M3 frontier multimodal model for agentic reasoning, tool use, and coding; text, image, and video input, 1M-token context."
1238
1191
  },
1239
- capabilities: { vision: true, tools: true, contextWindow: 1e6 }
1192
+ capabilities: { vision: true, contextWindow: 1e6 }
1240
1193
  })
1241
1194
  ];
1242
1195
 
1243
1196
  // src/catalog/video.ts
1244
- var VIDEO_USAGE = { unit: "seconds", modality: "VIDEO" };
1197
+ var VIDEO_USAGE = { unit: "seconds" };
1245
1198
  var SEEDANCE_RATIOS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16", "adaptive"];
1246
1199
  var KLING_RATIOS = ["16:9", "9:16", "1:1", "adaptive"];
1247
1200
  var OMNI_RATIOS = ["16:9", "9:16"];
@@ -1250,7 +1203,8 @@ var H3_RATIOS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16"];
1250
1203
  var H3_REFERENCE_RATIOS = ["adaptive", ...H3_RATIOS];
1251
1204
  var NEGATIVE_PROMPT = "blur, distort, and low quality";
1252
1205
  var FRAMES_EXCLUDE_REFERENCES = { framesExcludeReferences: true };
1253
- var GOOGLE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
1206
+ var BYTEDANCE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/3bba5d81-4e57-4e71-911b-cdfa05acca2c_compressed.png";
1207
+ var GOOGLE_LOGO2 = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
1254
1208
  var VIDEO_MODELS = [
1255
1209
  {
1256
1210
  id: "veo-3.1",
@@ -1279,7 +1233,7 @@ var VIDEO_MODELS = [
1279
1233
  display: {
1280
1234
  provider: "google",
1281
1235
  description: "Google's highest-quality video generation model. Supports up to 4K resolution and 8-second clips with reference image conditioning.",
1282
- logo: GOOGLE_LOGO
1236
+ logo: GOOGLE_LOGO2
1283
1237
  },
1284
1238
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
1285
1239
  },
@@ -1371,7 +1325,7 @@ var VIDEO_MODELS = [
1371
1325
  display: {
1372
1326
  provider: "google",
1373
1327
  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.",
1374
- logo: GOOGLE_LOGO
1328
+ logo: GOOGLE_LOGO2
1375
1329
  },
1376
1330
  capabilities: { acceptsSourceVideo: true }
1377
1331
  },
@@ -1396,6 +1350,7 @@ var VIDEO_MODELS = [
1396
1350
  pricingKind: "video_per_second",
1397
1351
  display: {
1398
1352
  provider: "google",
1353
+ logo: GOOGLE_LOGO2,
1399
1354
  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."
1400
1355
  },
1401
1356
  capabilities: { acceptsSourceVideo: true }
@@ -1413,7 +1368,7 @@ var VIDEO_MODELS = [
1413
1368
  constraints: {
1414
1369
  aspectRatios: [...SEEDANCE_RATIOS],
1415
1370
  resolutions: ["480p", "720p", "1080p", "4k"],
1416
- durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1371
+ durations: { min: 4, max: 15 },
1417
1372
  durationPresets: [4, 6, 8, 10, 12, 15],
1418
1373
  references: { images: 9, videos: 3, audios: 3, audioOnly: false },
1419
1374
  ratioIgnoredWith: ["firstFrame"],
@@ -1430,7 +1385,7 @@ var VIDEO_MODELS = [
1430
1385
  display: {
1431
1386
  provider: "bytedance",
1432
1387
  description: "High-quality AI video generation with reference image conditioning. Supports 4-15 second clips with human preprocessing.",
1433
- logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/3bba5d81-4e57-4e71-911b-cdfa05acca2c_compressed.png"
1388
+ logo: BYTEDANCE_LOGO
1434
1389
  },
1435
1390
  capabilities: { acceptsSourceVideo: true, ...FRAMES_EXCLUDE_REFERENCES }
1436
1391
  },
@@ -1446,7 +1401,7 @@ var VIDEO_MODELS = [
1446
1401
  constraints: {
1447
1402
  aspectRatios: [...SEEDANCE_RATIOS],
1448
1403
  resolutions: ["480p", "720p"],
1449
- durations: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
1404
+ durations: { min: 4, max: 15 },
1450
1405
  references: { images: 9, videos: 3, audios: 3, audioOnly: false },
1451
1406
  ratioIgnoredWith: ["firstFrame"],
1452
1407
  supports: ["generateAudio", "seed", "lastFrame", "watermark"]
@@ -1461,6 +1416,7 @@ var VIDEO_MODELS = [
1461
1416
  pricingKind: "video_per_second",
1462
1417
  display: {
1463
1418
  provider: "bytedance",
1419
+ logo: BYTEDANCE_LOGO,
1464
1420
  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."
1465
1421
  },
1466
1422
  capabilities: { acceptsSourceVideo: true, ...FRAMES_EXCLUDE_REFERENCES }
@@ -1493,6 +1449,7 @@ var VIDEO_MODELS = [
1493
1449
  pricingKind: "video_per_second",
1494
1450
  display: {
1495
1451
  provider: "bytedance",
1452
+ logo: BYTEDANCE_LOGO,
1496
1453
  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."
1497
1454
  },
1498
1455
  capabilities: { acceptsSourceVideo: true, ...FRAMES_EXCLUDE_REFERENCES }
@@ -1517,7 +1474,7 @@ var VIDEO_MODELS = [
1517
1474
  },
1518
1475
  // No resolution default: xAI picks its own unless the caller asks.
1519
1476
  defaults: { durationSeconds: 8, aspectRatio: "16:9" },
1520
- usage: { unit: "reported_cost_usd", modality: "VIDEO" },
1477
+ usage: { unit: "reported_cost_usd", slug: "grok" },
1521
1478
  pricingKind: "video_per_second",
1522
1479
  display: {
1523
1480
  provider: "xai",
@@ -1547,10 +1504,11 @@ var VIDEO_MODELS = [
1547
1504
  cfgScale: 0.5,
1548
1505
  negativePrompt: NEGATIVE_PROMPT
1549
1506
  },
1550
- usage: { ...VIDEO_USAGE, slug: "grok" },
1507
+ usage: { ...VIDEO_USAGE },
1551
1508
  pricingKind: "video_per_second",
1552
1509
  display: {
1553
1510
  provider: "kuaishou",
1511
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1554
1512
  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."
1555
1513
  },
1556
1514
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1581,6 +1539,7 @@ var VIDEO_MODELS = [
1581
1539
  pricingKind: "video_per_second",
1582
1540
  display: {
1583
1541
  provider: "kuaishou",
1542
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1584
1543
  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."
1585
1544
  },
1586
1545
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1614,10 +1573,11 @@ var VIDEO_MODELS = [
1614
1573
  supports: ["generateAudio", "lastFrame"]
1615
1574
  },
1616
1575
  defaults: { durationSeconds: 5, aspectRatio: "16:9", generateAudio: false, mode: "pro" },
1617
- usage: { unit: "compute_seconds", modality: "VIDEO" },
1576
+ usage: { unit: "compute_seconds" },
1618
1577
  pricingKind: "video_per_second",
1619
1578
  display: {
1620
1579
  provider: "kuaishou",
1580
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1621
1581
  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."
1622
1582
  },
1623
1583
  capabilities: {}
@@ -1647,6 +1607,7 @@ var VIDEO_MODELS = [
1647
1607
  pricingKind: "video_per_second",
1648
1608
  display: {
1649
1609
  provider: "minimax",
1610
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1650
1611
  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."
1651
1612
  },
1652
1613
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1676,6 +1637,7 @@ var VIDEO_MODELS = [
1676
1637
  pricingKind: "video_per_second",
1677
1638
  display: {
1678
1639
  provider: "minimax",
1640
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1679
1641
  description: "High-speed MiniMax H3 Max variant for text-to-video and image-to-video (first/last frame) only, up to 768p."
1680
1642
  },
1681
1643
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES }
@@ -1706,6 +1668,7 @@ var VIDEO_MODELS = [
1706
1668
  pricingKind: "video_per_second",
1707
1669
  display: {
1708
1670
  provider: "minimax",
1671
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1709
1672
  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."
1710
1673
  },
1711
1674
  capabilities: {}
@@ -1736,6 +1699,7 @@ var VIDEO_MODELS = [
1736
1699
  pricingKind: "video_per_second",
1737
1700
  display: {
1738
1701
  provider: "minimax",
1702
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1739
1703
  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."
1740
1704
  },
1741
1705
  capabilities: {}
@@ -1761,6 +1725,7 @@ var VIDEO_MODELS = [
1761
1725
  pricingKind: "video_per_second",
1762
1726
  display: {
1763
1727
  provider: "kuaishou",
1728
+ logo: "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/kling-color.png",
1764
1729
  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."
1765
1730
  },
1766
1731
  capabilities: { acceptsSourceVideo: true }
@@ -1780,10 +1745,11 @@ var VIDEO_MODELS = [
1780
1745
  supports: ["lastFrame"]
1781
1746
  },
1782
1747
  defaults: { durationSeconds: 6, resolution: "768p" },
1783
- usage: { unit: "compute_seconds", modality: "VIDEO" },
1748
+ usage: { unit: "compute_seconds" },
1784
1749
  pricingKind: "video_per_second",
1785
1750
  display: {
1786
1751
  provider: "minimax",
1752
+ logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png",
1787
1753
  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."
1788
1754
  },
1789
1755
  capabilities: {}
@@ -2431,7 +2397,7 @@ function passthroughTextModel(model) {
2431
2397
  exposure: "internal",
2432
2398
  constraints: {},
2433
2399
  defaults: {},
2434
- usage: { unit: "tokens", modality: "TEXT" },
2400
+ usage: { unit: "tokens" },
2435
2401
  pricingKind: "token"
2436
2402
  };
2437
2403
  }