vidspotai-shared 1.0.32 → 1.0.33
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/lib/globals/index.d.ts +1 -0
- package/lib/globals/index.d.ts.map +1 -1
- package/lib/globals/index.js +1 -0
- package/lib/models/user.model.d.ts +2 -0
- package/lib/models/user.model.d.ts.map +1 -1
- package/lib/models/video.model.d.ts +9 -0
- package/lib/models/video.model.d.ts.map +1 -1
- package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
- package/lib/services/aiGen/aiGenFactory.service.js +36 -12
- package/lib/services/aiGen/providers/google/google.service.js +1 -1
- package/lib/services/aiGen/providers/kling/kling.service.d.ts +7 -2
- package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/kling/kling.service.js +126 -10
- package/lib/services/aiGen/providers/kling/types.d.ts +13 -0
- package/lib/services/aiGen/providers/kling/types.d.ts.map +1 -1
- package/lib/services/aiGen/providers/runway/runway.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/runway/runway.service.js +16 -4
- package/lib/services/aiGen/providers/types.d.ts +6 -0
- package/lib/services/aiGen/providers/types.d.ts.map +1 -1
- package/lib/services/credit.service.d.ts +1 -0
- package/lib/services/credit.service.d.ts.map +1 -1
- package/lib/services/credit.service.js +17 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/index.js +1 -0
- package/lib/utils/helpers.js +2 -2
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +1 -0
- package/lib/utils/logger.d.ts +2 -1
- package/lib/utils/logger.d.ts.map +1 -1
- package/lib/utils/logger.js +2 -0
- package/package.json +1 -1
- package/lib/globals/aiModels.d.ts +0 -63
- package/lib/globals/aiModels.d.ts.map +0 -1
- package/lib/globals/aiModels.js +0 -529
package/lib/globals/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/globals/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/globals/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
package/lib/globals/index.js
CHANGED
|
@@ -18,4 +18,5 @@ __exportStar(require("./aiModels"), exports);
|
|
|
18
18
|
__exportStar(require("./config"), exports);
|
|
19
19
|
__exportStar(require("./plans"), exports);
|
|
20
20
|
__exportStar(require("./schemas"), exports);
|
|
21
|
+
__exportStar(require("./ttsModels"), exports);
|
|
21
22
|
__exportStar(require("./types"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.model.d.ts","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,SAAS,EACT,kBAAkB,EAElB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;IACtC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3D,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE;QAEf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;QACrD,aAAa,EAAE,IAAI,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,UAAU,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,oBAAoB,CAAC;IAE7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"user.model.d.ts","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,SAAS,EACT,kBAAkB,EAElB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;IACtC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3D,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE;QAEf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;QACrD,aAAa,EAAE,IAAI,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,UAAU,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,oBAAoB,CAAC;IAE7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAOrC"}
|
|
@@ -10,6 +10,7 @@ export interface IVideoScene {
|
|
|
10
10
|
outputVideoUrl?: string;
|
|
11
11
|
inputVideoUrl?: string;
|
|
12
12
|
inputImageUrl?: string;
|
|
13
|
+
inputAudioUrl?: string;
|
|
13
14
|
status: EVideoSceneStatus;
|
|
14
15
|
creditsUsed?: number;
|
|
15
16
|
errorMessage?: string;
|
|
@@ -39,11 +40,19 @@ export interface IVideoJobModel {
|
|
|
39
40
|
};
|
|
40
41
|
duration?: number;
|
|
41
42
|
mode?: EVideoMode;
|
|
43
|
+
audio?: boolean;
|
|
42
44
|
dimensions?: string;
|
|
43
45
|
resolution?: string;
|
|
44
46
|
aspectRatio?: string;
|
|
45
47
|
inputVideoUrl?: string;
|
|
46
48
|
inputImageUrl?: string;
|
|
49
|
+
inputAudioUrl?: string;
|
|
50
|
+
contentType?: "video" | "avatar-video";
|
|
51
|
+
ttsText?: string;
|
|
52
|
+
ttsProvider?: string;
|
|
53
|
+
ttsVoiceId?: string;
|
|
54
|
+
ttsLanguageCode?: string;
|
|
55
|
+
generatedAudioUrl?: string;
|
|
47
56
|
createdAt: FieldValue;
|
|
48
57
|
updatedAt: FieldValue;
|
|
49
58
|
}
|
|
@@ -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,
|
|
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;IAG3B,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;CACvB"}
|
|
@@ -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;
|
|
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,CAmDxB,CAAC;AAUF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAQzE,CAAC;AAEJ,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,GACpB,wBAAwB,CAY1B"}
|
|
@@ -7,28 +7,52 @@ const kling_service_1 = require("./providers/kling/kling.service");
|
|
|
7
7
|
const minimax_service_1 = require("./providers/minimax/minimax.service");
|
|
8
8
|
const openai_service_1 = require("./providers/openai/openai.service");
|
|
9
9
|
const runway_service_1 = require("./providers/runway/runway.service");
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
// import { AlibabaService } from "./providers/alibaba/alibaba";
|
|
11
|
+
// import { AzureService } from "./providers/azure";
|
|
12
|
+
const pixverse_service_1 = require("./providers/pixverse/pixverse.service");
|
|
13
|
+
const bytedance_service_1 = require("./providers/bytedance/bytedance.service");
|
|
12
14
|
exports.videoServicesMap = {
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
+
// --- Pixverse ---
|
|
16
|
+
"pixverse-v5.6": pixverse_service_1.PixVerseService,
|
|
17
|
+
"pixverse-v5.5": pixverse_service_1.PixVerseService,
|
|
18
|
+
"pixverse-v5": pixverse_service_1.PixVerseService,
|
|
19
|
+
// --- ByteDance ---
|
|
20
|
+
"bytedance-seedance-1.5-pro": bytedance_service_1.ByteDanceService,
|
|
21
|
+
"bytedance-seedance-1.0-pro-fast": bytedance_service_1.ByteDanceService,
|
|
22
|
+
"bytedance-seedance-1.0-pro": bytedance_service_1.ByteDanceService,
|
|
23
|
+
// --- Google ---
|
|
24
|
+
"google-veo-3.1": google_service_1.GoogleService,
|
|
25
|
+
"google-veo-3.1-fast": google_service_1.GoogleService,
|
|
15
26
|
"google-veo-3": google_service_1.GoogleService,
|
|
16
|
-
"google-veo-2": google_service_1.GoogleService,
|
|
17
27
|
"google-veo-3-fast": google_service_1.GoogleService,
|
|
28
|
+
"google-veo-2": google_service_1.GoogleService,
|
|
29
|
+
// --- Runway ---
|
|
30
|
+
"runway-gen4.5": runway_service_1.RunwayService,
|
|
18
31
|
"runway-gen4-turbo": runway_service_1.RunwayService,
|
|
19
32
|
"runway-gen4-aleph": runway_service_1.RunwayService,
|
|
20
|
-
|
|
21
|
-
"kling-
|
|
33
|
+
// --- Kling ---
|
|
34
|
+
"kling-v2.6": kling_service_1.KlingService,
|
|
35
|
+
"kling-v2.5-turbo": kling_service_1.KlingService,
|
|
22
36
|
"kling-v2-master": kling_service_1.KlingService,
|
|
37
|
+
"kling-v2.1": kling_service_1.KlingService,
|
|
23
38
|
"kling-v2.1-master": kling_service_1.KlingService,
|
|
24
|
-
"
|
|
25
|
-
"
|
|
39
|
+
"kling-avatar": kling_service_1.KlingService,
|
|
40
|
+
// "kling-v1.6": KlingService,
|
|
41
|
+
// "kling-v1": KlingService,
|
|
42
|
+
// --- MiniMax ---
|
|
43
|
+
"minimax-hailuo-2.3-fast": minimax_service_1.MinimaxService,
|
|
44
|
+
"minimax-hailuo-2.3": minimax_service_1.MinimaxService,
|
|
26
45
|
"minimax-hailuo-02": minimax_service_1.MinimaxService,
|
|
27
|
-
"
|
|
46
|
+
// "T2V-01-Director": MinimaxService,
|
|
47
|
+
// "T2V-01": MinimaxService,
|
|
48
|
+
// --- Azure ---
|
|
49
|
+
// "azure-sora": AzureService,
|
|
50
|
+
// --- OpenAI ---
|
|
28
51
|
"openai-sora-2": openai_service_1.OpenaiService,
|
|
29
52
|
"openai-sora-2-pro": openai_service_1.OpenaiService,
|
|
30
|
-
|
|
31
|
-
"alibaba-wan-2.
|
|
53
|
+
// --- Alibaba ---
|
|
54
|
+
// "alibaba-wan-2.5": AlibabaService,
|
|
55
|
+
// "alibaba-wan-2.2": AlibabaService,
|
|
32
56
|
};
|
|
33
57
|
// export const imageServicesMap: Record<imageGenModel, BaseAiGenProviderService> = {
|
|
34
58
|
// "openai-dalle-3": DalleService,
|
|
@@ -24,7 +24,7 @@ class GoogleService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
24
24
|
(0, helpers_2.validateParams)(params);
|
|
25
25
|
const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
|
|
26
26
|
const modelId = modelConfig.modelId;
|
|
27
|
-
console.log("GoogleService.generateVideo - modelId:", modelId, params);
|
|
27
|
+
// console.log("GoogleService.generateVideo - modelId:", modelId, params);
|
|
28
28
|
const request = {
|
|
29
29
|
model: modelId,
|
|
30
30
|
prompt: params.prompt,
|
|
@@ -2,11 +2,16 @@ import { BaseAiGenProviderService } from "../baseAiGenProvider.service";
|
|
|
2
2
|
import { CreditUsageParams, VideoGenerationParams, VideoGenerationResult, VideoStatusParams, VideoStatusResult } from "../types";
|
|
3
3
|
export declare class KlingService extends BaseAiGenProviderService {
|
|
4
4
|
private readonly baseUrl;
|
|
5
|
-
private readonly
|
|
5
|
+
private readonly generateTimeout;
|
|
6
|
+
private readonly statusTimeout;
|
|
6
7
|
constructor();
|
|
7
8
|
private request;
|
|
8
9
|
generateVideo(params: VideoGenerationParams): Promise<VideoGenerationResult>;
|
|
9
|
-
|
|
10
|
+
private generateAvatarVideo;
|
|
11
|
+
private requestWithTimeoutRetry;
|
|
12
|
+
checkVideoStatus(params: VideoStatusParams): Promise<VideoStatusResult>;
|
|
13
|
+
private checkRegularVideoStatus;
|
|
14
|
+
private checkAvatarVideoStatus;
|
|
10
15
|
encodeJwtToken(): string;
|
|
11
16
|
getCreditUsed({ modelKey, mode, duration, }: CreditUsageParams): number;
|
|
12
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kling.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/kling.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kling.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/kling.service.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAYlB,qBAAa,YAAa,SAAQ,wBAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;;YAW1B,OAAO;IA8Bf,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;YAqCnB,mBAAmB;YAqCnB,uBAAuB;IAmC/B,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAO/D,uBAAuB;YAgEvB,sBAAsB;IA6DpC,cAAc,IAAI,MAAM;IAexB,aAAa,CAAC,EACZ,QAAQ,EACR,IAA8B,EAC9B,QAAY,GACb,EAAE,iBAAiB,GAAG,MAAM;CAc9B"}
|
|
@@ -10,6 +10,7 @@ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
|
10
10
|
const aiModels_1 = require("../../../../globals/aiModels");
|
|
11
11
|
const types_1 = require("../../../../globals/types");
|
|
12
12
|
const firebase_1 = require("../../../../libs/firebase");
|
|
13
|
+
const logger_1 = require("../../../../utils/logger");
|
|
13
14
|
const helpers_1 = require("../../helpers");
|
|
14
15
|
const types_2 = require("../../types");
|
|
15
16
|
const baseAiGenProvider_service_1 = require("../baseAiGenProvider.service");
|
|
@@ -18,12 +19,13 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
18
19
|
constructor() {
|
|
19
20
|
super();
|
|
20
21
|
this.baseUrl = "https://api-singapore.klingai.com";
|
|
21
|
-
this.
|
|
22
|
+
this.generateTimeout = 120000; // 2 min — submit endpoint can be slow under Kling load
|
|
23
|
+
this.statusTimeout = 60000; // 1 min — status/poll should be fast
|
|
22
24
|
if (!process.env.KLING_SECRET_KEY || !process.env.KLING_ACCESS_KEY) {
|
|
23
25
|
throw new Error("Missing KLING_SECRET_KEY or KLING_ACCESS_KEY in environment variables");
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
|
-
async request(endpoint, method, body) {
|
|
28
|
+
async request(endpoint, method, body, timeout = this.generateTimeout) {
|
|
27
29
|
const config = {
|
|
28
30
|
method,
|
|
29
31
|
url: `${this.baseUrl}${endpoint}`,
|
|
@@ -31,7 +33,7 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
31
33
|
Authorization: `Bearer ${this.encodeJwtToken()}`,
|
|
32
34
|
"Content-Type": "application/json",
|
|
33
35
|
},
|
|
34
|
-
timeout
|
|
36
|
+
timeout,
|
|
35
37
|
data: body,
|
|
36
38
|
};
|
|
37
39
|
const response = await axios_1.default.request(config);
|
|
@@ -42,6 +44,9 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
42
44
|
}
|
|
43
45
|
async generateVideo(params) {
|
|
44
46
|
(0, helpers_1.validateParams)(params);
|
|
47
|
+
if (params.modelKey === "kling-avatar") {
|
|
48
|
+
return this.generateAvatarVideo(params);
|
|
49
|
+
}
|
|
45
50
|
const modelId = aiModels_1.aiModelConfigs[params.modelKey]?.modelId;
|
|
46
51
|
if (!modelId)
|
|
47
52
|
throw new Error(`Unknown modelKey: ${params.modelKey}`);
|
|
@@ -53,14 +58,75 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
53
58
|
mode: params.mode || types_2.EVideoMode.STANDARD,
|
|
54
59
|
};
|
|
55
60
|
const starttime = Date.now();
|
|
56
|
-
const task = await this.
|
|
57
|
-
|
|
61
|
+
const task = await this.requestWithTimeoutRetry("/v1/videos/text2video", "POST", request, 4, this.generateTimeout);
|
|
62
|
+
logger_1.logger.info("Kling generateVideo submitted", {
|
|
63
|
+
modelKey: params.modelKey,
|
|
64
|
+
taskId: task.data.task_id,
|
|
65
|
+
durationMs: Date.now() - starttime,
|
|
66
|
+
});
|
|
67
|
+
return { task: task.data.task_id, status: types_1.EVideoSceneStatus.TRIGGERED };
|
|
68
|
+
}
|
|
69
|
+
async generateAvatarVideo(params) {
|
|
70
|
+
if (!params.inputImageUrl) {
|
|
71
|
+
throw new Error("inputImageUrl (avatar face image) is required for Kling Avatar generation");
|
|
72
|
+
}
|
|
73
|
+
if (!params.inputAudioUrl) {
|
|
74
|
+
throw new Error("inputAudioUrl (audio file) is required for Kling Avatar generation");
|
|
75
|
+
}
|
|
76
|
+
const request = {
|
|
77
|
+
image: params.inputImageUrl,
|
|
78
|
+
sound_file: params.inputAudioUrl,
|
|
79
|
+
prompt: params.prompt,
|
|
80
|
+
mode: params.mode || "std",
|
|
81
|
+
};
|
|
82
|
+
const starttime = Date.now();
|
|
83
|
+
// Use requestWithTimeoutRetry so transient Kling server slowness doesn't fail the job outright.
|
|
84
|
+
// generateTimeout (2 min) gives enough headroom; up to 4 attempts before giving up.
|
|
85
|
+
const task = await this.requestWithTimeoutRetry("/v1/videos/avatar/image2video", "POST", request, 4, this.generateTimeout);
|
|
86
|
+
logger_1.logger.info("Kling generateAvatarVideo submitted", {
|
|
87
|
+
taskId: task.data.task_id,
|
|
88
|
+
durationMs: Date.now() - starttime,
|
|
89
|
+
});
|
|
58
90
|
return { task: task.data.task_id, status: types_1.EVideoSceneStatus.TRIGGERED };
|
|
59
91
|
}
|
|
60
|
-
async
|
|
92
|
+
async requestWithTimeoutRetry(endpoint, method, body, maxAttempts = 4, timeout = this.statusTimeout) {
|
|
93
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
94
|
+
try {
|
|
95
|
+
return await this.request(endpoint, method, body, timeout);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
const isTimeout = err.code === "ECONNABORTED" || err.message?.includes("timeout");
|
|
99
|
+
const isNetworkError = err.code === "ECONNRESET" ||
|
|
100
|
+
err.code === "ECONNREFUSED" ||
|
|
101
|
+
err.code === "ENOTFOUND" ||
|
|
102
|
+
err.code === "ERR_NETWORK" ||
|
|
103
|
+
err?.name === "AggregateError";
|
|
104
|
+
const isRetryable = isTimeout || isNetworkError;
|
|
105
|
+
if (!isRetryable || attempt === maxAttempts)
|
|
106
|
+
throw err;
|
|
107
|
+
logger_1.logger.warn("Kling request failed with transient error — retrying", {
|
|
108
|
+
endpoint,
|
|
109
|
+
attempt,
|
|
110
|
+
maxAttempts,
|
|
111
|
+
timeoutMs: timeout,
|
|
112
|
+
errorCode: err.code,
|
|
113
|
+
errorName: err?.name,
|
|
114
|
+
});
|
|
115
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
throw new Error("Unreachable");
|
|
119
|
+
}
|
|
120
|
+
async checkVideoStatus(params) {
|
|
121
|
+
if (params.modelKey === "kling-avatar") {
|
|
122
|
+
return this.checkAvatarVideoStatus(params);
|
|
123
|
+
}
|
|
124
|
+
return this.checkRegularVideoStatus(params);
|
|
125
|
+
}
|
|
126
|
+
async checkRegularVideoStatus({ task, outputFilename, outputFilePath = "videos", }) {
|
|
61
127
|
const startTime = Date.now();
|
|
62
|
-
const result = await this.
|
|
63
|
-
|
|
128
|
+
const result = await this.requestWithTimeoutRetry(`/v1/videos/text2video/${task}`, "GET");
|
|
129
|
+
logger_1.logger.info("Kling checkVideoStatus polled", { task, durationMs: Date.now() - startTime, status: result?.data?.task_status });
|
|
64
130
|
if (!result) {
|
|
65
131
|
return {
|
|
66
132
|
status: types_1.EVideoSceneStatus.FAILED,
|
|
@@ -78,10 +144,53 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
78
144
|
// console.log("Kling video URL:", videoUrl);
|
|
79
145
|
const filePath = `${outputFilePath}/${outputFilename}.mp4`;
|
|
80
146
|
const file = (0, firebase_1.getBucket)().file(filePath);
|
|
81
|
-
// Download video using axios
|
|
147
|
+
// Download video using axios — use generateTimeout since video files can be large
|
|
82
148
|
const videoResp = await axios_1.default.get(videoUrl, {
|
|
83
149
|
responseType: "arraybuffer",
|
|
84
|
-
timeout: this.
|
|
150
|
+
timeout: this.generateTimeout,
|
|
151
|
+
});
|
|
152
|
+
const buffer = Buffer.from(videoResp.data);
|
|
153
|
+
await file.save(buffer, { contentType: "video/mp4" });
|
|
154
|
+
const [signedUrl] = await file.getSignedUrl({
|
|
155
|
+
action: "read",
|
|
156
|
+
expires: "03-09-2491",
|
|
157
|
+
});
|
|
158
|
+
return {
|
|
159
|
+
videoUrl: signedUrl,
|
|
160
|
+
status: types_1.EVideoSceneStatus.COMPLETED,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (result.data.task_status === "failed") {
|
|
164
|
+
return {
|
|
165
|
+
status: types_1.EVideoSceneStatus.FAILED,
|
|
166
|
+
errorMessage: `${result.code}: ${result.message}`,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
return { status: types_1.EVideoSceneStatus.PENDING };
|
|
170
|
+
}
|
|
171
|
+
async checkAvatarVideoStatus({ task, outputFilename, outputFilePath = "videos", }) {
|
|
172
|
+
const startTime = Date.now();
|
|
173
|
+
const result = await this.requestWithTimeoutRetry(`/v1/videos/avatar/image2video/${task}`, "GET");
|
|
174
|
+
logger_1.logger.info("Kling checkAvatarVideoStatus polled", { task, durationMs: Date.now() - startTime, status: result?.data?.task_status });
|
|
175
|
+
if (!result) {
|
|
176
|
+
return {
|
|
177
|
+
status: types_1.EVideoSceneStatus.FAILED,
|
|
178
|
+
errorMessage: "No response from Kling Avatar API",
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
if (result.data.task_status === "succeed") {
|
|
182
|
+
const videoUrl = result.data.task_result?.videos?.[0]?.url;
|
|
183
|
+
if (!videoUrl) {
|
|
184
|
+
return {
|
|
185
|
+
status: types_1.EVideoSceneStatus.FAILED,
|
|
186
|
+
errorMessage: "No video URL in avatar response",
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
const filePath = `${outputFilePath}/${outputFilename}.mp4`;
|
|
190
|
+
const file = (0, firebase_1.getBucket)().file(filePath);
|
|
191
|
+
const videoResp = await axios_1.default.get(videoUrl, {
|
|
192
|
+
responseType: "arraybuffer",
|
|
193
|
+
timeout: this.generateTimeout,
|
|
85
194
|
});
|
|
86
195
|
const buffer = Buffer.from(videoResp.data);
|
|
87
196
|
await file.save(buffer, { contentType: "video/mp4" });
|
|
@@ -116,6 +225,13 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
116
225
|
}
|
|
117
226
|
getCreditUsed({ modelKey, mode = types_2.EVideoMode.PROFESSIONAL, duration = 5, }) {
|
|
118
227
|
const modelConfig = aiModels_1.aiModelConfigs[modelKey];
|
|
228
|
+
// Avatar: per-second pricing based on mode
|
|
229
|
+
if (modelKey === "kling-avatar") {
|
|
230
|
+
const perSecond = modelConfig?.cost?.[mode]?.perSecond
|
|
231
|
+
?? modelConfig?.cost?.["std"]?.perSecond
|
|
232
|
+
?? 0.014;
|
|
233
|
+
return (0, helpers_2.getCreditsFromCost)(perSecond * duration);
|
|
234
|
+
}
|
|
119
235
|
const cost = modelConfig?.cost?.table?.[mode]?.[duration];
|
|
120
236
|
return (0, helpers_2.getCreditsFromCost)(cost ?? 1);
|
|
121
237
|
}
|
|
@@ -68,6 +68,19 @@ export interface TaskResult {
|
|
|
68
68
|
export interface VideoResult {
|
|
69
69
|
id: string;
|
|
70
70
|
url: string;
|
|
71
|
+
watermark_url?: string;
|
|
71
72
|
duration: string;
|
|
72
73
|
}
|
|
74
|
+
export interface KlingAvatarGenerateRequest {
|
|
75
|
+
image: string;
|
|
76
|
+
audio_id?: string;
|
|
77
|
+
sound_file?: string;
|
|
78
|
+
prompt?: string;
|
|
79
|
+
mode?: "std" | "pro";
|
|
80
|
+
watermark_info?: {
|
|
81
|
+
enabled: boolean;
|
|
82
|
+
};
|
|
83
|
+
callback_url?: string;
|
|
84
|
+
external_task_id?: string;
|
|
85
|
+
}
|
|
73
86
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC/D,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,oBAAoB,GACpB,mBAAmB,CAAC;AAExB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,UAAU,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,UAAU,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3E,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC/D,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,YAAY,GACZ,iBAAiB,GACjB,mBAAmB,CAAC;AAExB,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,oBAAoB,GACpB,mBAAmB,CAAC;AAExB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,UAAU,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,UAAU,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3E,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACrB,cAAc,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runway.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/runway/runway.service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAGlB,qBAAa,aAAc,SAAQ,wBAAwB;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"runway.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/runway/runway.service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAGlB,qBAAa,aAAc,SAAQ,wBAAwB;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;YAUlB,OAAO;IAgCf,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAqD3B,gBAAgB,CAAC,EACrB,IAAI,EACJ,cAAc,EACd,cAAyB,GAC1B,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4DjD,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAY,EAAE,EAAE,iBAAiB,GAAG,MAAM;CAIrE"}
|
|
@@ -14,7 +14,7 @@ const baseAiGenProvider_service_1 = require("../baseAiGenProvider.service");
|
|
|
14
14
|
class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService {
|
|
15
15
|
constructor() {
|
|
16
16
|
super();
|
|
17
|
-
this.baseUrl = "https://api.runwayml.com/v1";
|
|
17
|
+
this.baseUrl = "https://api.dev.runwayml.com/v1";
|
|
18
18
|
if (!process.env.RUNWAYML_API_SECRET) {
|
|
19
19
|
throw new Error("Missing RUNWAYML_API_SECRET in environment variables");
|
|
20
20
|
}
|
|
@@ -25,6 +25,7 @@ class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
25
25
|
const headers = {
|
|
26
26
|
Authorization: `Bearer ${this.apiKey}`,
|
|
27
27
|
"Content-Type": "application/json",
|
|
28
|
+
"X-Runway-Version": "2024-11-06",
|
|
28
29
|
};
|
|
29
30
|
const response = await (0, axios_1.default)({
|
|
30
31
|
url,
|
|
@@ -45,8 +46,19 @@ class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
45
46
|
if (!modelId)
|
|
46
47
|
throw new Error(`Unknown modelKey: ${params.modelKey}`);
|
|
47
48
|
let run;
|
|
48
|
-
//
|
|
49
|
-
if (modelId === "
|
|
49
|
+
// TEXT → VIDEO (gen4.5)
|
|
50
|
+
if (modelId === "gen4.5") {
|
|
51
|
+
const ratio = (params.aspectRatio || "1280x720").replace("x", ":");
|
|
52
|
+
const body = {
|
|
53
|
+
model: "gen4.5",
|
|
54
|
+
promptText: params.prompt,
|
|
55
|
+
ratio,
|
|
56
|
+
duration: params.duration || 5,
|
|
57
|
+
};
|
|
58
|
+
run = await this.request("/text_to_video", "POST", body);
|
|
59
|
+
}
|
|
60
|
+
// IMAGE → VIDEO (gen4_turbo)
|
|
61
|
+
else if (modelId === "gen4_turbo") {
|
|
50
62
|
const body = {
|
|
51
63
|
model: "gen4_turbo",
|
|
52
64
|
promptText: params.prompt,
|
|
@@ -56,7 +68,7 @@ class RunwayService extends baseAiGenProvider_service_1.BaseAiGenProviderService
|
|
|
56
68
|
};
|
|
57
69
|
run = await this.request("/image-to-video", "POST", body);
|
|
58
70
|
}
|
|
59
|
-
// VIDEO → VIDEO
|
|
71
|
+
// VIDEO → VIDEO (gen4_aleph)
|
|
60
72
|
else if (modelId === "gen4_aleph") {
|
|
61
73
|
const body = {
|
|
62
74
|
model: "gen4_aleph",
|
|
@@ -10,8 +10,12 @@ export interface VideoGenerationParams {
|
|
|
10
10
|
duration?: number;
|
|
11
11
|
inputVideoUrl?: string;
|
|
12
12
|
inputImageUrl?: string;
|
|
13
|
+
inputAudioUrl?: string;
|
|
13
14
|
mode?: EVideoMode;
|
|
14
15
|
type?: "text-to-video" | "image-to-video" | "video-to-video";
|
|
16
|
+
audio?: boolean;
|
|
17
|
+
negativePrompt?: string;
|
|
18
|
+
multiClip?: boolean;
|
|
15
19
|
}
|
|
16
20
|
export interface VideoGenerationResult {
|
|
17
21
|
status: EVideoSceneStatus.TRIGGERED;
|
|
@@ -45,5 +49,7 @@ export interface CreditUsageParams {
|
|
|
45
49
|
aspectRatio?: string;
|
|
46
50
|
inputType?: "text" | "image" | "video";
|
|
47
51
|
outputType?: "text" | "image" | "video";
|
|
52
|
+
audio?: boolean;
|
|
53
|
+
multiClip?: boolean;
|
|
48
54
|
}
|
|
49
55
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -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,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credit.service.d.ts","sourceRoot":"","sources":["../../src/services/credit.service.ts"],"names":[],"mappings":"AAGA,qBAAa,aAAa;WACX,cAAc,CACzB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"credit.service.d.ts","sourceRoot":"","sources":["../../src/services/credit.service.ts"],"names":[],"mappings":"AAGA,qBAAa,aAAa;WACX,cAAc,CACzB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;WAyBH,aAAa,CACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;CAoBjB"}
|
|
@@ -25,5 +25,22 @@ class CreditService {
|
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
+
static async refundCredits(userId, creditsToRefund) {
|
|
29
|
+
if (creditsToRefund <= 0)
|
|
30
|
+
return;
|
|
31
|
+
await firebase_1.firestore.runTransaction(async (tx) => {
|
|
32
|
+
const userRef = firestore_service_1.FirestoreService.usersCol.doc(userId);
|
|
33
|
+
const snap = await tx.get(userRef);
|
|
34
|
+
if (!snap.exists) {
|
|
35
|
+
throw new Error("USER_NOT_FOUND");
|
|
36
|
+
}
|
|
37
|
+
const consumed = snap.data()?.credits?.consumed ?? 0;
|
|
38
|
+
// Never let consumed go below 0
|
|
39
|
+
const newConsumed = Math.max(0, consumed - creditsToRefund);
|
|
40
|
+
tx.update(userRef, {
|
|
41
|
+
"credits.consumed": newConsumed,
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
28
45
|
}
|
|
29
46
|
exports.CreditService = CreditService;
|
package/lib/services/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC"}
|
package/lib/services/index.js
CHANGED
package/lib/utils/helpers.js
CHANGED
|
@@ -49,8 +49,8 @@ const getPriceIdByType = (type, freq = types_1.ERENEWAL_FREQUENCY.MONTHLY) => {
|
|
|
49
49
|
};
|
|
50
50
|
exports.getPriceIdByType = getPriceIdByType;
|
|
51
51
|
const getCreditsFromCost = (cost) => {
|
|
52
|
-
const margin = 0.2;
|
|
53
|
-
const costPerCredit = 0.1;
|
|
52
|
+
const margin = 0.2; // 20% margin
|
|
53
|
+
const costPerCredit = 0.1; // multiple
|
|
54
54
|
const minCredits = 10;
|
|
55
55
|
if (cost <= 0)
|
|
56
56
|
return 0;
|
package/lib/utils/index.d.ts
CHANGED
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
|
package/lib/utils/index.js
CHANGED
|
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./helpers"), exports);
|
|
18
18
|
__exportStar(require("./logger"), exports);
|
|
19
|
+
__exportStar(require("./ttsUtils"), exports);
|
package/lib/utils/logger.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA0B1C;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAsExD;AAED,eAAO,MAAM,MAAM,gBAAyB,CAAC"}
|
package/lib/utils/logger.js
CHANGED
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.logger = void 0;
|
|
6
7
|
exports.createLogger = createLogger;
|
|
7
8
|
const winston_1 = __importDefault(require("winston"));
|
|
8
9
|
const winston_slack_webhook_transport_1 = __importDefault(require("winston-slack-webhook-transport"));
|
|
@@ -83,3 +84,4 @@ function createLogger(serviceName) {
|
|
|
83
84
|
exitOnError: false,
|
|
84
85
|
});
|
|
85
86
|
}
|
|
87
|
+
exports.logger = createLogger("shared");
|
package/package.json
CHANGED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
export declare enum EVideoGenModels {
|
|
2
|
-
GOOGLE_VEO_3_1_PREVIEW = "google-veo-3.1-preview",
|
|
3
|
-
GOOGLE_VEO_3_1__FAST_PREVIEW = "google-veo-3.1-fast-preview",
|
|
4
|
-
GOOGLE_VEO_3 = "google-veo-3",
|
|
5
|
-
GOOGLE_VEO_3_FAST = "google-veo-3-fast",
|
|
6
|
-
GOOGLE_VEO_2 = "google-veo-2",
|
|
7
|
-
RUNWAY_GEN4_TURBO = "runway-gen4-turbo",
|
|
8
|
-
RUNWAY_GEN4_ALEPH = "runway-gen4-aleph",
|
|
9
|
-
KLING_V1 = "kling-v1",
|
|
10
|
-
KLING_V1_6 = "kling-v1.6",
|
|
11
|
-
KLING_V2_MASTER = "kling-v2-master",
|
|
12
|
-
KLING_V2_1_MASTER = "kling-v2.1-master",
|
|
13
|
-
MINIMAX_HAILUO_02 = "minimax-hailuo-02",
|
|
14
|
-
T2V_01_DIRECTOR = "T2V-01-Director",
|
|
15
|
-
T2V_01 = "T2V-01",
|
|
16
|
-
AZURE_SORA = "azure-sora",
|
|
17
|
-
ALIBABA_WAN_2_5 = "alibaba-wan-2.5",
|
|
18
|
-
ALIBABA_WAN_2_2 = "alibaba-wan-2.2",
|
|
19
|
-
OPENAI_SORA_2 = "openai-sora-2",
|
|
20
|
-
OPENAI_SORA_2_PRO = "openai-sora-2-pro"
|
|
21
|
-
}
|
|
22
|
-
export declare const EImageGenModels: {
|
|
23
|
-
readonly OPENAI_DALLE_3: "openai-dalle-3";
|
|
24
|
-
readonly STABILITY_STABLE_DIFFUSION: "stability-stable-diffusion";
|
|
25
|
-
readonly MIDJOURNEY_V6: "midjourney-v6";
|
|
26
|
-
readonly FLUX_1_1: "flux-1.1";
|
|
27
|
-
readonly IDEOGRAM_1_0: "ideogram-1.0";
|
|
28
|
-
};
|
|
29
|
-
export declare enum ETextGenModels {
|
|
30
|
-
OPENAI_GPT_4O_MINI = "openai-gpt-4o-mini",
|
|
31
|
-
OPENAI_GPT_5_MINI = "openai-gpt-5-mini"
|
|
32
|
-
}
|
|
33
|
-
export type TAiGenModel = EVideoGenModels | ETextGenModels;
|
|
34
|
-
type GenerationType = "text-to-video" | "image-to-video" | "video-to-video" | "text-to-text" | "image-to-text";
|
|
35
|
-
interface ISchemaField {
|
|
36
|
-
required?: boolean;
|
|
37
|
-
allowedValues?: string[] | number[];
|
|
38
|
-
default?: string | number;
|
|
39
|
-
}
|
|
40
|
-
interface ICostTable {
|
|
41
|
-
[key: string]: {
|
|
42
|
-
[key: number]: number;
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
interface IModelSchema {
|
|
46
|
-
modelId: string;
|
|
47
|
-
type: GenerationType[];
|
|
48
|
-
fields: Record<string, ISchemaField>;
|
|
49
|
-
resolutionRules?: Record<string, string[]>;
|
|
50
|
-
durationRules?: Record<number, string[]>;
|
|
51
|
-
concurrentRequests?: number;
|
|
52
|
-
requestPerMin?: number;
|
|
53
|
-
requestPerDay?: number;
|
|
54
|
-
cost?: {
|
|
55
|
-
perSecond?: number;
|
|
56
|
-
per1KTokens?: number;
|
|
57
|
-
table?: ICostTable;
|
|
58
|
-
fixed?: number;
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
export declare const aiModelConfigs: Record<TAiGenModel, IModelSchema>;
|
|
62
|
-
export {};
|
|
63
|
-
//# sourceMappingURL=aiModels.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aiModels.d.ts","sourceRoot":"","sources":["../../src/globals/aiModels.ts"],"names":[],"mappings":"AAwBA,oBAAY,eAAe;IACzB,sBAAsB,2BAA2B;IACjD,4BAA4B,gCAAgC;IAC5D,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;CACxC;AAaD,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAaX,oBAAY,cAAc;IAExB,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;CAIxC;AAID,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC;AAG3D,KAAK,cAAc,GACf,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,eAAe,CAAC;AAEpB,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,UAAU,UAAU;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;CACH;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAErC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAGD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,CAid5D,CAAC"}
|
package/lib/globals/aiModels.js
DELETED
|
@@ -1,529 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.aiModelConfigs = exports.ETextGenModels = exports.EImageGenModels = exports.EVideoGenModels = void 0;
|
|
4
|
-
const types_1 = require("../services/aiGen/providers/runway/types");
|
|
5
|
-
// export const EVideoGenModels = {
|
|
6
|
-
// GOOGLE_VEO_3: "google-veo-3",
|
|
7
|
-
// GOOGLE_VEO_3_FAST: "google-veo-3-fast",
|
|
8
|
-
// GOOGLE_VEO_2: "google-veo-2",
|
|
9
|
-
// RUNWAY_GEN4_TURBO: "runway-gen4-turbo",
|
|
10
|
-
// RUNWAY_GEN4_ALEPH: "runway-gen4-aleph",
|
|
11
|
-
// KLING_V1: "kling-v1",
|
|
12
|
-
// KLING_V1_6: "kling-v1.6",
|
|
13
|
-
// KLING_V2_MASTER: "kling-v2-master",
|
|
14
|
-
// KLING_V2_1_MASTER: "kling-v2.1-master",
|
|
15
|
-
// MINIMAX_HAILUO_02: "minimax-hailuo-02",
|
|
16
|
-
// T2V_01_DIRECTOR: "T2V-01-Director",
|
|
17
|
-
// T2V_01: "T2V-01",
|
|
18
|
-
// OPENAI_SORA: "openai-sora",
|
|
19
|
-
// } as const;
|
|
20
|
-
var EVideoGenModels;
|
|
21
|
-
(function (EVideoGenModels) {
|
|
22
|
-
EVideoGenModels["GOOGLE_VEO_3_1_PREVIEW"] = "google-veo-3.1-preview";
|
|
23
|
-
EVideoGenModels["GOOGLE_VEO_3_1__FAST_PREVIEW"] = "google-veo-3.1-fast-preview";
|
|
24
|
-
EVideoGenModels["GOOGLE_VEO_3"] = "google-veo-3";
|
|
25
|
-
EVideoGenModels["GOOGLE_VEO_3_FAST"] = "google-veo-3-fast";
|
|
26
|
-
EVideoGenModels["GOOGLE_VEO_2"] = "google-veo-2";
|
|
27
|
-
EVideoGenModels["RUNWAY_GEN4_TURBO"] = "runway-gen4-turbo";
|
|
28
|
-
EVideoGenModels["RUNWAY_GEN4_ALEPH"] = "runway-gen4-aleph";
|
|
29
|
-
EVideoGenModels["KLING_V1"] = "kling-v1";
|
|
30
|
-
EVideoGenModels["KLING_V1_6"] = "kling-v1.6";
|
|
31
|
-
EVideoGenModels["KLING_V2_MASTER"] = "kling-v2-master";
|
|
32
|
-
EVideoGenModels["KLING_V2_1_MASTER"] = "kling-v2.1-master";
|
|
33
|
-
EVideoGenModels["MINIMAX_HAILUO_02"] = "minimax-hailuo-02";
|
|
34
|
-
EVideoGenModels["T2V_01_DIRECTOR"] = "T2V-01-Director";
|
|
35
|
-
EVideoGenModels["T2V_01"] = "T2V-01";
|
|
36
|
-
EVideoGenModels["AZURE_SORA"] = "azure-sora";
|
|
37
|
-
EVideoGenModels["ALIBABA_WAN_2_5"] = "alibaba-wan-2.5";
|
|
38
|
-
EVideoGenModels["ALIBABA_WAN_2_2"] = "alibaba-wan-2.2";
|
|
39
|
-
EVideoGenModels["OPENAI_SORA_2"] = "openai-sora-2";
|
|
40
|
-
EVideoGenModels["OPENAI_SORA_2_PRO"] = "openai-sora-2-pro";
|
|
41
|
-
})(EVideoGenModels || (exports.EVideoGenModels = EVideoGenModels = {}));
|
|
42
|
-
// export type TVideoGenModel =
|
|
43
|
-
// (typeof EVideoGenModels)[keyof typeof EVideoGenModels];
|
|
44
|
-
// export const EImageGenModels = {
|
|
45
|
-
// OPENAI_DALLE_3: "openai-dalle-3",
|
|
46
|
-
// STABILITY_STABLE_DIFFUSION: "stability-stable-diffusion",
|
|
47
|
-
// MIDJOURNEY_V6: "midjourney-v6",
|
|
48
|
-
// FLUX_1_1: "flux-1.1",
|
|
49
|
-
// IDEOGRAM_1_0: "ideogram-1.0",
|
|
50
|
-
// } as const;
|
|
51
|
-
exports.EImageGenModels = {
|
|
52
|
-
OPENAI_DALLE_3: "openai-dalle-3",
|
|
53
|
-
STABILITY_STABLE_DIFFUSION: "stability-stable-diffusion",
|
|
54
|
-
MIDJOURNEY_V6: "midjourney-v6",
|
|
55
|
-
FLUX_1_1: "flux-1.1",
|
|
56
|
-
IDEOGRAM_1_0: "ideogram-1.0",
|
|
57
|
-
};
|
|
58
|
-
// export type ImageGenModel =
|
|
59
|
-
// (typeof EImageGenModels)[keyof typeof EImageGenModels];
|
|
60
|
-
// export const ETextGenModels = {
|
|
61
|
-
// // OPENAI_GPT_4O: "openai-gpt-4o",
|
|
62
|
-
// OPENAI_GPT_4O_MINI: "openai-gpt-4o-mini",
|
|
63
|
-
// // OPENAI_GPT_3_5_TURBO: "openai-gpt-3.5-turbo",
|
|
64
|
-
// // ANTHROPIC_CLAUDE_3: "anthropic-claude-3",
|
|
65
|
-
// // ANTHROPIC_CLAUDE_INSTANT_100K: "anthropic-claude-instant-100k",
|
|
66
|
-
// } as const;
|
|
67
|
-
var ETextGenModels;
|
|
68
|
-
(function (ETextGenModels) {
|
|
69
|
-
// OPENAI_GPT_4O = "openai-gpt-4o",
|
|
70
|
-
ETextGenModels["OPENAI_GPT_4O_MINI"] = "openai-gpt-4o-mini";
|
|
71
|
-
ETextGenModels["OPENAI_GPT_5_MINI"] = "openai-gpt-5-mini";
|
|
72
|
-
// OPENAI_GPT_3_5_TURBO = "openai-gpt-3.5-turbo",
|
|
73
|
-
// ANTHROPIC_CLAUDE_3 = "anthropic-claude-3",
|
|
74
|
-
// ANTHROPIC_CLAUDE_INSTANT_100K = "anthropic-claude-instant-100k",
|
|
75
|
-
})(ETextGenModels || (exports.ETextGenModels = ETextGenModels = {}));
|
|
76
|
-
// Combined config
|
|
77
|
-
exports.aiModelConfigs = {
|
|
78
|
-
// --- Google models ---
|
|
79
|
-
"google-veo-3.1-preview": {
|
|
80
|
-
modelId: "veo-3.1-generate-preview",
|
|
81
|
-
type: ["text-to-video", "image-to-video"],
|
|
82
|
-
fields: {
|
|
83
|
-
prompt: { required: true },
|
|
84
|
-
aspectRatio: { allowedValues: ["16:9", "9:16"] }, // 16:9 as default
|
|
85
|
-
resolution: { allowedValues: ["720p", "1080p"] }, // 720p as default
|
|
86
|
-
duration: { allowedValues: [4, 6, 8] }, // in seconds, 8s as default
|
|
87
|
-
imageUrl: {},
|
|
88
|
-
negative_prompt: {},
|
|
89
|
-
},
|
|
90
|
-
durationRules: {
|
|
91
|
-
4: ["720p", "1080p"],
|
|
92
|
-
6: ["720p", "1080p"],
|
|
93
|
-
8: ["1080p"],
|
|
94
|
-
},
|
|
95
|
-
requestPerMin: 10,
|
|
96
|
-
cost: {
|
|
97
|
-
perSecond: 0.4,
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
"google-veo-3.1-fast-preview": {
|
|
101
|
-
modelId: "veo-3.1-fast-generate-preview",
|
|
102
|
-
type: ["text-to-video", "image-to-video"],
|
|
103
|
-
fields: {
|
|
104
|
-
prompt: { required: true },
|
|
105
|
-
aspectRatio: { allowedValues: ["16:9", "9:16"] }, // 16:9 as default
|
|
106
|
-
resolution: { allowedValues: ["720p", "1080p"] }, // 720p as default
|
|
107
|
-
duration: { allowedValues: [4, 6, 8] }, // in seconds, 8s as default
|
|
108
|
-
imageUrl: {},
|
|
109
|
-
negative_prompt: {},
|
|
110
|
-
},
|
|
111
|
-
durationRules: {
|
|
112
|
-
4: ["720p", "1080p"],
|
|
113
|
-
6: ["720p", "1080p"],
|
|
114
|
-
8: ["1080p"],
|
|
115
|
-
},
|
|
116
|
-
requestPerMin: 10,
|
|
117
|
-
cost: {
|
|
118
|
-
perSecond: 0.15,
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
"google-veo-3": {
|
|
122
|
-
modelId: "veo-3.0-generate-001",
|
|
123
|
-
type: ["text-to-video", "image-to-video"],
|
|
124
|
-
fields: {
|
|
125
|
-
prompt: { required: true },
|
|
126
|
-
aspectRatio: { allowedValues: ["16:9", "9:16"] }, // 16:9 as default
|
|
127
|
-
resolution: { allowedValues: ["720p", "1080p"] }, // 720p as default
|
|
128
|
-
duration: { allowedValues: [4, 6, 8] }, // in seconds, 8s as default
|
|
129
|
-
imageUrl: {},
|
|
130
|
-
negative_prompt: {},
|
|
131
|
-
},
|
|
132
|
-
resolutionRules: {
|
|
133
|
-
"720p": ["16:9", "9:16"],
|
|
134
|
-
"1080p": ["16:9"],
|
|
135
|
-
},
|
|
136
|
-
// concurrentRequests: 1,
|
|
137
|
-
requestPerMin: 10,
|
|
138
|
-
cost: {
|
|
139
|
-
perSecond: 0.4,
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
"google-veo-3-fast": {
|
|
143
|
-
modelId: "veo-3.0-fast-generate-001",
|
|
144
|
-
type: ["text-to-video", "image-to-video"],
|
|
145
|
-
fields: {
|
|
146
|
-
prompt: { required: true },
|
|
147
|
-
aspectRatio: { allowedValues: ["16:9", "9:16"] }, // 16:9 as default
|
|
148
|
-
resolution: { allowedValues: ["720p", "1080p"] }, // 720p as default
|
|
149
|
-
duration: { allowedValues: [4, 6, 8] }, // in seconds, 8s as default
|
|
150
|
-
imageUrl: {},
|
|
151
|
-
negative_prompt: {},
|
|
152
|
-
},
|
|
153
|
-
resolutionRules: {
|
|
154
|
-
"720p": ["16:9", "9:16"],
|
|
155
|
-
"1080p": ["16:9"],
|
|
156
|
-
},
|
|
157
|
-
requestPerMin: 10,
|
|
158
|
-
cost: {
|
|
159
|
-
perSecond: 0.15,
|
|
160
|
-
},
|
|
161
|
-
},
|
|
162
|
-
"google-veo-2": {
|
|
163
|
-
modelId: "veo-2.0-generate-001",
|
|
164
|
-
type: ["text-to-video", "image-to-video"],
|
|
165
|
-
fields: {
|
|
166
|
-
prompt: { required: true },
|
|
167
|
-
aspectRatio: { allowedValues: ["16:9", "9:16"] }, // 16:9 as default
|
|
168
|
-
resolution: { allowedValues: ["720p"] }, // 720p as default
|
|
169
|
-
duration: { allowedValues: [5, 6, 8] }, // in seconds, 8s as default
|
|
170
|
-
imageUrl: {},
|
|
171
|
-
negative_prompt: {},
|
|
172
|
-
},
|
|
173
|
-
resolutionRules: {
|
|
174
|
-
"720p": ["16:9", "9:16"],
|
|
175
|
-
},
|
|
176
|
-
requestPerMin: 10,
|
|
177
|
-
cost: {
|
|
178
|
-
perSecond: 0.35,
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
// --- Runway models ---
|
|
182
|
-
"runway-gen4-turbo": {
|
|
183
|
-
modelId: "gen4_turbo",
|
|
184
|
-
type: ["image-to-video"],
|
|
185
|
-
fields: {
|
|
186
|
-
prompt: { required: true },
|
|
187
|
-
imageUrl: { required: true },
|
|
188
|
-
aspectRatio: {
|
|
189
|
-
allowedValues: types_1.GEN4_TURBO_RATIOS,
|
|
190
|
-
},
|
|
191
|
-
duration: {
|
|
192
|
-
allowedValues: types_1.GEN4_TURBO_DURATIONS,
|
|
193
|
-
}, // in seconds
|
|
194
|
-
},
|
|
195
|
-
// parallelRequests: 1,
|
|
196
|
-
cost: {
|
|
197
|
-
perSecond: 0.05,
|
|
198
|
-
},
|
|
199
|
-
},
|
|
200
|
-
"runway-gen4-aleph": {
|
|
201
|
-
modelId: "gen4_aleph",
|
|
202
|
-
type: ["video-to-video"],
|
|
203
|
-
fields: {
|
|
204
|
-
prompt: { required: true },
|
|
205
|
-
videoUrl: { required: true },
|
|
206
|
-
aspecetRatio: {
|
|
207
|
-
allowedValues: types_1.GEN4_ALEPH_RATIOS,
|
|
208
|
-
},
|
|
209
|
-
duration: { allowedValues: types_1.GEN4_ALEPH_DURATIONS }, // in seconds
|
|
210
|
-
},
|
|
211
|
-
// parallelRequests: 1,
|
|
212
|
-
cost: {
|
|
213
|
-
perSecond: 0.15,
|
|
214
|
-
},
|
|
215
|
-
},
|
|
216
|
-
/// --- Kling models ---
|
|
217
|
-
"kling-v1": {
|
|
218
|
-
modelId: "kling-v1",
|
|
219
|
-
type: ["text-to-video"],
|
|
220
|
-
fields: {
|
|
221
|
-
prompt: { required: true },
|
|
222
|
-
aspectRatio: { allowedValues: ["16:9", "9:16", "1:1"] }, // default 16:9
|
|
223
|
-
duration: { allowedValues: [5, 10] }, // seconds (5 or 10)
|
|
224
|
-
cfg_scale: {}, // float, probably between 0 and 1
|
|
225
|
-
negative_prompt: {},
|
|
226
|
-
mode: { allowedValues: ["std", "pro"] },
|
|
227
|
-
},
|
|
228
|
-
concurrentRequests: 3,
|
|
229
|
-
// "std" = Standard mode, "pro" = Professional mode
|
|
230
|
-
cost: {
|
|
231
|
-
table: {
|
|
232
|
-
std: { 5: 0.14, 10: 0.28 },
|
|
233
|
-
pro: { 5: 0.49, 10: 0.98 },
|
|
234
|
-
},
|
|
235
|
-
},
|
|
236
|
-
},
|
|
237
|
-
"kling-v1.6": {
|
|
238
|
-
modelId: "kling-v1-6",
|
|
239
|
-
type: ["text-to-video"],
|
|
240
|
-
fields: {
|
|
241
|
-
prompt: { required: true },
|
|
242
|
-
aspectRatio: { allowedValues: ["16:9", "9:16", "1:1"] }, // assumed similar to v1
|
|
243
|
-
duration: { allowedValues: [5, 10] }, // likely same limits
|
|
244
|
-
cfg_scale: {},
|
|
245
|
-
mode: { allowedValues: ["std", "pro"] },
|
|
246
|
-
negative_prompt: {},
|
|
247
|
-
},
|
|
248
|
-
concurrentRequests: 3,
|
|
249
|
-
cost: {
|
|
250
|
-
table: {
|
|
251
|
-
std: { 5: 0.28, 10: 0.56 },
|
|
252
|
-
pro: { 5: 0.49, 10: 0.98 },
|
|
253
|
-
},
|
|
254
|
-
},
|
|
255
|
-
},
|
|
256
|
-
"kling-v2-master": {
|
|
257
|
-
modelId: "kling-v2-master",
|
|
258
|
-
type: ["text-to-video"],
|
|
259
|
-
fields: {
|
|
260
|
-
prompt: { required: true },
|
|
261
|
-
aspectRatio: { allowedValues: ["16:9", "9:16", "1:1"] },
|
|
262
|
-
duration: { allowedValues: [5, 10] },
|
|
263
|
-
mode: { allowedValues: ["pro"] },
|
|
264
|
-
negative_prompt: {},
|
|
265
|
-
},
|
|
266
|
-
concurrentRequests: 3,
|
|
267
|
-
cost: {
|
|
268
|
-
table: {
|
|
269
|
-
pro: { 5: 1.4, 10: 2.8 },
|
|
270
|
-
},
|
|
271
|
-
},
|
|
272
|
-
},
|
|
273
|
-
"kling-v2.1-master": {
|
|
274
|
-
modelId: "kling-v2-1-master",
|
|
275
|
-
type: ["text-to-video"],
|
|
276
|
-
fields: {
|
|
277
|
-
prompt: { required: true },
|
|
278
|
-
aspectRatio: { allowedValues: ["16:9", "9:16", "1:1"] },
|
|
279
|
-
duration: { allowedValues: [5, 10] },
|
|
280
|
-
mode: { allowedValues: ["pro"] },
|
|
281
|
-
negative_prompt: {},
|
|
282
|
-
},
|
|
283
|
-
concurrentRequests: 3,
|
|
284
|
-
cost: {
|
|
285
|
-
table: {
|
|
286
|
-
pro: { 5: 1.4, 10: 2.8 },
|
|
287
|
-
},
|
|
288
|
-
},
|
|
289
|
-
},
|
|
290
|
-
// --- MINIMAX model ---
|
|
291
|
-
"minimax-hailuo-02": {
|
|
292
|
-
modelId: "MiniMax-Hailuo-02",
|
|
293
|
-
type: ["text-to-video"],
|
|
294
|
-
fields: {
|
|
295
|
-
prompt: { required: true },
|
|
296
|
-
resolution: { allowedValues: ["768P", "1080P"] }, // 768P as default
|
|
297
|
-
duration: { allowedValues: [6, 10] }, // in seconds, 6s as default
|
|
298
|
-
},
|
|
299
|
-
durationRules: {
|
|
300
|
-
6: ["768P", "1080P"],
|
|
301
|
-
10: ["768P"],
|
|
302
|
-
},
|
|
303
|
-
// parallelRequests: 1,
|
|
304
|
-
cost: {
|
|
305
|
-
table: {
|
|
306
|
-
"768P": { 6: 0.28, 10: 0.56 },
|
|
307
|
-
"1080P": { 6: 0.49 },
|
|
308
|
-
},
|
|
309
|
-
},
|
|
310
|
-
},
|
|
311
|
-
"T2V-01-Director": {
|
|
312
|
-
modelId: "T2V-01-Director",
|
|
313
|
-
type: ["text-to-video"],
|
|
314
|
-
fields: {
|
|
315
|
-
prompt: { required: true },
|
|
316
|
-
resolution: { allowedValues: ["720P"] }, // 720P as default
|
|
317
|
-
duration: { allowedValues: [6] }, // in seconds, 5s as default
|
|
318
|
-
},
|
|
319
|
-
durationRules: {
|
|
320
|
-
6: ["720P"],
|
|
321
|
-
},
|
|
322
|
-
// parallelRequests: 1,
|
|
323
|
-
cost: {
|
|
324
|
-
fixed: 0.28, // cost per video generation
|
|
325
|
-
},
|
|
326
|
-
},
|
|
327
|
-
"T2V-01": {
|
|
328
|
-
modelId: "T2V-01",
|
|
329
|
-
type: ["text-to-video"],
|
|
330
|
-
fields: {
|
|
331
|
-
prompt: { required: true },
|
|
332
|
-
resolution: { allowedValues: ["720P"] }, // 720P as default
|
|
333
|
-
duration: { allowedValues: [6] }, // in seconds, 5s as default
|
|
334
|
-
},
|
|
335
|
-
durationRules: {
|
|
336
|
-
6: ["720P"],
|
|
337
|
-
},
|
|
338
|
-
// parallelRequests: 1,
|
|
339
|
-
cost: { fixed: 0.28 },
|
|
340
|
-
},
|
|
341
|
-
// --- Alibaba models ---
|
|
342
|
-
"alibaba-wan-2.5": {
|
|
343
|
-
modelId: "wan2.5-t2v-preview",
|
|
344
|
-
type: ["text-to-video"],
|
|
345
|
-
fields: {
|
|
346
|
-
prompt: { required: true },
|
|
347
|
-
resolution: {
|
|
348
|
-
allowedValues: ["480p", "720p", "1080p"],
|
|
349
|
-
default: "1080p",
|
|
350
|
-
},
|
|
351
|
-
aspectRatio: {
|
|
352
|
-
allowedValues: ["16:9", "9:16", "1:1", "4:3", "3:4"],
|
|
353
|
-
default: "16:9",
|
|
354
|
-
},
|
|
355
|
-
duration: {
|
|
356
|
-
allowedValues: [5, 10],
|
|
357
|
-
default: 5,
|
|
358
|
-
},
|
|
359
|
-
},
|
|
360
|
-
resolutionRules: {
|
|
361
|
-
"480p": ["16:9", "9:16", "1:1"],
|
|
362
|
-
"720p": ["16:9", "9:16", "1:1", "4:3", "3:4"],
|
|
363
|
-
"1080p": ["16:9", "1:1", "4:3", "3:4"],
|
|
364
|
-
},
|
|
365
|
-
cost: {
|
|
366
|
-
table: {
|
|
367
|
-
"832x480": { 5: 0.25, 10: 0.5 },
|
|
368
|
-
"480x832": { 5: 0.25, 10: 0.5 },
|
|
369
|
-
"624x624": { 5: 0.25, 10: 0.5 },
|
|
370
|
-
"1280x720": { 5: 0.5, 10: 1.0 },
|
|
371
|
-
"720x1280": { 5: 0.5, 10: 1.0 },
|
|
372
|
-
"960x960": { 5: 0.5, 10: 1.0 },
|
|
373
|
-
"1088x832": { 5: 0.5, 10: 1.0 },
|
|
374
|
-
"832x1088": { 5: 0.5, 10: 1.0 },
|
|
375
|
-
"1920x1080": { 5: 0.75, 10: 1.5 },
|
|
376
|
-
"1080x1920": { 5: 0.75, 10: 1.5 },
|
|
377
|
-
"1440x1440": { 5: 0.75, 10: 1.5 },
|
|
378
|
-
"1632x1248": { 5: 0.75, 10: 1.5 },
|
|
379
|
-
"1248x1632": { 5: 0.75, 10: 1.5 },
|
|
380
|
-
},
|
|
381
|
-
},
|
|
382
|
-
},
|
|
383
|
-
"alibaba-wan-2.2": {
|
|
384
|
-
modelId: "wan2.2-t2v-plus",
|
|
385
|
-
type: ["text-to-video"],
|
|
386
|
-
fields: {
|
|
387
|
-
prompt: { required: true },
|
|
388
|
-
resolution: {
|
|
389
|
-
allowedValues: ["480p", "1080p"],
|
|
390
|
-
},
|
|
391
|
-
aspectRatio: {
|
|
392
|
-
allowedValues: ["16:9", "9:16", "1:1", "4:3", "3:4"],
|
|
393
|
-
},
|
|
394
|
-
duration: {
|
|
395
|
-
allowedValues: [5],
|
|
396
|
-
},
|
|
397
|
-
},
|
|
398
|
-
resolutionRules: {
|
|
399
|
-
"480p": ["16:9", "9:16", "1:1"],
|
|
400
|
-
"1080p": ["16:9", "1:1", "4:3", "3:4"],
|
|
401
|
-
},
|
|
402
|
-
cost: {
|
|
403
|
-
table: {
|
|
404
|
-
"832x480": { 5: 0.1 }, // 0.02/sec × 5s
|
|
405
|
-
"480x832": { 5: 0.1 },
|
|
406
|
-
"624x624": { 5: 0.1 },
|
|
407
|
-
"1920x1080": { 5: 0.5 }, // 0.10/sec × 5s
|
|
408
|
-
"1080x1920": { 5: 0.5 },
|
|
409
|
-
"1440x1440": { 5: 0.5 },
|
|
410
|
-
"1632x1248": { 5: 0.5 },
|
|
411
|
-
"1248x1632": { 5: 0.5 },
|
|
412
|
-
},
|
|
413
|
-
},
|
|
414
|
-
},
|
|
415
|
-
"openai-sora-2": {
|
|
416
|
-
modelId: "sora-2",
|
|
417
|
-
type: ["text-to-video", "image-to-video", "video-to-video"],
|
|
418
|
-
fields: {
|
|
419
|
-
prompt: { required: true },
|
|
420
|
-
duration: {
|
|
421
|
-
allowedValues: [4, 8, 12], // in seconds
|
|
422
|
-
default: 4,
|
|
423
|
-
},
|
|
424
|
-
dimensions: {
|
|
425
|
-
allowedValues: ["720x1280", "1280x720", "1024x1792", "1792x1024"],
|
|
426
|
-
default: "720x1280",
|
|
427
|
-
},
|
|
428
|
-
},
|
|
429
|
-
cost: {
|
|
430
|
-
table: {
|
|
431
|
-
"720x1280": { 4: 0.4, 8: 0.8, 12: 1.2 },
|
|
432
|
-
"1280x720": { 4: 0.4, 8: 0.8, 12: 1.2 },
|
|
433
|
-
"1024x1792": { 4: 0.4, 8: 0.8, 12: 1.2 },
|
|
434
|
-
"1792x1024": { 4: 0.4, 8: 0.8, 12: 1.2 },
|
|
435
|
-
},
|
|
436
|
-
},
|
|
437
|
-
requestPerMin: 25,
|
|
438
|
-
},
|
|
439
|
-
"openai-sora-2-pro": {
|
|
440
|
-
modelId: "sora-2-pro",
|
|
441
|
-
type: ["text-to-video", "image-to-video", "video-to-video"],
|
|
442
|
-
fields: {
|
|
443
|
-
prompt: { required: true },
|
|
444
|
-
duration: {
|
|
445
|
-
allowedValues: [4, 8, 12], // in seconds
|
|
446
|
-
default: 4,
|
|
447
|
-
},
|
|
448
|
-
dimensions: {
|
|
449
|
-
allowedValues: ["720x1280", "1280x720", "1024x1792", "1792x1024"],
|
|
450
|
-
default: "720x1280",
|
|
451
|
-
},
|
|
452
|
-
},
|
|
453
|
-
cost: {
|
|
454
|
-
table: {
|
|
455
|
-
"720x1280": { 4: 1.2, 8: 2.4, 12: 3.6 },
|
|
456
|
-
"1280x720": { 4: 1.2, 8: 2.4, 12: 3.6 },
|
|
457
|
-
"1024x1792": { 4: 1.2, 8: 2.4, 12: 3.6 },
|
|
458
|
-
"1792x1024": { 4: 1.2, 8: 2.4, 12: 3.6 },
|
|
459
|
-
},
|
|
460
|
-
},
|
|
461
|
-
requestPerMin: 10,
|
|
462
|
-
},
|
|
463
|
-
"azure-sora": {
|
|
464
|
-
modelId: "sora",
|
|
465
|
-
type: ["text-to-video", "image-to-video", "video-to-video"],
|
|
466
|
-
fields: {
|
|
467
|
-
prompt: { required: true },
|
|
468
|
-
dimensions: {
|
|
469
|
-
allowedValues: [
|
|
470
|
-
"480x480",
|
|
471
|
-
"480x854",
|
|
472
|
-
"854x480",
|
|
473
|
-
"720x720",
|
|
474
|
-
"720x1280",
|
|
475
|
-
"1280x720",
|
|
476
|
-
"1080x1080",
|
|
477
|
-
"1080x1920",
|
|
478
|
-
"1920x1080",
|
|
479
|
-
],
|
|
480
|
-
default: "480x480",
|
|
481
|
-
},
|
|
482
|
-
duration: {
|
|
483
|
-
allowedValues: [1, 5, 10, 15, 20], // in seconds
|
|
484
|
-
default: 5,
|
|
485
|
-
},
|
|
486
|
-
imageUrl: { required: false }, // up to 2
|
|
487
|
-
videoUrl: { required: false }, // up to 5s
|
|
488
|
-
},
|
|
489
|
-
// parallelRequests: 1,
|
|
490
|
-
cost: {
|
|
491
|
-
table: {
|
|
492
|
-
"480x480": { 5: 0.15, 10: 0.15, 15: 0.15, 20: 0.15 },
|
|
493
|
-
"480x854": { 5: 0.2, 10: 0.2, 15: 0.2, 20: 0.2 },
|
|
494
|
-
"720x720": { 5: 0.3, 10: 0.3, 15: 0.3, 20: 0.3 },
|
|
495
|
-
"1280x720": { 5: 0.45, 10: 0.5, 15: 0.65, 20: 0.75 },
|
|
496
|
-
"1080x1080": { 5: 0.6, 10: 0.75, 15: 1.1, 20: 1.35 },
|
|
497
|
-
"1920x1080": { 5: 1.3, 10: 1.85, 15: 2.9, 20: 3.6 },
|
|
498
|
-
},
|
|
499
|
-
},
|
|
500
|
-
},
|
|
501
|
-
// --- TEXT GEN models ---
|
|
502
|
-
"openai-gpt-4o-mini": {
|
|
503
|
-
modelId: "gpt-4o-mini",
|
|
504
|
-
type: ["text-to-text", "image-to-text"],
|
|
505
|
-
fields: {
|
|
506
|
-
prompt: { required: true },
|
|
507
|
-
maxOutputTokens: { default: 16384 },
|
|
508
|
-
contextWindowSize: { default: 128000 },
|
|
509
|
-
temperature: { default: 1.0 },
|
|
510
|
-
topP: { default: 1.0 },
|
|
511
|
-
frequencyPenalty: { default: 0.0 },
|
|
512
|
-
presencePenalty: { default: 0.0 },
|
|
513
|
-
},
|
|
514
|
-
},
|
|
515
|
-
"openai-gpt-5-mini": {
|
|
516
|
-
modelId: "gpt-5-mini",
|
|
517
|
-
type: ["text-to-text", "image-to-text"],
|
|
518
|
-
fields: {
|
|
519
|
-
prompt: { required: true },
|
|
520
|
-
maxOutputTokens: { default: 128000 },
|
|
521
|
-
contextWindowSize: { default: 400000 },
|
|
522
|
-
temperature: { default: 1.0 },
|
|
523
|
-
topP: { default: 1.0 },
|
|
524
|
-
frequencyPenalty: { default: 0.0 },
|
|
525
|
-
presencePenalty: { default: 0.0 },
|
|
526
|
-
reasoningEffort: { default: "medium" }, // 'minimal' | 'low' | 'medium' | 'high'
|
|
527
|
-
},
|
|
528
|
-
},
|
|
529
|
-
};
|