vidspotai-shared 1.0.69-dev.0 → 1.0.69

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 +6 -63
  2. package/lib/globals/aiModels/enums.d.ts.map +1 -1
  3. package/lib/globals/aiModels/enums.js +9 -78
  4. package/lib/globals/aiModels/index.d.ts +30 -2
  5. package/lib/globals/aiModels/index.d.ts.map +1 -1
  6. package/lib/globals/aiModels/index.js +35 -7
  7. package/lib/globals/aiModels/providers/bytedance.d.ts.map +1 -1
  8. package/lib/globals/aiModels/providers/bytedance.js +0 -19
  9. package/lib/globals/aiModels/providers/google.d.ts.map +1 -1
  10. package/lib/globals/aiModels/providers/google.js +2 -150
  11. package/lib/globals/aiModels/providers/kling.d.ts.map +1 -1
  12. package/lib/globals/aiModels/providers/kling.js +37 -280
  13. package/lib/globals/aiModels/providers/minimax.d.ts.map +1 -1
  14. package/lib/globals/aiModels/providers/minimax.js +11 -76
  15. package/lib/globals/aiModels/providers/openai.d.ts.map +1 -1
  16. package/lib/globals/aiModels/providers/openai.js +6 -90
  17. package/lib/globals/aiModels/providers/pixverse.d.ts.map +1 -1
  18. package/lib/globals/aiModels/providers/pixverse.js +29 -111
  19. package/lib/globals/aiModels/providers/runway.d.ts.map +1 -1
  20. package/lib/globals/aiModels/providers/runway.js +2 -64
  21. package/lib/globals/aiModels/types.d.ts +1 -20
  22. package/lib/globals/aiModels/types.d.ts.map +1 -1
  23. package/lib/globals/ttsModels/index.d.ts +0 -2
  24. package/lib/globals/ttsModels/index.d.ts.map +1 -1
  25. package/lib/globals/ttsModels/index.js +1 -9
  26. package/lib/globals/ttsModels/types.d.ts +1 -1
  27. package/lib/globals/ttsModels/types.d.ts.map +1 -1
  28. package/lib/globals/ttsModels/voices.d.ts +4 -39
  29. package/lib/globals/ttsModels/voices.d.ts.map +1 -1
  30. package/lib/globals/ttsModels/voices.js +26 -273
  31. package/lib/globals/types.d.ts +1 -59
  32. package/lib/globals/types.d.ts.map +1 -1
  33. package/lib/globals/types.js +2 -81
  34. package/lib/index.d.ts +0 -1
  35. package/lib/index.d.ts.map +1 -1
  36. package/lib/index.js +0 -1
  37. package/lib/models/index.d.ts +0 -6
  38. package/lib/models/index.d.ts.map +1 -1
  39. package/lib/models/index.js +0 -6
  40. package/lib/models/user.model.d.ts +1 -12
  41. package/lib/models/user.model.d.ts.map +1 -1
  42. package/lib/models/video.model.d.ts +8 -120
  43. package/lib/models/video.model.d.ts.map +1 -1
  44. package/lib/models/video.model.js +0 -10
  45. package/lib/services/aiGen/aiGenFactory.service.d.ts +1 -21
  46. package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
  47. package/lib/services/aiGen/aiGenFactory.service.js +21 -84
  48. package/lib/services/aiGen/helpers.d.ts.map +1 -1
  49. package/lib/services/aiGen/helpers.js +0 -10
  50. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts +3 -14
  51. package/lib/services/aiGen/providers/alibaba/alibaba.d.ts.map +1 -1
  52. package/lib/services/aiGen/providers/alibaba/alibaba.js +22 -155
  53. package/lib/services/aiGen/providers/azure/azure.service.d.ts +14 -0
  54. package/lib/services/aiGen/providers/azure/azure.service.d.ts.map +1 -0
  55. package/lib/services/aiGen/providers/azure/azure.service.js +108 -0
  56. package/lib/services/aiGen/providers/azure/index.d.ts +2 -0
  57. package/lib/services/aiGen/providers/azure/index.d.ts.map +1 -0
  58. package/lib/services/aiGen/providers/{pexels → azure}/index.js +1 -1
  59. package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts +4 -22
  60. package/lib/services/aiGen/providers/baseAiGenProvider.service.d.ts.map +1 -1
  61. package/lib/services/aiGen/providers/baseAiGenProvider.service.js +0 -32
  62. package/lib/services/aiGen/providers/bytedance/bytedance.service.d.ts.map +1 -1
  63. package/lib/services/aiGen/providers/bytedance/bytedance.service.js +25 -13
  64. package/lib/services/aiGen/providers/google/google.service.d.ts +2 -11
  65. package/lib/services/aiGen/providers/google/google.service.d.ts.map +1 -1
  66. package/lib/services/aiGen/providers/google/google.service.js +28 -245
  67. package/lib/services/aiGen/providers/index.d.ts +0 -3
  68. package/lib/services/aiGen/providers/index.d.ts.map +1 -1
  69. package/lib/services/aiGen/providers/index.js +0 -3
  70. package/lib/services/aiGen/providers/kling/index.d.ts +0 -1
  71. package/lib/services/aiGen/providers/kling/index.d.ts.map +1 -1
  72. package/lib/services/aiGen/providers/kling/index.js +0 -1
  73. package/lib/services/aiGen/providers/kling/kling.service.d.ts +1 -12
  74. package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
  75. package/lib/services/aiGen/providers/kling/kling.service.js +26 -357
  76. package/lib/services/aiGen/providers/kling/types.d.ts +0 -105
  77. package/lib/services/aiGen/providers/kling/types.d.ts.map +1 -1
  78. package/lib/services/aiGen/providers/minimax/minimax.service.d.ts +2 -15
  79. package/lib/services/aiGen/providers/minimax/minimax.service.d.ts.map +1 -1
  80. package/lib/services/aiGen/providers/minimax/minimax.service.js +5 -128
  81. package/lib/services/aiGen/providers/minimax/types.d.ts +1 -10
  82. package/lib/services/aiGen/providers/minimax/types.d.ts.map +1 -1
  83. package/lib/services/aiGen/providers/openai/openai.service.d.ts +2 -8
  84. package/lib/services/aiGen/providers/openai/openai.service.d.ts.map +1 -1
  85. package/lib/services/aiGen/providers/openai/openai.service.js +7 -184
  86. package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
  87. package/lib/services/aiGen/providers/pixverse/pixverse.service.js +2 -125
  88. package/lib/services/aiGen/providers/runway/runway.service.d.ts +2 -12
  89. package/lib/services/aiGen/providers/runway/runway.service.d.ts.map +1 -1
  90. package/lib/services/aiGen/providers/runway/runway.service.js +21 -224
  91. package/lib/services/aiGen/providers/types.d.ts +6 -263
  92. package/lib/services/aiGen/providers/types.d.ts.map +1 -1
  93. package/lib/services/analytics.service.js +4 -2
  94. package/lib/services/bullmq.service.d.ts +1 -6
  95. package/lib/services/bullmq.service.d.ts.map +1 -1
  96. package/lib/services/bullmq.service.js +14 -62
  97. package/lib/services/credit.service.d.ts.map +1 -1
  98. package/lib/services/credit.service.js +7 -45
  99. package/lib/services/firestore.service.d.ts +0 -17
  100. package/lib/services/firestore.service.d.ts.map +1 -1
  101. package/lib/services/firestore.service.js +0 -30
  102. package/lib/services/gcp/index.d.ts +0 -1
  103. package/lib/services/gcp/index.d.ts.map +1 -1
  104. package/lib/services/gcp/index.js +0 -1
  105. package/lib/services/index.d.ts +0 -13
  106. package/lib/services/index.d.ts.map +1 -1
  107. package/lib/services/index.js +0 -13
  108. package/lib/services/redis.service.d.ts +0 -9
  109. package/lib/services/redis.service.d.ts.map +1 -1
  110. package/lib/services/redis.service.js +11 -20
  111. package/lib/services/tts/index.d.ts +0 -2
  112. package/lib/services/tts/index.d.ts.map +1 -1
  113. package/lib/services/tts/index.js +0 -2
  114. package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
  115. package/lib/services/tts/providers/elevenlabs.service.js +24 -91
  116. package/lib/services/tts/ttsFactory.service.d.ts.map +1 -1
  117. package/lib/services/tts/ttsFactory.service.js +0 -6
  118. package/lib/services/tts/types.d.ts +0 -33
  119. package/lib/services/tts/types.d.ts.map +1 -1
  120. package/lib/utils/errors.d.ts +0 -8
  121. package/lib/utils/errors.d.ts.map +1 -1
  122. package/lib/utils/errors.js +0 -8
  123. package/lib/utils/helpers.d.ts +0 -13
  124. package/lib/utils/helpers.d.ts.map +1 -1
  125. package/lib/utils/helpers.js +11 -48
  126. package/lib/utils/logger.d.ts.map +1 -1
  127. package/lib/utils/logger.js +1 -37
  128. package/package.json +1 -5
  129. package/lib/globals/aiModels/providers/alibaba.d.ts +0 -4
  130. package/lib/globals/aiModels/providers/alibaba.d.ts.map +0 -1
  131. package/lib/globals/aiModels/providers/alibaba.js +0 -194
  132. package/lib/globals/aiModels/providers/elevenlabs.d.ts +0 -14
  133. package/lib/globals/aiModels/providers/elevenlabs.d.ts.map +0 -1
  134. package/lib/globals/aiModels/providers/elevenlabs.js +0 -29
  135. package/lib/globals/aiModels/providers/pixverseTemplates.d.ts +0 -36
  136. package/lib/globals/aiModels/providers/pixverseTemplates.d.ts.map +0 -1
  137. package/lib/globals/aiModels/providers/pixverseTemplates.js +0 -42
  138. package/lib/globals/aiModels/tierHelpers.d.ts +0 -33
  139. package/lib/globals/aiModels/tierHelpers.d.ts.map +0 -1
  140. package/lib/globals/aiModels/tierHelpers.js +0 -109
  141. package/lib/globals/ttsModels/providers/minimax.d.ts +0 -8
  142. package/lib/globals/ttsModels/providers/minimax.d.ts.map +0 -1
  143. package/lib/globals/ttsModels/providers/minimax.js +0 -18
  144. package/lib/globals/ttsModels/providers/openai.d.ts +0 -12
  145. package/lib/globals/ttsModels/providers/openai.d.ts.map +0 -1
  146. package/lib/globals/ttsModels/providers/openai.js +0 -22
  147. package/lib/models/agent.model.d.ts +0 -357
  148. package/lib/models/agent.model.d.ts.map +0 -1
  149. package/lib/models/agent.model.js +0 -21
  150. package/lib/models/cachedAsset.model.d.ts +0 -18
  151. package/lib/models/cachedAsset.model.d.ts.map +0 -1
  152. package/lib/models/cachedAsset.model.js +0 -2
  153. package/lib/models/cachedRawAsset.model.d.ts +0 -20
  154. package/lib/models/cachedRawAsset.model.d.ts.map +0 -1
  155. package/lib/models/cachedRawAsset.model.js +0 -2
  156. package/lib/models/image.model.d.ts +0 -47
  157. package/lib/models/image.model.d.ts.map +0 -1
  158. package/lib/models/image.model.js +0 -2
  159. package/lib/models/notification.model.d.ts +0 -25
  160. package/lib/models/notification.model.d.ts.map +0 -1
  161. package/lib/models/notification.model.js +0 -2
  162. package/lib/models/ref.model.d.ts +0 -80
  163. package/lib/models/ref.model.d.ts.map +0 -1
  164. package/lib/models/ref.model.js +0 -13
  165. package/lib/models/share.model.d.ts +0 -29
  166. package/lib/models/share.model.d.ts.map +0 -1
  167. package/lib/models/share.model.js +0 -2
  168. package/lib/schemas/agentPersona.schema.d.ts +0 -10
  169. package/lib/schemas/agentPersona.schema.d.ts.map +0 -1
  170. package/lib/schemas/agentPersona.schema.js +0 -11
  171. package/lib/schemas/agentRunJob.schema.d.ts +0 -105
  172. package/lib/schemas/agentRunJob.schema.d.ts.map +0 -1
  173. package/lib/schemas/agentRunJob.schema.js +0 -88
  174. package/lib/schemas/brandKit.schema.d.ts +0 -113
  175. package/lib/schemas/brandKit.schema.d.ts.map +0 -1
  176. package/lib/schemas/brandKit.schema.js +0 -46
  177. package/lib/schemas/brief.schema.d.ts +0 -263
  178. package/lib/schemas/brief.schema.d.ts.map +0 -1
  179. package/lib/schemas/brief.schema.js +0 -157
  180. package/lib/schemas/index.d.ts +0 -7
  181. package/lib/schemas/index.d.ts.map +0 -1
  182. package/lib/schemas/index.js +0 -22
  183. package/lib/schemas/project.schema.d.ts +0 -1025
  184. package/lib/schemas/project.schema.d.ts.map +0 -1
  185. package/lib/schemas/project.schema.js +0 -256
  186. package/lib/schemas/videoPlan.schema.d.ts +0 -590
  187. package/lib/schemas/videoPlan.schema.d.ts.map +0 -1
  188. package/lib/schemas/videoPlan.schema.js +0 -412
  189. package/lib/services/agent/beatSnap.d.ts +0 -10
  190. package/lib/services/agent/beatSnap.d.ts.map +0 -1
  191. package/lib/services/agent/beatSnap.js +0 -128
  192. package/lib/services/agent/bibleBuilder.d.ts +0 -43
  193. package/lib/services/agent/bibleBuilder.d.ts.map +0 -1
  194. package/lib/services/agent/bibleBuilder.js +0 -102
  195. package/lib/services/agent/bibleImageVision.d.ts +0 -45
  196. package/lib/services/agent/bibleImageVision.d.ts.map +0 -1
  197. package/lib/services/agent/bibleImageVision.js +0 -169
  198. package/lib/services/agent/chatAgent.d.ts +0 -79
  199. package/lib/services/agent/chatAgent.d.ts.map +0 -1
  200. package/lib/services/agent/chatAgent.js +0 -136
  201. package/lib/services/agent/costPreflight.d.ts +0 -61
  202. package/lib/services/agent/costPreflight.d.ts.map +0 -1
  203. package/lib/services/agent/costPreflight.js +0 -143
  204. package/lib/services/agent/critic.d.ts +0 -103
  205. package/lib/services/agent/critic.d.ts.map +0 -1
  206. package/lib/services/agent/critic.js +0 -139
  207. package/lib/services/agent/editClassifier.d.ts +0 -262
  208. package/lib/services/agent/editClassifier.d.ts.map +0 -1
  209. package/lib/services/agent/editClassifier.js +0 -186
  210. package/lib/services/agent/eval/index.d.ts +0 -5
  211. package/lib/services/agent/eval/index.d.ts.map +0 -1
  212. package/lib/services/agent/eval/index.js +0 -20
  213. package/lib/services/agent/eval/judge.d.ts +0 -14
  214. package/lib/services/agent/eval/judge.d.ts.map +0 -1
  215. package/lib/services/agent/eval/judge.js +0 -96
  216. package/lib/services/agent/eval/recorder.d.ts +0 -28
  217. package/lib/services/agent/eval/recorder.d.ts.map +0 -1
  218. package/lib/services/agent/eval/recorder.js +0 -100
  219. package/lib/services/agent/eval/seedBriefs.d.ts +0 -16
  220. package/lib/services/agent/eval/seedBriefs.d.ts.map +0 -1
  221. package/lib/services/agent/eval/seedBriefs.js +0 -1188
  222. package/lib/services/agent/eval/types.d.ts +0 -230
  223. package/lib/services/agent/eval/types.d.ts.map +0 -1
  224. package/lib/services/agent/eval/types.js +0 -73
  225. package/lib/services/agent/executor.d.ts +0 -141
  226. package/lib/services/agent/executor.d.ts.map +0 -1
  227. package/lib/services/agent/executor.js +0 -561
  228. package/lib/services/agent/globalActions.d.ts +0 -49
  229. package/lib/services/agent/globalActions.d.ts.map +0 -1
  230. package/lib/services/agent/globalActions.js +0 -328
  231. package/lib/services/agent/index.d.ts +0 -38
  232. package/lib/services/agent/index.d.ts.map +0 -1
  233. package/lib/services/agent/index.js +0 -53
  234. package/lib/services/agent/llmCaller.d.ts +0 -144
  235. package/lib/services/agent/llmCaller.d.ts.map +0 -1
  236. package/lib/services/agent/llmCaller.js +0 -16
  237. package/lib/services/agent/llmCallerAnthropic.d.ts +0 -90
  238. package/lib/services/agent/llmCallerAnthropic.d.ts.map +0 -1
  239. package/lib/services/agent/llmCallerAnthropic.js +0 -255
  240. package/lib/services/agent/llmCallerGateway.d.ts +0 -61
  241. package/lib/services/agent/llmCallerGateway.d.ts.map +0 -1
  242. package/lib/services/agent/llmCallerGateway.js +0 -360
  243. package/lib/services/agent/llmCallerRegistry.d.ts +0 -6
  244. package/lib/services/agent/llmCallerRegistry.d.ts.map +0 -1
  245. package/lib/services/agent/llmCallerRegistry.js +0 -39
  246. package/lib/services/agent/modelQualityNotes.d.ts +0 -100
  247. package/lib/services/agent/modelQualityNotes.d.ts.map +0 -1
  248. package/lib/services/agent/modelQualityNotes.js +0 -248
  249. package/lib/services/agent/modelRouter.d.ts +0 -41
  250. package/lib/services/agent/modelRouter.d.ts.map +0 -1
  251. package/lib/services/agent/modelRouter.js +0 -65
  252. package/lib/services/agent/musicSelect.d.ts +0 -23
  253. package/lib/services/agent/musicSelect.d.ts.map +0 -1
  254. package/lib/services/agent/musicSelect.js +0 -109
  255. package/lib/services/agent/overlayRenderer.d.ts +0 -67
  256. package/lib/services/agent/overlayRenderer.d.ts.map +0 -1
  257. package/lib/services/agent/overlayRenderer.js +0 -253
  258. package/lib/services/agent/perSceneCritic.d.ts +0 -90
  259. package/lib/services/agent/perSceneCritic.d.ts.map +0 -1
  260. package/lib/services/agent/perSceneCritic.js +0 -125
  261. package/lib/services/agent/personas.d.ts +0 -78
  262. package/lib/services/agent/personas.d.ts.map +0 -1
  263. package/lib/services/agent/personas.js +0 -177
  264. package/lib/services/agent/planDiff.d.ts +0 -76
  265. package/lib/services/agent/planDiff.d.ts.map +0 -1
  266. package/lib/services/agent/planDiff.js +0 -182
  267. package/lib/services/agent/planMutations.d.ts +0 -46
  268. package/lib/services/agent/planMutations.d.ts.map +0 -1
  269. package/lib/services/agent/planMutations.js +0 -120
  270. package/lib/services/agent/planner/Planner.d.ts +0 -107
  271. package/lib/services/agent/planner/Planner.d.ts.map +0 -1
  272. package/lib/services/agent/planner/Planner.js +0 -591
  273. package/lib/services/agent/planner/overlaySanity.d.ts +0 -7
  274. package/lib/services/agent/planner/overlaySanity.d.ts.map +0 -1
  275. package/lib/services/agent/planner/overlaySanity.js +0 -86
  276. package/lib/services/agent/planner/promptSections.d.ts +0 -25
  277. package/lib/services/agent/planner/promptSections.d.ts.map +0 -1
  278. package/lib/services/agent/planner/promptSections.js +0 -174
  279. package/lib/services/agent/planner/repair.d.ts +0 -16
  280. package/lib/services/agent/planner/repair.d.ts.map +0 -1
  281. package/lib/services/agent/planner/repair.js +0 -51
  282. package/lib/services/agent/planner/structuralRules.d.ts +0 -10
  283. package/lib/services/agent/planner/structuralRules.d.ts.map +0 -1
  284. package/lib/services/agent/planner/structuralRules.js +0 -111
  285. package/lib/services/agent/planner/validators.d.ts +0 -65
  286. package/lib/services/agent/planner/validators.d.ts.map +0 -1
  287. package/lib/services/agent/planner/validators.js +0 -284
  288. package/lib/services/agent/planner.d.ts +0 -3
  289. package/lib/services/agent/planner.d.ts.map +0 -1
  290. package/lib/services/agent/planner.js +0 -14
  291. package/lib/services/agent/providerFallback/chains.d.ts +0 -100
  292. package/lib/services/agent/providerFallback/chains.d.ts.map +0 -1
  293. package/lib/services/agent/providerFallback/chains.js +0 -198
  294. package/lib/services/agent/providerFallback/classifier.d.ts +0 -36
  295. package/lib/services/agent/providerFallback/classifier.d.ts.map +0 -1
  296. package/lib/services/agent/providerFallback/classifier.js +0 -103
  297. package/lib/services/agent/providerFallback/index.d.ts +0 -4
  298. package/lib/services/agent/providerFallback/index.d.ts.map +0 -1
  299. package/lib/services/agent/providerFallback/index.js +0 -19
  300. package/lib/services/agent/providerFallback/withFallback.d.ts +0 -60
  301. package/lib/services/agent/providerFallback/withFallback.d.ts.map +0 -1
  302. package/lib/services/agent/providerFallback/withFallback.js +0 -93
  303. package/lib/services/agent/providerTaskCache.d.ts +0 -50
  304. package/lib/services/agent/providerTaskCache.d.ts.map +0 -1
  305. package/lib/services/agent/providerTaskCache.js +0 -98
  306. package/lib/services/agent/qualityGate.d.ts +0 -82
  307. package/lib/services/agent/qualityGate.d.ts.map +0 -1
  308. package/lib/services/agent/qualityGate.js +0 -232
  309. package/lib/services/agent/referenceImageRenderer.d.ts +0 -37
  310. package/lib/services/agent/referenceImageRenderer.d.ts.map +0 -1
  311. package/lib/services/agent/referenceImageRenderer.js +0 -92
  312. package/lib/services/agent/regenCore.d.ts +0 -60
  313. package/lib/services/agent/regenCore.d.ts.map +0 -1
  314. package/lib/services/agent/regenCore.js +0 -487
  315. package/lib/services/agent/runHelpers.d.ts +0 -44
  316. package/lib/services/agent/runHelpers.d.ts.map +0 -1
  317. package/lib/services/agent/runHelpers.js +0 -196
  318. package/lib/services/agent/sceneLayoutVision.d.ts +0 -90
  319. package/lib/services/agent/sceneLayoutVision.d.ts.map +0 -1
  320. package/lib/services/agent/sceneLayoutVision.js +0 -212
  321. package/lib/services/agent/stitchedVideoCritic.d.ts +0 -136
  322. package/lib/services/agent/stitchedVideoCritic.d.ts.map +0 -1
  323. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts +0 -26
  324. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts.map +0 -1
  325. package/lib/services/agent/stitchedVideoCritic.gemini.js +0 -198
  326. package/lib/services/agent/stitchedVideoCritic.js +0 -162
  327. package/lib/services/agent/taskPoller.d.ts +0 -65
  328. package/lib/services/agent/taskPoller.d.ts.map +0 -1
  329. package/lib/services/agent/taskPoller.js +0 -176
  330. package/lib/services/agent/textOverlayStyles.d.ts +0 -60
  331. package/lib/services/agent/textOverlayStyles.d.ts.map +0 -1
  332. package/lib/services/agent/textOverlayStyles.js +0 -174
  333. package/lib/services/agent/toolRegistry.d.ts +0 -73
  334. package/lib/services/agent/toolRegistry.d.ts.map +0 -1
  335. package/lib/services/agent/toolRegistry.js +0 -95
  336. package/lib/services/agent/tools/analyzeReference.tool.d.ts +0 -36
  337. package/lib/services/agent/tools/analyzeReference.tool.d.ts.map +0 -1
  338. package/lib/services/agent/tools/analyzeReference.tool.js +0 -44
  339. package/lib/services/agent/tools/animateImage.tool.d.ts +0 -24
  340. package/lib/services/agent/tools/animateImage.tool.d.ts.map +0 -1
  341. package/lib/services/agent/tools/animateImage.tool.js +0 -115
  342. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts +0 -32
  343. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts.map +0 -1
  344. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.js +0 -135
  345. package/lib/services/agent/tools/composeScene.tool.d.ts +0 -978
  346. package/lib/services/agent/tools/composeScene.tool.d.ts.map +0 -1
  347. package/lib/services/agent/tools/composeScene.tool.js +0 -90
  348. package/lib/services/agent/tools/estimateCost.tool.d.ts +0 -352
  349. package/lib/services/agent/tools/estimateCost.tool.d.ts.map +0 -1
  350. package/lib/services/agent/tools/estimateCost.tool.js +0 -62
  351. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +0 -32
  352. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts.map +0 -1
  353. package/lib/services/agent/tools/generateAvatarVideo.tool.js +0 -143
  354. package/lib/services/agent/tools/generateCaptions.tool.d.ts +0 -42
  355. package/lib/services/agent/tools/generateCaptions.tool.d.ts.map +0 -1
  356. package/lib/services/agent/tools/generateCaptions.tool.js +0 -196
  357. package/lib/services/agent/tools/generateImage.tool.d.ts +0 -74
  358. package/lib/services/agent/tools/generateImage.tool.d.ts.map +0 -1
  359. package/lib/services/agent/tools/generateImage.tool.js +0 -206
  360. package/lib/services/agent/tools/generateVideo.tool.d.ts +0 -31
  361. package/lib/services/agent/tools/generateVideo.tool.d.ts.map +0 -1
  362. package/lib/services/agent/tools/generateVideo.tool.js +0 -153
  363. package/lib/services/agent/tools/generateVoiceover.tool.d.ts +0 -44
  364. package/lib/services/agent/tools/generateVoiceover.tool.d.ts.map +0 -1
  365. package/lib/services/agent/tools/generateVoiceover.tool.js +0 -206
  366. package/lib/services/agent/tools/index.d.ts +0 -20
  367. package/lib/services/agent/tools/index.d.ts.map +0 -1
  368. package/lib/services/agent/tools/index.js +0 -35
  369. package/lib/services/agent/tools/planVideo.tool.d.ts +0 -343
  370. package/lib/services/agent/tools/planVideo.tool.d.ts.map +0 -1
  371. package/lib/services/agent/tools/planVideo.tool.js +0 -46
  372. package/lib/services/agent/tools/render.tool.d.ts +0 -367
  373. package/lib/services/agent/tools/render.tool.d.ts.map +0 -1
  374. package/lib/services/agent/tools/render.tool.js +0 -48
  375. package/lib/services/agent/tools/searchMusic.tool.d.ts +0 -49
  376. package/lib/services/agent/tools/searchMusic.tool.d.ts.map +0 -1
  377. package/lib/services/agent/tools/searchMusic.tool.js +0 -74
  378. package/lib/services/agent/tools/searchStock.tool.d.ts +0 -41
  379. package/lib/services/agent/tools/searchStock.tool.d.ts.map +0 -1
  380. package/lib/services/agent/tools/searchStock.tool.js +0 -314
  381. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +0 -59
  382. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts.map +0 -1
  383. package/lib/services/agent/tools/searchUserLibrary.tool.js +0 -58
  384. package/lib/services/agent/ttsDuration.d.ts +0 -29
  385. package/lib/services/agent/ttsDuration.d.ts.map +0 -1
  386. package/lib/services/agent/ttsDuration.js +0 -60
  387. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts +0 -31
  388. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts.map +0 -1
  389. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.js +0 -2
  390. package/lib/services/aiGen/canonicalAdapters/index.d.ts +0 -3
  391. package/lib/services/aiGen/canonicalAdapters/index.d.ts.map +0 -1
  392. package/lib/services/aiGen/canonicalAdapters/index.js +0 -18
  393. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts +0 -23
  394. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts.map +0 -1
  395. package/lib/services/aiGen/canonicalAdapters/multiShot.types.js +0 -12
  396. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts +0 -18
  397. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts.map +0 -1
  398. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.js +0 -102
  399. package/lib/services/aiGen/providers/fal/falImage.service.d.ts +0 -15
  400. package/lib/services/aiGen/providers/fal/falImage.service.d.ts.map +0 -1
  401. package/lib/services/aiGen/providers/fal/falImage.service.js +0 -141
  402. package/lib/services/aiGen/providers/fal/index.d.ts +0 -2
  403. package/lib/services/aiGen/providers/fal/index.d.ts.map +0 -1
  404. package/lib/services/aiGen/providers/fal/index.js +0 -17
  405. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts +0 -4
  406. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts.map +0 -1
  407. package/lib/services/aiGen/providers/kling/cameraAdapter.js +0 -53
  408. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts +0 -21
  409. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts.map +0 -1
  410. package/lib/services/aiGen/providers/kling/klingImage.service.js +0 -208
  411. package/lib/services/aiGen/providers/pexels/index.d.ts +0 -2
  412. package/lib/services/aiGen/providers/pexels/index.d.ts.map +0 -1
  413. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts +0 -11
  414. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts.map +0 -1
  415. package/lib/services/aiGen/providers/pexels/pexels.service.js +0 -150
  416. package/lib/services/aiGen/providers/pixabay/index.d.ts +0 -2
  417. package/lib/services/aiGen/providers/pixabay/index.d.ts.map +0 -1
  418. package/lib/services/aiGen/providers/pixabay/index.js +0 -17
  419. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts +0 -12
  420. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts.map +0 -1
  421. package/lib/services/aiGen/providers/pixabay/pixabay.service.js +0 -156
  422. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts +0 -3
  423. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts.map +0 -1
  424. package/lib/services/aiGen/providers/runway/cameraAdapter.js +0 -46
  425. package/lib/services/aiGen/providers/unsplash/index.d.ts +0 -2
  426. package/lib/services/aiGen/providers/unsplash/index.d.ts.map +0 -1
  427. package/lib/services/aiGen/providers/unsplash/index.js +0 -17
  428. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts +0 -16
  429. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts.map +0 -1
  430. package/lib/services/aiGen/providers/unsplash/unsplash.service.js +0 -131
  431. package/lib/services/apiUsageCounter.service.d.ts +0 -20
  432. package/lib/services/apiUsageCounter.service.d.ts.map +0 -1
  433. package/lib/services/apiUsageCounter.service.js +0 -84
  434. package/lib/services/asr/assemblyai.service.d.ts +0 -72
  435. package/lib/services/asr/assemblyai.service.d.ts.map +0 -1
  436. package/lib/services/asr/assemblyai.service.js +0 -89
  437. package/lib/services/asr/index.d.ts +0 -3
  438. package/lib/services/asr/index.d.ts.map +0 -1
  439. package/lib/services/asr/index.js +0 -18
  440. package/lib/services/asr/whisper.service.d.ts +0 -18
  441. package/lib/services/asr/whisper.service.d.ts.map +0 -1
  442. package/lib/services/asr/whisper.service.js +0 -151
  443. package/lib/services/assetCache.service.d.ts +0 -54
  444. package/lib/services/assetCache.service.d.ts.map +0 -1
  445. package/lib/services/assetCache.service.js +0 -109
  446. package/lib/services/audioAnalysis/index.d.ts +0 -2
  447. package/lib/services/audioAnalysis/index.d.ts.map +0 -1
  448. package/lib/services/audioAnalysis/index.js +0 -17
  449. package/lib/services/audioAnalysis/onsetDetection.service.d.ts +0 -50
  450. package/lib/services/audioAnalysis/onsetDetection.service.d.ts.map +0 -1
  451. package/lib/services/audioAnalysis/onsetDetection.service.js +0 -140
  452. package/lib/services/credits/pricing.d.ts +0 -58
  453. package/lib/services/credits/pricing.d.ts.map +0 -1
  454. package/lib/services/credits/pricing.js +0 -111
  455. package/lib/services/editor/designToProject.d.ts +0 -75
  456. package/lib/services/editor/designToProject.d.ts.map +0 -1
  457. package/lib/services/editor/designToProject.js +0 -295
  458. package/lib/services/editor/planToProject.d.ts +0 -84
  459. package/lib/services/editor/planToProject.d.ts.map +0 -1
  460. package/lib/services/editor/planToProject.js +0 -395
  461. package/lib/services/editor/projectToDesign.d.ts +0 -4
  462. package/lib/services/editor/projectToDesign.d.ts.map +0 -1
  463. package/lib/services/editor/projectToDesign.js +0 -186
  464. package/lib/services/gcp/uploadAudioBuffer.d.ts +0 -13
  465. package/lib/services/gcp/uploadAudioBuffer.d.ts.map +0 -1
  466. package/lib/services/gcp/uploadAudioBuffer.js +0 -28
  467. package/lib/services/musicGen/index.d.ts +0 -6
  468. package/lib/services/musicGen/index.d.ts.map +0 -1
  469. package/lib/services/musicGen/index.js +0 -26
  470. package/lib/services/musicGen/musicSearchFactory.service.d.ts +0 -14
  471. package/lib/services/musicGen/musicSearchFactory.service.d.ts.map +0 -1
  472. package/lib/services/musicGen/musicSearchFactory.service.js +0 -59
  473. package/lib/services/musicGen/providers/curated.service.d.ts +0 -24
  474. package/lib/services/musicGen/providers/curated.service.d.ts.map +0 -1
  475. package/lib/services/musicGen/providers/curated.service.js +0 -173
  476. package/lib/services/musicGen/providers/jamendo.service.d.ts +0 -8
  477. package/lib/services/musicGen/providers/jamendo.service.d.ts.map +0 -1
  478. package/lib/services/musicGen/providers/jamendo.service.js +0 -113
  479. package/lib/services/musicGen/providers/mubert.service.d.ts +0 -10
  480. package/lib/services/musicGen/providers/mubert.service.d.ts.map +0 -1
  481. package/lib/services/musicGen/providers/mubert.service.js +0 -128
  482. package/lib/services/musicGen/types.d.ts +0 -46
  483. package/lib/services/musicGen/types.d.ts.map +0 -1
  484. package/lib/services/musicGen/types.js +0 -10
  485. package/lib/services/notification.service.d.ts +0 -22
  486. package/lib/services/notification.service.d.ts.map +0 -1
  487. package/lib/services/notification.service.js +0 -76
  488. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts +0 -78
  489. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts.map +0 -1
  490. package/lib/services/rateLimiter/distributedRateLimiter.service.js +0 -269
  491. package/lib/services/rateLimiter/index.d.ts +0 -2
  492. package/lib/services/rateLimiter/index.d.ts.map +0 -1
  493. package/lib/services/rateLimiter/index.js +0 -17
  494. package/lib/services/redisOptions.d.ts +0 -22
  495. package/lib/services/redisOptions.d.ts.map +0 -1
  496. package/lib/services/redisOptions.js +0 -51
  497. package/lib/services/tts/providers/minimax.service.d.ts +0 -14
  498. package/lib/services/tts/providers/minimax.service.d.ts.map +0 -1
  499. package/lib/services/tts/providers/minimax.service.js +0 -78
  500. package/lib/services/tts/providers/openai.service.d.ts +0 -14
  501. package/lib/services/tts/providers/openai.service.d.ts.map +0 -1
  502. package/lib/services/tts/providers/openai.service.js +0 -73
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotificationService = void 0;
4
- const firestore_1 = require("firebase-admin/firestore");
5
- const types_1 = require("../globals/types");
6
- const logger_1 = require("../utils/logger");
7
- const firestore_service_1 = require("./firestore.service");
8
- /**
9
- * Writes an in-app notification doc IF the user hasn't muted this type.
10
- *
11
- * Best-effort: failures are logged but never re-thrown — callers (worker
12
- * processors, webhook handlers, credit service) should not be blocked by a
13
- * notification write. The user reads via Firestore onSnapshot, so a missed
14
- * write just means a missing bell entry, not a broken job.
15
- */
16
- class NotificationService {
17
- static async create(input) {
18
- try {
19
- const user = await firestore_service_1.FirestoreService.getUserById(input.userId);
20
- if (!user)
21
- return null;
22
- if (!isEnabled(user, input.type))
23
- return null;
24
- const doc = {
25
- userId: input.userId,
26
- type: input.type,
27
- severity: input.severity ?? defaultSeverity(input.type),
28
- title: input.title,
29
- ...(input.body && { body: input.body }),
30
- ...(input.link && { link: input.link }),
31
- ...(input.data && { data: input.data }),
32
- read: false,
33
- createdAt: firestore_1.FieldValue.serverTimestamp(),
34
- };
35
- const ref = await firestore_service_1.FirestoreService.appendNewRecord(firestore_service_1.FirestoreService.notificationsCol, doc);
36
- return ref.id;
37
- }
38
- catch (err) {
39
- // Intentionally swallowed for caller — notifications must never break the
40
- // worker / webhook handler / credit service. But surface to ops so we
41
- // notice persistent write failures.
42
- logger_1.logger.error("notification create failed", {
43
- userId: input.userId,
44
- type: input.type,
45
- err: err instanceof Error ? err.stack ?? err.message : String(err),
46
- });
47
- return null;
48
- }
49
- }
50
- }
51
- exports.NotificationService = NotificationService;
52
- function isEnabled(user, type) {
53
- const prefs = user.notificationPreferences ?? {};
54
- if (type in prefs)
55
- return prefs[type] !== false;
56
- return types_1.DEFAULT_NOTIFICATION_PREFERENCES[type] !== false;
57
- }
58
- function defaultSeverity(type) {
59
- switch (type) {
60
- case types_1.ENotificationType.VIDEO_FAILED:
61
- case types_1.ENotificationType.IMAGE_FAILED:
62
- case types_1.ENotificationType.SUBSCRIPTION_PAYMENT_FAILED:
63
- return types_1.ENotificationSeverity.ERROR;
64
- case types_1.ENotificationType.VIDEO_PARTIAL:
65
- case types_1.ENotificationType.CREDITS_LOW:
66
- case types_1.ENotificationType.SUBSCRIPTION_TRIAL_ENDING:
67
- case types_1.ENotificationType.SUBSCRIPTION_CANCELED:
68
- return types_1.ENotificationSeverity.WARNING;
69
- case types_1.ENotificationType.VIDEO_COMPLETED:
70
- case types_1.ENotificationType.IMAGE_COMPLETED:
71
- case types_1.ENotificationType.SUBSCRIPTION_RENEWED:
72
- return types_1.ENotificationSeverity.SUCCESS;
73
- default:
74
- return types_1.ENotificationSeverity.INFO;
75
- }
76
- }
@@ -1,78 +0,0 @@
1
- import { TAiGenModel } from "../../globals/aiModels";
2
- import { TtsProvider } from "../../globals/ttsModels/types";
3
- /**
4
- * DistributedRateLimiter — three-tier provider quota gate.
5
- *
6
- * concurrent (in-process, Promise wait queue, single-process-correct)
7
- * per-minute (Redis sliding-window sorted set, atomic via Lua)
8
- * per-day (Redis counter with midnight-UTC TTL, atomic via Lua)
9
- *
10
- * Replaces the original in-memory AiGenModelRateLimiter so the per-minute
11
- * and per-day quotas survive process restarts — the old version's counters
12
- * reset on every nodemon reload / deploy, which let us blow past a provider's
13
- * daily cap with a few restarts.
14
- *
15
- * API mirrors the old class (`waitUntilAvailable()` + `releaseSlot()`) so the
16
- * legacy /v1/video processors don't need any callsite changes. Two new entry
17
- * points added for the agent path:
18
- * - waitUntilAvailableForOneShot(): used by poll calls that consume rate
19
- * budget but should NOT count toward the concurrent-in-flight cap.
20
- * - snapshot(): used by /health/rate-limits for live utilization.
21
- *
22
- * Single-process design: concurrent counter is intentionally in-process — at
23
- * one Express server it's a true global cap with zero Redis round-trip. If
24
- * we ever scale horizontally that gate alone needs promoting to Redis; the
25
- * caller API stays the same.
26
- */
27
- interface DistributedRateLimiterConfig {
28
- concurrentRequests?: number;
29
- requestPerMin?: number;
30
- requestPerDay?: number;
31
- }
32
- export interface LimiterSnapshot {
33
- modelKey: string;
34
- active: number;
35
- waitQueueDepth: number;
36
- perMinUsed: number;
37
- perDayUsed: number;
38
- concurrentLimit?: number;
39
- perMinLimit?: number;
40
- perDayLimit?: number;
41
- }
42
- export declare class DistributedRateLimiter {
43
- private readonly modelKey;
44
- private readonly concurrentLimit;
45
- private readonly perMinLimit;
46
- private readonly perDayLimit;
47
- private activeRequests;
48
- private waitQueue;
49
- constructor(modelKey: string, config: DistributedRateLimiterConfig);
50
- /**
51
- * Block until concurrent + per-min + per-day all have headroom, then claim
52
- * a slot in each. Caller MUST call releaseSlot() when the in-flight task
53
- * settles — per-min / per-day auto-expire but the concurrent counter does
54
- * not. Mirrors the old AiGenModelRateLimiter API.
55
- */
56
- waitUntilAvailable(): Promise<void>;
57
- /**
58
- * Bumps per-min + per-day only — does NOT count toward the concurrent cap.
59
- * Use for short-lived calls that share a provider's rate budget but aren't
60
- * "in-flight tasks" (status polls, sync image/TTS gens that complete in the
61
- * same call). No release is needed — Redis auto-expires the counters.
62
- */
63
- waitUntilAvailableForOneShot(): Promise<void>;
64
- /** Free a concurrent slot acquired via waitUntilAvailable(). */
65
- releaseSlot(): void;
66
- get activeConcurrentCount(): number;
67
- snapshot(): Promise<LimiterSnapshot>;
68
- private acquireConcurrent;
69
- private releaseConcurrent;
70
- private consumeRedisGates;
71
- }
72
- export declare function getAiGenModelRateLimiter(modelKey: TAiGenModel): DistributedRateLimiter;
73
- export declare function getTtsProviderRateLimiter(provider: TtsProvider): DistributedRateLimiter;
74
- /** Snapshot every limiter that has ever been instantiated. Used by the
75
- * /health/rate-limits endpoint for live ops visibility. */
76
- export declare function snapshotAllRateLimiters(): Promise<LimiterSnapshot[]>;
77
- export {};
78
- //# sourceMappingURL=distributedRateLimiter.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"distributedRateLimiter.service.d.ts","sourceRoot":"","sources":["../../../src/services/rateLimiter/distributedRateLimiter.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAU5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,UAAU,4BAA4B;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAuDD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAyB;gBAE9B,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,4BAA4B;IAOlE;;;;;OAKG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUzC;;;;;OAKG;IACG,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAInD,gEAAgE;IAChE,WAAW,IAAI,IAAI;IAInB,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAEK,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC;YAoC5B,iBAAiB;IAc/B,OAAO,CAAC,iBAAiB;YAQX,iBAAiB;CA6DhC;AAwBD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,GACpB,sBAAsB,CAaxB;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,GACpB,sBAAsB,CAexB;AAED;4DAC4D;AAC5D,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAM1E"}
@@ -1,269 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DistributedRateLimiter = void 0;
7
- exports.getAiGenModelRateLimiter = getAiGenModelRateLimiter;
8
- exports.getTtsProviderRateLimiter = getTtsProviderRateLimiter;
9
- exports.snapshotAllRateLimiters = snapshotAllRateLimiters;
10
- const crypto_1 = __importDefault(require("crypto"));
11
- const aiModels_1 = require("../../globals/aiModels");
12
- const ttsModels_1 = require("../../globals/ttsModels");
13
- const logger_1 = require("../../utils/logger");
14
- const redis_service_1 = require("../redis.service");
15
- // Module-level throttle so Redis outages don't fire a Slack error every
16
- // request. First failure goes through; subsequent failures within the
17
- // window log at warn level (Console + Loki only) until the window resets.
18
- const RATE_LIMITER_ERROR_THROTTLE_MS = 60000;
19
- let lastRateLimiterErrorLoggedAt = 0;
20
- /**
21
- * Atomic Redis check-and-consume for per-min + per-day gates. Returns
22
- * { 1, 0, "ok" } — both gates passed, slot consumed
23
- * { 0, retryMs, "min"|"day" } — gate hit, caller should sleep retryMs and retry
24
- *
25
- * Per-minute is a sorted-set sliding window (score = ms timestamp). Per-day
26
- * is a plain counter keyed by UTC date with TTL set on first INCR to
27
- * seconds-until-midnight, so the key self-expires.
28
- */
29
- const CONSUME_SCRIPT = `
30
- local minKey = KEYS[1]
31
- local dayKey = KEYS[2]
32
- local nowMs = tonumber(ARGV[1])
33
- local minLimit = tonumber(ARGV[2])
34
- local dayLimit = tonumber(ARGV[3])
35
- local secsTilMidnight = tonumber(ARGV[4])
36
- local uniqueId = ARGV[5]
37
-
38
- redis.call('ZREMRANGEBYSCORE', minKey, 0, nowMs - 60000)
39
-
40
- if minLimit > 0 then
41
- local minCount = redis.call('ZCARD', minKey)
42
- if minCount >= minLimit then
43
- local oldest = redis.call('ZRANGE', minKey, 0, 0, 'WITHSCORES')
44
- local retryMs = 1000
45
- if oldest[2] then
46
- retryMs = 60000 - (nowMs - tonumber(oldest[2]))
47
- if retryMs < 50 then retryMs = 50 end
48
- if retryMs > 60000 then retryMs = 60000 end
49
- end
50
- return { 0, retryMs, 'min' }
51
- end
52
- end
53
-
54
- if dayLimit > 0 then
55
- local dayCount = tonumber(redis.call('GET', dayKey) or '0')
56
- if dayCount >= dayLimit then
57
- local retryMs = secsTilMidnight * 1000
58
- if retryMs > 60000 then retryMs = 60000 end
59
- return { 0, retryMs, 'day' }
60
- end
61
- end
62
-
63
- redis.call('ZADD', minKey, nowMs, uniqueId)
64
- redis.call('PEXPIRE', minKey, 90000)
65
- local newDay = redis.call('INCR', dayKey)
66
- if newDay == 1 then
67
- redis.call('EXPIRE', dayKey, secsTilMidnight)
68
- end
69
-
70
- return { 1, 0, 'ok' }
71
- `;
72
- class DistributedRateLimiter {
73
- constructor(modelKey, config) {
74
- this.activeRequests = 0;
75
- this.waitQueue = [];
76
- this.modelKey = modelKey;
77
- this.concurrentLimit = config.concurrentRequests ?? 0;
78
- this.perMinLimit = config.requestPerMin ?? 0;
79
- this.perDayLimit = config.requestPerDay ?? 0;
80
- }
81
- /**
82
- * Block until concurrent + per-min + per-day all have headroom, then claim
83
- * a slot in each. Caller MUST call releaseSlot() when the in-flight task
84
- * settles — per-min / per-day auto-expire but the concurrent counter does
85
- * not. Mirrors the old AiGenModelRateLimiter API.
86
- */
87
- async waitUntilAvailable() {
88
- await this.acquireConcurrent();
89
- try {
90
- await this.consumeRedisGates();
91
- }
92
- catch (err) {
93
- this.releaseConcurrent();
94
- throw err;
95
- }
96
- }
97
- /**
98
- * Bumps per-min + per-day only — does NOT count toward the concurrent cap.
99
- * Use for short-lived calls that share a provider's rate budget but aren't
100
- * "in-flight tasks" (status polls, sync image/TTS gens that complete in the
101
- * same call). No release is needed — Redis auto-expires the counters.
102
- */
103
- async waitUntilAvailableForOneShot() {
104
- await this.consumeRedisGates();
105
- }
106
- /** Free a concurrent slot acquired via waitUntilAvailable(). */
107
- releaseSlot() {
108
- this.releaseConcurrent();
109
- }
110
- get activeConcurrentCount() {
111
- return this.activeRequests;
112
- }
113
- async snapshot() {
114
- const snap = {
115
- modelKey: this.modelKey,
116
- active: this.activeRequests,
117
- waitQueueDepth: this.waitQueue.length,
118
- perMinUsed: 0,
119
- perDayUsed: 0,
120
- concurrentLimit: this.concurrentLimit || undefined,
121
- perMinLimit: this.perMinLimit || undefined,
122
- perDayLimit: this.perDayLimit || undefined,
123
- };
124
- const client = redis_service_1.redis.getClient();
125
- if (!client)
126
- return snap;
127
- const minKey = `ratelimit:${this.modelKey}:min`;
128
- const dayKey = `ratelimit:${this.modelKey}:day:${utcDateKey()}`;
129
- try {
130
- const [minCount, dayCountRaw] = await Promise.all([
131
- client.zcount(minKey, Date.now() - 60000, "+inf"),
132
- client.get(dayKey),
133
- ]);
134
- snap.perMinUsed = minCount;
135
- snap.perDayUsed = dayCountRaw ? Number(dayCountRaw) : 0;
136
- }
137
- catch (err) {
138
- // best-effort; leave snapshot zeros if Redis blips
139
- logger_1.logger.warn("distributedRateLimiter: snapshot read failed", {
140
- modelKey: this.modelKey,
141
- err: err instanceof Error ? err.stack ?? err.message : String(err),
142
- });
143
- }
144
- return snap;
145
- }
146
- // ── Internals ──────────────────────────────────────────────────────────
147
- async acquireConcurrent() {
148
- if (!this.concurrentLimit) {
149
- this.activeRequests++;
150
- return;
151
- }
152
- while (this.activeRequests >= this.concurrentLimit) {
153
- // Promise wait queue — woken by releaseConcurrent. Replaces the old
154
- // 1s setTimeout busy-poll; latency drops from up-to-1s to ~0ms when
155
- // a slot frees.
156
- await new Promise((resolve) => this.waitQueue.push(resolve));
157
- }
158
- this.activeRequests++;
159
- }
160
- releaseConcurrent() {
161
- if (this.activeRequests > 0) {
162
- this.activeRequests--;
163
- }
164
- const next = this.waitQueue.shift();
165
- if (next)
166
- next();
167
- }
168
- async consumeRedisGates() {
169
- if (!this.perMinLimit && !this.perDayLimit)
170
- return;
171
- const client = redis_service_1.redis.getClient();
172
- if (!client) {
173
- // REDIS_URL unset (local dev with caching off, or a degraded boot).
174
- // Fail open — a missed gate is better than blocking the entire
175
- // generation pipeline. The legacy in-memory limiter behaved the
176
- // same way (no Redis dependency at all).
177
- return;
178
- }
179
- const minKey = `ratelimit:${this.modelKey}:min`;
180
- const secsTilMidnight = secsUntilMidnight();
181
- const uniqueId = `${Date.now()}-${crypto_1.default.randomBytes(4).toString("hex")}`;
182
- while (true) {
183
- const nowMs = Date.now();
184
- // Day key resolved per-iteration so a retry across midnight UTC
185
- // rolls into the new day's counter naturally.
186
- const dayKey = `ratelimit:${this.modelKey}:day:${utcDateKey()}`;
187
- let result;
188
- try {
189
- result = (await client.eval(CONSUME_SCRIPT, 2, minKey, dayKey, String(nowMs), String(this.perMinLimit), String(this.perDayLimit), String(secsTilMidnight), uniqueId));
190
- }
191
- catch (err) {
192
- // Redis blip — fail open rather than blocking the pipeline. Throttle
193
- // the Slack-routed error so a sustained Redis outage doesn't fire a
194
- // ping per request; subsequent failures inside the window log at
195
- // warn (Console + Loki only).
196
- const now = Date.now();
197
- const errMeta = {
198
- key: `${this.modelKey}`,
199
- modelKey: this.modelKey,
200
- err: err instanceof Error ? err.stack ?? err.message : String(err),
201
- };
202
- if (now - lastRateLimiterErrorLoggedAt > RATE_LIMITER_ERROR_THROTTLE_MS) {
203
- lastRateLimiterErrorLoggedAt = now;
204
- logger_1.logger.error("distributedRateLimiter: Redis EVAL failed, fail-open active", errMeta);
205
- }
206
- else {
207
- logger_1.logger.warn("distributedRateLimiter: Redis EVAL failed, fail-open active (throttled)", errMeta);
208
- }
209
- return;
210
- }
211
- if (result[0] === 1)
212
- return;
213
- const waitMs = Math.max(50, Math.min(1000, result[1]));
214
- await sleep(waitMs);
215
- }
216
- }
217
- }
218
- exports.DistributedRateLimiter = DistributedRateLimiter;
219
- function utcDateKey() {
220
- // YYYY-MM-DD in UTC — matches the TTL set on first INCR
221
- return new Date().toISOString().slice(0, 10);
222
- }
223
- function secsUntilMidnight() {
224
- const now = new Date();
225
- const midnight = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + 1));
226
- return Math.ceil((midnight.getTime() - now.getTime()) / 1000);
227
- }
228
- function sleep(ms) {
229
- return new Promise((r) => setTimeout(r, ms));
230
- }
231
- // ── Singleton registries ─────────────────────────────────────────────────
232
- const aiModelLimiters = {};
233
- const ttsProviderLimiters = {};
234
- function getAiGenModelRateLimiter(modelKey) {
235
- if (!aiModelLimiters[modelKey]) {
236
- const config = aiModels_1.aiModelConfigs[modelKey];
237
- if (!config) {
238
- throw new Error(`No model config for model key: ${modelKey}`);
239
- }
240
- aiModelLimiters[modelKey] = new DistributedRateLimiter(modelKey, {
241
- concurrentRequests: config.concurrentRequests,
242
- requestPerMin: config.requestPerMin,
243
- requestPerDay: config.requestPerDay,
244
- });
245
- }
246
- return aiModelLimiters[modelKey];
247
- }
248
- function getTtsProviderRateLimiter(provider) {
249
- if (!ttsProviderLimiters[provider]) {
250
- const config = ttsModels_1.ttsProviderConfigs[provider];
251
- if (!config) {
252
- throw new Error(`No TTS provider config for: ${provider}`);
253
- }
254
- ttsProviderLimiters[provider] = new DistributedRateLimiter(`tts:${provider}`, {
255
- concurrentRequests: config.concurrentRequests,
256
- requestPerMin: config.requestPerMin,
257
- });
258
- }
259
- return ttsProviderLimiters[provider];
260
- }
261
- /** Snapshot every limiter that has ever been instantiated. Used by the
262
- * /health/rate-limits endpoint for live ops visibility. */
263
- async function snapshotAllRateLimiters() {
264
- const all = [
265
- ...Object.values(aiModelLimiters),
266
- ...Object.values(ttsProviderLimiters),
267
- ];
268
- return Promise.all(all.map((l) => l.snapshot()));
269
- }
@@ -1,2 +0,0 @@
1
- export * from "./distributedRateLimiter.service";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/rateLimiter/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./distributedRateLimiter.service"), exports);
@@ -1,22 +0,0 @@
1
- import type { RedisOptions } from "ioredis";
2
- /**
3
- * Hardened shared ioredis options for both RedisService (cache) and
4
- * BullMQ (queue connections). Both ioredis clients reconnect by default;
5
- * this just makes it less chatty during prolonged outages, bounds the
6
- * backoff, and handles READONLY errors during Redis Cloud failovers.
7
- *
8
- * - `maxRetriesPerRequest: null` — REQUIRED for BullMQ stability.
9
- * - `retryStrategy` — exponential 200ms → 10s cap; infinite retries.
10
- * - `reconnectOnError` — reconnect on READONLY (failover to a replica
11
- * that has since become primary).
12
- */
13
- export declare const sharedRedisOptions: RedisOptions;
14
- /**
15
- * Attach observability + error-dedupe listeners to an ioredis client.
16
- * Reduces log spam during prolonged outages (e.g. DNS NXDOMAIN, network
17
- * partition) where ioredis would otherwise emit an `error` every retry.
18
- */
19
- export declare function attachRedisListeners(client: {
20
- on: (ev: string, fn: (...a: any[]) => void) => void;
21
- }, label: string): void;
22
- //# sourceMappingURL=redisOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redisOptions.d.ts","sourceRoot":"","sources":["../../src/services/redisOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAMhC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE;IAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;CAAE,EAC/D,KAAK,EAAE,MAAM,GACZ,IAAI,CAwBN"}
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sharedRedisOptions = void 0;
4
- exports.attachRedisListeners = attachRedisListeners;
5
- const logger_1 = require("../utils/logger");
6
- /**
7
- * Hardened shared ioredis options for both RedisService (cache) and
8
- * BullMQ (queue connections). Both ioredis clients reconnect by default;
9
- * this just makes it less chatty during prolonged outages, bounds the
10
- * backoff, and handles READONLY errors during Redis Cloud failovers.
11
- *
12
- * - `maxRetriesPerRequest: null` — REQUIRED for BullMQ stability.
13
- * - `retryStrategy` — exponential 200ms → 10s cap; infinite retries.
14
- * - `reconnectOnError` — reconnect on READONLY (failover to a replica
15
- * that has since become primary).
16
- */
17
- exports.sharedRedisOptions = {
18
- maxRetriesPerRequest: null,
19
- enableReadyCheck: true,
20
- enableOfflineQueue: true,
21
- retryStrategy: (times) => Math.min(200 * Math.pow(1.5, times), 10000),
22
- reconnectOnError: (err) => err.message.includes("READONLY"),
23
- };
24
- /**
25
- * Attach observability + error-dedupe listeners to an ioredis client.
26
- * Reduces log spam during prolonged outages (e.g. DNS NXDOMAIN, network
27
- * partition) where ioredis would otherwise emit an `error` every retry.
28
- */
29
- function attachRedisListeners(client, label) {
30
- let lastErrCode;
31
- let lastErrAt = 0;
32
- const ERR_LOG_WINDOW_MS = 60000;
33
- client.on("connect", () => logger_1.logger.info(`redis connecting`, { label }));
34
- client.on("ready", () => logger_1.logger.info(`redis ready`, { label }));
35
- client.on("reconnecting", (delay) => logger_1.logger.info(`redis reconnecting`, { label, delayMs: delay }));
36
- client.on("end", () => logger_1.logger.info(`redis connection ended`, { label }));
37
- client.on("close", () => logger_1.logger.info(`redis connection closed`, { label }));
38
- client.on("error", (err) => {
39
- const code = err.code ?? err.message;
40
- const now = Date.now();
41
- if (code === lastErrCode && now - lastErrAt < ERR_LOG_WINDOW_MS)
42
- return;
43
- lastErrCode = code;
44
- lastErrAt = now;
45
- logger_1.logger.error("redis: connection error", {
46
- label,
47
- code,
48
- err: err?.stack ?? err?.message ?? String(err),
49
- });
50
- });
51
- }
@@ -1,14 +0,0 @@
1
- import { BaseTtsProviderService, ITtsVoiceOption, TtsParams, TtsResult } from "../types";
2
- /**
3
- * MiniMax Speech-02-HD (T2A v2). Sync — POST /v1/t2a_v2 returns hex-encoded audio
4
- * inline (decoded into Buffer; same response shape as music-1.5).
5
- */
6
- export declare class MinimaxTtsService extends BaseTtsProviderService {
7
- private readonly baseUrl;
8
- private readonly apiKey;
9
- constructor();
10
- generate(params: TtsParams): Promise<TtsResult>;
11
- getVoices(): ITtsVoiceOption[];
12
- mapLanguageCode(locale: string): string | undefined;
13
- }
14
- //# sourceMappingURL=minimax.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"minimax.service.d.ts","sourceRoot":"","sources":["../../../../src/services/tts/providers/minimax.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEzF;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,sBAAsB;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAU1B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAuDrD,SAAS,IAAI,eAAe,EAAE;IAI9B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGpD"}
@@ -1,78 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MinimaxTtsService = void 0;
7
- const axios_1 = __importDefault(require("axios"));
8
- const minimax_1 = require("../../../globals/ttsModels/providers/minimax");
9
- const voices_1 = require("../../../globals/ttsModels/voices");
10
- const types_1 = require("../types");
11
- /**
12
- * MiniMax Speech-02-HD (T2A v2). Sync — POST /v1/t2a_v2 returns hex-encoded audio
13
- * inline (decoded into Buffer; same response shape as music-1.5).
14
- */
15
- class MinimaxTtsService extends types_1.BaseTtsProviderService {
16
- constructor() {
17
- super();
18
- this.baseUrl = "https://api.minimax.io";
19
- if (!process.env.MINIMAX_ACCESS_KEY) {
20
- throw new Error("Missing MINIMAX_ACCESS_KEY in environment variables");
21
- }
22
- this.apiKey = process.env.MINIMAX_ACCESS_KEY;
23
- }
24
- async generate(params) {
25
- const voiceId = params.voiceId ?? minimax_1.minimaxTtsConfig.defaultVoiceId;
26
- const body = {
27
- model: minimax_1.minimaxTtsConfig.modelId,
28
- text: params.text,
29
- voice_setting: {
30
- voice_id: voiceId,
31
- speed: 1.0,
32
- vol: 1.0,
33
- pitch: 0,
34
- },
35
- audio_setting: {
36
- sample_rate: 32000,
37
- bitrate: 128000,
38
- format: "mp3",
39
- channel: 1,
40
- },
41
- };
42
- const langPair = params.languageCode ? this.mapLanguageCode(params.languageCode) : undefined;
43
- if (langPair) {
44
- body.language_boost = langPair;
45
- }
46
- const resp = await axios_1.default.post(`${this.baseUrl}/v1/t2a_v2`, body, {
47
- headers: {
48
- Authorization: `Bearer ${this.apiKey}`,
49
- "Content-Type": "application/json",
50
- },
51
- timeout: 120000,
52
- validateStatus: () => true,
53
- });
54
- if (resp.status < 200 || resp.status >= 300) {
55
- throw new Error(`MiniMax TTS ${resp.status}: ${JSON.stringify(resp.data)}`);
56
- }
57
- const baseResp = resp.data?.base_resp;
58
- if (baseResp && baseResp.status_code !== 0) {
59
- throw new Error(`MiniMax TTS error ${baseResp.status_code}: ${baseResp.status_msg}`);
60
- }
61
- const audioHex = resp.data?.data?.audio;
62
- if (!audioHex) {
63
- throw new Error("MiniMax TTS returned no audio data");
64
- }
65
- return {
66
- audioBuffer: Buffer.from(audioHex, "hex"),
67
- mimeType: "audio/mpeg",
68
- extension: "mp3",
69
- };
70
- }
71
- getVoices() {
72
- return voices_1.MINIMAX_VOICES;
73
- }
74
- mapLanguageCode(locale) {
75
- return voices_1.LANG_TO_MINIMAX_CODE[locale.toLowerCase()];
76
- }
77
- }
78
- exports.MinimaxTtsService = MinimaxTtsService;
@@ -1,14 +0,0 @@
1
- import { BaseTtsProviderService, ITtsVoiceOption, TtsParams, TtsResult } from "../types";
2
- /**
3
- * OpenAI gpt-4o-mini-tts. Sync — POST /v1/audio/speech returns mp3 binary.
4
- * Note: OpenAI auto-detects language from input text; no language_code field.
5
- */
6
- export declare class OpenaiTtsService extends BaseTtsProviderService {
7
- private readonly baseUrl;
8
- private readonly apiKey;
9
- constructor();
10
- generate(params: TtsParams): Promise<TtsResult>;
11
- getVoices(): ITtsVoiceOption[];
12
- mapLanguageCode(_locale: string): string | undefined;
13
- }
14
- //# sourceMappingURL=openai.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.service.d.ts","sourceRoot":"","sources":["../../../../src/services/tts/providers/openai.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEzF;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,sBAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IAEvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAU1B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IA8CrD,SAAS,IAAI,eAAe,EAAE;IAI9B,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGrD"}