@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/catalog.js CHANGED
@@ -120,6 +120,27 @@ var Catalog = class _Catalog {
120
120
  }
121
121
  };
122
122
 
123
+ // src/catalog/exposure.ts
124
+ var SURFACES = ["cowork", "space_builder"];
125
+ function normalizeExposure(value) {
126
+ if (value === "catalog") return ["cowork", "space_builder"];
127
+ if (value === "internal") return [];
128
+ if (Array.isArray(value)) {
129
+ if (value.every((entry) => SURFACES.includes(entry))) {
130
+ const present = new Set(value);
131
+ return SURFACES.filter((surface) => present.has(surface));
132
+ }
133
+ return value;
134
+ }
135
+ return value;
136
+ }
137
+ function isListedOn(row, surface) {
138
+ return row.lifecycle === "active" && row.exposure.includes(surface);
139
+ }
140
+ function isListed(row) {
141
+ return row.lifecycle === "active" && row.exposure.length > 0;
142
+ }
143
+
123
144
  // src/catalog/image.ts
124
145
  var IMAGE_USAGE = { unit: "images" };
125
146
  var GEMINI_RATIOS = [
@@ -170,7 +191,7 @@ var IMAGE_MODELS = [
170
191
  description: "Create stunning, production-quality visuals with exceptional realism, detail, and typography. Best for campaigns, e-commerce, product photography, and hero creatives.",
171
192
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
172
193
  },
173
- "catalog",
194
+ ["cowork", "space_builder"],
174
195
  { images: 14 }
175
196
  ),
176
197
  geminiImage(
@@ -184,7 +205,7 @@ var IMAGE_MODELS = [
184
205
  description: "Generate high-quality images at speed. Perfect for brainstorming, moodboards, concept testing, creative exploration, and large batch workflows.",
185
206
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
186
207
  },
187
- "catalog",
208
+ ["cowork", "space_builder"],
188
209
  { images: 14 }
189
210
  ),
190
211
  geminiImage(
@@ -197,7 +218,7 @@ var IMAGE_MODELS = [
197
218
  description: "The fastest and most affordable image model. Ideal for rapid drafts, bulk exploration, and iterative concept testing at 1K resolution.",
198
219
  logo: "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png"
199
220
  },
200
- "catalog",
221
+ ["cowork", "space_builder"],
201
222
  { images: 14 }
202
223
  ),
203
224
  // trigger-workflows validates 1K only; pricing seeds 2K/4K rows so allow all three.
@@ -210,7 +231,7 @@ var IMAGE_MODELS = [
210
231
  provider: "google",
211
232
  description: "Nano Banana (legacy Gemini 2.5 Flash Image) native image generation and editing model for high-volume, low-latency creative workflows."
212
233
  },
213
- "internal"
234
+ []
214
235
  ),
