@shop-os/modelkit 0.10.0 → 0.10.2

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 CHANGED
@@ -9,6 +9,23 @@ header in the release PR.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.10.2] - Unreleased
13
+
14
+ Wan 3 Prime on fal.
15
+
16
+ ### Added
17
+ - `wan-3.0-prime` (Wan 3 Prime) video row on the fal adapter (`alibaba/wan-3.0-prime`), listed on `cowork` and `space_builder`. fal's Prime endpoints take the same inputs as Wan 3.0, so the row copies `wan-3.0`'s constraints and the existing Wan mapper routes it to `/text-to-video`, `/image-to-video` or `/reference-to-video` from the inputs. It is a separate row because Prime bills more ($0.068/s at 480p, $0.14/s at 720p, $0.28/s at 1080p on fal); the `credit_pricing_video` rows ship in the consumer bump.
18
+
19
+ ## [0.10.1] - Unreleased
20
+
21
+ Fish Audio rows listed on every surface (ENG-3400).
22
+
23
+ ### Changed
24
+ - `fish-s2.1-pro`, `fish-s2.1-pro-free`, `fish-drama-3`, `fish-voice-clone` and `fish-voice-design-1` move from `exposure: []` to `["cowork", "space_builder"]`. pro-backend prices the speech rows per 1,000 UTF-8 bytes of the script, the unit Fish bills; the seeds ship in the consumer bump.
25
+
26
+ ### Notes
27
+ - The catalog and pricing seeds insert a row once, so environments that already hold a Fish row keep its old exposure; edit those rows in pro-admin. As of this release no environment holds them.
28
+
12
29
  ## [0.10.0] - Unreleased
13
30
 
14
31
  ElevenLabs direct: text to speech and instant voice cloning on our own ElevenLabs account (ENG-3400).
