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.
Files changed (36) hide show
  1. package/lib/globals/index.d.ts +1 -0
  2. package/lib/globals/index.d.ts.map +1 -1
  3. package/lib/globals/index.js +1 -0
  4. package/lib/models/user.model.d.ts +2 -0
  5. package/lib/models/user.model.d.ts.map +1 -1
  6. package/lib/models/video.model.d.ts +9 -0
  7. package/lib/models/video.model.d.ts.map +1 -1
  8. package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
  9. package/lib/services/aiGen/aiGenFactory.service.js +36 -12
  10. package/lib/services/aiGen/providers/google/google.service.js +1 -1
  11. package/lib/services/aiGen/providers/kling/kling.service.d.ts +7 -2
  12. package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
  13. package/lib/services/aiGen/providers/kling/kling.service.js +126 -10
  14. package/lib/services/aiGen/providers/kling/types.d.ts +13 -0
  15. package/lib/services/aiGen/providers/kling/types.d.ts.map +1 -1
  16. package/lib/services/aiGen/providers/runway/runway.service.d.ts.map +1 -1
  17. package/lib/services/aiGen/providers/runway/runway.service.js +16 -4
  18. package/lib/services/aiGen/providers/types.d.ts +6 -0
  19. package/lib/services/aiGen/providers/types.d.ts.map +1 -1
  20. package/lib/services/credit.service.d.ts +1 -0
  21. package/lib/services/credit.service.d.ts.map +1 -1
  22. package/lib/services/credit.service.js +17 -0
  23. package/lib/services/index.d.ts +1 -0
  24. package/lib/services/index.d.ts.map +1 -1
  25. package/lib/services/index.js +1 -0
  26. package/lib/utils/helpers.js +2 -2
  27. package/lib/utils/index.d.ts +1 -0
  28. package/lib/utils/index.d.ts.map +1 -1
  29. package/lib/utils/index.js +1 -0
  30. package/lib/utils/logger.d.ts +2 -1
  31. package/lib/utils/logger.d.ts.map +1 -1
  32. package/lib/utils/logger.js +2 -0
  33. package/package.json +1 -1
  34. package/lib/globals/aiModels.d.ts +0 -63
  35. package/lib/globals/aiModels.d.ts.map +0 -1
  36. package/lib/globals/aiModels.js +0 -529
@@ -2,5 +2,6 @@ export * from "./aiModels";
2
2
  export * from "./config";
3
3
  export * from "./plans";
4
4
  export * from "./schemas";
5
+ export * from "./ttsModels";
5
6
  export * from "./types";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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);
@@ -40,5 +40,7 @@ export interface IUserSubscription {
40
40
  trialUsed?: boolean;
41
41
  trialStart?: number | null;
42
42
  trialEnd?: number | null;
43
+ cancelAt?: number | null;
44
+ nextCreditRefreshAt?: number | null;
43
45
  }
44
46
  //# sourceMappingURL=user.model.d.ts.map
@@ -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;CAO1B"}
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,EAAe,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnE,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,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,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;IAGvB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;CACvB"}
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;AAUhC,KAAK,uBAAuB,GAAG,UAAU,wBAAwB,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf,uBAAuB,CAqBxB,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,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
- const alibaba_1 = require("./providers/alibaba/alibaba");
11
- const azure_1 = require("./providers/azure");
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
- "google-veo-3.1-preview": google_service_1.GoogleService,
14
- "google-veo-3.1-fast-preview": google_service_1.GoogleService,
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
- "kling-v1": kling_service_1.KlingService,
21
- "kling-v1.6": kling_service_1.KlingService,
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
- "T2V-01": minimax_service_1.MinimaxService,
25
- "T2V-01-Director": minimax_service_1.MinimaxService,
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
- "azure-sora": azure_1.AzureService,
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
- "alibaba-wan-2.5": alibaba_1.AlibabaService,
31
- "alibaba-wan-2.2": alibaba_1.AlibabaService,
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 timeout;
5
+ private readonly generateTimeout;
6
+ private readonly statusTimeout;
6
7
  constructor();
7
8
  private request;
8
9
  generateVideo(params: VideoGenerationParams): Promise<VideoGenerationResult>;
9
- checkVideoStatus({ task, outputFilename, outputFilePath, }: VideoStatusParams): Promise<VideoStatusResult>;
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":"AASA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAWlB,qBAAa,YAAa,SAAQ,wBAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;;YAWnB,OAAO;IA6Bf,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IA8B3B,gBAAgB,CAAC,EACrB,IAAI,EACJ,cAAc,EACd,cAAyB,GAC1B,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8DjD,cAAc,IAAI,MAAM;IAexB,aAAa,CAAC,EACZ,QAAQ,EACR,IAA8B,EAC9B,QAAY,GACb,EAAE,iBAAiB,GAAG,MAAM;CAK9B"}
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.timeout = 60000; // 1 min
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: this.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.request("/v1/videos/text2video", "POST", request);
57
- console.log(`Kling generateVideo API call took ${Date.now() - starttime} ms`, task ? `(task ID: ${task.data.task_id})` : "(failed)");
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 checkVideoStatus({ task, outputFilename, outputFilePath = "videos", }) {
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.request(`/v1/videos/text2video/${task}`, "GET");
63
- console.log(`Kling checkVideoStatus API call took ${Date.now() - startTime} ms`);
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.timeout,
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,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;YAUlB,OAAO;IA+Bf,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAuC3B,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"}
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
- // IMAGE → VIDEO
49
- if (modelId === "gen4_turbo") {
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;CAC9D;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;CACzC"}
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,4 +1,5 @@
1
1
  export declare class CreditService {
2
2
  static consumeCredits(userId: string, creditsToConsume: number): Promise<void>;
3
+ static refundCredits(userId: string, creditsToRefund: number): Promise<void>;
3
4
  }
4
5
  //# sourceMappingURL=credit.service.d.ts.map
@@ -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;CAwBjB"}
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;
@@ -4,4 +4,5 @@ export * from "./aiGen";
4
4
  export * from "./bullmq.service";
5
5
  export * from "./gcp";
6
6
  export * from "./credit.service";
7
+ export * from "./tts";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -20,3 +20,4 @@ __exportStar(require("./aiGen"), exports);
20
20
  __exportStar(require("./bullmq.service"), exports);
21
21
  __exportStar(require("./gcp"), exports);
22
22
  __exportStar(require("./credit.service"), exports);
23
+ __exportStar(require("./tts"), exports);
@@ -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;
@@ -1,3 +1,4 @@
1
1
  export * from "./helpers";
2
2
  export * from "./logger";
3
+ export * from "./ttsUtils";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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);
@@ -1,6 +1,7 @@
1
- import { Logger } from "winston";
1
+ import winston, { Logger } from "winston";
2
2
  /**
3
3
  * Logger factory
4
4
  */
5
5
  export declare function createLogger(serviceName: string): Logger;
6
+ export declare const logger: winston.Logger;
6
7
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA0B1C;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAsExD"}
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"}
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "vidspotai-shared",
3
- "version": "1.0.32",
3
+ "version": "1.0.33",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "exports": {
@@ -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"}
@@ -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
- };