215
236
  {
216
237
  // Cowork "auto" lets OpenAI pick the size; the canonical equivalent is adaptive.
@@ -221,7 +242,7 @@ var IMAGE_MODELS = [
221
242
  adapter: "openai-image",
222
243
  providerModelId: "gpt-image-2",
223
244
  lifecycle: "active",
224
- exposure: "catalog",
245
+ exposure: ["cowork", "space_builder"],
225
246
  constraints: {
226
247
  exactSizes: {
227
248
  "1:1": "1024x1024",
@@ -256,7 +277,7 @@ var IMAGE_MODELS = [
256
277
  adapter: "openai-image",
257
278
  providerModelId: "gpt-image-2.5-sunburst",
258
279
  lifecycle: "active",
259
- exposure: "catalog",
280
+ exposure: ["cowork", "space_builder"],
260
281
  constraints: {
261
282
  exactSizes: {
262
283
  "1:1": "1024x1024",
@@ -290,7 +311,7 @@ var IMAGE_MODELS = [
290
311
  adapter: "openai-image",
291
312
  providerModelId: "gpt-image-2.5-flare",
292
313
  lifecycle: "active",
293
- exposure: "catalog",
314
+ exposure: ["cowork", "space_builder"],
294
315
  constraints: {
295
316
  exactSizes: {
296
317
  "1:1": "1024x1024",
@@ -324,7 +345,7 @@ var IMAGE_MODELS = [
324
345
  adapter: "fal",
325
346
  providerModelId: "muse-image-1.0",
326
347
  lifecycle: "active",
327
- exposure: "catalog",
348
+ exposure: ["cowork", "space_builder"],
328
349
  constraints: {
329
350
  aspectRatios: [
330
351
  "21:9",
@@ -359,7 +380,7 @@ var IMAGE_MODELS = [
359
380
  adapter: "ark",
360
381
  providerModelId: "dola-seedream-5-0-pro-260628",
361
382
  lifecycle: "active",
362
- exposure: "catalog",
383
+ exposure: ["cowork", "space_builder"],
363
384
  constraints: {
364
385
  aspectRatios: ["1:1", "4:3", "3:4", "16:9", "9:16", "3:2", "2:3", "21:9", "4:5", "5:4"],
365
386
  sizes: ["1K", "2K"],
@@ -385,7 +406,7 @@ var IMAGE_MODELS = [
385
406
  adapter: "ark",
386
407
  providerModelId: "seedream-4-5-251128",
387
408
  lifecycle: "active",
388
- exposure: "internal",
409
+ exposure: [],
389
410
  constraints: {
390
411
  // 97:30 has no Ark size spelling; the A+ flow pads inputs to 97:30 and
391
412
  // omits the ratio instead. Advertise only sizes the adapter can send.
@@ -422,7 +443,7 @@ var IMAGE_MODELS = [
422
443
  adapter: "prodia",
423
444
  providerModelId: "flux-2-pro",
424
445
  lifecycle: "active",
425
- exposure: "catalog",
446
+ exposure: ["cowork", "space_builder"],
426
447
  constraints: {
427
448
  aspectRatios: ["1:1", "2:3", "3:2", "16:9", "9:16", "4:3", "3:4", "4:5", "5:4", "21:9"],
428
449
  sizes: ["1K"],
@@ -449,7 +470,7 @@ var IMAGE_MODELS = [
449
470
  adapter: "prodia",
450
471
  providerModelId: "inference.gemini-3-pro.img2img.v1",
451
472
  lifecycle: "active",
452
- exposure: "internal",
473
+ exposure: [],
453
474
  constraints: {
454
475
  aspectRatios: ["1:1", "2:3", "3:2", "4:3", "3:4", "4:5", "5:4", "9:16", "16:9", "21:9"],
455
476
  sizes: ["1K", "2K", "4K"],
@@ -474,7 +495,7 @@ var IMAGE_MODELS = [
474
495
  adapter: "prodia",
475
496
  providerModelId: "inference.nano-banana.img2img.v2",
476
497
  lifecycle: "active",
477
- exposure: "internal",
498
+ exposure: [],
478
499
  constraints: {
479
500
  aspectRatios: ["1:1", "2:3", "3:4", "4:3", "9:16", "16:9", "21:9"],
480
501
  sizes: ["1K"],
@@ -500,7 +521,7 @@ var IMAGE_MODELS = [
500
521
  adapter: "replicate",
501
522
  providerModelId: "wan-video/wan-2.7-image-pro",
502
523
  lifecycle: "active",
503
- exposure: "internal",
524
+ exposure: [],
504
525
  constraints: {
505
526
  aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4"],
506
527
  sizes: ["1K", "2K", "4K"],
@@ -526,7 +547,7 @@ var IMAGE_MODELS = [
526
547
  adapter: "replicate",
527
548
  providerModelId: "qwen/qwen-image-2-pro",
528
549
  lifecycle: "active",
529
- exposure: "internal",
550
+ exposure: [],
530
551
  constraints: {
531
552
  aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"],
532
553
  sizes: [],
@@ -552,7 +573,7 @@ var IMAGE_MODELS = [
552
573
  adapter: "replicate",
553
574
  providerModelId: "qwen-edit-apps/qwen-image-edit-plus-lora-skin",
554
575
  lifecycle: "active",
555
- exposure: "internal",
576
+ exposure: [],
556
577
  constraints: {
557
578
  aspectRatios: ["1:1", "16:9", "9:16", "4:3", "3:4"],
558
579
  sizes: [],
@@ -581,7 +602,7 @@ var OTHER_MODELS = [
581
602
  adapter: "google-genai",
582
603
  providerModelId: "lyria-3-clip-preview",
583
604
  lifecycle: "active",
584
- exposure: "catalog",
605
+ exposure: ["cowork", "space_builder"],
585
606
  constraints: {
586
607
  durations: [30],
587
608
  references: { images: 10 },
@@ -605,7 +626,7 @@ var OTHER_MODELS = [
605
626
  adapter: "google-genai",
606
627
  providerModelId: "lyria-3-pro-preview",
607
628
  lifecycle: "active",
608
- exposure: "catalog",
629
+ exposure: ["cowork", "space_builder"],
609
630
  constraints: {
610
631
  references: { images: 10 },
611
632
  supports: []
@@ -628,7 +649,7 @@ var OTHER_MODELS = [
628
649
  adapter: "replicate",
629
650
  providerModelId: "google/lyria-2",
630
651
  lifecycle: "active",
631
- exposure: "internal",
652
+ exposure: [],
632
653
  constraints: {
633
654
  durations: [30],
634
655
  supports: ["seed", "negativePrompt"]
@@ -650,7 +671,7 @@ var OTHER_MODELS = [
650
671
  adapter: "replicate",
651
672
  providerModelId: "zsxkib/mmaudio:62871fb59889b2d7c13777f08deb3b36bdff88f7e1d53a50ad7694548a41b484",
652
673
  lifecycle: "active",
653
- exposure: "catalog",
674
+ exposure: ["cowork", "space_builder"],
654
675
  constraints: {
655
676
  durations: { min: 1, max: 30 },
656
677
  requires: ["sourceVideo"],
@@ -673,7 +694,7 @@ var OTHER_MODELS = [
673
694
  adapter: "replicate",
674
695
  providerModelId: "elevenlabs/music",
675
696
  lifecycle: "active",
676
- exposure: "internal",
697
+ exposure: [],
677
698
  constraints: {
678
699
  durations: { min: 5, max: 300 },
679
700
  supports: ["instrumental"]
@@ -696,7 +717,7 @@ var OTHER_MODELS = [
696
717
  adapter: "replicate",
697
718
  providerModelId: "topazlabs/image-upscale",
698
719
  lifecycle: "active",
699
- exposure: "catalog",
720
+ exposure: ["cowork", "space_builder"],
700
721
  constraints: {
701
722
  references: { images: 1 },
702
723
  requires: ["references"],
@@ -719,7 +740,7 @@ var OTHER_MODELS = [
719
740
  adapter: "prodia",
720
741
  providerModelId: "inference.remove-background.v1",
721
742
  lifecycle: "active",
722
- exposure: "catalog",
743
+ exposure: ["cowork", "space_builder"],
723
744
  constraints: {
724
745
  references: { images: 1 },
725
746
  requires: ["references"],
@@ -758,7 +779,7 @@ function text(id, label, providerModelId, extra) {
758
779
  adapter: "ai-sdk-text",
759
780
  providerModelId,
760
781
  lifecycle: "active",
761
- exposure: "internal",
782
+ exposure: [],
762
783
  constraints: { supports: [] },
763
784
  defaults: {},
764
785
  usage: { ...TEXT_USAGE },
@@ -777,7 +798,7 @@ var OPENAI_REASONING = { openai: { reasoningEffort: "medium", reasoningSummary:
777
798
  var DEEPSEEK_THINKING = { deepseek: { thinking: { type: "enabled" } } };
778
799
  var TEXT_MODELS = [
779
800
  text("gpt-4o", "GPT-4o", "gpt-4o", {
780
- exposure: "internal",
801
+ exposure: [],
781
802
  display: {
782
803
  provider: "openai",
783
804
  costTier: 2,
@@ -786,7 +807,7 @@ var TEXT_MODELS = [
786
807
  capabilities: { vision: true, contextWindow: 128e3 }
787
808
  }),
788
809
  text("gpt-4o-mini", "GPT-4o mini", "gpt-4o-mini", {
789
- exposure: "internal",
810
+ exposure: [],
790
811
  display: {
791
812
  provider: "openai",
792
813
  costTier: 1,
@@ -795,7 +816,7 @@ var TEXT_MODELS = [
795
816
  capabilities: { vision: true, contextWindow: 128e3 }
796
817
  }),
797
818
  text("gpt-5.1", "GPT-5.1", "gpt-5.1", {
798
- exposure: "catalog",
819
+ exposure: ["cowork", "space_builder"],
799
820
  display: {
800
821
  provider: "openai",
801
822
  costTier: 3,
@@ -804,7 +825,7 @@ var TEXT_MODELS = [
804
825
  capabilities: { vision: true, contextWindow: 4e5 }
805
826
  }),
806
827
  text("gpt-5.2", "GPT-5.2", "gpt-5.2", {
807
- exposure: "catalog",
828
+ exposure: ["cowork", "space_builder"],
808
829
  display: {
809
830
  provider: "openai",
810
831
  costTier: 3,
@@ -814,7 +835,7 @@ var TEXT_MODELS = [
814
835
  }),
815
836
  // 1.05M-token context: https://platform.openai.com/docs/models/gpt-5.4
816
837
  text("gpt-5.4", "GPT-5.4", "gpt-5.4", {
817
- exposure: "internal",
838
+ exposure: [],
818
839
  display: {
819
840
  provider: "openai",
820
841
  costTier: 3,
@@ -827,7 +848,7 @@ var TEXT_MODELS = [
827
848
  }),
828
849
  // OpenAI never shipped gpt-5.1-mini or gpt-5.2-mini; callers that still send them get 5.4 mini.
829
850
  text("gpt-5.4-mini", "GPT-5.4 mini", "gpt-5.4-mini", {
830
- exposure: "catalog",
851
+ exposure: ["cowork", "space_builder"],
831
852
  aliases: ["gpt-5.1-mini", "gpt-5.2-mini"],
832
853
  display: {
833
854
  provider: "openai",
@@ -837,7 +858,7 @@ var TEXT_MODELS = [
837
858
  capabilities: { vision: true, contextWindow: 4e5 }
838
859
  }),
839
860
  text("gpt-5.5", "GPT-5.5", "gpt-5.5", {
840
- exposure: "catalog",
861
+ exposure: ["cowork", "space_builder"],
841
862
  display: {
842
863
  provider: "openai",
843
864
  costTier: 3,
@@ -849,7 +870,7 @@ var TEXT_MODELS = [
849
870
  }
850
871
  }),
851
872
  text("gpt-5.6-luna", "GPT-5.6 Luna", "gpt-5.6-luna", {
852
- exposure: "catalog",
873
+ exposure: ["cowork", "space_builder"],
853
874
  display: {
854
875
  chat: { providerOptions: OPENAI_REASONING },
855
876
  provider: "openai",
@@ -863,7 +884,7 @@ var TEXT_MODELS = [
863
884
  }
864
885
  }),
865
886
  text("gpt-5.6-terra", "GPT-5.6 Terra", "gpt-5.6-terra", {
866
- exposure: "catalog",
887
+ exposure: ["cowork", "space_builder"],
867
888
  display: {
868
889
  chat: { providerOptions: OPENAI_REASONING },
869
890
  provider: "openai",
@@ -877,7 +898,7 @@ var TEXT_MODELS = [
877
898
  }
878
899
  }),
879
900
  text("gpt-5.6-sol", "GPT-5.6 Sol", "gpt-5.6-sol", {
880
- exposure: "catalog",
901
+ exposure: ["cowork", "space_builder"],
881
902
  display: {
882
903
  chat: { providerOptions: OPENAI_REASONING },
883
904
  provider: "openai",
@@ -892,7 +913,7 @@ var TEXT_MODELS = [
892
913
  }),
893
914
  // Library key "claude-sonnet-4.5" maps to the SDK id "claude-sonnet-4-5".
894
915
  text("claude-sonnet-4-5", "Claude Sonnet 4.5", "claude-sonnet-4-5", {
895
- exposure: "internal",
916
+ exposure: [],
896
917
  aliases: ["claude-sonnet-4.5", "claude-sonnet-4-5-20250929"],
897
918
  display: {
898
919
  provider: "anthropic",
@@ -903,7 +924,7 @@ var TEXT_MODELS = [
903
924
  }),
904
925
  // Anthropic retired the dated 4.0 ids; callers that still send them get 4.6.
905
926
  text("claude-sonnet-4-6", "Claude Sonnet 4.6", "claude-sonnet-4-6", {
906
- exposure: "catalog",
927
+ exposure: ["cowork", "space_builder"],
907
928
  aliases: [
908
929
  "claude-sonnet-4.6",
909
930
  "claude-sonnet-4",
@@ -923,7 +944,7 @@ var TEXT_MODELS = [
923
944
  }
924
945
  }),
925
946
  text("claude-sonnet-5", "Claude Sonnet 5", "claude-sonnet-5", {
926
- exposure: "catalog",
947
+ exposure: ["cowork", "space_builder"],
927
948
  display: {
928
949
  chat: { providerOptions: ANTHROPIC_ADAPTIVE },
929
950
  provider: "anthropic",
@@ -937,7 +958,7 @@ var TEXT_MODELS = [
937
958
  }
938
959
  }),
939
960
  text("claude-opus-4-8", "Claude Opus 4.8", "claude-opus-4-8", {
940
- exposure: "catalog",
961
+ exposure: ["cowork", "space_builder"],
941
962
  aliases: ["claude-opus-4.8", "claude-opus-4", "claude-opus-4.0", "claude-opus-4-20250514"],
942
963
  display: {
943
964
  chat: { providerOptions: ANTHROPIC_ADAPTIVE },
@@ -952,7 +973,7 @@ var TEXT_MODELS = [
952
973
  }
953
974
  }),
954
975
  text("claude-haiku-4-5", "Claude Haiku 4.5", "claude-haiku-4-5", {
955
- exposure: "catalog",
976
+ exposure: ["cowork", "space_builder"],
956
977
  aliases: ["claude-haiku-4.5", "claude-haiku-4-5-20251001", "claude-haiku-4"],
957
978
  display: {
958
979
  chat: { providerOptions: ANTHROPIC_THINKING },
@@ -967,7 +988,7 @@ var TEXT_MODELS = [
967
988
  }
968
989
  }),
969
990
  text("claude-opus-5", "Claude Opus 5", "claude-opus-5", {
970
- exposure: "internal",
991
+ exposure: [],
971
992
  aliases: ["claude-opus-5.0"],
972
993
  display: {
973
994
  provider: "anthropic",
@@ -980,7 +1001,7 @@ var TEXT_MODELS = [
980
1001
  }
981
1002
  }),
982
1003
  text("claude-fable-5", "Claude Fable 5", "claude-fable-5", {
983
- exposure: "internal",
1004
+ exposure: [],
984
1005
  display: {
985
1006
  provider: "anthropic",
986
1007
  costTier: 3,
@@ -992,7 +1013,7 @@ var TEXT_MODELS = [
992
1013
  }
993
1014
  }),
994
1015
  text("gemini-2.5-flash", "Gemini 2.5 Flash", "gemini-2.5-flash", {
995
- exposure: "internal",
1016
+ exposure: [],
996
1017
  display: {
997
1018
  provider: "google",
998
1019
  costTier: 1,
@@ -1004,7 +1025,7 @@ var TEXT_MODELS = [
1004
1025
  }
1005
1026
  }),
1006
1027
  text("gemini-2.5-pro", "Gemini 2.5 Pro", "gemini-2.5-pro", {
1007
- exposure: "internal",
1028
+ exposure: [],
1008
1029
  display: {
1009
1030
  provider: "google",
1010
1031
  costTier: 2,
@@ -1016,7 +1037,7 @@ var TEXT_MODELS = [
1016
1037
  }
1017
1038
  }),
1018
1039
  text("gemini-3.1-pro-preview", "Gemini 3.1 Pro (preview)", "gemini-3.1-pro-preview", {
1019
- exposure: "catalog",
1040
+ exposure: ["cowork", "space_builder"],
1020
1041
  display: {
1021
1042
  provider: "google",
1022
1043
  costTier: 2,
@@ -1028,7 +1049,7 @@ var TEXT_MODELS = [
1028
1049
  }
1029
1050
  }),
1030
1051
  text("gemini-3.5-flash", "Gemini 3.5 Flash", "gemini-3.5-flash", {
1031
- exposure: "catalog",
1052
+ exposure: ["cowork", "space_builder"],
1032
1053
  display: {
1033
1054
  provider: "google",
1034
1055
  costTier: 1,
@@ -1040,7 +1061,7 @@ var TEXT_MODELS = [
1040
1061
  }
1041
1062
  }),
1042
1063
  text("gemini-3.6-flash", "Gemini 3.6 Flash", "gemini-3.6-flash", {
1043
- exposure: "catalog",
1064
+ exposure: ["cowork", "space_builder"],
1044
1065
  display: {
1045
1066
  provider: "google",
1046
1067
  costTier: 1,
@@ -1052,7 +1073,7 @@ var TEXT_MODELS = [
1052
1073
  }
1053
1074
  }),
1054
1075
  text("gemini-3.7-flash", "Gemini 3.7 Flash", "gemini-3.7-flash", {
1055
- exposure: "catalog",
1076
+ exposure: ["cowork", "space_builder"],
1056
1077
  display: {
1057
1078
  provider: "google",
1058
1079
  costTier: 1,
@@ -1065,7 +1086,7 @@ var TEXT_MODELS = [
1065
1086
  }
1066
1087
  }),
1067
1088
  text("gemini-3.8-flash", "Gemini 3.8 Flash", "gemini-3.8-flash", {
1068
- exposure: "internal",
1089
+ exposure: [],
1069
1090
  display: {
1070
1091
  provider: "google",
1071
1092
  costTier: 1,
@@ -1078,12 +1099,12 @@ var TEXT_MODELS = [
1078
1099
  }),
1079
1100
  // Renamed to gemini-3.6-flash in vibe-shared model-migration.ts.
1080
1101
  text("gemini-3-flash-preview", "Gemini 3 Flash (preview)", "gemini-3-flash-preview", {
1081
- exposure: "internal",
1102
+ exposure: [],
1082
1103
  lifecycle: "deprecated",
1083
1104
  replacedBy: "gemini-3.6-flash"
1084
1105
  }),
1085
1106
  text("gemini-3.1-flash-lite", "Gemini 3.1 Flash Lite", "gemini-3.1-flash-lite", {
1086
- exposure: "internal",
1107
+ exposure: [],
1087
1108
  display: {
1088
1109
  provider: "google",
1089
1110
  costTier: 1,
@@ -1095,7 +1116,7 @@ var TEXT_MODELS = [
1095
1116
  }
1096
1117
  }),
1097
1118
  text("sonar", "Sonar", "sonar", {
1098
- exposure: "internal",
1119
+ exposure: [],
1099
1120
  display: {
1100
1121
  provider: "perplexity",
1101
1122
  costTier: 1,
@@ -1107,7 +1128,7 @@ var TEXT_MODELS = [
1107
1128
  }
1108
1129
  }),
1109
1130
  text("sonar-pro", "Sonar Pro", "sonar-pro", {
1110
- exposure: "internal",
1131
+ exposure: [],
1111
1132
  display: {
1112
1133
  provider: "perplexity",
1113
1134
  costTier: 2,
@@ -1119,7 +1140,7 @@ var TEXT_MODELS = [
1119
1140
  }
1120
1141
  }),
1121
1142
  text("sonar-reasoning-pro", "Sonar Reasoning Pro", "sonar-reasoning-pro", {
1122
- exposure: "internal",
1143
+ exposure: [],
1123
1144
  display: {
1124
1145
  provider: "perplexity",
1125
1146
  costTier: 2,
@@ -1135,7 +1156,7 @@ var TEXT_MODELS = [
1135
1156
  // stays an alias so stored selections keep resolving.
1136
1157
  text("deepseek-flash", "DeepSeek V4.1 Flash", "deepseek-flash", {
1137
1158
  aliases: ["deepseek-v4-flash"],
1138
- exposure: "catalog",
1159
+ exposure: ["cowork", "space_builder"],
1139
1160
  display: {
1140
1161
  chat: { providerOptions: DEEPSEEK_THINKING },
1141
1162
  provider: "deepseek",
@@ -1150,7 +1171,7 @@ var TEXT_MODELS = [
1150
1171
  }
1151
1172
  }),
1152
1173
  text("deepseek-v4-pro", "DeepSeek V4 Pro", "deepseek-v4-pro", {
1153
- exposure: "catalog",
1174
+ exposure: ["cowork", "space_builder"],
1154
1175
  display: {
1155
1176
  chat: { providerOptions: DEEPSEEK_THINKING },
1156
1177
  provider: "deepseek",
@@ -1165,7 +1186,7 @@ var TEXT_MODELS = [
1165
1186
  }),
1166
1187
  // 1M-token context: https://docs.x.ai/docs/models/grok-4.3
1167
1188
  text("grok-4.3", "Grok 4.3", "grok-4.3", {
1168
- exposure: "catalog",
1189
+ exposure: ["cowork", "space_builder"],
1169
1190
  display: {
1170
1191
  provider: "xai",
1171
1192
  costTier: 2,
@@ -1180,7 +1201,7 @@ var TEXT_MODELS = [
1180
1201
  text("kimi-k2.5", "Kimi K2.5", "kimi-k2.5", {
1181
1202
  lifecycle: "deprecated",
1182
1203
  replacedBy: "kimi-k3",
1183
- exposure: "internal",
1204
+ exposure: [],
1184
1205
  display: {
1185
1206
  chat: { temperature: 1 },
1186
1207
  provider: "moonshot",
@@ -1190,7 +1211,7 @@ var TEXT_MODELS = [
1190
1211
  capabilities: {}
1191
1212
  }),
1192
1213
  text("kimi-k3", "Kimi K3", "kimi-k3", {
1193
- exposure: "catalog",
1214
+ exposure: ["cowork", "space_builder"],
1194
1215
  display: {
1195
1216
  chat: { temperature: 1 },
1196
1217
  provider: "moonshot",
@@ -1206,7 +1227,7 @@ var TEXT_MODELS = [
1206
1227
  // Cowork calls the provider "MiniMax-M3"; the pricing key is lowercase.
1207
1228
  // 1M-token context: https://platform.minimax.io/docs/api-reference/text-openai-api
1208
1229
  text("minimax-m3", "MiniMax M3", "MiniMax-M3", {
1209
- exposure: "catalog",
1230
+ exposure: ["cowork", "space_builder"],
1210
1231
  aliases: ["MiniMax-M3"],
1211
1232
  display: {
1212
1233
  provider: "minimax",
@@ -1243,7 +1264,7 @@ var VIDEO_MODELS = [
1243
1264
  adapter: "google-genai",
1244
1265
  providerModelId: "veo-3.1-generate-preview",
1245
1266
  lifecycle: "active",
1246
- exposure: "catalog",
1267
+ exposure: ["cowork", "space_builder"],
1247
1268
  constraints: {
1248
1269
  aspectRatios: [...OMNI_RATIOS],
1249
1270
  resolutions: ["720p", "1080p", "4k"],
@@ -1273,7 +1294,7 @@ var VIDEO_MODELS = [
1273
1294
  adapter: "google-genai",
1274
1295
  providerModelId: "veo-3.1-fast-generate-preview",
1275
1296
  lifecycle: "active",
1276
- exposure: "internal",
1297
+ exposure: [],
1277
1298
  constraints: {
1278
1299
  aspectRatios: [...OMNI_RATIOS],
1279
1300
  resolutions: ["720p", "1080p", "4k"],
@@ -1302,7 +1323,7 @@ var VIDEO_MODELS = [
1302
1323
  adapter: "google-genai",
1303
1324
  providerModelId: "veo-3.1-lite-generate-preview",
1304
1325
  lifecycle: "active",
1305
- exposure: "internal",
1326
+ exposure: [],
1306
1327
  constraints: {
1307
1328
  aspectRatios: [...OMNI_RATIOS],
1308
1329
  resolutions: ["720p", "1080p"],
@@ -1332,7 +1353,7 @@ var VIDEO_MODELS = [
1332
1353
  adapter: "google-genai",
1333
1354
  providerModelId: "gemini-omni-flash-preview",
1334
1355
  lifecycle: "active",
1335
- exposure: "catalog",
1356
+ exposure: ["cowork", "space_builder"],
1336
1357
  constraints: {
1337
1358
  // 1.0 rejects `resolution`; it renders 720p. No defaults: the adapter
1338
1359
  // sends ratio and duration only when the caller set them, so a
@@ -1360,7 +1381,7 @@ var VIDEO_MODELS = [
1360
1381
  adapter: "google-genai",
1361
1382
  providerModelId: "gemini-omni-1.1-flash",
1362
1383
  lifecycle: "active",
1363
- exposure: "catalog",
1384
+ exposure: ["cowork", "space_builder"],
1364
1385
  constraints: {
1365
1386
  aspectRatios: [...OMNI_RATIOS],
1366
1387
  resolutions: ["360p", "720p", "1080p", "4k"],
@@ -1387,7 +1408,7 @@ var VIDEO_MODELS = [
1387
1408
  adapter: "ark",
1388
1409
  providerModelId: "dreamina-seedance-2-0-260128",
1389
1410
  lifecycle: "active",
1390
- exposure: "catalog",
1411
+ exposure: ["cowork", "space_builder"],
1391
1412
  constraints: {
1392
1413
  aspectRatios: [...SEEDANCE_RATIOS],
1393
1414
  resolutions: ["480p", "720p", "1080p", "4k"],
@@ -1420,7 +1441,7 @@ var VIDEO_MODELS = [
1420
1441
  adapter: "ark",
1421
1442
  providerModelId: "dreamina-seedance-2-0-fast-260128",
1422
1443
  lifecycle: "active",
1423
- exposure: "catalog",
1444
+ exposure: ["cowork", "space_builder"],
1424
1445
  constraints: {
1425
1446
  aspectRatios: [...SEEDANCE_RATIOS],
1426
1447
  resolutions: ["480p", "720p"],
@@ -1453,7 +1474,7 @@ var VIDEO_MODELS = [
1453
1474
  adapter: "ark",
1454
1475
  providerModelId: "dreamina-seedance-2-5-260628",
1455
1476
  lifecycle: "active",
1456
- exposure: "catalog",
1477
+ exposure: ["cowork", "space_builder"],
1457
1478
  constraints: {
1458
1479
  aspectRatios: [...SEEDANCE_RATIOS],
1459
1480
  resolutions: ["480p", "720p", "1080p"],
@@ -1486,7 +1507,7 @@ var VIDEO_MODELS = [
1486
1507
  adapter: "xai-video",
1487
1508
  providerModelId: "grok-imagine-video",
1488
1509
  lifecycle: "active",
1489
- exposure: "catalog",
1510
+ exposure: ["cowork", "space_builder"],
1490
1511
  constraints: {
1491
1512
  aspectRatios: [...GROK_RATIOS],
1492
1513
  resolutions: ["480p", "720p"],
@@ -1514,7 +1535,7 @@ var VIDEO_MODELS = [
1514
1535
  adapter: "higgsfield",
1515
1536
  providerModelId: "kling-video/v2.5-turbo/pro/image-to-video",
1516
1537
  lifecycle: "active",
1517
- exposure: "catalog",
1538
+ exposure: ["cowork", "space_builder"],
1518
1539
  constraints: {
1519
1540
  aspectRatios: [...KLING_RATIOS],
1520
1541
  durations: [5, 10],
@@ -1545,7 +1566,7 @@ var VIDEO_MODELS = [
1545
1566
  adapter: "higgsfield",
1546
1567
  providerModelId: "kling-video/v3.0/pro/image-to-video",
1547
1568
  lifecycle: "active",
1548
- exposure: "catalog",
1569
+ exposure: ["cowork", "space_builder"],
1549
1570
  constraints: {
1550
1571
  aspectRatios: [...KLING_RATIOS],
1551
1572
  durations: { min: 3, max: 15 },
@@ -1576,7 +1597,7 @@ var VIDEO_MODELS = [
1576
1597
  adapter: "replicate",
1577
1598
  providerModelId: "kwaivgi/kling-v3-omni-video",
1578
1599
  lifecycle: "active",
1579
- exposure: "catalog",
1600
+ exposure: ["cowork", "space_builder"],
1580
1601
  constraints: {
1581
1602
  aspectRatios: [...KLING_RATIOS],
1582
1603
  resolutions: ["720p", "1080p"],
@@ -1602,7 +1623,7 @@ var VIDEO_MODELS = [
1602
1623
  adapter: "fal",
1603
1624
  providerModelId: "minimax/h3",
1604
1625
  lifecycle: "active",
1605
- exposure: "catalog",
1626
+ exposure: ["cowork", "space_builder"],
1606
1627
  constraints: {
1607
1628
  aspectRatios: [...H3_RATIOS],
1608
1629
  resolutions: ["480p", "768p", "2k", "4k"],
@@ -1632,7 +1653,7 @@ var VIDEO_MODELS = [
1632
1653
  adapter: "fal",
1633
1654
  providerModelId: "minimax/h3-max",
1634
1655
  lifecycle: "active",
1635
- exposure: "catalog",
1656
+ exposure: ["cowork", "space_builder"],
1636
1657
  constraints: {
1637
1658
  aspectRatios: [...H3_RATIOS],
1638
1659
  resolutions: ["480p", "768p"],
@@ -1662,7 +1683,7 @@ var VIDEO_MODELS = [
1662
1683
  adapter: "fal",
1663
1684
  providerModelId: "minimax/h3/reference-to-video",
1664
1685
  lifecycle: "active",
1665
- exposure: "catalog",
1686
+ exposure: ["cowork", "space_builder"],
1666
1687
  constraints: {
1667
1688
  aspectRatios: [...H3_REFERENCE_RATIOS],
1668
1689
  resolutions: ["480p", "768p", "2k", "4k"],
@@ -1693,7 +1714,7 @@ var VIDEO_MODELS = [
1693
1714
  adapter: "fal",
1694
1715
  providerModelId: "minimax/h3-max/reference-to-video",
1695
1716
  lifecycle: "active",
1696
- exposure: "catalog",
1717
+ exposure: ["cowork", "space_builder"],
1697
1718
  constraints: {
1698
1719
  aspectRatios: [...H3_REFERENCE_RATIOS],
1699
1720
  resolutions: ["480p", "768p"],
@@ -1725,7 +1746,7 @@ var VIDEO_MODELS = [
1725
1746
  adapter: "fal",
1726
1747
  providerModelId: "fal-ai/kling-video/o1/video-to-video/reference",
1727
1748
  lifecycle: "active",
1728
- exposure: "internal",
1749
+ exposure: [],
1729
1750
  constraints: {
1730
1751
  aspectRatios: [...KLING_RATIOS],
1731
1752
  durations: { min: 3, max: 10 },
@@ -1750,7 +1771,7 @@ var VIDEO_MODELS = [
1750
1771
  adapter: "replicate",
1751
1772
  providerModelId: "minimax/hailuo-02",
1752
1773
  lifecycle: "active",
1753
- exposure: "internal",
1774
+ exposure: [],
1754
1775
  constraints: {
1755
1776
  resolutions: ["768p"],
1756
1777
  durations: [6, 10],
@@ -1774,7 +1795,7 @@ var VIDEO_MODELS = [
1774
1795
  adapter: "higgsfield",
1775
1796
  providerModelId: "dop-preview",
1776
1797
  lifecycle: "active",
1777
- exposure: "internal",
1798
+ exposure: [],
1778
1799
  constraints: {
1779
1800
  requires: ["firstFrame"],
1780
1801
  supports: ["seed", "lastFrame"]
@@ -1814,6 +1835,12 @@ var ADAPTER_IDS = [
1814
1835
  ];
1815
1836
  var ModelTypeSchema = z.enum(["text", "image", "video", "audio", "upscale", "bg-remove"]);
1816
1837
  var LifecycleSchema = z.enum(["active", "deprecated", "retired"]);
1838
+ var SurfaceSchema = z.enum(["cowork", "space_builder"]);
1839
+ var SURFACES2 = SurfaceSchema.options;
1840
+ var ExposureSchema = z.preprocess(
1841
+ normalizeExposure,
1842
+ z.array(SurfaceSchema)
1843
+ );
1817
1844
  var AdapterSchema = z.enum(ADAPTER_IDS);
1818
1845
  var AspectRatioSchema = z.enum([
1819
1846
  "1:1",
@@ -1965,7 +1992,7 @@ var CatalogModelSchemaBase = z.looseObject({
1965
1992
  providerModelId: z.string().min(1),
1966
1993
  lifecycle: LifecycleSchema,
1967
1994
  replacedBy: z.string().optional(),
1968
- exposure: z.enum(["catalog", "internal"]),
1995
+ exposure: ExposureSchema,
1969
1996
  constraints: ModelConstraintsSchema,
1970
1997
  defaults: DefaultsSchema,
1971
1998
  providerOptions: ProviderOptionsSchema.optional(),
@@ -2582,17 +2609,23 @@ export {
2582
2609
  Catalog,
2583
2610
  CatalogModelSchema,
2584
2611
  CatalogSchema,
2612
+ ExposureSchema,
2585
2613
  IMAGE_MODELS,
2586
2614
  MODELS,
2587
2615
  ModelKitError,
2588
2616
  OTHER_MODELS,
2617
+ SURFACES2 as SURFACES,
2618
+ SurfaceSchema,
2589
2619
  TEXT_MODELS,
2590
2620
  VIDEO_MODELS,
2591
2621
  compareCatalogOrder,
2622
+ isListed,
2623
+ isListedOn,
2592
2624
  isModelKitError,
2593
2625
  liveCatalog,
2594
2626
  liveState,
2595
2627
  nearestAspectRatio,
2628
+ normalizeExposure,
2596
2629
  primeCatalog,
2597
2630
  resetLiveCatalog,
2598
2631
  resolveAudioOptions,