vidspotai-shared 1.0.59 → 1.0.61

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.
@@ -5,6 +5,8 @@ export declare enum EVideoGenModels {
5
5
  BYTEDANCE_SEEDANCE_1_5_PRO = "bytedance-seedance-1.5-pro",
6
6
  BYTEDANCE_SEEDANCE_1_0_PRO_FAST = "bytedance-seedance-1.0-pro-fast",
7
7
  BYTEDANCE_SEEDANCE_1_0_PRO = "bytedance-seedance-1.0-pro",
8
+ BYTEDANCE_SEEDANCE_2_0 = "bytedance-seedance-2.0",
9
+ BYTEDANCE_SEEDANCE_2_0_FAST = "bytedance-seedance-2.0-fast",
8
10
  GOOGLE_VEO_3_1 = "google-veo-3.1",
9
11
  GOOGLE_VEO_3_1_FAST = "google-veo-3.1-fast",
10
12
  GOOGLE_VEO_3_1_LITE = "google-veo-3.1-lite",
@@ -1 +1 @@
1
- {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/globals/aiModels/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,0BAA0B,+BAA+B;IACzD,+BAA+B,oCAAoC;IACnE,0BAA0B,+BAA+B;IACzD,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,mBAAmB,wBAAwB;IAC3C,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAE7B,uBAAuB,4BAA4B;IACnD,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IAGvC,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;CACxC;AAED,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,oBAAY,cAAc;IACxB,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/globals/aiModels/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,0BAA0B,+BAA+B;IACzD,+BAA+B,oCAAoC;IACnE,0BAA0B,+BAA+B;IACzD,sBAAsB,2BAA2B;IACjD,2BAA2B,gCAAgC;IAC3D,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,mBAAmB,wBAAwB;IAC3C,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAE7B,uBAAuB,4BAA4B;IACnD,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IAGvC,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;CACxC;AAED,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,oBAAY,cAAc;IACxB,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC"}
@@ -9,6 +9,8 @@ var EVideoGenModels;
9
9
  EVideoGenModels["BYTEDANCE_SEEDANCE_1_5_PRO"] = "bytedance-seedance-1.5-pro";
10
10
  EVideoGenModels["BYTEDANCE_SEEDANCE_1_0_PRO_FAST"] = "bytedance-seedance-1.0-pro-fast";
11
11
  EVideoGenModels["BYTEDANCE_SEEDANCE_1_0_PRO"] = "bytedance-seedance-1.0-pro";
12
+ EVideoGenModels["BYTEDANCE_SEEDANCE_2_0"] = "bytedance-seedance-2.0";
13
+ EVideoGenModels["BYTEDANCE_SEEDANCE_2_0_FAST"] = "bytedance-seedance-2.0-fast";
12
14
  EVideoGenModels["GOOGLE_VEO_3_1"] = "google-veo-3.1";
13
15
  EVideoGenModels["GOOGLE_VEO_3_1_FAST"] = "google-veo-3.1-fast";
14
16
  EVideoGenModels["GOOGLE_VEO_3_1_LITE"] = "google-veo-3.1-lite";
@@ -1 +1 @@
1
- {"version":3,"file":"bytedance.d.ts","sourceRoot":"","sources":["../../../../src/globals/aiModels/providers/bytedance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAkEvE,CAAC"}
1
+ {"version":3,"file":"bytedance.d.ts","sourceRoot":"","sources":["../../../../src/globals/aiModels/providers/bytedance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CA0HvE,CAAC"}
@@ -65,4 +65,58 @@ exports.bytedanceConfigs = {
65
65
  per1KTokens: 0.0025,
66
66
  },
67
67
  },
68
+ // Seedance 2.0 (Dreamina). Multimodal: text, up to 9 image refs, 3 video refs,
69
+ // 3 audio refs (with role tags). Pricing axes are resolution + whether the
70
+ // request includes a video input — see cost.videoInput / cost.noVideoInput.
71
+ "bytedance-seedance-2.0": {
72
+ modelId: "dreamina-seedance-2-0-260128",
73
+ type: ["text-to-video", "image-to-video", "video-to-video"],
74
+ acceptedImageFormats: ["image/jpeg", "image/jpg", "image/png"],
75
+ fields: {
76
+ prompt: { required: true },
77
+ aspectRatio: { allowedValues: ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16"] },
78
+ resolution: { allowedValues: ["480p", "720p", "1080p"], default: "720p" },
79
+ duration: { allowedValues: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], default: 5 },
80
+ audio: {},
81
+ },
82
+ requestPerMin: 180, // individual-tier; bumps to 600 for enterprise
83
+ concurrentRequests: 3, // individual-tier; bumps to 10 for enterprise
84
+ cost: {
85
+ videoInput: {
86
+ "480p": 0.0043,
87
+ "720p": 0.0043,
88
+ "1080p": 0.0047,
89
+ },
90
+ noVideoInput: {
91
+ "480p": 0.0070,
92
+ "720p": 0.0070,
93
+ "1080p": 0.0077,
94
+ },
95
+ },
96
+ },
97
+ // Seedance 2.0 Fast. Same capabilities as 2.0 but no 1080p; cheaper.
98
+ "bytedance-seedance-2.0-fast": {
99
+ modelId: "dreamina-seedance-2-0-fast-260128",
100
+ type: ["text-to-video", "image-to-video", "video-to-video"],
101
+ acceptedImageFormats: ["image/jpeg", "image/jpg", "image/png"],
102
+ fields: {
103
+ prompt: { required: true },
104
+ aspectRatio: { allowedValues: ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16"] },
105
+ resolution: { allowedValues: ["480p", "720p"], default: "720p" },
106
+ duration: { allowedValues: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], default: 5 },
107
+ audio: {},
108
+ },
109
+ requestPerMin: 180,
110
+ concurrentRequests: 3,
111
+ cost: {
112
+ videoInput: {
113
+ "480p": 0.0033,
114
+ "720p": 0.0033,
115
+ },
116
+ noVideoInput: {
117
+ "480p": 0.0056,
118
+ "720p": 0.0056,
119
+ },
120
+ },
121
+ },
68
122
  };
@@ -19,4 +19,22 @@ export declare const DEFAULT_ELEVENLABS_VOICE_ID = "EXAVITQu4vr4xnSDxMaL";
19
19
  * Reference: https://help.elevenlabs.io/hc/en-us/articles/13313366263441
20
20
  */
21
21
  export declare const LANG_TO_ELEVENLABS_CODE: Record<string, string>;
22
+ /**
23
+ * ElevenLabs `eleven_turbo_v2_5` supported languages (32 total, per docs:
24
+ * https://elevenlabs.io/docs/models#supported-languages). Used for the
25
+ * preview-audio path: turbo_v2_5 is ~3–5× faster than `eleven_v3` and
26
+ * preview quality differences are imperceptible at short sample lengths.
27
+ *
28
+ * Languages added in v3 only (e.g. Hebrew `he`, Thai `th`) fall back to
29
+ * `eleven_v3` for preview to avoid an unsupported-language error.
30
+ *
31
+ * Values are the mapped ElevenLabs `language_code` (post-`mapLanguageCode`).
32
+ */
33
+ export declare const ELEVEN_TURBO_V2_5_LANGS: ReadonlySet<string>;
34
+ /**
35
+ * Picks the fastest ElevenLabs model that supports the given language.
36
+ * @param locale Standard locale string (e.g. "en", "fr-FR"). When undefined
37
+ * or unknown, returns v3 — the only model with auto-detect across all langs.
38
+ */
39
+ export declare function getElevenLabsPreviewModelId(locale: string | undefined): string;
22
40
  //# sourceMappingURL=voices.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../../src/globals/ttsModels/voices.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAuFxC,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuC1D,CAAC"}
1
+ {"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../../src/globals/ttsModels/voices.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAuFxC,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuC1D,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAKtD,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9E"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LANG_TO_ELEVENLABS_CODE = exports.DEFAULT_ELEVENLABS_VOICE_ID = exports.ELEVENLABS_VOICES = void 0;
3
+ exports.ELEVEN_TURBO_V2_5_LANGS = exports.LANG_TO_ELEVENLABS_CODE = exports.DEFAULT_ELEVENLABS_VOICE_ID = exports.ELEVENLABS_VOICES = void 0;
4
+ exports.getElevenLabsPreviewModelId = getElevenLabsPreviewModelId;
4
5
  /**
5
6
  * Curated list of ElevenLabs voices compatible with eleven_multilingual_v3.
6
7
  * Any voice can speak any supported language via the language_code parameter.
@@ -140,3 +141,31 @@ exports.LANG_TO_ELEVENLABS_CODE = {
140
141
  uk: "uk",
141
142
  vi: "vi",
142
143
  };
144
+ /**
145
+ * ElevenLabs `eleven_turbo_v2_5` supported languages (32 total, per docs:
146
+ * https://elevenlabs.io/docs/models#supported-languages). Used for the
147
+ * preview-audio path: turbo_v2_5 is ~3–5× faster than `eleven_v3` and
148
+ * preview quality differences are imperceptible at short sample lengths.
149
+ *
150
+ * Languages added in v3 only (e.g. Hebrew `he`, Thai `th`) fall back to
151
+ * `eleven_v3` for preview to avoid an unsupported-language error.
152
+ *
153
+ * Values are the mapped ElevenLabs `language_code` (post-`mapLanguageCode`).
154
+ */
155
+ exports.ELEVEN_TURBO_V2_5_LANGS = new Set([
156
+ "en", "ja", "zh", "de", "hi", "fr", "ko", "pt", "it", "es",
157
+ "id", "nl", "tr", "fil", "pl", "sv", "bg", "ro", "ar", "cs",
158
+ "el", "fi", "hr", "ms", "sk", "da", "ta", "uk", "ru", "hu",
159
+ "no", "vi",
160
+ ]);
161
+ /**
162
+ * Picks the fastest ElevenLabs model that supports the given language.
163
+ * @param locale Standard locale string (e.g. "en", "fr-FR"). When undefined
164
+ * or unknown, returns v3 — the only model with auto-detect across all langs.
165
+ */
166
+ function getElevenLabsPreviewModelId(locale) {
167
+ if (!locale)
168
+ return "eleven_v3";
169
+ const mapped = exports.LANG_TO_ELEVENLABS_CODE[locale] ?? locale.split("-")[0] ?? locale;
170
+ return exports.ELEVEN_TURBO_V2_5_LANGS.has(mapped) ? "eleven_turbo_v2_5" : "eleven_v3";
171
+ }
@@ -53,6 +53,10 @@ export interface IVideoJobModel {
53
53
  ttsVoiceId?: string;
54
54
  ttsLanguageCode?: string;
55
55
  generatedAudioUrl?: string;
56
+ /** True when inputAudioUrl is the preview-audio URL and it covers the entire
57
+ * ttsText (short text, single chunk). Tells the worker to reuse inputAudioUrl
58
+ * directly and skip TTS regeneration. */
59
+ ttsPreviewIsComplete?: boolean;
56
60
  audioDurationSeconds?: number;
57
61
  isSample?: boolean;
58
62
  createdAt: FieldValue;
@@ -1 +1 @@
1
- {"version":3,"file":"video.model.d.ts","sourceRoot":"","sources":["../../src/models/video.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CAOpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB,CAAA;IAGD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAI9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B"}
1
+ {"version":3,"file":"video.model.d.ts","sourceRoot":"","sources":["../../src/models/video.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CAOpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB,CAAA;IAGD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;8CAE0C;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAI9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"aiGenFactory.service.d.ts","sourceRoot":"","sources":["../../../src/services/aiGen/aiGenFactory.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAYhC,KAAK,uBAAuB,GAAG,UAAU,wBAAwB,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf,uBAAuB,CAoDxB,CAAC;AAUF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAQzE,CAAC;AAEJ,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,GACpB,wBAAwB,CAY1B"}
1
+ {"version":3,"file":"aiGenFactory.service.d.ts","sourceRoot":"","sources":["../../../src/services/aiGen/aiGenFactory.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAYhC,KAAK,uBAAuB,GAAG,UAAU,wBAAwB,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf,uBAAuB,CAsDxB,CAAC;AAUF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAQzE,CAAC;AAEJ,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,GACpB,wBAAwB,CAY1B"}
@@ -20,6 +20,8 @@ exports.videoServicesMap = {
20
20
  "bytedance-seedance-1.5-pro": bytedance_service_1.ByteDanceService,
21
21
  "bytedance-seedance-1.0-pro-fast": bytedance_service_1.ByteDanceService,
22
22
  "bytedance-seedance-1.0-pro": bytedance_service_1.ByteDanceService,
23
+ "bytedance-seedance-2.0": bytedance_service_1.ByteDanceService,
24
+ "bytedance-seedance-2.0-fast": bytedance_service_1.ByteDanceService,
23
25
  // --- Google ---
24
26
  "google-veo-3.1": google_service_1.GoogleService,
25
27
  "google-veo-3.1-fast": google_service_1.GoogleService,
@@ -3,6 +3,7 @@ import { CreditUsageParams, VideoGenerationParams, VideoGenerationResult, VideoS
3
3
  export declare class ByteDanceService extends BaseAiGenProviderService {
4
4
  private readonly baseUrl;
5
5
  private sanitizePrompt;
6
+ private isSeedance2;
6
7
  generateVideo(params: VideoGenerationParams): Promise<VideoGenerationResult>;
7
8
  checkVideoStatus({ task, outputFilename, outputFilePath, }: VideoStatusParams): Promise<VideoStatusResult>;
8
9
  getCreditUsed(params: CreditUsageParams): number;
@@ -1 +1 @@
1
- {"version":3,"file":"bytedance.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/bytedance/bytedance.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAUlB,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CACsD;IAI9E,OAAO,CAAC,cAAc;IAOhB,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IA6G3B,gBAAgB,CAAC,EACrB,IAAI,EACJ,cAAc,EACd,cAAyB,GAC1B,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2HjD,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;CAoCjD"}
1
+ {"version":3,"file":"bytedance.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/bytedance/bytedance.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAUlB,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CACsD;IAI9E,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,WAAW;IAIb,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAuJ3B,gBAAgB,CAAC,EACrB,IAAI,EACJ,cAAc,EACd,cAAyB,GAC1B,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2HjD,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;CAgDjD"}
@@ -27,6 +27,11 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
27
27
  .replace(/\s+/g, " ")
28
28
  .trim();
29
29
  }
30
+ // Seedance 2.0 (Dreamina) uses a new multimodal content schema with `role`
31
+ // tags on each non-text item. Earlier Seedance models reject the `role` field.
32
+ isSeedance2(modelKey) {
33
+ return modelKey.startsWith("bytedance-seedance-2.0");
34
+ }
30
35
  async generateVideo(params) {
31
36
  (0, helpers_1.validateParams)(params);
32
37
  const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
@@ -35,18 +40,44 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
35
40
  if (!sanitizedPrompt) {
36
41
  throw new errors_1.UserFacingError("Your prompt could not be processed. Please use English or Chinese text and try again.");
37
42
  }
43
+ const isV2 = this.isSeedance2(params.modelKey);
38
44
  const content = [
39
45
  {
40
46
  type: "text",
41
47
  text: sanitizedPrompt,
42
48
  },
43
49
  ];
44
- // Optional image Image-to-Video (first frame)
50
+ // Image input. Seedance 2.0 expects role="first_frame" for I2V (or
51
+ // "reference_image" when combined with a video/audio reference). Earlier
52
+ // Seedance models reject `role` and treat any image as the first frame.
45
53
  if (params.inputImageUrl) {
46
- content.push({
54
+ const item = {
47
55
  type: "image_url",
48
56
  image_url: { url: params.inputImageUrl },
49
- });
57
+ };
58
+ if (isV2) {
59
+ // If a video reference is also present this is a multimodal reference,
60
+ // not first-frame I2V, so tag as reference_image.
61
+ item.role = params.inputVideoUrl ? "reference_image" : "first_frame";
62
+ }
63
+ content.push(item);
64
+ }
65
+ // Seedance 2.0 multimodal reference: video and/or audio inputs.
66
+ if (isV2) {
67
+ if (params.inputVideoUrl) {
68
+ content.push({
69
+ type: "video_url",
70
+ video_url: { url: params.inputVideoUrl },
71
+ role: "reference_video",
72
+ });
73
+ }
74
+ if (params.inputAudioUrl) {
75
+ content.push({
76
+ type: "audio_url",
77
+ audio_url: { url: params.inputAudioUrl },
78
+ role: "reference_audio",
79
+ });
80
+ }
50
81
  }
51
82
  const body = {
52
83
  model: modelId,
@@ -56,9 +87,23 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
56
87
  resolution: params.resolution, // e.g. 720p
57
88
  duration: params.duration, // seconds
58
89
  watermark: false,
59
- service_tier: "default",
60
90
  execution_expires_after: 172800, // 48h
61
91
  };
92
+ if (!this.isSeedance2(params.modelKey)) {
93
+ body.service_tier = "default";
94
+ }
95
+ // Byteplus KYC commitment K2 (deadline 2026-07-01): every Seedance 2.0
96
+ // request must carry a stable per-user safety_identifier so Byteplus can
97
+ // attribute downstream policy violations to a single end-user. We hash the
98
+ // Firebase userId (sha256, 16 hex chars) — stable per user, but never
99
+ // exposes the raw UID to the provider.
100
+ if (this.isSeedance2(params.modelKey) && params.userId) {
101
+ body.safety_identifier = crypto_1.default
102
+ .createHash("sha256")
103
+ .update(params.userId)
104
+ .digest("hex")
105
+ .slice(0, 16);
106
+ }
62
107
  const resp = await fetch(this.baseUrl, {
63
108
  method: "POST",
64
109
  headers: {
@@ -204,9 +249,21 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
204
249
  }
205
250
  getCreditUsed(params) {
206
251
  const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
207
- const per1KTokens = params.audio
208
- ? modelConfig.cost?.audio?.per1KTokens
209
- : modelConfig.cost?.noAudio?.per1KTokens ?? modelConfig.cost?.per1KTokens;
252
+ // Seedance 2.0 prices on (resolution × whether the request includes a
253
+ // video input), not on (audio toggle). Pick the matching per-1K rate.
254
+ let per1KTokens;
255
+ if (this.isSeedance2(params.modelKey)) {
256
+ const hasVideoInput = params.hasInputVideo === true || params.inputType === "video";
257
+ const table = hasVideoInput
258
+ ? modelConfig.cost?.videoInput
259
+ : modelConfig.cost?.noVideoInput;
260
+ per1KTokens = params.resolution ? table?.[params.resolution] : undefined;
261
+ }
262
+ else {
263
+ per1KTokens = params.audio
264
+ ? modelConfig.cost?.audio?.per1KTokens
265
+ : modelConfig.cost?.noAudio?.per1KTokens ?? modelConfig.cost?.per1KTokens;
266
+ }
210
267
  if (!per1KTokens || !params.resolution || !params.aspectRatio || !params.duration) {
211
268
  logger_1.logger.warn(`Missing cost or parameters for credit calculation. Returning default credits. Params: ${JSON.stringify(params)}, ModelConfig: ${JSON.stringify(modelConfig)}`);
212
269
  return 10; // default fallback
@@ -223,29 +280,32 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
223
280
  }
224
281
  }
225
282
  exports.ByteDanceService = ByteDanceService;
283
+ // Source of truth: Byteplus ModelArk pricing reference
284
+ // (https://docs.byteplus.com/en/docs/ModelArk/1544106 — Seedance dimensions table).
285
+ // Must stay in sync with SEEDANCE_DIMENSIONS_MAP in vidspot-frontend/src/lib/helpers.ts.
226
286
  const dimensionsMap = {
227
287
  "480p": {
228
- "16:9": { width: 848, height: 480 },
229
- "9:16": { width: 480, height: 848 },
230
- "1:1": { width: 480, height: 480 },
231
- "4:3": { width: 640, height: 480 },
232
- "3:4": { width: 480, height: 640 },
233
- "21:9": { width: 1008, height: 432 },
288
+ "21:9": { width: 960, height: 416 },
289
+ "16:9": { width: 864, height: 480 },
290
+ "9:16": { width: 480, height: 864 },
291
+ "1:1": { width: 640, height: 640 },
292
+ "4:3": { width: 736, height: 544 },
293
+ "3:4": { width: 544, height: 736 },
234
294
  },
235
295
  "720p": {
236
- "16:9": { width: 1280, height: 720 },
237
- "9:16": { width: 720, height: 1280 },
238
- "1:1": { width: 720, height: 720 },
239
- "4:3": { width: 960, height: 720 },
240
- "3:4": { width: 720, height: 960 },
241
- "21:9": { width: 1680, height: 720 },
296
+ "21:9": { width: 1504, height: 640 },
297
+ "16:9": { width: 1248, height: 704 },
298
+ "9:16": { width: 704, height: 1248 },
299
+ "1:1": { width: 960, height: 960 },
300
+ "4:3": { width: 1120, height: 832 },
301
+ "3:4": { width: 832, height: 1120 },
242
302
  },
243
303
  "1080p": {
244
- "16:9": { width: 1920, height: 1080 },
245
- "9:16": { width: 1080, height: 1920 },
246
- "1:1": { width: 1080, height: 1080 },
247
- "4:3": { width: 1440, height: 1080 },
248
- "3:4": { width: 1080, height: 1440 },
249
- "21:9": { width: 2520, height: 1080 },
304
+ "21:9": { width: 2176, height: 928 },
305
+ "16:9": { width: 1920, height: 1088 },
306
+ "9:16": { width: 1088, height: 1920 },
307
+ "1:1": { width: 1440, height: 1440 },
308
+ "4:3": { width: 1664, height: 1248 },
309
+ "3:4": { width: 1248, height: 1664 },
250
310
  },
251
311
  };
@@ -16,6 +16,7 @@ export interface VideoGenerationParams {
16
16
  audio?: boolean;
17
17
  negativePrompt?: string;
18
18
  multiClip?: boolean;
19
+ userId?: string;
19
20
  }
20
21
  export interface VideoGenerationResult {
21
22
  status: EVideoSceneStatus.TRIGGERED;
@@ -48,6 +49,7 @@ export interface CreditUsageParams {
48
49
  dimensions?: string;
49
50
  aspectRatio?: string;
50
51
  inputType?: "text" | "image" | "video";
52
+ hasInputVideo?: boolean;
51
53
  outputType?: "text" | "image" | "video";
52
54
  audio?: boolean;
53
55
  multiClip?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IAE7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC;IACpC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CAEvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CAMzB;AAED,MAAM,WAAW,oBAAoB;IAEnC,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,eAAe,GAAG,cAAc,CAAC;IAC3C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IAE7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC;IACpC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CAEvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CAMzB;AAED,MAAM,WAAW,oBAAoB;IAEnC,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,eAAe,GAAG,cAAc,CAAC;IAC3C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs.service.d.ts","sourceRoot":"","sources":["../../../../src/services/tts/providers/elevenlabs.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAiBzF,qBAAa,iBAAkB,SAAQ,sBAAsB;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAW1B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IA4DrD;;;;;OAKG;YACW,gBAAgB;IAuC9B,SAAS,IAAI,eAAe,EAAE;IAI9B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGpD"}
1
+ {"version":3,"file":"elevenlabs.service.d.ts","sourceRoot":"","sources":["../../../../src/services/tts/providers/elevenlabs.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAiBzF,qBAAa,iBAAkB,SAAQ,sBAAsB;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAW1B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IA6DrD;;;;;OAKG;YACW,gBAAgB;IAuC9B,SAAS,IAAI,eAAe,EAAE;IAI9B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGpD"}
@@ -38,9 +38,10 @@ class ElevenLabsService extends types_1.BaseTtsProviderService {
38
38
  const languageCode = params.languageCode
39
39
  ? this.mapLanguageCode(params.languageCode)
40
40
  : undefined;
41
+ const modelId = params.modelIdOverride ?? elevenlabs_1.elevenlabsConfig.modelId;
41
42
  const buildBody = (lang) => ({
42
43
  text: params.text,
43
- model_id: elevenlabs_1.elevenlabsConfig.modelId,
44
+ model_id: modelId,
44
45
  language_code: lang,
45
46
  voice_settings: {
46
47
  stability: 0.5,
@@ -81,7 +82,7 @@ class ElevenLabsService extends types_1.BaseTtsProviderService {
81
82
  extension: "mp3",
82
83
  };
83
84
  }
84
- throw new Error(`ElevenLabs TTS ${err.response.status}: ${detail} [voiceId=${voiceId}, languageCode=${languageCode ?? "none"}, textLen=${params.text?.length ?? 0}]`);
85
+ throw new Error(`ElevenLabs TTS ${err.response.status}: ${detail} [voiceId=${voiceId}, languageCode=${languageCode ?? "none"}, modelId=${modelId}, textLen=${params.text?.length ?? 0}]`);
85
86
  }
86
87
  throw err;
87
88
  }
@@ -2,6 +2,12 @@ export interface TtsParams {
2
2
  text: string;
3
3
  voiceId?: string;
4
4
  languageCode?: string;
5
+ /**
6
+ * Optional provider-specific model override (e.g. ElevenLabs "eleven_turbo_v2_5"
7
+ * for preview to reduce latency). When undefined, providers use their default.
8
+ * Providers that don't support overrides ignore this field.
9
+ */
10
+ modelIdOverride?: string;
5
11
  }
6
12
  export interface TtsResult {
7
13
  audioBuffer: Buffer;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/tts/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8BAAsB,sBAAsB;IAC1C,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAExD;;;OAGG;IACH,QAAQ,CAAC,SAAS,IAAI,eAAe,EAAE;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAC7D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/tts/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8BAAsB,sBAAsB;IAC1C,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAExD;;;OAGG;IACH,QAAQ,CAAC,SAAS,IAAI,eAAe,EAAE;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAC7D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vidspotai-shared",
3
- "version": "1.0.59",
3
+ "version": "1.0.61",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "exports": {