vidspotai-shared 1.0.68 → 1.0.69-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/lib/globals/aiModels/enums.d.ts +63 -6
  2. package/lib/globals/aiModels/enums.d.ts.map +1 -1
  3. package/lib/globals/aiModels/enums.js +78 -9
  4. package/lib/globals/aiModels/index.d.ts +2 -30
  5. package/lib/globals/aiModels/index.d.ts.map +1 -1
  6. package/lib/globals/aiModels/index.js +7 -35
  7. package/lib/globals/aiModels/providers/alibaba.d.ts +4 -0
  8. package/lib/globals/aiModels/providers/alibaba.d.ts.map +1 -0
  9. package/lib/globals/aiModels/providers/alibaba.js +194 -0
  10. package/lib/globals/aiModels/providers/bytedance.d.ts.map +1 -1
  11. package/lib/globals/aiModels/providers/bytedance.js +19 -0
  12. package/lib/globals/aiModels/providers/elevenlabs.d.ts +14 -0
  13. package/lib/globals/aiModels/providers/elevenlabs.d.ts.map +1 -0
  14. package/lib/globals/aiModels/providers/elevenlabs.js +29 -0
  15. package/lib/globals/aiModels/providers/google.d.ts.map +1 -1
  16. package/lib/globals/aiModels/providers/google.js +150 -2
  17. package/lib/globals/aiModels/providers/kling.d.ts.map +1 -1
  18. package/lib/globals/aiModels/providers/kling.js +280 -37
  19. package/lib/globals/aiModels/providers/minimax.d.ts.map +1 -1
  20. package/lib/globals/aiModels/providers/minimax.js +76 -11
  21. package/lib/globals/aiModels/providers/openai.d.ts.map +1 -1
  22. package/lib/globals/aiModels/providers/openai.js +90 -6
  23. package/lib/globals/aiModels/providers/pixverse.d.ts.map +1 -1
  24. package/lib/globals/aiModels/providers/pixverse.js +111 -29
  25. package/lib/globals/aiModels/providers/pixverseTemplates.d.ts +36 -0
  26. package/lib/globals/aiModels/providers/pixverseTemplates.d.ts.map +1 -0
  27. package/lib/globals/aiModels/providers/pixverseTemplates.js +42 -0
  28. package/lib/globals/aiModels/providers/runway.d.ts.map +1 -1
  29. package/lib/globals/aiModels/providers/runway.js +64 -2
  30. package/lib/globals/aiModels/tierHelpers.d.ts +33 -0
  31. package/lib/globals/aiModels/tierHelpers.d.ts.map +1 -0
  32. package/lib/globals/aiModels/tierHelpers.js +109 -0
  33. package/lib/globals/aiModels/types.d.ts +20 -1
  34. package/lib/globals/aiModels/types.d.ts.map +1 -1
  35. package/lib/globals/ttsModels/index.d.ts +2 -0
  36. package/lib/globals/ttsModels/index.d.ts.map +1 -1
  37. package/lib/globals/ttsModels/index.js +9 -1
  38. package/lib/globals/ttsModels/providers/minimax.d.ts +8 -0
  39. package/lib/globals/ttsModels/providers/minimax.d.ts.map +1 -0
  40. package/lib/globals/ttsModels/providers/minimax.js +18 -0
  41. package/lib/globals/ttsModels/providers/openai.d.ts +12 -0
  42. package/lib/globals/ttsModels/providers/openai.d.ts.map +1 -0
  43. package/lib/globals/ttsModels/providers/openai.js +22 -0
  44. package/lib/globals/ttsModels/types.d.ts +1 -1
  45. package/lib/globals/ttsModels/types.d.ts.map +1 -1
  46. package/lib/globals/ttsModels/voices.d.ts +39 -4
  47. package/lib/globals/ttsModels/voices.d.ts.map +1 -1
  48. package/lib/globals/ttsModels/voices.js +273 -26
  49. package/lib/globals/types.d.ts +59 -1
  50. package/lib/globals/types.d.ts.map +1 -1
  51. package/lib/globals/types.js +81 -2
  52. package/lib/index.d.ts +1 -0
  53. package/lib/index.d.ts.map +1 -1
  54. package/lib/index.js +1 -0
  55. package/lib/models/agent.model.d.ts +357 -0
  56. package/lib/models/agent.model.d.ts.map +1 -0
  57. package/lib/models/agent.model.js +21 -0
  58. package/lib/models/cachedAsset.model.d.ts +18 -0
  59. package/lib/models/cachedAsset.model.d.ts.map +1 -0
  60. package/lib/models/cachedAsset.model.js +2 -0
  61. package/lib/models/cachedRawAsset.model.d.ts +20 -0
  62. package/lib/models/cachedRawAsset.model.d.ts.map +1 -0
  63. package/lib/models/cachedRawAsset.model.js +2 -0
  64. package/lib/models/image.model.d.ts +47 -0
  65. package/lib/models/image.model.d.ts.map +1 -0
  66. package/lib/models/image.model.js +2 -0
  67. package/lib/models/index.d.ts +6 -0
  68. package/lib/models/index.d.ts.map +1 -1
  69. package/lib/models/index.js +6 -0
  70. package/lib/models/notification.model.d.ts +25 -0
  71. package/lib/models/notification.model.d.ts.map +1 -0
  72. package/lib/models/notification.model.js +2 -0
  73. package/lib/models/ref.model.d.ts +80 -0
  74. package/lib/models/ref.model.d.ts.map +1 -0
  75. package/lib/models/ref.model.js +13 -0
  76. package/lib/models/share.model.d.ts +29 -0
  77. package/lib/models/share.model.d.ts.map +1 -0
  78. package/lib/models/share.model.js +2 -0
  79. package/lib/models/user.model.d.ts +12 -1
  80. package/lib/models/user.model.d.ts.map +1 -1
  81. package/lib/models/video.model.d.ts +120 -8
  82. package/lib/models/video.model.d.ts.map +1 -1
  83. package/lib/models/video.model.js +10 -0
  84. package/lib/schemas/agentPersona.schema.d.ts +10 -0
  85. package/lib/schemas/agentPersona.schema.d.ts.map +1 -0
  86. package/lib/schemas/agentPersona.schema.js +11 -0
  87. package/lib/schemas/agentRunJob.schema.d.ts +105 -0
  88. package/lib/schemas/agentRunJob.schema.d.ts.map +1 -0
  89. package/lib/schemas/agentRunJob.schema.js +88 -0
  90. package/lib/schemas/brandKit.schema.d.ts +113 -0
  91. package/lib/schemas/brandKit.schema.d.ts.map +1 -0
  92. package/lib/schemas/brandKit.schema.js +46 -0
  93. package/lib/schemas/brief.schema.d.ts +263 -0
  94. package/lib/schemas/brief.schema.d.ts.map +1 -0
  95. package/lib/schemas/brief.schema.js +157 -0
  96. package/lib/schemas/index.d.ts +7 -0
  97. package/lib/schemas/index.d.ts.map +1 -0
  98. package/lib/schemas/index.js +22 -0
  99. package/lib/schemas/project.schema.d.ts +1025 -0
  100. package/lib/schemas/project.schema.d.ts.map +1 -0
  101. package/lib/schemas/project.schema.js +256 -0
  102. package/lib/schemas/videoPlan.schema.d.ts +590 -0
  103. package/lib/schemas/videoPlan.schema.d.ts.map +1 -0
  104. package/lib/schemas/videoPlan.schema.js +412 -0
  105. package/lib/services/agent/beatSnap.d.ts +10 -0
  106. package/lib/services/agent/beatSnap.d.ts.map +1 -0
  107. package/lib/services/agent/beatSnap.js +128 -0
  108. package/lib/services/agent/bibleBuilder.d.ts +43 -0
  109. package/lib/services/agent/bibleBuilder.d.ts.map +1 -0
  110. package/lib/services/agent/bibleBuilder.js +102 -0
  111. package/lib/services/agent/bibleImageVision.d.ts +45 -0
  112. package/lib/services/agent/bibleImageVision.d.ts.map +1 -0
  113. package/lib/services/agent/bibleImageVision.js +169 -0
  114. package/lib/services/agent/chatAgent.d.ts +79 -0
  115. package/lib/services/agent/chatAgent.d.ts.map +1 -0
  116. package/lib/services/agent/chatAgent.js +136 -0
  117. package/lib/services/agent/costPreflight.d.ts +61 -0
  118. package/lib/services/agent/costPreflight.d.ts.map +1 -0
  119. package/lib/services/agent/costPreflight.js +143 -0
  120. package/lib/services/agent/critic.d.ts +103 -0
  121. package/lib/services/agent/critic.d.ts.map +1 -0
  122. package/lib/services/agent/critic.js +139 -0
  123. package/lib/services/agent/editClassifier.d.ts +262 -0
  124. package/lib/services/agent/editClassifier.d.ts.map +1 -0
  125. package/lib/services/agent/editClassifier.js +186 -0
  126. package/lib/services/agent/eval/index.d.ts +5 -0
  127. package/lib/services/agent/eval/index.d.ts.map +1 -0
  128. package/lib/services/agent/eval/index.js +20 -0
  129. package/lib/services/agent/eval/judge.d.ts +14 -0
  130. package/lib/services/agent/eval/judge.d.ts.map +1 -0
  131. package/lib/services/agent/eval/judge.js +96 -0
  132. package/lib/services/agent/eval/recorder.d.ts +28 -0
  133. package/lib/services/agent/eval/recorder.d.ts.map +1 -0
  134. package/lib/services/agent/eval/recorder.js +100 -0
  135. package/lib/services/agent/eval/seedBriefs.d.ts +16 -0
  136. package/lib/services/agent/eval/seedBriefs.d.ts.map +1 -0
  137. package/lib/services/agent/eval/seedBriefs.js +1188 -0
  138. package/lib/services/agent/eval/types.d.ts +230 -0
  139. package/lib/services/agent/eval/types.d.ts.map +1 -0
  140. package/lib/services/agent/eval/types.js +73 -0
  141. package/lib/services/agent/executor.d.ts +141 -0
  142. package/lib/services/agent/executor.d.ts.map +1 -0
  143. package/lib/services/agent/executor.js +561 -0
  144. package/lib/services/agent/globalActions.d.ts +49 -0
  145. package/lib/services/agent/globalActions.d.ts.map +1 -0
  146. package/lib/services/agent/globalActions.js +328 -0
  147. package/lib/services/agent/index.d.ts +38 -0
  148. package/lib/services/agent/index.d.ts.map +1 -0
  149. package/lib/services/agent/index.js +53 -0
  150. package/lib/services/agent/llmCaller.d.ts +144 -0
  151. package/lib/services/agent/llmCaller.d.ts.map +1 -0
  152. package/lib/services/agent/llmCaller.js +16 -0
  153. package/lib/services/agent/llmCallerAnthropic.d.ts +90 -0
  154. package/lib/services/agent/llmCallerAnthropic.d.ts.map +1 -0
  155. package/lib/services/agent/llmCallerAnthropic.js +255 -0
  156. package/lib/services/agent/llmCallerGateway.d.ts +61 -0
  157. package/lib/services/agent/llmCallerGateway.d.ts.map +1 -0
  158. package/lib/services/agent/llmCallerGateway.js +360 -0
  159. package/lib/services/agent/llmCallerRegistry.d.ts +6 -0
  160. package/lib/services/agent/llmCallerRegistry.d.ts.map +1 -0
  161. package/lib/services/agent/llmCallerRegistry.js +39 -0
  162. package/lib/services/agent/modelQualityNotes.d.ts +100 -0
  163. package/lib/services/agent/modelQualityNotes.d.ts.map +1 -0
  164. package/lib/services/agent/modelQualityNotes.js +248 -0
  165. package/lib/services/agent/modelRouter.d.ts +41 -0
  166. package/lib/services/agent/modelRouter.d.ts.map +1 -0
  167. package/lib/services/agent/modelRouter.js +65 -0
  168. package/lib/services/agent/musicSelect.d.ts +23 -0
  169. package/lib/services/agent/musicSelect.d.ts.map +1 -0
  170. package/lib/services/agent/musicSelect.js +109 -0
  171. package/lib/services/agent/overlayRenderer.d.ts +67 -0
  172. package/lib/services/agent/overlayRenderer.d.ts.map +1 -0
  173. package/lib/services/agent/overlayRenderer.js +253 -0
  174. package/lib/services/agent/perSceneCritic.d.ts +90 -0
  175. package/lib/services/agent/perSceneCritic.d.ts.map +1 -0
  176. package/lib/services/agent/perSceneCritic.js +125 -0
  177. package/lib/services/agent/personas.d.ts +78 -0
  178. package/lib/services/agent/personas.d.ts.map +1 -0
  179. package/lib/services/agent/personas.js +177 -0
  180. package/lib/services/agent/planDiff.d.ts +76 -0
  181. package/lib/services/agent/planDiff.d.ts.map +1 -0
  182. package/lib/services/agent/planDiff.js +182 -0
  183. package/lib/services/agent/planMutations.d.ts +46 -0
  184. package/lib/services/agent/planMutations.d.ts.map +1 -0
  185. package/lib/services/agent/planMutations.js +120 -0
  186. package/lib/services/agent/planner/Planner.d.ts +107 -0
  187. package/lib/services/agent/planner/Planner.d.ts.map +1 -0
  188. package/lib/services/agent/planner/Planner.js +591 -0
  189. package/lib/services/agent/planner/overlaySanity.d.ts +7 -0
  190. package/lib/services/agent/planner/overlaySanity.d.ts.map +1 -0
  191. package/lib/services/agent/planner/overlaySanity.js +86 -0
  192. package/lib/services/agent/planner/promptSections.d.ts +25 -0
  193. package/lib/services/agent/planner/promptSections.d.ts.map +1 -0
  194. package/lib/services/agent/planner/promptSections.js +174 -0
  195. package/lib/services/agent/planner/repair.d.ts +16 -0
  196. package/lib/services/agent/planner/repair.d.ts.map +1 -0
  197. package/lib/services/agent/planner/repair.js +51 -0
  198. package/lib/services/agent/planner/structuralRules.d.ts +10 -0
  199. package/lib/services/agent/planner/structuralRules.d.ts.map +1 -0
  200. package/lib/services/agent/planner/structuralRules.js +111 -0
  201. package/lib/services/agent/planner/validators.d.ts +65 -0
  202. package/lib/services/agent/planner/validators.d.ts.map +1 -0
  203. package/lib/services/agent/planner/validators.js +284 -0
  204. package/lib/services/agent/planner.d.ts +3 -0
  205. package/lib/services/agent/planner.d.ts.map +1 -0
  206. package/lib/services/agent/planner.js +14 -0
  207. package/lib/services/agent/providerFallback/chains.d.ts +100 -0
  208. package/lib/services/agent/providerFallback/chains.d.ts.map +1 -0
  209. package/lib/services/agent/providerFallback/chains.js +198 -0
  210. package/lib/services/agent/providerFallback/classifier.d.ts +36 -0
  211. package/lib/services/agent/providerFallback/classifier.d.ts.map +1 -0
  212. package/lib/services/agent/providerFallback/classifier.js +103 -0
  213. package/lib/services/agent/providerFallback/index.d.ts +4 -0
  214. package/lib/services/agent/providerFallback/index.d.ts.map +1 -0
  215. package/lib/services/agent/providerFallback/index.js +19 -0
  216. package/lib/services/agent/providerFallback/withFallback.d.ts +60 -0
  217. package/lib/services/agent/providerFallback/withFallback.d.ts.map +1 -0
  218. package/lib/services/agent/providerFallback/withFallback.js +93 -0
  219. package/lib/services/agent/providerTaskCache.d.ts +50 -0
  220. package/lib/services/agent/providerTaskCache.d.ts.map +1 -0
  221. package/lib/services/agent/providerTaskCache.js +98 -0
  222. package/lib/services/agent/qualityGate.d.ts +82 -0
  223. package/lib/services/agent/qualityGate.d.ts.map +1 -0
  224. package/lib/services/agent/qualityGate.js +232 -0
  225. package/lib/services/agent/referenceImageRenderer.d.ts +37 -0
  226. package/lib/services/agent/referenceImageRenderer.d.ts.map +1 -0
  227. package/lib/services/agent/referenceImageRenderer.js +92 -0
  228. package/lib/services/agent/regenCore.d.ts +60 -0
  229. package/lib/services/agent/regenCore.d.ts.map +1 -0
  230. package/lib/services/agent/regenCore.js +487 -0
  231. package/lib/services/agent/runHelpers.d.ts +44 -0
  232. package/lib/services/agent/runHelpers.d.ts.map +1 -0
  233. package/lib/services/agent/runHelpers.js +196 -0
  234. package/lib/services/agent/sceneLayoutVision.d.ts +90 -0
  235. package/lib/services/agent/sceneLayoutVision.d.ts.map +1 -0
  236. package/lib/services/agent/sceneLayoutVision.js +212 -0
  237. package/lib/services/agent/stitchedVideoCritic.d.ts +136 -0
  238. package/lib/services/agent/stitchedVideoCritic.d.ts.map +1 -0
  239. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts +26 -0
  240. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts.map +1 -0
  241. package/lib/services/agent/stitchedVideoCritic.gemini.js +198 -0
  242. package/lib/services/agent/stitchedVideoCritic.js +162 -0
  243. package/lib/services/agent/taskPoller.d.ts +65 -0
  244. package/lib/services/agent/taskPoller.d.ts.map +1 -0
  245. package/lib/services/agent/taskPoller.js +176 -0
  246. package/lib/services/agent/textOverlayStyles.d.ts +60 -0
  247. package/lib/services/agent/textOverlayStyles.d.ts.map +1 -0
  248. package/lib/services/agent/textOverlayStyles.js +174 -0
  249. package/lib/services/agent/toolRegistry.d.ts +73 -0
  250. package/lib/services/agent/toolRegistry.d.ts.map +1 -0
  251. package/lib/services/agent/toolRegistry.js +95 -0
  252. package/lib/services/agent/tools/analyzeReference.tool.d.ts +36 -0
  253. package/lib/services/agent/tools/analyzeReference.tool.d.ts.map +1 -0
  254. package/lib/services/agent/tools/analyzeReference.tool.js +44 -0
  255. package/lib/services/agent/tools/animateImage.tool.d.ts +24 -0
  256. package/lib/services/agent/tools/animateImage.tool.d.ts.map +1 -0
  257. package/lib/services/agent/tools/animateImage.tool.js +115 -0
  258. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts +32 -0
  259. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts.map +1 -0
  260. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.js +135 -0
  261. package/lib/services/agent/tools/composeScene.tool.d.ts +978 -0
  262. package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -0
  263. package/lib/services/agent/tools/composeScene.tool.js +90 -0
  264. package/lib/services/agent/tools/estimateCost.tool.d.ts +352 -0
  265. package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -0
  266. package/lib/services/agent/tools/estimateCost.tool.js +62 -0
  267. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +32 -0
  268. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts.map +1 -0
  269. package/lib/services/agent/tools/generateAvatarVideo.tool.js +143 -0
  270. package/lib/services/agent/tools/generateCaptions.tool.d.ts +42 -0
  271. package/lib/services/agent/tools/generateCaptions.tool.d.ts.map +1 -0
  272. package/lib/services/agent/tools/generateCaptions.tool.js +196 -0
  273. package/lib/services/agent/tools/generateImage.tool.d.ts +74 -0
  274. package/lib/services/agent/tools/generateImage.tool.d.ts.map +1 -0
  275. package/lib/services/agent/tools/generateImage.tool.js +206 -0
  276. package/lib/services/agent/tools/generateVideo.tool.d.ts +31 -0
  277. package/lib/services/agent/tools/generateVideo.tool.d.ts.map +1 -0
  278. package/lib/services/agent/tools/generateVideo.tool.js +153 -0
  279. package/lib/services/agent/tools/generateVoiceover.tool.d.ts +44 -0
  280. package/lib/services/agent/tools/generateVoiceover.tool.d.ts.map +1 -0
  281. package/lib/services/agent/tools/generateVoiceover.tool.js +206 -0
  282. package/lib/services/agent/tools/index.d.ts +20 -0
  283. package/lib/services/agent/tools/index.d.ts.map +1 -0
  284. package/lib/services/agent/tools/index.js +35 -0
  285. package/lib/services/agent/tools/planVideo.tool.d.ts +343 -0
  286. package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -0
  287. package/lib/services/agent/tools/planVideo.tool.js +46 -0
  288. package/lib/services/agent/tools/render.tool.d.ts +367 -0
  289. package/lib/services/agent/tools/render.tool.d.ts.map +1 -0
  290. package/lib/services/agent/tools/render.tool.js +48 -0
  291. package/lib/services/agent/tools/searchMusic.tool.d.ts +49 -0
  292. package/lib/services/agent/tools/searchMusic.tool.d.ts.map +1 -0
  293. package/lib/services/agent/tools/searchMusic.tool.js +74 -0
  294. package/lib/services/agent/tools/searchStock.tool.d.ts +41 -0
  295. package/lib/services/agent/tools/searchStock.tool.d.ts.map +1 -0
  296. package/lib/services/agent/tools/searchStock.tool.js +314 -0
  297. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +59 -0
  298. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts.map +1 -0
  299. package/lib/services/agent/tools/searchUserLibrary.tool.js +58 -0
  300. package/lib/services/agent/ttsDuration.d.ts +29 -0
  301. package/lib/services/agent/ttsDuration.d.ts.map +1 -0
  302. package/lib/services/agent/ttsDuration.js +60 -0
  303. package/lib/services/aiGen/aiGenFactory.service.d.ts +21 -1
  304. package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
  305. package/lib/services/aiGen/aiGenFactory.service.js +84 -21
  306. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts +31 -0
  307. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts.map +1 -0
  308. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.js +2 -0
  309. package/lib/services/aiGen/canonicalAdapters/index.d.ts +3 -0
  310. package/lib/services/aiGen/canonicalAdapters/index.d.ts.map +1 -0
  311. package/lib/services/aiGen/canonicalAdapters/index.js +18 -0
  312. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts +23 -0
  313. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts.map +1 -0
  314. package/lib/services/aiGen/canonicalAdapters/multiShot.types.js +12 -0
  315. package/lib/services/aiGen/helpers.d.ts.map +1 -1
  316. package/lib/services/aiGen/helpers.js +10 -0
  317. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts +14 -3
  318. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts.map +1 -1
  319. package/lib/services/aiGen/providers/alibaba/alibaba.js +155 -22
  320. package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts +22 -4
  321. package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts.map +1 -1
  322. package/lib/services/aiGen/providers/baseAiGenProvider.service.js +32 -0
  323. package/lib/services/aiGen/providers/bytedance/bytedance.service.d.ts.map +1 -1
  324. package/lib/services/aiGen/providers/bytedance/bytedance.service.js +13 -19
  325. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts +18 -0
  326. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts.map +1 -0
  327. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.js +102 -0
  328. package/lib/services/aiGen/providers/fal/falImage.service.d.ts +15 -0
  329. package/lib/services/aiGen/providers/fal/falImage.service.d.ts.map +1 -0
  330. package/lib/services/aiGen/providers/fal/falImage.service.js +141 -0
  331. package/lib/services/aiGen/providers/fal/index.d.ts +2 -0
  332. package/lib/services/aiGen/providers/fal/index.d.ts.map +1 -0
  333. package/lib/services/aiGen/providers/fal/index.js +17 -0
  334. package/lib/services/aiGen/providers/google/google.service.d.ts +11 -2
  335. package/lib/services/aiGen/providers/google/google.service.d.ts.map +1 -1
  336. package/lib/services/aiGen/providers/google/google.service.js +245 -28
  337. package/lib/services/aiGen/providers/index.d.ts +3 -0
  338. package/lib/services/aiGen/providers/index.d.ts.map +1 -1
  339. package/lib/services/aiGen/providers/index.js +3 -0
  340. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts +4 -0
  341. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts.map +1 -0
  342. package/lib/services/aiGen/providers/kling/cameraAdapter.js +53 -0
  343. package/lib/services/aiGen/providers/kling/index.d.ts +1 -0
  344. package/lib/services/aiGen/providers/kling/index.d.ts.map +1 -1
  345. package/lib/services/aiGen/providers/kling/index.js +1 -0
  346. package/lib/services/aiGen/providers/kling/kling.service.d.ts +12 -1
  347. package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
  348. package/lib/services/aiGen/providers/kling/kling.service.js +357 -26
  349. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts +21 -0
  350. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts.map +1 -0
  351. package/lib/services/aiGen/providers/kling/klingImage.service.js +208 -0
  352. package/lib/services/aiGen/providers/kling/types.d.ts +105 -0
  353. package/lib/services/aiGen/providers/kling/types.d.ts.map +1 -1
  354. package/lib/services/aiGen/providers/minimax/minimax.service.d.ts +15 -2
  355. package/lib/services/aiGen/providers/minimax/minimax.service.d.ts.map +1 -1
  356. package/lib/services/aiGen/providers/minimax/minimax.service.js +128 -5
  357. package/lib/services/aiGen/providers/minimax/types.d.ts +10 -1
  358. package/lib/services/aiGen/providers/minimax/types.d.ts.map +1 -1
  359. package/lib/services/aiGen/providers/openai/openai.service.d.ts +8 -2
  360. package/lib/services/aiGen/providers/openai/openai.service.d.ts.map +1 -1
  361. package/lib/services/aiGen/providers/openai/openai.service.js +184 -7
  362. package/lib/services/aiGen/providers/pexels/index.d.ts +2 -0
  363. package/lib/services/aiGen/providers/pexels/index.d.ts.map +1 -0
  364. package/lib/services/aiGen/providers/{azure → pexels}/index.js +1 -1
  365. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts +11 -0
  366. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts.map +1 -0
  367. package/lib/services/aiGen/providers/pexels/pexels.service.js +150 -0
  368. package/lib/services/aiGen/providers/pixabay/index.d.ts +2 -0
  369. package/lib/services/aiGen/providers/pixabay/index.d.ts.map +1 -0
  370. package/lib/services/aiGen/providers/pixabay/index.js +17 -0
  371. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts +12 -0
  372. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts.map +1 -0
  373. package/lib/services/aiGen/providers/pixabay/pixabay.service.js +156 -0
  374. package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
  375. package/lib/services/aiGen/providers/pixverse/pixverse.service.js +125 -2
  376. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts +3 -0
  377. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts.map +1 -0
  378. package/lib/services/aiGen/providers/runway/cameraAdapter.js +46 -0
  379. package/lib/services/aiGen/providers/runway/runway.service.d.ts +12 -2
  380. package/lib/services/aiGen/providers/runway/runway.service.d.ts.map +1 -1
  381. package/lib/services/aiGen/providers/runway/runway.service.js +224 -21
  382. package/lib/services/aiGen/providers/types.d.ts +263 -6
  383. package/lib/services/aiGen/providers/types.d.ts.map +1 -1
  384. package/lib/services/aiGen/providers/unsplash/index.d.ts +2 -0
  385. package/lib/services/aiGen/providers/unsplash/index.d.ts.map +1 -0
  386. package/lib/services/aiGen/providers/unsplash/index.js +17 -0
  387. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts +16 -0
  388. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts.map +1 -0
  389. package/lib/services/aiGen/providers/unsplash/unsplash.service.js +131 -0
  390. package/lib/services/analytics.service.js +2 -4
  391. package/lib/services/apiUsageCounter.service.d.ts +20 -0
  392. package/lib/services/apiUsageCounter.service.d.ts.map +1 -0
  393. package/lib/services/apiUsageCounter.service.js +84 -0
  394. package/lib/services/asr/assemblyai.service.d.ts +72 -0
  395. package/lib/services/asr/assemblyai.service.d.ts.map +1 -0
  396. package/lib/services/asr/assemblyai.service.js +89 -0
  397. package/lib/services/asr/index.d.ts +3 -0
  398. package/lib/services/asr/index.d.ts.map +1 -0
  399. package/lib/services/asr/index.js +18 -0
  400. package/lib/services/asr/whisper.service.d.ts +18 -0
  401. package/lib/services/asr/whisper.service.d.ts.map +1 -0
  402. package/lib/services/asr/whisper.service.js +151 -0
  403. package/lib/services/assetCache.service.d.ts +54 -0
  404. package/lib/services/assetCache.service.d.ts.map +1 -0
  405. package/lib/services/assetCache.service.js +109 -0
  406. package/lib/services/audioAnalysis/index.d.ts +2 -0
  407. package/lib/services/audioAnalysis/index.d.ts.map +1 -0
  408. package/lib/services/audioAnalysis/index.js +17 -0
  409. package/lib/services/audioAnalysis/onsetDetection.service.d.ts +50 -0
  410. package/lib/services/audioAnalysis/onsetDetection.service.d.ts.map +1 -0
  411. package/lib/services/audioAnalysis/onsetDetection.service.js +140 -0
  412. package/lib/services/bullmq.service.d.ts +6 -1
  413. package/lib/services/bullmq.service.d.ts.map +1 -1
  414. package/lib/services/bullmq.service.js +62 -14
  415. package/lib/services/credit.service.d.ts.map +1 -1
  416. package/lib/services/credit.service.js +45 -7
  417. package/lib/services/credits/pricing.d.ts +58 -0
  418. package/lib/services/credits/pricing.d.ts.map +1 -0
  419. package/lib/services/credits/pricing.js +111 -0
  420. package/lib/services/editor/designToProject.d.ts +75 -0
  421. package/lib/services/editor/designToProject.d.ts.map +1 -0
  422. package/lib/services/editor/designToProject.js +295 -0
  423. package/lib/services/editor/planToProject.d.ts +84 -0
  424. package/lib/services/editor/planToProject.d.ts.map +1 -0
  425. package/lib/services/editor/planToProject.js +395 -0
  426. package/lib/services/editor/projectToDesign.d.ts +4 -0
  427. package/lib/services/editor/projectToDesign.d.ts.map +1 -0
  428. package/lib/services/editor/projectToDesign.js +186 -0
  429. package/lib/services/firestore.service.d.ts +17 -0
  430. package/lib/services/firestore.service.d.ts.map +1 -1
  431. package/lib/services/firestore.service.js +30 -0
  432. package/lib/services/gcp/index.d.ts +1 -0
  433. package/lib/services/gcp/index.d.ts.map +1 -1
  434. package/lib/services/gcp/index.js +1 -0
  435. package/lib/services/gcp/uploadAudioBuffer.d.ts +13 -0
  436. package/lib/services/gcp/uploadAudioBuffer.d.ts.map +1 -0
  437. package/lib/services/gcp/uploadAudioBuffer.js +28 -0
  438. package/lib/services/index.d.ts +13 -0
  439. package/lib/services/index.d.ts.map +1 -1
  440. package/lib/services/index.js +13 -0
  441. package/lib/services/musicGen/index.d.ts +6 -0
  442. package/lib/services/musicGen/index.d.ts.map +1 -0
  443. package/lib/services/musicGen/index.js +26 -0
  444. package/lib/services/musicGen/musicSearchFactory.service.d.ts +14 -0
  445. package/lib/services/musicGen/musicSearchFactory.service.d.ts.map +1 -0
  446. package/lib/services/musicGen/musicSearchFactory.service.js +59 -0
  447. package/lib/services/musicGen/providers/curated.service.d.ts +24 -0
  448. package/lib/services/musicGen/providers/curated.service.d.ts.map +1 -0
  449. package/lib/services/musicGen/providers/curated.service.js +173 -0
  450. package/lib/services/musicGen/providers/jamendo.service.d.ts +8 -0
  451. package/lib/services/musicGen/providers/jamendo.service.d.ts.map +1 -0
  452. package/lib/services/musicGen/providers/jamendo.service.js +113 -0
  453. package/lib/services/musicGen/providers/mubert.service.d.ts +10 -0
  454. package/lib/services/musicGen/providers/mubert.service.d.ts.map +1 -0
  455. package/lib/services/musicGen/providers/mubert.service.js +128 -0
  456. package/lib/services/musicGen/types.d.ts +46 -0
  457. package/lib/services/musicGen/types.d.ts.map +1 -0
  458. package/lib/services/musicGen/types.js +10 -0
  459. package/lib/services/notification.service.d.ts +22 -0
  460. package/lib/services/notification.service.d.ts.map +1 -0
  461. package/lib/services/notification.service.js +76 -0
  462. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts +78 -0
  463. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts.map +1 -0
  464. package/lib/services/rateLimiter/distributedRateLimiter.service.js +269 -0
  465. package/lib/services/rateLimiter/index.d.ts +2 -0
  466. package/lib/services/rateLimiter/index.d.ts.map +1 -0
  467. package/lib/services/rateLimiter/index.js +17 -0
  468. package/lib/services/redis.service.d.ts +9 -0
  469. package/lib/services/redis.service.d.ts.map +1 -1
  470. package/lib/services/redis.service.js +20 -11
  471. package/lib/services/redisOptions.d.ts +22 -0
  472. package/lib/services/redisOptions.d.ts.map +1 -0
  473. package/lib/services/redisOptions.js +51 -0
  474. package/lib/services/tts/index.d.ts +2 -0
  475. package/lib/services/tts/index.d.ts.map +1 -1
  476. package/lib/services/tts/index.js +2 -0
  477. package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
  478. package/lib/services/tts/providers/elevenlabs.service.js +91 -24
  479. package/lib/services/tts/providers/minimax.service.d.ts +14 -0
  480. package/lib/services/tts/providers/minimax.service.d.ts.map +1 -0
  481. package/lib/services/tts/providers/minimax.service.js +78 -0
  482. package/lib/services/tts/providers/openai.service.d.ts +14 -0
  483. package/lib/services/tts/providers/openai.service.d.ts.map +1 -0
  484. package/lib/services/tts/providers/openai.service.js +73 -0
  485. package/lib/services/tts/ttsFactory.service.d.ts.map +1 -1
  486. package/lib/services/tts/ttsFactory.service.js +6 -0
  487. package/lib/services/tts/types.d.ts +33 -0
  488. package/lib/services/tts/types.d.ts.map +1 -1
  489. package/lib/utils/errors.d.ts +8 -0
  490. package/lib/utils/errors.d.ts.map +1 -1
  491. package/lib/utils/errors.js +8 -0
  492. package/lib/utils/helpers.d.ts +13 -0
  493. package/lib/utils/helpers.d.ts.map +1 -1
  494. package/lib/utils/helpers.js +48 -11
  495. package/lib/utils/logger.d.ts.map +1 -1
  496. package/lib/utils/logger.js +37 -1
  497. package/package.json +5 -1
  498. package/lib/services/aiGen/providers/azure/azure.service.d.ts +0 -14
  499. package/lib/services/aiGen/providers/azure/azure.service.d.ts.map +0 -1
  500. package/lib/services/aiGen/providers/azure/azure.service.js +0 -108
  501. package/lib/services/aiGen/providers/azure/index.d.ts +0 -2
  502. package/lib/services/aiGen/providers/azure/index.d.ts.map +0 -1
