@shop-os/modelkit 0.2.8 → 0.2.9

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
@@ -123,6 +123,27 @@ var Catalog = class _Catalog {
123
123
  }
124
124
  };
125
125
 
126
+ // src/catalog/exposure.ts
127
+ var SURFACES = ["cowork", "space_builder"];
128
+ function normalizeExposure(value) {
129
+ if (value === "catalog") return ["cowork", "space_builder"];
130
+ if (value === "internal") return [];
131
+ if (Array.isArray(value)) {
132
+ if (value.every((entry) => SURFACES.includes(entry))) {
133
+ const present = new Set(value);
134
+ return SURFACES.filter((surface) => present.has(surface));
135
+ }
136
+ return value;
137
+ }
138
+ return value;
139
+ }
140
+ function isListedOn(row, surface) {
141
+ return row.lifecycle === "active" && row.exposure.includes(surface);
142
+ }
143
+ function isListed(row) {
144
+ return row.lifecycle === "active" && row.exposure.length > 0;
145
+ }
146
+
126
147
  // src/catalog/image.ts
127
148
  var IMAGE_USAGE = { unit: "images" };
128
149
  var GEMINI_RATIOS = [
@@ -173,7 +194,7 @@ var IMAGE_MODELS = [
173
194
  description: "Create stunning, production-quality visuals with exceptional realism, detail, and typography. Best for campaigns, e-commerce, product photography, and hero creatives.",
174
195
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
175
196
  },
176
- "catalog",
197
+ ["cowork", "space_builder"],
177
198
  { images: 14 }
178
199
  ),
179
200
  geminiImage(
@@ -187,7 +208,7 @@ var IMAGE_MODELS = [
187
208
  description: "Generate high-quality images at speed. Perfect for brainstorming, moodboards, concept testing, creative exploration, and large batch workflows.",
188
209
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
189
210
  },
190
- "catalog",
211
+ ["cowork", "space_builder"],
191
212
  { images: 14 }
192
213
  ),
193
214
  geminiImage(
@@ -200,7 +221,7 @@ var IMAGE_MODELS = [
200
221
  description: "The fastest and most affordable image model. Ideal for rapid drafts, bulk exploration, and iterative concept testing at 1K resolution.",
201
222
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
202
223
  },
203
- "catalog",
224
+ ["cowork", "space_builder"],
204
225
  { images: 14 }
205
226
  ),
206
227
  // trigger-workflows validates 1K only; pricing seeds 2K/4K rows so allow all three.
@@ -213,7 +234,7 @@ var IMAGE_MODELS = [
213
234
  provider: "google",
214
235
  description: "Nano Banana (legacy Gemini 2.5 Flash Image) native image generation and editing model for high-volume, low-latency creative workflows."
215
236
  },
216
- "internal"
237
+ []
217
238
  ),