package/dist/catalog.cjs CHANGED
@@ -2076,6 +2076,7 @@ var FISH_VOICES = [
2076
2076
  var FISH_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/fishaudio.png";
2077
2077
  var PER_CALL2 = { unit: "images" };
2078
2078
  var PER_REQUEST2 = { unit: "requests" };
2079
+ var EXPOSURE4 = ["cowork", "space_builder"];
2079
2080
  var TTS_MAX_CHARS = 1e4;
2080
2081
  function fishTts(id, label, providerModelId, description) {
2081
2082
  return {
@@ -2086,7 +2087,7 @@ function fishTts(id, label, providerModelId, description) {
2086
2087
  adapter: "fish",
2087
2088
  providerModelId,
2088
2089
  lifecycle: "active",
2089
- exposure: [],
2090
+ exposure: EXPOSURE4,
2090
2091
  constraints: {
2091
2092
  voices: FISH_VOICES,
2092
2093
  outputFormats: ["mp3", "wav"],
@@ -2127,7 +2128,7 @@ var FISH_MODELS = [
2127
2128
  adapter: "fish",
2128
2129
  providerModelId: "voice-clone",
2129
2130
  lifecycle: "active",
2130
- exposure: [],
2131
+ exposure: EXPOSURE4,
2131
2132
  constraints: {
2132
2133
  // POST /model takes 1-20 voice files; Fish advises 10 s or more of clean speech each.
2133
2134
  references: { audios: 20, audioFormats: ["wav", "mp3", "m4a", "opus"] },
@@ -2151,7 +2152,7 @@ var FISH_MODELS = [
2151
2152
  adapter: "fish",
2152
2153
  providerModelId: "voice-design-1",
2153
2154
  lifecycle: "active",
2154
- exposure: [],
2155
+ exposure: EXPOSURE4,
2155
2156
  constraints: {
2156
2157
  voiceDesign: { maxCandidates: 4, previewMaxChars: 150 },
2157
2158
  supports: [],
@@ -3749,7 +3750,7 @@ var GOOGLE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a
3749
3750
  var MINIMAX_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png";
3750
3751
  var SYNC_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/sync.png";
3751
3752
  var PER_CALL3 = { unit: "images" };
3752
- var EXPOSURE4 = ["cowork", "space_builder"];
3753
+ var EXPOSURE5 = ["cowork", "space_builder"];
3753
3754
  var LIPSYNC_AUDIO = { audioSeconds: { max: 30 } };
3754
3755
  function elevenLabsTts(tts) {
3755
3756
  return {
@@ -3760,7 +3761,7 @@ function elevenLabsTts(tts) {
3760
3761
  adapter: "fal",
3761
3762
  providerModelId: tts.providerModelId,
3762
3763
  lifecycle: "active",
3763
- exposure: EXPOSURE4,
3764
+ exposure: EXPOSURE5,
3764
3765
  constraints: {
3765
3766
  voices: ELEVENLABS_VOICES,
3766
3767
  languages: tts.languages,
@@ -3785,7 +3786,7 @@ function geminiTts(id, label, description) {
3785
3786
  adapter: "fal",
3786
3787
  providerModelId,
3787
3788
  lifecycle: "active",
3788
- exposure: EXPOSURE4,
3789
+ exposure: EXPOSURE5,
3789
3790
  constraints: {
3790
3791
  voices: GEMINI_TTS_VOICES,
3791
3792
  supports: ["style"],
@@ -3808,7 +3809,7 @@ function syncLipsync(id, label, providerModelId, syncModel, description) {
3808
3809
  adapter: "fal",
3809
3810
  providerModelId,
3810
3811
  lifecycle: "active",
3811
- exposure: EXPOSURE4,
3812
+ exposure: EXPOSURE5,
3812
3813
  constraints: {
3813
3814
  requires: ["sourceVideo", "sourceAudio"],
3814
3815
  references: LIPSYNC_AUDIO,
@@ -3869,7 +3870,7 @@ var MEDIA_NODE_MODELS = [
3869
3870
  adapter: "fal",
3870
3871
  providerModelId: "fal-ai/minimax/speech-2.8-hd",
3871
3872
  lifecycle: "active",
3872
- exposure: EXPOSURE4,
3873
+ exposure: EXPOSURE5,
3873
3874
  constraints: {
3874
3875
  voices: MINIMAX_VOICES,
3875
3876
  languages: MINIMAX_SPEECH_LANGUAGES,
@@ -3894,7 +3895,7 @@ var MEDIA_NODE_MODELS = [
3894
3895
  adapter: "fal",
3895
3896
  providerModelId: "fal-ai/elevenlabs/voice-changer",
3896
3897
  lifecycle: "active",
3897
- exposure: EXPOSURE4,
3898
+ exposure: EXPOSURE5,
3898
3899
  constraints: {
3899
3900
  requires: ["sourceAudio"],
3900
3901
  // The flat price assumes at most a minute of speech.
@@ -3921,7 +3922,7 @@ var MEDIA_NODE_MODELS = [
3921
3922
  adapter: "fal",
3922
3923
  providerModelId: "fal-ai/elevenlabs/dubbing",
3923
3924
  lifecycle: "active",
3924
- exposure: EXPOSURE4,
3925
+ exposure: EXPOSURE5,
3925
3926
  constraints: {
3926
3927
  requiresOneOf: ["sourceVideo", "sourceAudio"],
3927
3928
  // The flat price covers 60 s of source.
@@ -3969,7 +3970,7 @@ var MEDIA_NODE_MODELS = [
3969
3970
  adapter: "fal",
3970
3971
  providerModelId: "veed/lipsync/v2",
3971
3972
  lifecycle: "active",
3972
- exposure: EXPOSURE4,
3973
+ exposure: EXPOSURE5,
3973
3974
  constraints: {
3974
3975
  requires: ["sourceVideo", "sourceAudio"],
3975
3976
  references: LIPSYNC_AUDIO,
@@ -3995,7 +3996,7 @@ var MEDIA_NODE_MODELS = [
3995
3996
  adapter: "fal",
3996
3997
  providerModelId: "minimax/h3-max/lip-sync/image-to-video",
3997
3998
  lifecycle: "active",
3998
- exposure: EXPOSURE4,
3999
+ exposure: EXPOSURE5,
3999
4000
  constraints: {
4000
4001
  requires: ["firstFrame", "sourceAudio"],
4001
4002
  resolutions: ["480p", "768p", "1080p", "2k"],
@@ -4021,7 +4022,7 @@ var MEDIA_NODE_MODELS = [
4021
4022
  adapter: "fal",
4022
4023
  providerModelId: "fal-ai/elevenlabs/speech-to-text/scribe-v2",
4023
4024
  lifecycle: "active",
4024
- exposure: EXPOSURE4,
4025
+ exposure: EXPOSURE5,
4025
4026
  constraints: {
4026
4027
  requires: ["sourceAudio"],
4027
4028
  // The flat price covers 10 minutes of audio.
@@ -5636,7 +5637,7 @@ var VIDEO_FAMILY_MODELS = [
5636
5637
 
5637
5638
  // src/catalog/video-luma.ts
5638
5639
  var VIDEO_USAGE2 = { unit: "seconds" };
5639
- var EXPOSURE5 = ["cowork", "space_builder"];
5640
+ var EXPOSURE6 = ["cowork", "space_builder"];
5640
5641
  var LUMA_LOGO2 = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/luma-color.png";
5641
5642
  var RAY_RATIOS = ["9:16", "3:4", "1:1", "4:3", "16:9", "21:9"];
5642
5643
  var RAY_RESOLUTIONS = ["360p", "720p", "1080p"];
@@ -5654,7 +5655,7 @@ var LUMA_VIDEO_MODELS = [
5654
5655
  adapter: "luma",
5655
5656
  providerModelId: "ray-3.2",
5656
5657
  lifecycle: "active",
5657
- exposure: EXPOSURE5,
5658
+ exposure: EXPOSURE6,
5658
5659
  constraints: {
5659
5660
  aspectRatios: ["adaptive", ...RAY_RATIOS],
5660
5661
  resolutions: [...RAY_RESOLUTIONS],
@@ -5686,7 +5687,7 @@ var LUMA_VIDEO_MODELS = [
5686
5687
  adapter: "luma",
5687
5688
  providerModelId: "ray-3.2",
5688
5689
  lifecycle: "active",
5689
- exposure: EXPOSURE5,
5690
+ exposure: EXPOSURE6,
5690
5691
  constraints: {
5691
5692
  resolutions: [...RAY_RESOLUTIONS],
5692
5693
  requires: ["sourceVideo"],
@@ -5719,7 +5720,7 @@ var LUMA_VIDEO_MODELS = [
5719
5720
  adapter: "luma",
5720
5721
  providerModelId: "ray-3.2",
5721
5722
  lifecycle: "active",
5722
- exposure: EXPOSURE5,
5723
+ exposure: EXPOSURE6,
5723
5724
  constraints: {
5724
5725
  aspectRatios: [...RAY_RATIOS],
5725
5726
  resolutions: [...RAY_RESOLUTIONS],
@@ -6409,6 +6410,48 @@ var VIDEO_MODELS = [
6409
6410
  },
6410
6411
  capabilities: { ...FRAMES_EXCLUDE_REFERENCES, lastFrameRequiresFirstFrame: true }
6411
6412
  },
6413
+ {
6414
+ // fal's Wan 3.0 Prime endpoints share Wan 3.0's input schemas field for field but bill
6415
+ // more per second, so Prime is its own row (the id is the pricing key).
6416
+ // https://fal.ai/models/alibaba/wan-3.0-prime/reference-to-video/api
6417
+ id: "wan-3.0-prime",
6418
+ aliases: ["wan-3-prime", "wan3-prime"],
6419
+ label: "Wan 3 Prime",
6420
+ type: "video",
6421
+ adapter: "fal",
6422
+ providerModelId: "alibaba/wan-3.0-prime",
6423
+ lifecycle: "active",
6424
+ exposure: ["cowork", "space_builder"],
6425
+ constraints: {
6426
+ aspectRatios: [...WAN_RATIOS],
6427
+ resolutions: ["480p", "720p", "1080p"],
6428
+ durations: { min: 2, max: 30 },
6429
+ durationPresets: [5, 10, 15, 30],
6430
+ references: {
6431
+ images: 10,
6432
+ videos: 5,
6433
+ audios: 5,
6434
+ videoSeconds: { total: 15 },
6435
+ audioSeconds: { total: 15 }
6436
+ },
6437
+ supports: ["seed", "lastFrame", "generateAudio", "safetyChecker"],
6438
+ prompt: WAN_PROMPT,
6439
+ audio: "optional"
6440
+ },
6441
+ defaults: {
6442
+ durationSeconds: 5,
6443
+ resolution: "1080p",
6444
+ aspectRatio: "adaptive",
6445
+ generateAudio: true
6446
+ },
6447
+ usage: { ...VIDEO_USAGE3 },
6448
+ pricingKind: "video_per_second",
6449
+ display: {
6450
+ provider: "alibaba",
6451
+ description: "Alibaba Wan 3 Prime, the faster-generating tier of Wan 3, for text-to-video, image-to-video (start/end frame), and reference-to-video from up to 10 images, 5 videos and 5 audio clips, with native audio; 2-30 seconds at up to 1080p."
6452
+ },
6453
+ capabilities: { ...FRAMES_EXCLUDE_REFERENCES, lastFrameRequiresFirstFrame: true }
6454
+ },
6412
6455
  {
6413
6456
  // Duration 3-10s per trigger-workflows mapDuration; the endpoint takes no resolution.
6414
6457
  id: "kling-o1-v2v",