@@ -6,6 +6,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.KlingService = void 0;
8
8
  const axios_1 = __importDefault(require("axios"));
9
+ const http_1 = __importDefault(require("http"));
10
+ const https_1 = __importDefault(require("https"));
9
11
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
10
12
  const aiModels_1 = require("../../../../globals/aiModels");
11
13
  const types_1 = require("../../../../globals/types");
@@ -16,12 +18,22 @@ const types_2 = require("../../types");
16
18
  const baseAiGenProvider_service_1 = require("../baseAiGenProvider.service");
17
19
  const helpers_2 = require("../../../../utils/helpers");
18
20
  const errors_1 = require("../../../../utils/errors");
21
+ const cameraAdapter_1 = require("./cameraAdapter");
19
22
  class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService {
20
23
  constructor() {
21
24
  super();
22
25
  this.baseUrl = "https://api-singapore.klingai.com";
23
26
  this.generateTimeout = 120000; // 2 min — submit endpoint can be slow under Kling load
24
27
  this.statusTimeout = 60000; // 1 min — status/poll should be fast
28
+ // Force IPv4 for every outbound Kling call. Kling's edges (both
29
+ // api-singapore.klingai.com and the CDN where video URLs are hosted) have
30
+ // had IPv6 routes that black-hole from some networks, producing
31
+ // `AggregateError(ETIMEDOUT)` when node's happy-eyeballs aggregates the
32
+ // dead v6 leg with the (sometimes also slow) v4 leg. Pinning v4 +
33
+ // keep-alive avoids the dead-end and reuses the warm socket across
34
+ // submit / poll / download for the same task.
35
+ this.v4HttpAgent = new http_1.default.Agent({ family: 4, keepAlive: true });
36
+ this.v4HttpsAgent = new https_1.default.Agent({ family: 4, keepAlive: true });
25
37
  if (!process.env.KLING_SECRET_KEY || !process.env.KLING_ACCESS_KEY) {
26
38
  throw new Error("Missing KLING_SECRET_KEY or KLING_ACCESS_KEY in environment variables");
27
39
  }
@@ -36,6 +48,8 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
36
48
  },
37
49
  timeout,
38
50
  data: body,
51
+ httpAgent: this.v4HttpAgent,
52
+ httpsAgent: this.v4HttpsAgent,
39
53
  };