218
239
  {
219
240
  // Cowork "auto" lets OpenAI pick the size; the canonical equivalent is adaptive.
@@ -224,7 +245,7 @@ var IMAGE_MODELS = [
224
245
  adapter: "openai-image",
225
246
  providerModelId: "gpt-image-2",
226
247
  lifecycle: "active",
227
- exposure: "catalog",
248
+ exposure: ["cowork", "space_builder"],
228
249
  constraints: {
229
250
  exactSizes: {
230
251
  "1:1": "1024x1024",
@@ -259,7 +280,7 @@ var IMAGE_MODELS = [
259
280
  adapter: "openai-image",
260
281
  providerModelId: "gpt-image-2.5-sunburst",
261
282
  lifecycle: "active",
262
- exposure: "catalog",
283
+ exposure: ["cowork", "space_builder"],
263
284
  constraints: {
264
285
  exactSizes: {
265
286
  "1:1": "1024x1024",
@@ -293,7 +314,7 @@ var IMAGE_MODELS = [
293
314
  adapter: "openai-image",
294
315
  providerModelId: "gpt-image-2.5-flare",
295
316
  lifecycle: "active",
296
- exposure: "catalog",
317
+ exposure: ["cowork", "space_builder"],
297
318
  constraints: {
298
319
  exactSizes: {
299
320
  "1:1": "1024x1024",
@@ -327,7 +348,7 @@ var IMAGE_MODELS = [
327
348
  adapter: "fal",
328
349
  providerModelId: "muse-image-1.0",
329
350
  lifecycle: "active",
330
- exposure: "catalog",
351
+ exposure: ["cowork", "space_builder"],
331
352
  constraints: {
332
353
  aspectRatios: [
333
354
  "21:9",
@@ -362,7 +383,7 @@ var IMAGE_MODELS = [
362
383
  adapter: "ark",
363
384
  providerModelId: "dola-seedream-5-0-pro-260628",
364
385
  lifecycle: "active",
365
- exposure: "catalog",
386
+ exposure: ["cowork", "space_builder"],
366
387
  constraints: {
367
388
  aspectRatios: ["1:1", "4:3", "3:4", "16:9", "9:16", "3:2", "2:3", "21:9", "4:5", "5:4"],
368
389
  sizes: ["1K", "2K"],
@@ -388,7 +409,7 @@ var IMAGE_MODELS = [
388
409
  adapter: "ark",
389
410
  providerModelId: "seedream-4-5-251128",
390
411
  lifecycle: "active",
391
- exposure: "internal",
412
+ exposure: [],
392
413
  constraints: {
393
414
  // 97:30 has no Ark size spelling; the A+ flow pads inputs to 97:30 and
394
415
  // omits the ratio instead. Advertise only sizes the adapter can send.
@@ -425,7 +446,7 @@ var IMAGE_MODELS = [
425
446
  adapter: "prodia",
426
447
  providerModelId: "flux-2-pro",
427
448
  lifecycle: "active",
428
- exposure: "catalog",
449
+ exposure: ["cowork", "space_builder"],
429
450
  constraints: {
430
451
  aspectRatios: ["1:1", "2:3", "3:2", "16:9", "9:16", "4:3", "3:4", "4:5", "5:4", "21:9"],
431
452
  sizes: ["1K"],
@@ -452,7 +473,7 @@ var IMAGE_MODELS = [
452
473
  adapter: "prodia",
453
474
  providerModelId: "inference.gemini-3-pro.img2img.v1",
454
475
  lifecycle: "active",
455
- exposure: "internal",
476
+ exposure: [],
456
477
  constraints: {
457
478
  aspectRatios: ["1:1", "2:3", "3:2", "4:3", "3:4", "4:5", "5:4", "9:16", "16:9", "21:9"],
458
479
  sizes: ["1K", "2K", "4K"],
@@ -477,7 +498,7 @@ var IMAGE_MODELS = [
477
498
  adapter: "prodia",
478
499
  providerModelId: "inference.nano-banana.img2img.v2",
479
500
  lifecycle: "active",
480
- exposure: "internal",
501
+ exposure: [],
481
502
  constraints: {
482
503
  aspectRatios: ["1:1", "2:3", "3:4", "4:3", "9:16", "16:9", "21:9"],
483
504
  sizes: ["1K"],
@@ -503,7 +524,7 @@ var IMAGE_MODELS = [
503
524
  adapter: "replicate",
504
525
  providerModelId: "wan-video/wan-2.7-image-pro",
505
526
  lifecycle: "active",
506
- exposure: "internal",
527
+ exposure: [],
507
528
  constraints: {
508
529
  aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4"],
509
530
  sizes: ["1K", "2K", "4K"],
@@ -529,7 +550,7 @@ var IMAGE_MODELS = [
529
550
  adapter: "replicate",
530
551
  providerModelId: "qwen/qwen-image-2-pro",
531
552
  lifecycle: "active",
532
- exposure: "internal",
553
+ exposure: [],
533
554
  constraints: {
534
555
  aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"],
535
556
  sizes: [],
@@ -555,7 +576,7 @@ var IMAGE_MODELS = [
555
576
  adapter: "replicate",
556
577
  providerModelId: "qwen-edit-apps/qwen-image-edit-plus-lora-skin",
557
578
  lifecycle: "active",
558
- exposure: "internal",
579
+ exposure: [],
559
580
  constraints: {
560
581
  aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4"],
561
582
  sizes: [],
@@ -584,7 +605,7 @@ var OTHER_MODELS = [
584
605
  adapter: "google-genai",
585
606
  providerModelId: "lyria-3-clip-preview",
586
607
  lifecycle: "active",
587
- exposure: "catalog",
608
+ exposure: ["cowork", "space_builder"],
588
609
  constraints: {
589
610
  durations: [30],
590
611
  references: { images: 10 },
@@ -608,7 +629,7 @@ var OTHER_MODELS = [
608
629
  adapter: "google-genai",
609
630
  providerModelId: "lyria-3-pro-preview",
610
631
  lifecycle: "active",
611
- exposure: "catalog",
632
+ exposure: ["cowork", "space_builder"],
612
633
  constraints: {
613
634
  references: { images: 10 },
614
635
  supports: []
@@ -631,7 +652,7 @@ var OTHER_MODELS = [
631
652
  adapter: "replicate",
632
653
  providerModelId: "google/lyria-2",
633
654
  lifecycle: "active",
634
- exposure: "internal",
655
+ exposure: [],
635
656
  constraints: {
636
657
  durations: [30],
637
658
  supports: ["seed", "negativePrompt"]
@@ -653,7 +674,7 @@ var OTHER_MODELS = [
653
674
  adapter: "replicate",
654
675
  providerModelId: "zsxkib/mmaudio:62871fb59889b2d7c13777f08deb3b36bdff88f7e1d53a50ad7694548a41b484",
655
676
  lifecycle: "active",
656
- exposure: "catalog",
677
+ exposure: ["cowork", "space_builder"],
657
678
  constraints: {
658
679
  durations: { min: 1, max: 30 },
659
680
  requires: ["sourceVideo"],
@@ -676,7 +697,7 @@ var OTHER_MODELS = [
676
697
  adapter: "replicate",
677
698
  providerModelId: "elevenlabs/music",
678
699
  lifecycle: "active",
679
- exposure: "internal",
700
+ exposure: [],
680
701
  constraints: {
681
702
  durations: { min: 5, max: 300 },
682
703
  supports: ["instrumental"]
@@ -699,7 +720,7 @@ var OTHER_MODELS = [
699
720
  adapter: "replicate",
700
721
  providerModelId: "topazlabs/image-upscale",
701
722
  lifecycle: "active",
702
- exposure: "catalog",
723
+ exposure: ["cowork", "space_builder"],
703
724
  constraints: {
704
725
  references: { images: 1 },
705
726
  requires: ["references"],
@@ -722,7 +743,7 @@ var OTHER_MODELS = [
722
743
  adapter: "prodia",
723
744
  providerModelId: "inference.remove-background.v1",
724
745
  lifecycle: "active",
725
- exposure: "catalog",
746
+ exposure: ["cowork", "space_builder"],
726
747
  constraints: {
727
748
  references: { images: 1 },
728
749
  requires: ["references"],
@@ -761,7 +782,7 @@ function text(id, label, providerModelId, extra) {
761
782
  adapter: "ai-sdk-text",
762
783
  providerModelId,
763
784
  lifecycle: "active",
764
- exposure: "internal",
785
+ exposure: [],
765
786
  constraints: { supports: [] },
766
787
  defaults: {},
767
788
  usage: { ...TEXT_USAGE },
@@ -780,7 +801,7 @@ var OPENAI_REASONING = { openai: { reasoningEffort: "medium", reasoningSummary:
780
801
  var DEEPSEEK_THINKING = { deepseek: { thinking: { type: "enabled" } } };
781
802
  var TEXT_MODELS = [
782
803
  text("gpt-4o", "GPT-4o", "gpt-4o", {
783
- exposure: "internal",
804
+ exposure: [],
784
805
  display: {
785
806
  provider: "openai",
786
807
  costTier: 2,
@@ -789,7 +810,7 @@ var TEXT_MODELS = [
789
810
  capabilities: { vision: true, contextWindow: 128e3 }
790
811
  }),
791
812
  text("gpt-4o-mini", "GPT-4o mini", "gpt-4o-mini", {
792
- exposure: "internal",
813
+ exposure: [],
793
814
  display: {
794
815
  provider: "openai",
795
816
  costTier: 1,
@@ -798,7 +819,7 @@ var TEXT_MODELS = [
798
819
  capabilities: { vision: true, contextWindow: 128e3 }
799
820
  }),
800
821
  text("gpt-5.1", "GPT-5.1", "gpt-5.1", {
801
- exposure: "catalog",
822
+ exposure: ["cowork", "space_builder"],
802
823
  display: {
803
824
  provider: "openai",
804
825
  costTier: 3,
@@ -807,7 +828,7 @@ var TEXT_MODELS = [
807
828
  capabilities: { vision: true, contextWindow: 4e5 }
808
829
  }),
809
830
  text("gpt-5.2", "GPT-5.2", "gpt-5.2", {
810
- exposure: "catalog",
831
+ exposure: ["cowork", "space_builder"],
811
832
  display: {
812
833
  provider: "openai",
813
834
  costTier: 3,
@@ -817,7 +838,7 @@ var TEXT_MODELS = [
817
838
  }),
818
839
  // 1.05M-token context: https://platform.openai.com/docs/models/gpt-5.4
819
840
  text("gpt-5.4", "GPT-5.4", "gpt-5.4", {
820
- exposure: "internal",
841
+ exposure: [],
821
842
  display: {
822
843
  provider: "openai",
823
844
  costTier: 3,
@@ -830,7 +851,7 @@ var TEXT_MODELS = [
830
851
  }),
831
852
  // OpenAI never shipped gpt-5.1-mini or gpt-5.2-mini; callers that still send them get 5.4 mini.
832
853
  text("gpt-5.4-mini", "GPT-5.4 mini", "gpt-5.4-mini", {
833
- exposure: "catalog",
854
+ exposure: ["cowork", "space_builder"],
834
855
  aliases: ["gpt-5.1-mini", "gpt-5.2-mini"],
835
856
  display: {
836
857
  provider: "openai",
@@ -840,7 +861,7 @@ var TEXT_MODELS = [
840
861
  capabilities: { vision: true, contextWindow: 4e5 }
841
862
  }),
842
863
  text("gpt-5.5", "GPT-5.5", "gpt-5.5", {
843
- exposure: "catalog",
864
+ exposure: ["cowork", "space_builder"],
844
865
  display: {
845
866
  provider: "openai",
846
867
  costTier: 3,
@@ -852,7 +873,7 @@ var TEXT_MODELS = [
852
873
  }
853
874
  }),
854
875
  text("gpt-5.6-luna", "GPT-5.6 Luna", "gpt-5.6-luna", {
855
- exposure: "catalog",
876
+ exposure: ["cowork", "space_builder"],
856
877
  display: {
857
878
  chat: { providerOptions: OPENAI_REASONING },
858
879
  provider: "openai",
@@ -866,7 +887,7 @@ var TEXT_MODELS = [
866
887
  }
867
888
  }),
868
889
  text("gpt-5.6-terra", "GPT-5.6 Terra", "gpt-5.6-terra", {
869
- exposure: "catalog",
890
+ exposure: ["cowork", "space_builder"],
870
891
  display: {
871
892
  chat: { providerOptions: OPENAI_REASONING },
872
893
  provider: "openai",
@@ -880,7 +901,7 @@ var TEXT_MODELS = [
880
901
  }
881
902
  }),
882
903
  text("gpt-5.6-sol", "GPT-5.6 Sol", "gpt-5.6-sol", {
883
- exposure: "catalog",
904
+ exposure: ["cowork", "space_builder"],
884
905
  display: {
885
906
  chat: { providerOptions: OPENAI_REASONING },
886
907
  provider: "openai",
@@ -895,7 +916,7 @@ var TEXT_MODELS = [
895
916
  }),
896
917
  // Library key "claude-sonnet-4.5" maps to the SDK id "claude-sonnet-4-5".
897
918
  text("claude-sonnet-4-5", "Claude Sonnet 4.5", "claude-sonnet-4-5", {
898
- exposure: "internal",
919
+ exposure: [],
899
920
  aliases: ["claude-sonnet-4.5", "claude-sonnet-4-5-20250929"],
900
921
  display: {
901
922
  provider: "anthropic",
@@ -906,7 +927,7 @@ var TEXT_MODELS = [
906
927
  }),
907
928
  // Anthropic retired the dated 4.0 ids; callers that still send them get 4.6.
908
929
  text("claude-sonnet-4-6", "Claude Sonnet 4.6", "claude-sonnet-4-6", {
909
- exposure: "catalog",
930
+ exposure: ["cowork", "space_builder"],
910
931
  aliases: [
911
932
  "claude-sonnet-4.6",
912
933
  "claude-sonnet-4",
@@ -926,7 +947,7 @@ var TEXT_MODELS = [
926
947
  }
927
948
  }),
928
949
  text("claude-sonnet-5", "Claude Sonnet 5", "claude-sonnet-5", {
929
- exposure: "catalog",
950
+ exposure: ["cowork", "space_builder"],
930
951
  display: {
931
952
  chat: { providerOptions: ANTHROPIC_ADAPTIVE },
932
953
  provider: "anthropic",
@@ -940,7 +961,7 @@ var TEXT_MODELS = [
940
961
  }
941
962
  }),
942
963
  text("claude-opus-4-8", "Claude Opus 4.8", "claude-opus-4-8", {
943
- exposure: "catalog",
964
+ exposure: ["cowork", "space_builder"],
944
965
  aliases: ["claude-opus-4.8", "claude-opus-4", "claude-opus-4.0", "claude-opus-4-20250514"],
945
966
  display: {
946
967
  chat: { providerOptions: ANTHROPIC_ADAPTIVE },
@@ -955,7 +976,7 @@ var TEXT_MODELS = [
955
976
  }
956
977
  }),
957
978
  text("claude-haiku-4-5", "Claude Haiku 4.5", "claude-haiku-4-5", {
958
- exposure: "catalog",
979
+ exposure: ["cowork", "space_builder"],
959
980
  aliases: ["claude-haiku-4.5", "claude-haiku-4-5-20251001", "claude-haiku-4"],
960
981
  display: {
961
982
  chat: { providerOptions: ANTHROPIC_THINKING },
@@ -970,7 +991,7 @@ var TEXT_MODELS = [
970
991
  }
971
992
  }),
972
993
  text("claude-opus-5", "Claude Opus 5", "claude-opus-5", {
973
- exposure: "internal",
994
+ exposure: [],
974
995
  aliases: ["claude-opus-5.0"],
975
996
  display: {
976
997
  provider: "anthropic",
@@ -983,7 +1004,7 @@ var TEXT_MODELS = [
983
1004
  }
984
1005
  }),
985
1006
  text("claude-fable-5", "Claude Fable 5", "claude-fable-5", {
986
- exposure: "internal",
1007
+ exposure: [],
987
1008
  display: {
988
1009
  provider: "anthropic",
989
1010
  costTier: 3,
@@ -995,7 +1016,7 @@ var TEXT_MODELS = [
995
1016
  }
996
1017
  }),
997
1018
  text("gemini-2.5-flash", "Gemini 2.5 Flash", "gemini-2.5-flash", {
998
- exposure: "internal",
1019
+ exposure: [],
999
1020
  display: {
1000
1021
  provider: "google",
1001
1022
  costTier: 1,
@@ -1007,7 +1028,7 @@ var TEXT_MODELS = [
1007
1028
  }
1008
1029
  }),
1009
1030
  text("gemini-2.5-pro", "Gemini 2.5 Pro", "gemini-2.5-pro", {
1010
- exposure: "internal",
1031
+ exposure: [],
1011
1032
  display: {
1012
1033
  provider: "google",
1013
1034
  costTier: 2,
@@ -1019,7 +1040,7 @@ var TEXT_MODELS = [
1019
1040
  }
1020
1041
  }),
1021
1042
  text("gemini-3.1-pro-preview", "Gemini 3.1 Pro (preview)", "gemini-3.1-pro-preview", {
1022
- exposure: "catalog",
1043
+ exposure: ["cowork", "space_builder"],
1023
1044
  display: {
1024
1045
  provider: "google",
1025
1046
  costTier: 2,
@@ -1031,7 +1052,7 @@ var TEXT_MODELS = [
1031
1052
  }
1032
1053
  }),
1033
1054
  text("gemini-3.5-flash", "Gemini 3.5 Flash", "gemini-3.5-flash", {
1034
- exposure: "catalog",
1055
+ exposure: ["cowork", "space_builder"],
1035
1056
  display: {
1036
1057
  provider: "google",
1037
1058
  costTier: 1,
@@ -1043,7 +1064,7 @@ var TEXT_MODELS = [
1043
1064
  }
1044
1065
  }),
1045
1066
  text("gemini-3.6-flash", "Gemini 3.6 Flash", "gemini-3.6-flash", {
1046
- exposure: "catalog",
1067
+ exposure: ["cowork", "space_builder"],
1047
1068
  display: {
1048
1069
  provider: "google",
1049
1070
  costTier: 1,
@@ -1055,7 +1076,7 @@ var TEXT_MODELS = [
1055
1076
  }
1056
1077
  }),
1057
1078
  text("gemini-3.7-flash", "Gemini 3.7 Flash", "gemini-3.7-flash", {
1058
- exposure: "catalog",
1079
+ exposure: ["cowork", "space_builder"],
1059
1080
  display: {
1060
1081
  provider: "google",
1061
1082
  costTier: 1,
@@ -1068,7 +1089,7 @@ var TEXT_MODELS = [
1068
1089
  }
1069
1090
  }),
1070
1091
  text("gemini-3.8-flash", "Gemini 3.8 Flash", "gemini-3.8-flash", {
1071
- exposure: "internal",
1092
+ exposure: [],
1072
1093
  display: {
1073
1094
  provider: "google",
1074
1095
  costTier: 1,
@@ -1081,12 +1102,12 @@ var TEXT_MODELS = [
1081
1102
  }),
1082
1103
  // Renamed to gemini-3.6-flash in vibe-shared model-migration.ts.
1083
1104
  text("gemini-3-flash-preview", "Gemini 3 Flash (preview)", "gemini-3-flash-preview", {
1084
- exposure: "internal",
1105
+ exposure: [],
1085
1106
  lifecycle: "deprecated",
1086
1107
  replacedBy: "gemini-3.6-flash"
1087
1108
  }),
1088
1109
  text("gemini-3.1-flash-lite", "Gemini 3.1 Flash Lite", "gemini-3.1-flash-lite", {
1089
- exposure: "internal",
1110
+ exposure: [],
1090
1111
  display: {
1091
1112
  provider: "google",
1092
1113
  costTier: 1,
@@ -1098,7 +1119,7 @@ var TEXT_MODELS = [
1098
1119
  }
1099
1120
  }),
1100
1121
  text("sonar", "Sonar", "sonar", {
1101
- exposure: "internal",
1122
+ exposure: [],
1102
1123
  display: {
1103
1124
  provider: "perplexity",
1104
1125
  costTier: 1,
@@ -1110,7 +1131,7 @@ var TEXT_MODELS = [
1110
1131
  }
1111
1132
  }),
1112
1133
  text("sonar-pro", "Sonar Pro", "sonar-pro", {
1113
- exposure: "internal",
1134
+ exposure: [],
1114
1135
  display: {
1115
1136
  provider: "perplexity",
1116
1137
  costTier: 2,
@@ -1122,7 +1143,7 @@ var TEXT_MODELS = [
1122
1143
  }
1123
1144
  }),
1124
1145
  text("sonar-reasoning-pro", "Sonar Reasoning Pro", "sonar-reasoning-pro", {
1125
- exposure: "internal",
1146
+ exposure: [],
1126
1147
  display: {
1127
1148
  provider: "perplexity",
1128
1149
  costTier: 2,
@@ -1138,7 +1159,7 @@ var TEXT_MODELS = [
1138
1159
  // stays an alias so stored selections keep resolving.
1139
1160
  text("deepseek-flash", "DeepSeek V4.1 Flash", "deepseek-flash", {
1140
1161
  aliases: ["deepseek-v4-flash"],
1141
- exposure: "catalog",
1162
+ exposure: ["cowork", "space_builder"],
1142
1163
  display: {
1143
1164
  chat: { providerOptions: DEEPSEEK_THINKING },
1144
1165
  provider: "deepseek",
@@ -1153,7 +1174,7 @@ var TEXT_MODELS = [
1153
1174
  }
1154
1175
  }),
1155
1176
  text("deepseek-v4-pro", "DeepSeek V4 Pro", "deepseek-v4-pro", {
1156
- exposure: "catalog",
1177
+ exposure: ["cowork", "space_builder"],
1157
1178
  display: {
1158
1179
  chat: { providerOptions: DEEPSEEK_THINKING },
1159
1180
  provider: "deepseek",
@@ -1168,7 +1189,7 @@ var TEXT_MODELS = [
1168
1189
  }),
1169
1190
  // 1M-token context: https://docs.x.ai/docs/models/grok-4.3
1170
1191
  text("grok-4.3", "Grok 4.3", "grok-4.3", {
1171
- exposure: "catalog",
1192
+ exposure: ["cowork", "space_builder"],
1172
1193
  display: {
1173
1194
  provider: "xai",
1174
1195
  costTier: 2,
@@ -1183,7 +1204,7 @@ var TEXT_MODELS = [
1183
1204
  text("kimi-k2.5", "Kimi K2.5", "kimi-k2.5", {
1184
1205
  lifecycle: "deprecated",
1185
1206
  replacedBy: "kimi-k3",
1186
- exposure: "internal",
1207
+ exposure: [],
1187
1208
  display: {
1188
1209
  chat: { temperature: 1 },
1189
1210
  provider: "moonshot",
@@ -1193,7 +1214,7 @@ var TEXT_MODELS = [
1193
1214
  capabilities: {}
1194
1215
  }),
1195
1216
  text("kimi-k3", "Kimi K3", "kimi-k3", {
1196
- exposure: "catalog",
1217
+ exposure: ["cowork", "space_builder"],
1197
1218
  display: {
1198
1219
  chat: { temperature: 1 },
1199
1220
  provider: "moonshot",
@@ -1209,7 +1230,7 @@ var TEXT_MODELS = [
1209
1230
  // Cowork calls the provider "MiniMax-M3"; the pricing key is lowercase.
1210
1231
  // 1M-token context: https://platform.minimax.io/docs/api-reference/text-openai-api
1211
1232
  text("minimax-m3", "MiniMax M3", "MiniMax-M3", {
1212
- exposure: "catalog",
1233
+ exposure: ["cowork", "space_builder"],
1213
1234
  aliases: ["MiniMax-M3"],
1214
1235
  display: {
1215
1236
  provider: "minimax",
@@ -1246,7 +1267,7 @@ var VIDEO_MODELS = [
1246
1267
  adapter: "google-genai",
1247
1268
  providerModelId: "veo-3.1-generate-preview",
1248
1269
  lifecycle: "active",
1249
- exposure: "catalog",
1270
+ exposure: ["cowork", "space_builder"],
1250
1271
  constraints: {
1251
1272
  aspectRatios: [...OMNI_RATIOS],
1252
1273
  resolutions: ["720p", "1080p", "4k"],
@@ -1276,7 +1297,7 @@ var VIDEO_MODELS = [
1276
1297
  adapter: "google-genai",
1277
1298
  providerModelId: "veo-3.1-fast-generate-preview",
1278
1299
  lifecycle: "active",
1279
- exposure: "internal",
1300
+ exposure: [],
1280
1301
  constraints: {
1281
1302
  aspectRatios: [...OMNI_RATIOS],
1282
1303
  resolutions: ["720p", "1080p", "4k"],
@@ -1305,7 +1326,7 @@ var VIDEO_MODELS = [
1305
1326
  adapter: "google-genai",
1306
1327
  providerModelId: "veo-3.1-lite-generate-preview",
1307
1328
  lifecycle: "active",
1308
- exposure: "internal",
1329
+ exposure: [],
1309
1330
  constraints: {
1310
1331
  aspectRatios: [...OMNI_RATIOS],
1311
1332
  resolutions: ["720p", "1080p"],
@@ -1335,7 +1356,7 @@ var VIDEO_MODELS = [
1335
1356
  adapter: "google-genai",
1336
1357
  providerModelId: "gemini-omni-flash-preview",
1337
1358
  lifecycle: "active",
1338
- exposure: "catalog",
1359
+ exposure: ["cowork", "space_builder"],
1339
1360
  constraints: {
1340
1361
  // 1.0 rejects `resolution`; it renders 720p. No defaults: the adapter
1341
1362
  // sends ratio and duration only when the caller set them, so a
@@ -1363,7 +1384,7 @@ var VIDEO_MODELS = [
1363
1384
  adapter: "google-genai",
1364
1385
  providerModelId: "gemini-omni-1.1-flash",
1365
1386
  lifecycle: "active",
1366
- exposure: "catalog",
1387
+ exposure: ["cowork", "space_builder"],
1367
1388
  constraints: {
1368
1389
  aspectRatios: [...OMNI_RATIOS],
1369
1390
  resolutions: ["360p", "720p", "1080p", "4k"],
@@ -1390,7 +1411,7 @@ var VIDEO_MODELS = [
1390
1411
  adapter: "ark",
1391
1412
  providerModelId: "dreamina-seedance-2-0-260128",
1392
1413
  lifecycle: "active",
1393
- exposure: "catalog",
1414
+ exposure: ["cowork", "space_builder"],
1394
1415
  constraints: {
1395
1416
  aspectRatios: [...SEEDANCE_RATIOS],
1396
1417
  resolutions: ["480p", "720p", "1080p", "4k"],
@@ -1423,7 +1444,7 @@ var VIDEO_MODELS = [
1423
1444
  adapter: "ark",
1424
1445
  providerModelId: "dreamina-seedance-2-0-fast-260128",
1425
1446
  lifecycle: "active",
1426
- exposure: "catalog",
1447
+ exposure: ["cowork", "space_builder"],
1427
1448
  constraints: {
1428
1449
  aspectRatios: [...SEEDANCE_RATIOS],
1429
1450
  resolutions: ["480p", "720p"],
@@ -1456,7 +1477,7 @@ var VIDEO_MODELS = [
1456
1477
  adapter: "ark",
1457
1478
  providerModelId: "dreamina-seedance-2-5-260628",
1458
1479
  lifecycle: "active",
1459
- exposure: "catalog",
1480
+ exposure: ["cowork", "space_builder"],
1460
1481
  constraints: {
1461
1482
  aspectRatios: [...SEEDANCE_RATIOS],
1462
1483
  resolutions: ["480p", "720p", "1080p"],
@@ -1489,7 +1510,7 @@ var VIDEO_MODELS = [
1489
1510
  adapter: "xai-video",
1490
1511
  providerModelId: "grok-imagine-video",
1491
1512
  lifecycle: "active",
1492
- exposure: "catalog",
1513
+ exposure: ["cowork", "space_builder"],
1493
1514
  constraints: {
1494
1515
  aspectRatios: [...GROK_RATIOS],
1495
1516
  resolutions: ["480p", "720p"],
@@ -1517,7 +1538,7 @@ var VIDEO_MODELS = [
1517
1538
  adapter: "higgsfield",
1518
1539
  providerModelId: "kling-video/v2.5-turbo/pro/image-to-video",
1519
1540
  lifecycle: "active",
1520
- exposure: "catalog",
1541
+ exposure: ["cowork", "space_builder"],
1521
1542
  constraints: {
1522
1543
  aspectRatios: [...KLING_RATIOS],
1523
1544
  durations: [5, 10],
@@ -1548,7 +1569,7 @@ var VIDEO_MODELS = [
1548
1569
  adapter: "higgsfield",
1549
1570
  providerModelId: "kling-video/v3.0/pro/image-to-video",
1550
1571
  lifecycle: "active",
1551
- exposure: "catalog",
1572
+ exposure: ["cowork", "space_builder"],
1552
1573
  constraints: {
1553
1574
  aspectRatios: [...KLING_RATIOS],
1554
1575
  durations: { min: 3, max: 15 },
@@ -1579,7 +1600,7 @@ var VIDEO_MODELS = [
1579
1600
  adapter: "replicate",
1580
1601
  providerModelId: "kwaivgi/kling-v3-omni-video",
1581
1602
  lifecycle: "active",
1582
- exposure: "catalog",
1603
+ exposure: ["cowork", "space_builder"],
1583
1604
  constraints: {
1584
1605
  aspectRatios: [...KLING_RATIOS],
1585
1606
  resolutions: ["720p", "1080p"],
@@ -1605,7 +1626,7 @@ var VIDEO_MODELS = [
1605
1626
  adapter: "fal",
1606
1627
  providerModelId: "minimax/h3",
1607
1628
  lifecycle: "active",
1608
- exposure: "catalog",
1629
+ exposure: ["cowork", "space_builder"],
1609
1630
  constraints: {
1610
1631
  aspectRatios: [...H3_RATIOS],
1611
1632
  resolutions: ["480p", "768p", "2k", "4k"],
@@ -1635,7 +1656,7 @@ var VIDEO_MODELS = [
1635
1656
  adapter: "fal",
1636
1657
  providerModelId: "minimax/h3-max",
1637
1658
  lifecycle: "active",
1638
- exposure: "catalog",
1659
+ exposure: ["cowork", "space_builder"],
1639
1660
  constraints: {
1640
1661
  aspectRatios: [...H3_RATIOS],
1641
1662
  resolutions: ["480p", "768p"],
@@ -1665,7 +1686,7 @@ var VIDEO_MODELS = [
1665
1686
  adapter: "fal",
1666
1687
  providerModelId: "minimax/h3/reference-to-video",
1667
1688
  lifecycle: "active",
1668
- exposure: "catalog",
1689
+ exposure: ["cowork", "space_builder"],
1669
1690
  constraints: {
1670
1691
  aspectRatios: [...H3_REFERENCE_RATIOS],
1671
1692
  resolutions: ["480p", "768p", "2k", "4k"],
@@ -1696,7 +1717,7 @@ var VIDEO_MODELS = [
1696
1717
  adapter: "fal",
1697
1718
  providerModelId: "minimax/h3-max/reference-to-video",
1698
1719
  lifecycle: "active",
1699
- exposure: "catalog",
1720
+ exposure: ["cowork", "space_builder"],
1700
1721
  constraints: {
1701
1722
  aspectRatios: [...H3_REFERENCE_RATIOS],
1702
1723
  resolutions: ["480p", "768p"],
@@ -1728,7 +1749,7 @@ var VIDEO_MODELS = [
1728
1749
  adapter: "fal",
1729
1750
  providerModelId: "fal-ai/kling-video/o1/video-to-video/reference",
1730
1751
  lifecycle: "active",
1731
- exposure: "internal",
1752
+ exposure: [],
1732
1753
  constraints: {
1733
1754
  aspectRatios: [...KLING_RATIOS],
1734
1755
  durations: { min: 3, max: 10 },
@@ -1753,7 +1774,7 @@ var VIDEO_MODELS = [
1753
1774
  adapter: "replicate",
1754
1775
  providerModelId: "minimax/hailuo-02",
1755
1776
  lifecycle: "active",
1756
- exposure: "internal",
1777
+ exposure: [],
1757
1778
  constraints: {
1758
1779
  resolutions: ["768p"],
1759
1780
  durations: [6, 10],
@@ -1777,7 +1798,7 @@ var VIDEO_MODELS = [
1777
1798
  adapter: "higgsfield",
1778
1799
  providerModelId: "dop-preview",
1779
1800
  lifecycle: "active",
1780
- exposure: "internal",
1801
+ exposure: [],
1781
1802
  constraints: {
1782
1803
  requires: ["firstFrame"],
1783
1804
  supports: ["seed", "lastFrame"]
@@ -1817,6 +1838,12 @@ var ADAPTER_IDS = [
1817
1838
  ];
1818
1839
  var ModelTypeSchema = z.enum(["text", "image", "video", "audio", "upscale", "bg-remove"]);
1819
1840
  var LifecycleSchema = z.enum(["active", "deprecated", "retired"]);
1841
+ var SurfaceSchema = z.enum(["cowork", "space_builder"]);
1842
+ var SURFACES2 = SurfaceSchema.options;
1843
+ var ExposureSchema = z.preprocess(
1844
+ normalizeExposure,
1845
+ z.array(SurfaceSchema)
1846
+ );
1820
1847
  var AdapterSchema = z.enum(ADAPTER_IDS);
1821
1848
  var AspectRatioSchema = z.enum([
1822
1849
  "1:1",
@@ -1968,7 +1995,7 @@ var CatalogModelSchemaBase = z.looseObject({
1968
1995
  providerModelId: z.string().min(1),
1969
1996
  lifecycle: LifecycleSchema,
1970
1997
  replacedBy: z.string().optional(),
1971
- exposure: z.enum(["catalog", "internal"]),
1998
+ exposure: ExposureSchema,
1972
1999
  constraints: ModelConstraintsSchema,
1973
2000
  defaults: DefaultsSchema,
1974
2001
  providerOptions: ProviderOptionsSchema.optional(),
@@ -2830,7 +2857,7 @@ function passthroughTextModel(model) {
2830
2857
  adapter: "ai-sdk-text",
2831
2858
  providerModelId: model.modelId,
2832
2859
  lifecycle: "active",
2833
- exposure: "internal",
2860
+ exposure: [],
2834
2861
  constraints: {},
2835
2862
  defaults: {},
2836
2863
  usage: { unit: "tokens" },
@@ -7394,10 +7421,13 @@ export {
7394
7421
  CatalogModelSchema,
7395
7422
  CatalogSchema,
7396
7423
  DEFAULT_ADAPTERS,
7424
+ ExposureSchema,
7397
7425
  JsonObjectSchema,
7398
7426
  JsonValueSchema,
7399
7427
  MODELS,
7400
7428
  ModelKitError,
7429
+ SURFACES2 as SURFACES,
7430
+ SurfaceSchema,
7401
7431
  aiSdkTextAdapter,
7402
7432
  arkAdapter,
7403
7433
  aspectRatioToSize,
@@ -7418,6 +7448,8 @@ export {
7418
7448
  googleGenaiAdapter,
7419
7449
  googleImageAdapter,
7420
7450
  higgsfieldAdapter,
7451
+ isListed,
7452
+ isListedOn,
7421
7453
  isModelKitError,
7422
7454
  keysFromEnv,
7423
7455
  languageModel,
@@ -7425,6 +7457,7 @@ export {
7425
7457
  liveState,
7426
7458
  mergeTextProviderOptions,
7427
7459
  nearestAspectRatio,
7460
+ normalizeExposure,
7428
7461
  openaiImageAdapter,
7429
7462
  passthroughTextModel,
7430
7463
  pollUntil,