@shop-os/modelkit 0.6.1 → 0.7.0
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/CHANGELOG.md +12 -0
- package/README.md +3 -3
- package/dist/catalog.cjs +205 -46
- package/dist/catalog.cjs.map +1 -1
- package/dist/catalog.d.cts +6 -3
- package/dist/catalog.d.ts +6 -3
- package/dist/catalog.js +205 -46
- package/dist/catalog.js.map +1 -1
- package/dist/index.cjs +857 -90
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -5
- package/dist/index.d.ts +10 -5
- package/dist/index.js +856 -90
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/catalog.d.cts
CHANGED
|
@@ -133,7 +133,7 @@ type Lifecycle = "active" | "deprecated" | "retired";
|
|
|
133
133
|
type Surface = "cowork" | "space_builder";
|
|
134
134
|
/** @deprecated use Surface[] */
|
|
135
135
|
type Exposure = Surface[];
|
|
136
|
-
type AdapterId = "ai-sdk-text" | "google-image" | "openai-image" | "google-genai" | "ark" | "fal" | "replicate" | "prodia" | "higgsfield" | "xai-video";
|
|
136
|
+
type AdapterId = "ai-sdk-text" | "google-image" | "openai-image" | "google-genai" | "ark" | "fal" | "replicate" | "prodia" | "higgsfield" | "xai-video" | "luma";
|
|
137
137
|
/** Gemini image safety threshold, per category, sent only when the caller opts in. */
|
|
138
138
|
type ImageSafetySetting = {
|
|
139
139
|
category: string;
|
|
@@ -901,7 +901,7 @@ interface UsageEvent {
|
|
|
901
901
|
latencyMs?: number;
|
|
902
902
|
raw?: unknown;
|
|
903
903
|
}
|
|
904
|
-
type ProviderKeyName = "openai" | "anthropic" | "google" | "xai" | "perplexity" | "deepseek" | "moonshot" | "minimax" | "ark" | "fal" | "replicate" | "prodia" | "higgsfield" | "cloudflare";
|
|
904
|
+
type ProviderKeyName = "openai" | "anthropic" | "google" | "xai" | "perplexity" | "deepseek" | "moonshot" | "minimax" | "ark" | "fal" | "replicate" | "prodia" | "higgsfield" | "luma" | "cloudflare";
|
|
905
905
|
type ProviderKeys = Partial<Record<ProviderKeyName, string>> & {
|
|
906
906
|
/** Higgsfield needs the pair; both switch together. */
|
|
907
907
|
higgsfieldSecret?: string;
|
|
@@ -950,6 +950,8 @@ interface Routing {
|
|
|
950
950
|
interface AdapterEndpoints {
|
|
951
951
|
/** Ark (Seedream images, Seedance videos). Defaults to the BytePlus ap-southeast endpoint. */
|
|
952
952
|
ark?: string;
|
|
953
|
+
/** Luma Agents API. Defaults to https://agents.lumalabs.ai. */
|
|
954
|
+
luma?: string;
|
|
953
955
|
}
|
|
954
956
|
interface ModelKitConfig {
|
|
955
957
|
keys: {
|
|
@@ -1024,7 +1026,7 @@ declare function isListed(row: CatalogModel): boolean;
|
|
|
1024
1026
|
*/
|
|
1025
1027
|
declare const MODELS: CatalogModel[];
|
|
1026
1028
|
|
|
1027
|
-
declare const ADAPTER_IDS: readonly ["ai-sdk-text", "google-image", "openai-image", "google-genai", "ark", "fal", "replicate", "prodia", "higgsfield", "xai-video"];
|
|
1029
|
+
declare const ADAPTER_IDS: readonly ["ai-sdk-text", "google-image", "openai-image", "google-genai", "ark", "fal", "replicate", "prodia", "higgsfield", "xai-video", "luma"];
|
|
1028
1030
|
declare const SurfaceSchema: z.ZodEnum<{
|
|
1029
1031
|
cowork: "cowork";
|
|
1030
1032
|
space_builder: "space_builder";
|
|
@@ -1072,6 +1074,7 @@ declare const CatalogModelSchemaBase: z.ZodObject<{
|
|
|
1072
1074
|
prodia: "prodia";
|
|
1073
1075
|
higgsfield: "higgsfield";
|
|
1074
1076
|
"xai-video": "xai-video";
|
|
1077
|
+
luma: "luma";
|
|
1075
1078
|
}>;
|
|
1076
1079
|
providerModelId: z.ZodString;
|
|
1077
1080
|
lifecycle: z.ZodEnum<{
|
package/dist/catalog.d.ts
CHANGED
|
@@ -133,7 +133,7 @@ type Lifecycle = "active" | "deprecated" | "retired";
|
|
|
133
133
|
type Surface = "cowork" | "space_builder";
|
|
134
134
|
/** @deprecated use Surface[] */
|
|
135
135
|
type Exposure = Surface[];
|
|
136
|
-
type AdapterId = "ai-sdk-text" | "google-image" | "openai-image" | "google-genai" | "ark" | "fal" | "replicate" | "prodia" | "higgsfield" | "xai-video";
|
|
136
|
+
type AdapterId = "ai-sdk-text" | "google-image" | "openai-image" | "google-genai" | "ark" | "fal" | "replicate" | "prodia" | "higgsfield" | "xai-video" | "luma";
|
|
137
137
|
/** Gemini image safety threshold, per category, sent only when the caller opts in. */
|
|
138
138
|
type ImageSafetySetting = {
|
|
139
139
|
category: string;
|
|
@@ -901,7 +901,7 @@ interface UsageEvent {
|
|
|
901
901
|
latencyMs?: number;
|
|
902
902
|
raw?: unknown;
|
|
903
903
|
}
|
|
904
|
-
type ProviderKeyName = "openai" | "anthropic" | "google" | "xai" | "perplexity" | "deepseek" | "moonshot" | "minimax" | "ark" | "fal" | "replicate" | "prodia" | "higgsfield" | "cloudflare";
|
|
904
|
+
type ProviderKeyName = "openai" | "anthropic" | "google" | "xai" | "perplexity" | "deepseek" | "moonshot" | "minimax" | "ark" | "fal" | "replicate" | "prodia" | "higgsfield" | "luma" | "cloudflare";
|
|
905
905
|
type ProviderKeys = Partial<Record<ProviderKeyName, string>> & {
|
|
906
906
|
/** Higgsfield needs the pair; both switch together. */
|
|
907
907
|
higgsfieldSecret?: string;
|
|
@@ -950,6 +950,8 @@ interface Routing {
|
|
|
950
950
|
interface AdapterEndpoints {
|
|
951
951
|
/** Ark (Seedream images, Seedance videos). Defaults to the BytePlus ap-southeast endpoint. */
|
|
952
952
|
ark?: string;
|
|
953
|
+
/** Luma Agents API. Defaults to https://agents.lumalabs.ai. */
|
|
954
|
+
luma?: string;
|
|
953
955
|
}
|
|
954
956
|
interface ModelKitConfig {
|
|
955
957
|
keys: {
|
|
@@ -1024,7 +1026,7 @@ declare function isListed(row: CatalogModel): boolean;
|
|
|
1024
1026
|
*/
|
|
1025
1027
|
declare const MODELS: CatalogModel[];
|
|
1026
1028
|
|
|
1027
|
-
declare const ADAPTER_IDS: readonly ["ai-sdk-text", "google-image", "openai-image", "google-genai", "ark", "fal", "replicate", "prodia", "higgsfield", "xai-video"];
|
|
1029
|
+
declare const ADAPTER_IDS: readonly ["ai-sdk-text", "google-image", "openai-image", "google-genai", "ark", "fal", "replicate", "prodia", "higgsfield", "xai-video", "luma"];
|
|
1028
1030
|
declare const SurfaceSchema: z.ZodEnum<{
|
|
1029
1031
|
cowork: "cowork";
|
|
1030
1032
|
space_builder: "space_builder";
|
|
@@ -1072,6 +1074,7 @@ declare const CatalogModelSchemaBase: z.ZodObject<{
|
|
|
1072
1074
|
prodia: "prodia";
|
|
1073
1075
|
higgsfield: "higgsfield";
|
|
1074
1076
|
"xai-video": "xai-video";
|
|
1077
|
+
luma: "luma";
|
|
1075
1078
|
}>;
|
|
1076
1079
|
providerModelId: z.ZodString;
|
|
1077
1080
|
lifecycle: z.ZodEnum<{
|
package/dist/catalog.js
CHANGED
|
@@ -364,8 +364,59 @@ var FAL_IMAGE_MODELS = [
|
|
|
364
364
|
}
|
|
365
365
|
];
|
|
366
366
|
|
|
367
|
-
// src/catalog/image.ts
|
|
367
|
+
// src/catalog/image-luma.ts
|
|
368
368
|
var IMAGE_USAGE2 = { unit: "images" };
|
|
369
|
+
var EXPOSURE2 = ["cowork", "space_builder"];
|
|
370
|
+
var LOBE2 = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light";
|
|
371
|
+
var LUMA_LOGO = `${LOBE2}/luma-color.png`;
|
|
372
|
+
var UNI_RATIOS = ["adaptive", "16:9", "3:2", "1:1", "2:3", "9:16"];
|
|
373
|
+
function uniImage(id, label, providerModelId, description) {
|
|
374
|
+
return {
|
|
375
|
+
// https://docs.agents.lumalabs.ai: type "image" without references, else
|
|
376
|
+
// "image_edit" with the first reference as source and up to 8 more as
|
|
377
|
+
// image_ref. The output is always 2048 px on the long side.
|
|
378
|
+
id,
|
|
379
|
+
aliases: [],
|
|
380
|
+
label,
|
|
381
|
+
type: "image",
|
|
382
|
+
adapter: "luma",
|
|
383
|
+
providerModelId,
|
|
384
|
+
lifecycle: "active",
|
|
385
|
+
exposure: EXPOSURE2,
|
|
386
|
+
constraints: {
|
|
387
|
+
aspectRatios: [...UNI_RATIOS],
|
|
388
|
+
sizes: ["2K"],
|
|
389
|
+
references: { images: 9 },
|
|
390
|
+
supports: ["outputFormat"],
|
|
391
|
+
prompt: { referenceSyntax: "numbered", maxChars: 6e3 }
|
|
392
|
+
},
|
|
393
|
+
defaults: { size: "2K", aspectRatio: "adaptive" },
|
|
394
|
+
usage: { ...IMAGE_USAGE2 },
|
|
395
|
+
pricingKind: "image_size",
|
|
396
|
+
display: {
|
|
397
|
+
provider: "luma",
|
|
398
|
+
description,
|
|
399
|
+
logo: LUMA_LOGO
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
var LUMA_IMAGE_MODELS = [
|
|
404
|
+
uniImage(
|
|
405
|
+
"uni-1",
|
|
406
|
+
"Uni-1",
|
|
407
|
+
"uni-1",
|
|
408
|
+
"Luma Uni-1 fast image generation and editing; takes a prompt and up to 9 reference images and outputs 2K."
|
|
409
|
+
),
|
|
410
|
+
uniImage(
|
|
411
|
+
"uni-1-max",
|
|
412
|
+
"Uni-1 Max",
|
|
413
|
+
"uni-1-max",
|
|
414
|
+
"Luma Uni-1 Max higher-quality image generation and editing; takes a prompt and up to 9 reference images and outputs 2K."
|
|
415
|
+
)
|
|
416
|
+
];
|
|
417
|
+
|
|
418
|
+
// src/catalog/image.ts
|
|
419
|
+
var IMAGE_USAGE3 = { unit: "images" };
|
|
369
420
|
var GEMINI_RATIOS = [
|
|
370
421
|
"1:1",
|
|
371
422
|
"2:3",
|
|
@@ -410,7 +461,7 @@ function geminiImage(id, label, aliases, sizes, display, exposure, references, p
|
|
|
410
461
|
exposure,
|
|
411
462
|
constraints,
|
|
412
463
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
413
|
-
usage: { ...
|
|
464
|
+
usage: { ...IMAGE_USAGE3, slug: "gemini" },
|
|
414
465
|
pricingKind: "image_size",
|
|
415
466
|
display
|
|
416
467
|
};
|
|
@@ -523,7 +574,7 @@ var IMAGE_MODELS = [
|
|
|
523
574
|
prompt: GPT_IMAGE_PROMPT
|
|
524
575
|
},
|
|
525
576
|
defaults: { size: "1K", aspectRatio: "adaptive", quality: "auto" },
|
|
526
|
-
usage: { ...
|
|
577
|
+
usage: { ...IMAGE_USAGE3, slug: "gpt" },
|
|
527
578
|
pricingKind: "image_size",
|
|
528
579
|
display: {
|
|
529
580
|
provider: "openai",
|
|
@@ -559,7 +610,7 @@ var IMAGE_MODELS = [
|
|
|
559
610
|
prompt: GPT_IMAGE_PROMPT
|
|
560
611
|
},
|
|
561
612
|
defaults: { size: "1K", aspectRatio: "adaptive", quality: "auto" },
|
|
562
|
-
usage: { ...
|
|
613
|
+
usage: { ...IMAGE_USAGE3 },
|
|
563
614
|
pricingKind: "image_size",
|
|
564
615
|
display: {
|
|
565
616
|
provider: "openai",
|
|
@@ -594,7 +645,7 @@ var IMAGE_MODELS = [
|
|
|
594
645
|
prompt: GPT_IMAGE_PROMPT
|
|
595
646
|
},
|
|
596
647
|
defaults: { size: "1K", aspectRatio: "adaptive", quality: "auto" },
|
|
597
|
-
usage: { ...
|
|
648
|
+
usage: { ...IMAGE_USAGE3 },
|
|
598
649
|
pricingKind: "image_size",
|
|
599
650
|
display: {
|
|
600
651
|
provider: "openai",
|
|
@@ -629,7 +680,7 @@ var IMAGE_MODELS = [
|
|
|
629
680
|
supports: ["count", "outputFormat"]
|
|
630
681
|
},
|
|
631
682
|
defaults: { size: "1K", aspectRatio: "1:1", outputFormat: "png", count: 1 },
|
|
632
|
-
usage: { ...
|
|
683
|
+
usage: { ...IMAGE_USAGE3, slug: "muse" },
|
|
633
684
|
pricingKind: "image_size",
|
|
634
685
|
display: {
|
|
635
686
|
provider: "meta",
|
|
@@ -656,7 +707,7 @@ var IMAGE_MODELS = [
|
|
|
656
707
|
supports: ["quality", "count", "seed"]
|
|
657
708
|
},
|
|
658
709
|
defaults: { size: "2K", aspectRatio: "1:1", quality: "medium", count: 1 },
|
|
659
|
-
usage: { ...
|
|
710
|
+
usage: { ...IMAGE_USAGE3, slug: "ideogram" },
|
|
660
711
|
pricingKind: "image_size",
|
|
661
712
|
display: {
|
|
662
713
|
provider: "ideogram",
|
|
@@ -681,7 +732,7 @@ var IMAGE_MODELS = [
|
|
|
681
732
|
supports: ["seed", "outputFormat"]
|
|
682
733
|
},
|
|
683
734
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
684
|
-
usage: { ...
|
|
735
|
+
usage: { ...IMAGE_USAGE3 },
|
|
685
736
|
pricingKind: "image_size",
|
|
686
737
|
display: {
|
|
687
738
|
provider: "bytedance",
|
|
@@ -719,7 +770,7 @@ var IMAGE_MODELS = [
|
|
|
719
770
|
supports: ["seed"]
|
|
720
771
|
},
|
|
721
772
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
722
|
-
usage: { ...
|
|
773
|
+
usage: { ...IMAGE_USAGE3 },
|
|
723
774
|
pricingKind: "image_size",
|
|
724
775
|
display: {
|
|
725
776
|
provider: "bytedance",
|
|
@@ -745,7 +796,7 @@ var IMAGE_MODELS = [
|
|
|
745
796
|
prompt: { referenceSyntax: "numbered", maxChars: 32768 }
|
|
746
797
|
},
|
|
747
798
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
748
|
-
usage: { ...
|
|
799
|
+
usage: { ...IMAGE_USAGE3 },
|
|
749
800
|
pricingKind: "image_size",
|
|
750
801
|
display: {
|
|
751
802
|
provider: "black-forest-labs",
|
|
@@ -772,7 +823,7 @@ var IMAGE_MODELS = [
|
|
|
772
823
|
supports: []
|
|
773
824
|
},
|
|
774
825
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
775
|
-
usage: { ...
|
|
826
|
+
usage: { ...IMAGE_USAGE3 },
|
|
776
827
|
pricingKind: "image_size",
|
|
777
828
|
display: {
|
|
778
829
|
provider: "google",
|
|
@@ -797,7 +848,7 @@ var IMAGE_MODELS = [
|
|
|
797
848
|
supports: []
|
|
798
849
|
},
|
|
799
850
|
defaults: { size: "1K", aspectRatio: "1:1" },
|
|
800
|
-
usage: { ...
|
|
851
|
+
usage: { ...IMAGE_USAGE3 },
|
|
801
852
|
pricingKind: "image_size",
|
|
802
853
|
display: {
|
|
803
854
|
provider: "google",
|
|
@@ -883,7 +934,8 @@ var IMAGE_MODELS = [
|
|
|
883
934
|
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."
|
|
884
935
|
}
|
|
885
936
|
},
|
|
886
|
-
...FAL_IMAGE_MODELS
|
|
937
|
+
...FAL_IMAGE_MODELS,
|
|
938
|
+
...LUMA_IMAGE_MODELS
|
|
887
939
|
];
|
|
888
940
|
|
|
889
941
|
// src/catalog/audio-formats.ts
|
|
@@ -1079,7 +1131,7 @@ var VEED_SUBTITLE_LANGUAGES = [
|
|
|
1079
1131
|
];
|
|
1080
1132
|
|
|
1081
1133
|
// src/catalog/canvas-tools.ts
|
|
1082
|
-
var
|
|
1134
|
+
var EXPOSURE3 = ["cowork", "space_builder"];
|
|
1083
1135
|
var META_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/characters/1787909065794-k9a7zz.png";
|
|
1084
1136
|
var VEED_SUBTITLE_PRESETS = [
|
|
1085
1137
|
"simple",
|
|
@@ -1121,7 +1173,7 @@ var SAM_3_IMAGE = {
|
|
|
1121
1173
|
adapter: "fal",
|
|
1122
1174
|
providerModelId: "fal-ai/sam-3/image",
|
|
1123
1175
|
lifecycle: "active",
|
|
1124
|
-
exposure:
|
|
1176
|
+
exposure: EXPOSURE3,
|
|
1125
1177
|
constraints: {
|
|
1126
1178
|
references: { images: 1 },
|
|
1127
1179
|
requires: ["references"],
|
|
@@ -1144,7 +1196,7 @@ var VEED_SUBTITLES = {
|
|
|
1144
1196
|
adapter: "fal",
|
|
1145
1197
|
providerModelId: "veed/subtitles",
|
|
1146
1198
|
lifecycle: "active",
|
|
1147
|
-
exposure:
|
|
1199
|
+
exposure: EXPOSURE3,
|
|
1148
1200
|
constraints: {
|
|
1149
1201
|
supports: [],
|
|
1150
1202
|
// fal: up to 2 hours at 1080p or below, 1 hour above.
|
|
@@ -3249,7 +3301,7 @@ var GOOGLE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a
|
|
|
3249
3301
|
var MINIMAX_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png";
|
|
3250
3302
|
var SYNC_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/sync.png";
|
|
3251
3303
|
var PER_CALL = { unit: "images" };
|
|
3252
|
-
var
|
|
3304
|
+
var EXPOSURE4 = ["cowork", "space_builder"];
|
|
3253
3305
|
var LIPSYNC_AUDIO = { audioSeconds: { max: 30 } };
|
|
3254
3306
|
function elevenLabsTts(tts) {
|
|
3255
3307
|
return {
|
|
@@ -3260,7 +3312,7 @@ function elevenLabsTts(tts) {
|
|
|
3260
3312
|
adapter: "fal",
|
|
3261
3313
|
providerModelId: tts.providerModelId,
|
|
3262
3314
|
lifecycle: "active",
|
|
3263
|
-
exposure:
|
|
3315
|
+
exposure: EXPOSURE4,
|
|
3264
3316
|
constraints: {
|
|
3265
3317
|
voices: ELEVENLABS_VOICES,
|
|
3266
3318
|
languages: tts.languages,
|
|
@@ -3285,7 +3337,7 @@ function geminiTts(id, label, description) {
|
|
|
3285
3337
|
adapter: "fal",
|
|
3286
3338
|
providerModelId,
|
|
3287
3339
|
lifecycle: "active",
|
|
3288
|
-
exposure:
|
|
3340
|
+
exposure: EXPOSURE4,
|
|
3289
3341
|
constraints: {
|
|
3290
3342
|
voices: GEMINI_TTS_VOICES,
|
|
3291
3343
|
supports: ["style"],
|
|
@@ -3308,7 +3360,7 @@ function syncLipsync(id, label, providerModelId, syncModel, description) {
|
|
|
3308
3360
|
adapter: "fal",
|
|
3309
3361
|
providerModelId,
|
|
3310
3362
|
lifecycle: "active",
|
|
3311
|
-
exposure:
|
|
3363
|
+
exposure: EXPOSURE4,
|
|
3312
3364
|
constraints: {
|
|
3313
3365
|
requires: ["sourceVideo", "sourceAudio"],
|
|
3314
3366
|
references: LIPSYNC_AUDIO,
|
|
@@ -3369,7 +3421,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3369
3421
|
adapter: "fal",
|
|
3370
3422
|
providerModelId: "fal-ai/minimax/speech-2.8-hd",
|
|
3371
3423
|
lifecycle: "active",
|
|
3372
|
-
exposure:
|
|
3424
|
+
exposure: EXPOSURE4,
|
|
3373
3425
|
constraints: {
|
|
3374
3426
|
voices: MINIMAX_VOICES,
|
|
3375
3427
|
languages: MINIMAX_SPEECH_LANGUAGES,
|
|
@@ -3394,7 +3446,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3394
3446
|
adapter: "fal",
|
|
3395
3447
|
providerModelId: "fal-ai/elevenlabs/voice-changer",
|
|
3396
3448
|
lifecycle: "active",
|
|
3397
|
-
exposure:
|
|
3449
|
+
exposure: EXPOSURE4,
|
|
3398
3450
|
constraints: {
|
|
3399
3451
|
requires: ["sourceAudio"],
|
|
3400
3452
|
// The flat price assumes at most a minute of speech.
|
|
@@ -3421,7 +3473,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3421
3473
|
adapter: "fal",
|
|
3422
3474
|
providerModelId: "fal-ai/elevenlabs/dubbing",
|
|
3423
3475
|
lifecycle: "active",
|
|
3424
|
-
exposure:
|
|
3476
|
+
exposure: EXPOSURE4,
|
|
3425
3477
|
constraints: {
|
|
3426
3478
|
requiresOneOf: ["sourceVideo", "sourceAudio"],
|
|
3427
3479
|
// The flat price covers 60 s of source.
|
|
@@ -3469,7 +3521,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3469
3521
|
adapter: "fal",
|
|
3470
3522
|
providerModelId: "veed/lipsync/v2",
|
|
3471
3523
|
lifecycle: "active",
|
|
3472
|
-
exposure:
|
|
3524
|
+
exposure: EXPOSURE4,
|
|
3473
3525
|
constraints: {
|
|
3474
3526
|
requires: ["sourceVideo", "sourceAudio"],
|
|
3475
3527
|
references: LIPSYNC_AUDIO,
|
|
@@ -3495,7 +3547,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3495
3547
|
adapter: "fal",
|
|
3496
3548
|
providerModelId: "minimax/h3-max/lip-sync/image-to-video",
|
|
3497
3549
|
lifecycle: "active",
|
|
3498
|
-
exposure:
|
|
3550
|
+
exposure: EXPOSURE4,
|
|
3499
3551
|
constraints: {
|
|
3500
3552
|
requires: ["firstFrame", "sourceAudio"],
|
|
3501
3553
|
resolutions: ["480p", "768p", "1080p", "2k"],
|
|
@@ -3521,7 +3573,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3521
3573
|
adapter: "fal",
|
|
3522
3574
|
providerModelId: "fal-ai/elevenlabs/speech-to-text/scribe-v2",
|
|
3523
3575
|
lifecycle: "active",
|
|
3524
|
-
exposure:
|
|
3576
|
+
exposure: EXPOSURE4,
|
|
3525
3577
|
constraints: {
|
|
3526
3578
|
requires: ["sourceAudio"],
|
|
3527
3579
|
// The flat price covers 10 minutes of audio.
|
|
@@ -5057,8 +5109,113 @@ var VIDEO_FAMILY_MODELS = [
|
|
|
5057
5109
|
}
|
|
5058
5110
|
];
|
|
5059
5111
|
|
|
5060
|
-
// src/catalog/video.ts
|
|
5112
|
+
// src/catalog/video-luma.ts
|
|
5061
5113
|
var VIDEO_USAGE2 = { unit: "seconds" };
|
|
5114
|
+
var EXPOSURE5 = ["cowork", "space_builder"];
|
|
5115
|
+
var LUMA_LOGO2 = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/luma-color.png";
|
|
5116
|
+
var RAY_RATIOS = ["9:16", "3:4", "1:1", "4:3", "16:9", "21:9"];
|
|
5117
|
+
var RAY_RESOLUTIONS = ["360p", "720p", "1080p"];
|
|
5118
|
+
var RAY_PROMPT = { referenceSyntax: "numbered", maxChars: 6e3 };
|
|
5119
|
+
var LUMA_VIDEO_MODELS = [
|
|
5120
|
+
{
|
|
5121
|
+
// https://docs.agents.lumalabs.ai: type "video" with a fixed 5 s duration;
|
|
5122
|
+
// firstFrame and lastFrame ride as start_frame and end_frame.
|
|
5123
|
+
id: "ray-3.2",
|
|
5124
|
+
aliases: [],
|
|
5125
|
+
label: "Ray 3.2",
|
|
5126
|
+
type: "video",
|
|
5127
|
+
adapter: "luma",
|
|
5128
|
+
providerModelId: "ray-3.2",
|
|
5129
|
+
lifecycle: "active",
|
|
5130
|
+
exposure: EXPOSURE5,
|
|
5131
|
+
constraints: {
|
|
5132
|
+
aspectRatios: ["adaptive", ...RAY_RATIOS],
|
|
5133
|
+
resolutions: [...RAY_RESOLUTIONS],
|
|
5134
|
+
durations: [5],
|
|
5135
|
+
supports: ["lastFrame"],
|
|
5136
|
+
prompt: { ...RAY_PROMPT },
|
|
5137
|
+
audio: "never"
|
|
5138
|
+
},
|
|
5139
|
+
defaults: { durationSeconds: 5, resolution: "720p", aspectRatio: "adaptive" },
|
|
5140
|
+
usage: { ...VIDEO_USAGE2 },
|
|
5141
|
+
pricingKind: "video_per_second",
|
|
5142
|
+
display: {
|
|
5143
|
+
provider: "luma",
|
|
5144
|
+
description: "Luma Ray 3.2 text- and image-to-video with optional first and last frames, 5-second clips at up to 1080p.",
|
|
5145
|
+
logo: LUMA_LOGO2
|
|
5146
|
+
},
|
|
5147
|
+
capabilities: {}
|
|
5148
|
+
},
|
|
5149
|
+
{
|
|
5150
|
+
// https://docs.agents.lumalabs.ai: type "video_edit" with a source video of
|
|
5151
|
+
// up to 18 s; the output keeps the source length, so there is no durations
|
|
5152
|
+
// knob, no aspect_ratio and no end frame. Luma bills its 5 s price for any
|
|
5153
|
+
// source (live, 2026-10-21) and the row is priced per source second, so a
|
|
5154
|
+
// source under 5 s is refused: it would be billed below Luma's charge.
|
|
5155
|
+
id: "ray-3.2-edit",
|
|
5156
|
+
aliases: [],
|
|
5157
|
+
label: "Ray 3.2 Edit",
|
|
5158
|
+
type: "video",
|
|
5159
|
+
adapter: "luma",
|
|
5160
|
+
providerModelId: "ray-3.2",
|
|
5161
|
+
lifecycle: "active",
|
|
5162
|
+
exposure: EXPOSURE5,
|
|
5163
|
+
constraints: {
|
|
5164
|
+
resolutions: [...RAY_RESOLUTIONS],
|
|
5165
|
+
requires: ["sourceVideo"],
|
|
5166
|
+
sourceVideoSeconds: { min: 5, max: 18 },
|
|
5167
|
+
supports: [],
|
|
5168
|
+
prompt: { ...RAY_PROMPT },
|
|
5169
|
+
audio: "never"
|
|
5170
|
+
},
|
|
5171
|
+
defaults: { resolution: "720p" },
|
|
5172
|
+
usage: { ...VIDEO_USAGE2 },
|
|
5173
|
+
pricingKind: "video_per_second",
|
|
5174
|
+
display: {
|
|
5175
|
+
provider: "luma",
|
|
5176
|
+
description: "Luma Ray 3.2 video edit: changes a 5-18 second clip from a prompt, keeping its length.",
|
|
5177
|
+
logo: LUMA_LOGO2
|
|
5178
|
+
},
|
|
5179
|
+
capabilities: { acceptsSourceVideo: true, videoEdit: true }
|
|
5180
|
+
},
|
|
5181
|
+
{
|
|
5182
|
+
// https://docs.agents.lumalabs.ai: type "video_reframe" with a required
|
|
5183
|
+
// target aspect_ratio; the source is up to 10 s and the output keeps its
|
|
5184
|
+
// length whatever video.duration says, while Luma bills that duration
|
|
5185
|
+
// (live, 2026-10-21). So there is no durations knob, and a source under
|
|
5186
|
+
// 5 s is refused, as on ray-3.2-edit. 1080p is not offered for the
|
|
5187
|
+
// vertical targets 9:16 and 3:4.
|
|
5188
|
+
id: "ray-3.2-reframe",
|
|
5189
|
+
aliases: [],
|
|
5190
|
+
label: "Ray 3.2 Reframe",
|
|
5191
|
+
type: "video",
|
|
5192
|
+
adapter: "luma",
|
|
5193
|
+
providerModelId: "ray-3.2",
|
|
5194
|
+
lifecycle: "active",
|
|
5195
|
+
exposure: EXPOSURE5,
|
|
5196
|
+
constraints: {
|
|
5197
|
+
aspectRatios: [...RAY_RATIOS],
|
|
5198
|
+
resolutions: [...RAY_RESOLUTIONS],
|
|
5199
|
+
requires: ["sourceVideo"],
|
|
5200
|
+
sourceVideoSeconds: { min: 5, max: 10 },
|
|
5201
|
+
supports: [],
|
|
5202
|
+
prompt: { ...RAY_PROMPT },
|
|
5203
|
+
audio: "never"
|
|
5204
|
+
},
|
|
5205
|
+
defaults: { resolution: "720p", aspectRatio: "16:9" },
|
|
5206
|
+
usage: { ...VIDEO_USAGE2 },
|
|
5207
|
+
pricingKind: "video_per_second",
|
|
5208
|
+
display: {
|
|
5209
|
+
provider: "luma",
|
|
5210
|
+
description: "Luma Ray 3.2 Reframe: changes a 5-10 second clip to a new aspect ratio and fills the new area from the prompt.",
|
|
5211
|
+
logo: LUMA_LOGO2
|
|
5212
|
+
},
|
|
5213
|
+
capabilities: { acceptsSourceVideo: true, videoEdit: true }
|
|
5214
|
+
}
|
|
5215
|
+
];
|
|
5216
|
+
|
|
5217
|
+
// src/catalog/video.ts
|
|
5218
|
+
var VIDEO_USAGE3 = { unit: "seconds" };
|
|
5062
5219
|
var SEEDANCE_RATIOS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16", "adaptive"];
|
|
5063
5220
|
var KLING_RATIOS2 = ["16:9", "9:16", "1:1", "adaptive"];
|
|
5064
5221
|
var KLING_OMNI_RATIOS = ["16:9", "9:16", "1:1"];
|
|
@@ -5111,7 +5268,7 @@ var VIDEO_MODELS = [
|
|
|
5111
5268
|
audio: "always"
|
|
5112
5269
|
},
|
|
5113
5270
|
defaults: { durationSeconds: 8, resolution: "720p", aspectRatio: "16:9" },
|
|
5114
|
-
usage: { ...
|
|
5271
|
+
usage: { ...VIDEO_USAGE3, slug: "veo" },
|
|
5115
5272
|
pricingKind: "video_per_second",
|
|
5116
5273
|
display: {
|
|
5117
5274
|
provider: "google",
|
|
@@ -5144,7 +5301,7 @@ var VIDEO_MODELS = [
|
|
|
5144
5301
|
audio: "always"
|
|
5145
5302
|
},
|
|
5146
5303
|
defaults: { durationSeconds: 8, resolution: "720p", aspectRatio: "16:9" },
|
|
5147
|
-
usage: { ...
|
|
5304
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5148
5305
|
pricingKind: "video_per_second",
|
|
5149
5306
|
display: {
|
|
5150
5307
|
provider: "google",
|
|
@@ -5174,7 +5331,7 @@ var VIDEO_MODELS = [
|
|
|
5174
5331
|
audio: "always"
|
|
5175
5332
|
},
|
|
5176
5333
|
defaults: { durationSeconds: 8, resolution: "720p", aspectRatio: "16:9" },
|
|
5177
|
-
usage: { ...
|
|
5334
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5178
5335
|
pricingKind: "video_per_second",
|
|
5179
5336
|
display: {
|
|
5180
5337
|
provider: "google",
|
|
@@ -5211,7 +5368,7 @@ var VIDEO_MODELS = [
|
|
|
5211
5368
|
audio: "always"
|
|
5212
5369
|
},
|
|
5213
5370
|
defaults: {},
|
|
5214
|
-
usage: { ...
|
|
5371
|
+
usage: { ...VIDEO_USAGE3, slug: "gemini_omni" },
|
|
5215
5372
|
pricingKind: "video_per_second",
|
|
5216
5373
|
display: {
|
|
5217
5374
|
provider: "google",
|
|
@@ -5248,7 +5405,7 @@ var VIDEO_MODELS = [
|
|
|
5248
5405
|
audio: "always"
|
|
5249
5406
|
},
|
|
5250
5407
|
defaults: {},
|
|
5251
|
-
usage: { ...
|
|
5408
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5252
5409
|
pricingKind: "video_per_second",
|
|
5253
5410
|
display: {
|
|
5254
5411
|
provider: "google",
|
|
@@ -5297,7 +5454,7 @@ var VIDEO_MODELS = [
|
|
|
5297
5454
|
aspectRatio: "16:9",
|
|
5298
5455
|
generateAudio: true
|
|
5299
5456
|
},
|
|
5300
|
-
usage: { ...
|
|
5457
|
+
usage: { ...VIDEO_USAGE3, slug: "seedance2", providerLabel: "byteplus" },
|
|
5301
5458
|
pricingKind: "video_per_second",
|
|
5302
5459
|
display: {
|
|
5303
5460
|
provider: "bytedance",
|
|
@@ -5340,7 +5497,7 @@ var VIDEO_MODELS = [
|
|
|
5340
5497
|
aspectRatio: "16:9",
|
|
5341
5498
|
generateAudio: true
|
|
5342
5499
|
},
|
|
5343
|
-
usage: { ...
|
|
5500
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5344
5501
|
pricingKind: "video_per_second",
|
|
5345
5502
|
display: {
|
|
5346
5503
|
provider: "bytedance",
|
|
@@ -5390,7 +5547,7 @@ var VIDEO_MODELS = [
|
|
|
5390
5547
|
aspectRatio: "16:9",
|
|
5391
5548
|
generateAudio: true
|
|
5392
5549
|
},
|
|
5393
|
-
usage: { ...
|
|
5550
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5394
5551
|
pricingKind: "video_per_second",
|
|
5395
5552
|
display: {
|
|
5396
5553
|
provider: "bytedance",
|
|
@@ -5452,7 +5609,7 @@ var VIDEO_MODELS = [
|
|
|
5452
5609
|
cfgScale: 0.5,
|
|
5453
5610
|
negativePrompt: NEGATIVE_PROMPT
|
|
5454
5611
|
},
|
|
5455
|
-
usage: { ...
|
|
5612
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5456
5613
|
pricingKind: "video_per_second",
|
|
5457
5614
|
display: {
|
|
5458
5615
|
provider: "kuaishou",
|
|
@@ -5484,7 +5641,7 @@ var VIDEO_MODELS = [
|
|
|
5484
5641
|
cfgScale: 0.5,
|
|
5485
5642
|
generateAudio: true
|
|
5486
5643
|
},
|
|
5487
|
-
usage: { ...
|
|
5644
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5488
5645
|
pricingKind: "video_per_second",
|
|
5489
5646
|
display: {
|
|
5490
5647
|
provider: "kuaishou",
|
|
@@ -5552,7 +5709,7 @@ var VIDEO_MODELS = [
|
|
|
5552
5709
|
aspectRatio: "16:9",
|
|
5553
5710
|
promptExpansion: "balanced"
|
|
5554
5711
|
},
|
|
5555
|
-
usage: { ...
|
|
5712
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5556
5713
|
pricingKind: "video_per_second",
|
|
5557
5714
|
display: {
|
|
5558
5715
|
provider: "minimax",
|
|
@@ -5586,7 +5743,7 @@ var VIDEO_MODELS = [
|
|
|
5586
5743
|
aspectRatio: "16:9",
|
|
5587
5744
|
promptExpansion: "balanced"
|
|
5588
5745
|
},
|
|
5589
|
-
usage: { ...
|
|
5746
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5590
5747
|
pricingKind: "video_per_second",
|
|
5591
5748
|
display: {
|
|
5592
5749
|
provider: "minimax",
|
|
@@ -5628,7 +5785,7 @@ var VIDEO_MODELS = [
|
|
|
5628
5785
|
aspectRatio: "adaptive",
|
|
5629
5786
|
promptExpansion: "balanced"
|
|
5630
5787
|
},
|
|
5631
|
-
usage: { ...
|
|
5788
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5632
5789
|
pricingKind: "video_per_second",
|
|
5633
5790
|
display: {
|
|
5634
5791
|
provider: "minimax",
|
|
@@ -5672,7 +5829,7 @@ var VIDEO_MODELS = [
|
|
|
5672
5829
|
aspectRatio: "adaptive",
|
|
5673
5830
|
promptExpansion: "balanced"
|
|
5674
5831
|
},
|
|
5675
|
-
usage: { ...
|
|
5832
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5676
5833
|
pricingKind: "video_per_second",
|
|
5677
5834
|
display: {
|
|
5678
5835
|
provider: "minimax",
|
|
@@ -5717,7 +5874,7 @@ var VIDEO_MODELS = [
|
|
|
5717
5874
|
aspectRatio: "adaptive",
|
|
5718
5875
|
generateAudio: true
|
|
5719
5876
|
},
|
|
5720
|
-
usage: { ...
|
|
5877
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5721
5878
|
pricingKind: "video_per_second",
|
|
5722
5879
|
display: {
|
|
5723
5880
|
provider: "alibaba",
|
|
@@ -5744,7 +5901,7 @@ var VIDEO_MODELS = [
|
|
|
5744
5901
|
audio: "never"
|
|
5745
5902
|
},
|
|
5746
5903
|
defaults: { durationSeconds: 5, aspectRatio: "16:9" },
|
|
5747
|
-
usage: { ...
|
|
5904
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5748
5905
|
pricingKind: "video_per_second",
|
|
5749
5906
|
display: {
|
|
5750
5907
|
provider: "kuaishou",
|
|
@@ -5793,7 +5950,7 @@ var VIDEO_MODELS = [
|
|
|
5793
5950
|
audio: "never"
|
|
5794
5951
|
},
|
|
5795
5952
|
defaults: {},
|
|
5796
|
-
usage: { ...
|
|
5953
|
+
usage: { ...VIDEO_USAGE3 },
|
|
5797
5954
|
// Higgsfield bills DoP per generation: a fixed-length clip with no duration knob.
|
|
5798
5955
|
pricingKind: "flat",
|
|
5799
5956
|
display: {
|
|
@@ -5802,7 +5959,8 @@ var VIDEO_MODELS = [
|
|
|
5802
5959
|
},
|
|
5803
5960
|
capabilities: {}
|
|
5804
5961
|
},
|
|
5805
|
-
...VIDEO_FAMILY_MODELS
|
|
5962
|
+
...VIDEO_FAMILY_MODELS,
|
|
5963
|
+
...LUMA_VIDEO_MODELS
|
|
5806
5964
|
];
|
|
5807
5965
|
|
|
5808
5966
|
// src/catalog/video-tools.ts
|
|
@@ -6782,7 +6940,8 @@ var ADAPTER_IDS = [
|
|
|
6782
6940
|
"replicate",
|
|
6783
6941
|
"prodia",
|
|
6784
6942
|
"higgsfield",
|
|
6785
|
-
"xai-video"
|
|
6943
|
+
"xai-video",
|
|
6944
|
+
"luma"
|
|
6786
6945
|
];
|
|
6787
6946
|
var ModelTypeSchema = z3.enum([
|
|
6788
6947
|
"text",
|