40
54
  const response = await axios_1.default.request(config);
41
55
  if (response.status < 200 || response.status >= 300) {
@@ -48,20 +62,250 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
48
62
  if (params.modelKey === "kling-avatar") {
49
63
  return this.generateAvatarVideo(params);
50
64
  }
65
+ if (params.modelKey === "kling-lip-sync") {
66
+ return this.generateLipSync(params);
67
+ }
68
+ if (params.modelKey === "kling-motion-control") {
69
+ return this.generateMotionControl(params);
70
+ }
71
+ if (params.modelKey === "kling-video-o1" ||
72
+ params.modelKey === "kling-v3-omni-video") {
73
+ return this.generateOmniVideo(params);
74
+ }
75
+ if (params.endpoint === "extend") {
76
+ return this.extendVideo(params);
77
+ }
51
78
  const modelId = aiModels_1.aiModelConfigs[params.modelKey]?.modelId;
52
79
  if (!modelId)
53
80
  throw new Error(`Unknown modelKey: ${params.modelKey}`);
54
- const request = {
81
+ // Common optional fields shared by text2video and image2video endpoints.
82
+ const optional = {};
83
+ if (params.negativePrompt)
84
+ optional.negative_prompt = params.negativePrompt;
85
+ if (params.cfgScale !== undefined)
86
+ optional.cfg_scale = params.cfgScale;
87
+ if (params.callbackUrl)
88
+ optional.callback_url = params.callbackUrl;
89
+ if (params.externalTaskId)
90
+ optional.external_task_id = params.externalTaskId;
91
+ if (params.cameraControl) {
92
+ const cc = (0, cameraAdapter_1.toKlingCameraControl)(params.cameraControl);
93
+ if (cc)
94
+ optional.camera_control = cc;
95
+ }
96
+ // v2.6 uses `sound: "on"|"off"` as a pricing-tier toggle. v3 uses
97
+ // `generate_audio: boolean` for native audio synthesis. Route by model.
98
+ if (params.audio !== undefined) {
99
+ if (params.modelKey === "kling-v3.0") {
100
+ optional.generate_audio = Boolean(params.audio);
101
+ }
102
+ else if (params.modelKey === "kling-v2.6") {
103
+ optional.sound = params.audio ? "on" : "off";
104
+ }
105
+ }
106
+ const isImageToVideo = !!params.inputImageUrl;
107
+ const endpoint = isImageToVideo ? "/v1/videos/image2video" : "/v1/videos/text2video";
108
+ let request;
109
+ if (isImageToVideo) {
110
+ const i2v = {
111
+ model_name: modelId,
112
+ prompt: params.prompt,
113
+ image: params.inputImageUrl,
114
+ duration: params.duration || 5,
115
+ mode: params.mode || types_2.EVideoMode.STANDARD,
116
+ ...optional,
117
+ };
118
+ if (params.aspectRatio)
119
+ i2v.aspect_ratio = params.aspectRatio;
120
+ if (params.lastFrameImageUrl)
121
+ i2v.image_tail = params.lastFrameImageUrl;
122
+ if (params.staticMaskUrl)
123
+ i2v.static_mask = params.staticMaskUrl;
124
+ if (params.dynamicMasks?.length) {
125
+ i2v.dynamic_masks = params.dynamicMasks.slice(0, 6).map((d) => ({
126
+ mask: d.maskUrl,
127
+ trajectories: d.trajectories,
128
+ }));
129
+ }
130
+ request = i2v;
131
+ }
132
+ else {
133
+ request = {
134
+ model_name: modelId,
135
+ prompt: params.prompt,
136
+ aspect_ratio: params.aspectRatio || "16:9",
137
+ duration: params.duration || 5,
138
+ mode: params.mode || types_2.EVideoMode.STANDARD,
139
+ ...optional,
140
+ };
141
+ }
142
+ const starttime = Date.now();
143
+ const task = await this.requestWithTimeoutRetry(endpoint, "POST", request, 4, this.generateTimeout);
144
+ logger_1.logger.info("Kling generateVideo submitted", {
145
+ modelKey: params.modelKey,
146
+ taskId: task.data.task_id,
147
+ durationMs: Date.now() - starttime,
148
+ });
149
+ return { task: task.data.task_id, status: types_1.EVideoSceneStatus.TRIGGERED };
150
+ }
151
+ /**
152
+ * Extend a previously-generated Kling video by ~4-5s. Takes the Kling task id
153
+ * of the source video (must have been generated by this Kling account).
154
+ * Cost is the same per-second as the base model.
155
+ */
156
+ async extendVideo(params) {
157
+ if (!params.sourceTaskId) {
158
+ throw new Error("sourceTaskId (prior Kling task id) is required for video extension");
159
+ }
160
+ const body = { video_id: params.sourceTaskId };
161
+ if (params.prompt)
162
+ body.prompt = params.prompt;
163
+ if (params.negativePrompt)
164
+ body.negative_prompt = params.negativePrompt;
165
+ if (params.cfgScale !== undefined)
166
+ body.cfg_scale = params.cfgScale;
167
+ if (params.callbackUrl)
168
+ body.callback_url = params.callbackUrl;
169
+ if (params.externalTaskId)
170
+ body.external_task_id = params.externalTaskId;
171
+ const starttime = Date.now();
172
+ const task = await this.requestWithTimeoutRetry("/v1/videos/video-extend", "POST", body, 4, this.generateTimeout);
173
+ logger_1.logger.info("Kling extendVideo submitted", {
174
+ sourceTaskId: params.sourceTaskId,
175
+ taskId: task.data.task_id,
176
+ durationMs: Date.now() - starttime,
177
+ });
178
+ return { task: task.data.task_id, status: types_1.EVideoSceneStatus.TRIGGERED };
179
+ }
180
+ // ─── OmniVideo (/v1/videos/omni-video) ──────────────────────────────────────
181
+ async generateOmniVideo(params) {
182
+ const modelId = aiModels_1.aiModelConfigs[params.modelKey]?.modelId;
183
+ if (!modelId)
184
+ throw new Error(`Unknown modelKey: ${params.modelKey}`);
185
+ const body = {
55
186
  model_name: modelId,
56
- prompt: params.prompt,
57
- aspect_ratio: params.aspectRatio || "16:9",
58
- duration: params.duration || 5,
59
187
  mode: params.mode || types_2.EVideoMode.STANDARD,
188
+ duration: String(params.duration ?? 5),
60
189
  };
190
+ if (params.prompt)
191
+ body.prompt = params.prompt;
192
+ if (params.aspectRatio)
193
+ body.aspect_ratio = params.aspectRatio;
194
+ if (params.callbackUrl)
195
+ body.callback_url = params.callbackUrl;
196
+ if (params.externalTaskId)
197
+ body.external_task_id = params.externalTaskId;
198
+ if (params.audio !== undefined)
199
+ body.sound = params.audio ? "on" : "off";
200
+ // Build image_list: start frame, end frame, plain reference images.
201
+ const imageList = [];
202
+ if (params.inputImageUrl) {
203
+ imageList.push({ image_url: params.inputImageUrl, type: "first_frame" });
204
+ }
205
+ if (params.lastFrameImageUrl) {
206
+ imageList.push({ image_url: params.lastFrameImageUrl, type: "end_frame" });
207
+ }
208
+ for (const url of params.referenceImageUrls ?? []) {
209
+ imageList.push({ image_url: url });
210
+ }
211
+ if (imageList.length)
212
+ body.image_list = imageList;
213
+ // Build video_list: reference videos (feature type) or base videos (editing).
214
+ if (params.referenceVideoUrls?.length) {
215
+ body.video_list = params.referenceVideoUrls.map((url) => ({
216
+ video_url: url,
217
+ refer_type: "feature",
218
+ }));
219
+ }
220
+ // Multi-shot support. MultiShot is Shot[] directly (not { shots: Shot[] }).
221
+ if (params.multiShot?.length) {
222
+ body.multi_shot = true;
223
+ body.shot_type = "customize";
224
+ body.multi_prompt = params.multiShot.map((s, i) => ({
225
+ index: i + 1,
226
+ prompt: s.prompt,
227
+ ...(s.duration !== undefined ? { duration: String(s.duration) } : {}),
228
+ }));
229
+ }
61
230
  const starttime = Date.now();
62
- const task = await this.requestWithTimeoutRetry("/v1/videos/text2video", "POST", request, 4, this.generateTimeout);
63
- logger_1.logger.info("Kling generateVideo submitted", {
231
+ const task = await this.requestWithTimeoutRetry("/v1/videos/omni-video", "POST", body, 4, this.generateTimeout);
232
+ logger_1.logger.info("Kling generateOmniVideo submitted", {
64
233
  modelKey: params.modelKey,
234
+ modelId,
235
+ taskId: task.data.task_id,
236
+ durationMs: Date.now() - starttime,
237
+ });
238
+ return { task: task.data.task_id, status: types_1.EVideoSceneStatus.TRIGGERED };
239
+ }
240
+ // ─── Motion Control (/v1/videos/motion-control) ──────────────────────────────
241
+ async generateMotionControl(params) {
242
+ if (!params.inputImageUrl) {
243
+ throw new Error("inputImageUrl (character reference image) is required for motion control");
244
+ }
245
+ if (!params.inputVideoUrl) {
246
+ throw new Error("inputVideoUrl (motion reference video) is required for motion control");
247
+ }
248
+ const modelId = aiModels_1.aiModelConfigs[params.modelKey]?.modelId ?? "kling-v3";
249
+ const body = {
250
+ model_name: modelId,
251
+ image_url: params.inputImageUrl,
252
+ video_url: params.inputVideoUrl,
253
+ };
254
+ if (params.prompt)
255
+ body.prompt = params.prompt;
256
+ if (params.mode)
257
+ body.mode = params.mode;
258
+ if (params.callbackUrl)
259
+ body.callback_url = params.callbackUrl;
260
+ if (params.externalTaskId)
261
+ body.external_task_id = params.externalTaskId;
262
+ const starttime = Date.now();
263
+ const task = await this.requestWithTimeoutRetry("/v1/videos/motion-control", "POST", body, 4, this.generateTimeout);
264
+ logger_1.logger.info("Kling generateMotionControl submitted", {
265
+ taskId: task.data.task_id,
266
+ durationMs: Date.now() - starttime,
267
+ });
268
+ return { task: task.data.task_id, status: types_1.EVideoSceneStatus.TRIGGERED };
269
+ }
270
+ // ─── Lip Sync (/v1/videos/identify-face + /v1/videos/advanced-lip-sync) ─────
271
+ async generateLipSync(params) {
272
+ if (!params.inputVideoUrl) {
273
+ throw new Error("inputVideoUrl (source video) is required for lip sync");
274
+ }
275
+ if (!params.inputAudioUrl) {
276
+ throw new Error("inputAudioUrl (audio file) is required for lip sync");
277
+ }
278
+ // Step 1: identify faces in the source video (synchronous endpoint).
279
+ const faceRequest = { video_url: params.inputVideoUrl };
280
+ const faceResp = await this.requestWithTimeoutRetry("/v1/videos/identify-face", "POST", faceRequest, 2, this.generateTimeout);
281
+ if (faceResp.code !== 0) {
282
+ throw new Error(`Kling identify-face failed (code ${faceResp.code}): ${faceResp.message}`);
283
+ }
284
+ if (!faceResp.data.face_data?.length) {
285
+ throw new Error("Kling identify-face: no faces detected in source video");
286
+ }
287
+ // Auto-select the first detected face.
288
+ const face = faceResp.data.face_data[0];
289
+ const audioDurationMs = params.audioDurationMs ?? 60000;
290
+ const lipSyncBody = {
291
+ session_id: faceResp.data.session_id,
292
+ face_choose: [{
293
+ face_id: face.face_id,
294
+ sound_file: params.inputAudioUrl,
295
+ sound_insert_time: face.start_time,
296
+ sound_start_time: 0,
297
+ sound_end_time: audioDurationMs,
298
+ sound_volume: 1,
299
+ original_audio_volume: 1,
300
+ }],
301
+ ...(params.callbackUrl ? { callback_url: params.callbackUrl } : {}),
302
+ ...(params.externalTaskId ? { external_task_id: params.externalTaskId } : {}),
303
+ };
304
+ const starttime = Date.now();
305
+ const task = await this.requestWithTimeoutRetry("/v1/videos/advanced-lip-sync", "POST", lipSyncBody, 4, this.generateTimeout);
306
+ logger_1.logger.info("Kling generateLipSync submitted", {
307
+ sessionId: faceResp.data.session_id,
308
+ faceId: face.face_id,
65
309
  taskId: task.data.task_id,
66
310
  durationMs: Date.now() - starttime,
67
311
  });
@@ -79,6 +323,8 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
79
323
  sound_file: params.inputAudioUrl,
80
324
  prompt: params.prompt,
81
325
  mode: params.mode || "std",
326
+ ...(params.callbackUrl ? { callback_url: params.callbackUrl } : {}),
327
+ ...(params.externalTaskId ? { external_task_id: params.externalTaskId } : {}),
82
328
  };
83
329
  const starttime = Date.now();
84
330
  // Use requestWithTimeoutRetry so transient Kling server slowness doesn't fail the job outright.
@@ -169,14 +415,35 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
169
415
  }
170
416
  async checkRegularVideoStatus({ task, outputFilename, outputFilePath = "videos", }) {
171
417
  const startTime = Date.now();
172
- const result = await this.requestWithTimeoutRetry(`/v1/videos/text2video/${task}`, "GET");
173
- logger_1.logger.info("Kling checkVideoStatus polled", { task, durationMs: Date.now() - startTime, status: result?.data?.task_status });
418
+ // Try each Kling status endpoint in order until one returns non-404.
419
+ // We don't persist which endpoint was used at submit time, so we probe all of them.
420
+ const statusEndpoints = [
421
+ `/v1/videos/text2video/${task}`,
422
+ `/v1/videos/image2video/${task}`,
423
+ `/v1/videos/video-extend/${task}`,
424
+ `/v1/videos/omni-video/${task}`,
425
+ `/v1/videos/motion-control/${task}`,
426
+ `/v1/videos/advanced-lip-sync/${task}`,
427
+ ];
428
+ let result;
429
+ for (const ep of statusEndpoints) {
430
+ try {
431
+ result = await this.requestWithTimeoutRetry(ep, "GET");
432
+ break; // found it
433
+ }
434
+ catch (err) {
435
+ if (err.response?.status !== 404)
436
+ throw err;
437
+ // 404 → try next endpoint
438
+ }
439
+ }
174
440
  if (!result) {
175
441
  return {
176
442
  status: types_1.EVideoSceneStatus.FAILED,
177
- errorMessage: "No response from Kling API",
443
+ errorMessage: `Task ${task} not found on any Kling status endpoint`,
178
444
  };
179
445
  }
446
+ logger_1.logger.info("Kling checkVideoStatus polled", { task, durationMs: Date.now() - startTime, status: result.data.task_status });
180
447
  if (result.data.task_status === "succeed") {
181
448
  const videoUrl = result.data.task_result?.videos?.[0]?.url;
182
449
  if (!videoUrl) {
@@ -230,22 +497,74 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
230
497
  errorMessage: "No video URL in avatar response",
231
498
  };
232
499
  }
500
+ // Kling task is done. Now download from Kling's CDN, push to GCS, and
501
+ // mint a signed URL. Any of these three can hiccup (Kling CDN slow,
502
+ // GCS 503, signedURL service blip) — historically the whole call threw
503
+ // and the outer TaskPoller burned a poll attempt re-asking Kling for a
504
+ // status that's already known. Wrap the post-success work in its own
505
+ // bounded retry so a transient blip doesn't poison the poll loop.
233
506
  const filePath = `${outputFilePath}/${outputFilename}.mp4`;
234
507
  const file = (0, firebase_1.getBucket)().file(filePath);
235
- const videoResp = await axios_1.default.get(videoUrl, {
236
- responseType: "arraybuffer",
237
- timeout: this.generateTimeout,
238
- });
239
- const buffer = Buffer.from(videoResp.data);
240
- await file.save(buffer, { contentType: "video/mp4" });
241
- const [signedUrl] = await file.getSignedUrl({
242
- action: "read",
243
- expires: "03-09-2491",
244
- });
245
- return {
246
- videoUrl: signedUrl,
247
- status: types_1.EVideoSceneStatus.COMPLETED,
248
- };
508
+ const maxAttempts = 3;
509
+ let lastErr;
510
+ // Force IPv4 on the download. The Kling-returned video URL frequently
511
+ // resolves to a CDN host where IPv6 is broken or routes us to a
512
+ // geo-blocked PoP, producing an AggregateError(ETIMEDOUT) where both
513
+ // happy-eyeballs sockets fail. Pinning v4 avoids the IPv6 dead-end.
514
+ const v4Http = new http_1.default.Agent({ family: 4, keepAlive: true });
515
+ const v4Https = new https_1.default.Agent({ family: 4, keepAlive: true });
516
+ // Parse host so we can log which CDN we couldn't reach.
517
+ let downloadHost = "unknown";
518
+ try {
519
+ downloadHost = new URL(videoUrl).host;
520
+ }
521
+ catch {
522
+ /* leave as unknown */
523
+ }
524
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
525
+ try {
526
+ const videoResp = await axios_1.default.get(videoUrl, {
527
+ responseType: "arraybuffer",
528
+ timeout: this.generateTimeout,
529
+ httpAgent: v4Http,
530
+ httpsAgent: v4Https,
531
+ });
532
+ const buffer = Buffer.from(videoResp.data);
533
+ await file.save(buffer, { contentType: "video/mp4" });
534
+ const [signedUrl] = await file.getSignedUrl({
535
+ action: "read",
536
+ expires: "03-09-2491",
537
+ });
538
+ return {
539
+ videoUrl: signedUrl,
540
+ status: types_1.EVideoSceneStatus.COMPLETED,
541
+ };
542
+ }
543
+ catch (err) {
544
+ lastErr = err;
545
+ const isErr = err instanceof Error;
546
+ logger_1.logger.warn("Kling avatar post-success stash failed", {
547
+ task,
548
+ attempt,
549
+ maxAttempts,
550
+ downloadHost,
551
+ errName: isErr ? err.name : typeof err,
552
+ errCode: isErr ? err.code : undefined,
553
+ httpStatus: isErr ? err.response?.status : undefined,
554
+ msg: isErr ? err.message : String(err),
555
+ });
556
+ if (attempt < maxAttempts) {
557
+ await new Promise((r) => setTimeout(r, 2000 * 2 ** (attempt - 1)));
558
+ }
559
+ }
560
+ }
561
+ // All internal retries exhausted — surface as pending so the outer
562
+ // TaskPoller retries the WHOLE checkVideoStatus call (with its own
563
+ // budget). Throwing here would burn an outer attempt with no extra
564
+ // signal beyond what we already logged.
565
+ throw lastErr instanceof Error
566
+ ? lastErr
567
+ : new Error(`Kling avatar stash failed after ${maxAttempts} attempts`);
249
568
  }
250
569
  if (result.data.task_status === "failed") {
251
570
  return {
@@ -267,15 +586,27 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
267
586
  };
268
587
  return jsonwebtoken_1.default.sign(payload, process.env.KLING_SECRET_KEY, options);
269
588
  }
270
- getCreditUsed({ modelKey, mode = types_2.EVideoMode.PROFESSIONAL, duration = 5, multiClip = false, }) {
589
+ getCreditUsed({ modelKey, mode = types_2.EVideoMode.PROFESSIONAL, duration = 5, multiClip = false, audio = false, }) {
271
590
  const modelConfig = aiModels_1.aiModelConfigs[modelKey];
272
591
  const applyFloor = !multiClip;
273
- // Avatar: per-second pricing based on mode (cost.perMode[mode].perSecond)
592
+ // Avatar: per-second pricing based on mode. Kling lipsync bills in
593
+ // 5-second increments (a 7s clip is billed as 10s).
274
594
  if (modelKey === "kling-avatar") {
275
595
  const perSecond = modelConfig?.cost?.perMode?.[mode]?.perSecond
276
596
  ?? modelConfig?.cost?.perMode?.["std"]?.perSecond
277
597
  ?? 0.014;
278
- return (0, helpers_2.getCreditsFromCost)(perSecond * duration, applyFloor);
598
+ const billedSeconds = Math.ceil(duration / 5) * 5;
599
+ return (0, helpers_2.getCreditsFromCost)(perSecond * billedSeconds, applyFloor);
600
+ }
601
+ // v2.6 splits cost by audio/noAudio tier (audio is 2× upcharge).
602
+ if (modelKey === "kling-v2.6") {
603
+ const branch = audio ? modelConfig?.cost?.audio : modelConfig?.cost?.noAudio;
604
+ const cost = branch?.table?.[mode]?.[duration];
605
+ if (cost === undefined || cost === null) {
606
+ logger_1.logger.warn(`Kling getCreditUsed: no v2.6 cost entry for mode="${mode}" duration=${duration} audio=${audio} — returning fallback`, { modelKey, mode, duration, audio });
607
+ return (0, helpers_2.getCreditsFromCost)(1.0, applyFloor);
608
+ }
609
+ return (0, helpers_2.getCreditsFromCost)(cost, applyFloor);
279
610
  }
280
611
  const cost = modelConfig?.cost?.table?.[mode]?.[duration];
281
612
  if (cost === undefined || cost === null) {
@@ -0,0 +1,21 @@
1
+ import { BaseAiGenProviderService } from "../baseAiGenProvider.service";
2
+ import { CreditUsageParams, ImageGenerationParams, ImageGenerationResult } from "../types";
3
+ export declare class KlingImageService extends BaseAiGenProviderService {
4
+ private readonly baseUrl;
5
+ private readonly submitTimeout;
6
+ private readonly pollTimeout;
7
+ private readonly maxPollMs;
8
+ private readonly pollIntervalMs;
9
+ private readonly v4HttpAgent;
10
+ private readonly v4HttpsAgent;
11
+ constructor();
12
+ private encodeJwtToken;
13
+ private request;
14
+ private submitOmniImageTask;
15
+ private submitStandardImageTask;
16
+ private pollUntilDone;
17
+ private uploadToStorage;
18
+ generateImage(params: ImageGenerationParams): Promise<ImageGenerationResult>;
19
+ getCreditUsed({ modelKey, numImages, multiClip }: CreditUsageParams): number;
20
+ }
21
+ //# sourceMappingURL=klingImage.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"klingImage.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/kling/klingImage.service.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA2C3F,qBAAa,iBAAkB,SAAQ,wBAAwB;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAE/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IAExC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IAEtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IAErC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAGxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;IAC9E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmD;;IAWhF,OAAO,CAAC,cAAc;YAUR,OAAO;YA6BP,mBAAmB;YAsCnB,uBAAuB;YAmCvB,aAAa;YA+Bb,eAAe;IAmBvB,aAAa,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAuClF,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAa,EAAE,SAAiB,EAAE,EAAE,iBAAiB,GAAG,MAAM;CASzF"}