vidspotai-shared 1.0.70-dev.0 → 1.0.70

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 (505) 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 +7 -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 +13 -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 -7
  38. package/lib/models/index.d.ts.map +1 -1
  39. package/lib/models/index.js +0 -7
  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 +19 -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 -19
  100. package/lib/services/firestore.service.d.ts.map +1 -1
  101. package/lib/services/firestore.service.js +0 -33
  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 -363
  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/mediaUpload.model.d.ts +0 -19
  160. package/lib/models/mediaUpload.model.d.ts.map +0 -1
  161. package/lib/models/mediaUpload.model.js +0 -2
  162. package/lib/models/notification.model.d.ts +0 -25
  163. package/lib/models/notification.model.d.ts.map +0 -1
  164. package/lib/models/notification.model.js +0 -2
  165. package/lib/models/ref.model.d.ts +0 -80
  166. package/lib/models/ref.model.d.ts.map +0 -1
  167. package/lib/models/ref.model.js +0 -13
  168. package/lib/models/share.model.d.ts +0 -29
  169. package/lib/models/share.model.d.ts.map +0 -1
  170. package/lib/models/share.model.js +0 -2
  171. package/lib/schemas/agentPersona.schema.d.ts +0 -10
  172. package/lib/schemas/agentPersona.schema.d.ts.map +0 -1
  173. package/lib/schemas/agentPersona.schema.js +0 -11
  174. package/lib/schemas/agentRunJob.schema.d.ts +0 -105
  175. package/lib/schemas/agentRunJob.schema.d.ts.map +0 -1
  176. package/lib/schemas/agentRunJob.schema.js +0 -88
  177. package/lib/schemas/brandKit.schema.d.ts +0 -113
  178. package/lib/schemas/brandKit.schema.d.ts.map +0 -1
  179. package/lib/schemas/brandKit.schema.js +0 -46
  180. package/lib/schemas/brief.schema.d.ts +0 -263
  181. package/lib/schemas/brief.schema.d.ts.map +0 -1
  182. package/lib/schemas/brief.schema.js +0 -157
  183. package/lib/schemas/index.d.ts +0 -7
  184. package/lib/schemas/index.d.ts.map +0 -1
  185. package/lib/schemas/index.js +0 -22
  186. package/lib/schemas/project.schema.d.ts +0 -1025
  187. package/lib/schemas/project.schema.d.ts.map +0 -1
  188. package/lib/schemas/project.schema.js +0 -256
  189. package/lib/schemas/videoPlan.schema.d.ts +0 -590
  190. package/lib/schemas/videoPlan.schema.d.ts.map +0 -1
  191. package/lib/schemas/videoPlan.schema.js +0 -412
  192. package/lib/services/agent/beatSnap.d.ts +0 -10
  193. package/lib/services/agent/beatSnap.d.ts.map +0 -1
  194. package/lib/services/agent/beatSnap.js +0 -128
  195. package/lib/services/agent/bibleBuilder.d.ts +0 -43
  196. package/lib/services/agent/bibleBuilder.d.ts.map +0 -1
  197. package/lib/services/agent/bibleBuilder.js +0 -102
  198. package/lib/services/agent/bibleImageVision.d.ts +0 -45
  199. package/lib/services/agent/bibleImageVision.d.ts.map +0 -1
  200. package/lib/services/agent/bibleImageVision.js +0 -169
  201. package/lib/services/agent/chatAgent.d.ts +0 -79
  202. package/lib/services/agent/chatAgent.d.ts.map +0 -1
  203. package/lib/services/agent/chatAgent.js +0 -136
  204. package/lib/services/agent/costPreflight.d.ts +0 -61
  205. package/lib/services/agent/costPreflight.d.ts.map +0 -1
  206. package/lib/services/agent/costPreflight.js +0 -143
  207. package/lib/services/agent/critic.d.ts +0 -103
  208. package/lib/services/agent/critic.d.ts.map +0 -1
  209. package/lib/services/agent/critic.js +0 -139
  210. package/lib/services/agent/editClassifier.d.ts +0 -262
  211. package/lib/services/agent/editClassifier.d.ts.map +0 -1
  212. package/lib/services/agent/editClassifier.js +0 -186
  213. package/lib/services/agent/eval/index.d.ts +0 -5
  214. package/lib/services/agent/eval/index.d.ts.map +0 -1
  215. package/lib/services/agent/eval/index.js +0 -20
  216. package/lib/services/agent/eval/judge.d.ts +0 -14
  217. package/lib/services/agent/eval/judge.d.ts.map +0 -1
  218. package/lib/services/agent/eval/judge.js +0 -96
  219. package/lib/services/agent/eval/recorder.d.ts +0 -28
  220. package/lib/services/agent/eval/recorder.d.ts.map +0 -1
  221. package/lib/services/agent/eval/recorder.js +0 -100
  222. package/lib/services/agent/eval/seedBriefs.d.ts +0 -16
  223. package/lib/services/agent/eval/seedBriefs.d.ts.map +0 -1
  224. package/lib/services/agent/eval/seedBriefs.js +0 -1188
  225. package/lib/services/agent/eval/types.d.ts +0 -230
  226. package/lib/services/agent/eval/types.d.ts.map +0 -1
  227. package/lib/services/agent/eval/types.js +0 -73
  228. package/lib/services/agent/executor.d.ts +0 -141
  229. package/lib/services/agent/executor.d.ts.map +0 -1
  230. package/lib/services/agent/executor.js +0 -561
  231. package/lib/services/agent/globalActions.d.ts +0 -49
  232. package/lib/services/agent/globalActions.d.ts.map +0 -1
  233. package/lib/services/agent/globalActions.js +0 -328
  234. package/lib/services/agent/index.d.ts +0 -38
  235. package/lib/services/agent/index.d.ts.map +0 -1
  236. package/lib/services/agent/index.js +0 -53
  237. package/lib/services/agent/llmCaller.d.ts +0 -144
  238. package/lib/services/agent/llmCaller.d.ts.map +0 -1
  239. package/lib/services/agent/llmCaller.js +0 -16
  240. package/lib/services/agent/llmCallerAnthropic.d.ts +0 -90
  241. package/lib/services/agent/llmCallerAnthropic.d.ts.map +0 -1
  242. package/lib/services/agent/llmCallerAnthropic.js +0 -255
  243. package/lib/services/agent/llmCallerGateway.d.ts +0 -61
  244. package/lib/services/agent/llmCallerGateway.d.ts.map +0 -1
  245. package/lib/services/agent/llmCallerGateway.js +0 -360
  246. package/lib/services/agent/llmCallerRegistry.d.ts +0 -6
  247. package/lib/services/agent/llmCallerRegistry.d.ts.map +0 -1
  248. package/lib/services/agent/llmCallerRegistry.js +0 -39
  249. package/lib/services/agent/modelQualityNotes.d.ts +0 -100
  250. package/lib/services/agent/modelQualityNotes.d.ts.map +0 -1
  251. package/lib/services/agent/modelQualityNotes.js +0 -248
  252. package/lib/services/agent/modelRouter.d.ts +0 -41
  253. package/lib/services/agent/modelRouter.d.ts.map +0 -1
  254. package/lib/services/agent/modelRouter.js +0 -65
  255. package/lib/services/agent/musicSelect.d.ts +0 -23
  256. package/lib/services/agent/musicSelect.d.ts.map +0 -1
  257. package/lib/services/agent/musicSelect.js +0 -109
  258. package/lib/services/agent/overlayRenderer.d.ts +0 -67
  259. package/lib/services/agent/overlayRenderer.d.ts.map +0 -1
  260. package/lib/services/agent/overlayRenderer.js +0 -253
  261. package/lib/services/agent/perSceneCritic.d.ts +0 -90
  262. package/lib/services/agent/perSceneCritic.d.ts.map +0 -1
  263. package/lib/services/agent/perSceneCritic.js +0 -125
  264. package/lib/services/agent/personas.d.ts +0 -78
  265. package/lib/services/agent/personas.d.ts.map +0 -1
  266. package/lib/services/agent/personas.js +0 -177
  267. package/lib/services/agent/planDiff.d.ts +0 -76
  268. package/lib/services/agent/planDiff.d.ts.map +0 -1
  269. package/lib/services/agent/planDiff.js +0 -182
  270. package/lib/services/agent/planMutations.d.ts +0 -46
  271. package/lib/services/agent/planMutations.d.ts.map +0 -1
  272. package/lib/services/agent/planMutations.js +0 -120
  273. package/lib/services/agent/planner/Planner.d.ts +0 -107
  274. package/lib/services/agent/planner/Planner.d.ts.map +0 -1
  275. package/lib/services/agent/planner/Planner.js +0 -591
  276. package/lib/services/agent/planner/overlaySanity.d.ts +0 -7
  277. package/lib/services/agent/planner/overlaySanity.d.ts.map +0 -1
  278. package/lib/services/agent/planner/overlaySanity.js +0 -86
  279. package/lib/services/agent/planner/promptSections.d.ts +0 -25
  280. package/lib/services/agent/planner/promptSections.d.ts.map +0 -1
  281. package/lib/services/agent/planner/promptSections.js +0 -174
  282. package/lib/services/agent/planner/repair.d.ts +0 -16
  283. package/lib/services/agent/planner/repair.d.ts.map +0 -1
  284. package/lib/services/agent/planner/repair.js +0 -51
  285. package/lib/services/agent/planner/structuralRules.d.ts +0 -10
  286. package/lib/services/agent/planner/structuralRules.d.ts.map +0 -1
  287. package/lib/services/agent/planner/structuralRules.js +0 -111
  288. package/lib/services/agent/planner/validators.d.ts +0 -65
  289. package/lib/services/agent/planner/validators.d.ts.map +0 -1
  290. package/lib/services/agent/planner/validators.js +0 -284
  291. package/lib/services/agent/planner.d.ts +0 -3
  292. package/lib/services/agent/planner.d.ts.map +0 -1
  293. package/lib/services/agent/planner.js +0 -14
  294. package/lib/services/agent/providerFallback/chains.d.ts +0 -100
  295. package/lib/services/agent/providerFallback/chains.d.ts.map +0 -1
  296. package/lib/services/agent/providerFallback/chains.js +0 -198
  297. package/lib/services/agent/providerFallback/classifier.d.ts +0 -36
  298. package/lib/services/agent/providerFallback/classifier.d.ts.map +0 -1
  299. package/lib/services/agent/providerFallback/classifier.js +0 -103
  300. package/lib/services/agent/providerFallback/index.d.ts +0 -4
  301. package/lib/services/agent/providerFallback/index.d.ts.map +0 -1
  302. package/lib/services/agent/providerFallback/index.js +0 -19
  303. package/lib/services/agent/providerFallback/withFallback.d.ts +0 -60
  304. package/lib/services/agent/providerFallback/withFallback.d.ts.map +0 -1
  305. package/lib/services/agent/providerFallback/withFallback.js +0 -93
  306. package/lib/services/agent/providerTaskCache.d.ts +0 -50
  307. package/lib/services/agent/providerTaskCache.d.ts.map +0 -1
  308. package/lib/services/agent/providerTaskCache.js +0 -98
  309. package/lib/services/agent/qualityGate.d.ts +0 -82
  310. package/lib/services/agent/qualityGate.d.ts.map +0 -1
  311. package/lib/services/agent/qualityGate.js +0 -232
  312. package/lib/services/agent/referenceImageRenderer.d.ts +0 -37
  313. package/lib/services/agent/referenceImageRenderer.d.ts.map +0 -1
  314. package/lib/services/agent/referenceImageRenderer.js +0 -92
  315. package/lib/services/agent/regenCore.d.ts +0 -60
  316. package/lib/services/agent/regenCore.d.ts.map +0 -1
  317. package/lib/services/agent/regenCore.js +0 -487
  318. package/lib/services/agent/runHelpers.d.ts +0 -44
  319. package/lib/services/agent/runHelpers.d.ts.map +0 -1
  320. package/lib/services/agent/runHelpers.js +0 -196
  321. package/lib/services/agent/sceneLayoutVision.d.ts +0 -90
  322. package/lib/services/agent/sceneLayoutVision.d.ts.map +0 -1
  323. package/lib/services/agent/sceneLayoutVision.js +0 -212
  324. package/lib/services/agent/stitchedVideoCritic.d.ts +0 -136
  325. package/lib/services/agent/stitchedVideoCritic.d.ts.map +0 -1
  326. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts +0 -26
  327. package/lib/services/agent/stitchedVideoCritic.gemini.d.ts.map +0 -1
  328. package/lib/services/agent/stitchedVideoCritic.gemini.js +0 -198
  329. package/lib/services/agent/stitchedVideoCritic.js +0 -162
  330. package/lib/services/agent/taskPoller.d.ts +0 -65
  331. package/lib/services/agent/taskPoller.d.ts.map +0 -1
  332. package/lib/services/agent/taskPoller.js +0 -176
  333. package/lib/services/agent/textOverlayStyles.d.ts +0 -60
  334. package/lib/services/agent/textOverlayStyles.d.ts.map +0 -1
  335. package/lib/services/agent/textOverlayStyles.js +0 -174
  336. package/lib/services/agent/toolRegistry.d.ts +0 -73
  337. package/lib/services/agent/toolRegistry.d.ts.map +0 -1
  338. package/lib/services/agent/toolRegistry.js +0 -95
  339. package/lib/services/agent/tools/analyzeReference.tool.d.ts +0 -36
  340. package/lib/services/agent/tools/analyzeReference.tool.d.ts.map +0 -1
  341. package/lib/services/agent/tools/analyzeReference.tool.js +0 -44
  342. package/lib/services/agent/tools/animateImage.tool.d.ts +0 -24
  343. package/lib/services/agent/tools/animateImage.tool.d.ts.map +0 -1
  344. package/lib/services/agent/tools/animateImage.tool.js +0 -115
  345. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts +0 -32
  346. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.d.ts.map +0 -1
  347. package/lib/services/agent/tools/animateImageWithMotionBrush.tool.js +0 -135
  348. package/lib/services/agent/tools/composeScene.tool.d.ts +0 -978
  349. package/lib/services/agent/tools/composeScene.tool.d.ts.map +0 -1
  350. package/lib/services/agent/tools/composeScene.tool.js +0 -90
  351. package/lib/services/agent/tools/estimateCost.tool.d.ts +0 -352
  352. package/lib/services/agent/tools/estimateCost.tool.d.ts.map +0 -1
  353. package/lib/services/agent/tools/estimateCost.tool.js +0 -62
  354. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +0 -32
  355. package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts.map +0 -1
  356. package/lib/services/agent/tools/generateAvatarVideo.tool.js +0 -143
  357. package/lib/services/agent/tools/generateCaptions.tool.d.ts +0 -42
  358. package/lib/services/agent/tools/generateCaptions.tool.d.ts.map +0 -1
  359. package/lib/services/agent/tools/generateCaptions.tool.js +0 -196
  360. package/lib/services/agent/tools/generateImage.tool.d.ts +0 -74
  361. package/lib/services/agent/tools/generateImage.tool.d.ts.map +0 -1
  362. package/lib/services/agent/tools/generateImage.tool.js +0 -206
  363. package/lib/services/agent/tools/generateVideo.tool.d.ts +0 -31
  364. package/lib/services/agent/tools/generateVideo.tool.d.ts.map +0 -1
  365. package/lib/services/agent/tools/generateVideo.tool.js +0 -153
  366. package/lib/services/agent/tools/generateVoiceover.tool.d.ts +0 -44
  367. package/lib/services/agent/tools/generateVoiceover.tool.d.ts.map +0 -1
  368. package/lib/services/agent/tools/generateVoiceover.tool.js +0 -206
  369. package/lib/services/agent/tools/index.d.ts +0 -20
  370. package/lib/services/agent/tools/index.d.ts.map +0 -1
  371. package/lib/services/agent/tools/index.js +0 -35
  372. package/lib/services/agent/tools/planVideo.tool.d.ts +0 -343
  373. package/lib/services/agent/tools/planVideo.tool.d.ts.map +0 -1
  374. package/lib/services/agent/tools/planVideo.tool.js +0 -46
  375. package/lib/services/agent/tools/render.tool.d.ts +0 -367
  376. package/lib/services/agent/tools/render.tool.d.ts.map +0 -1
  377. package/lib/services/agent/tools/render.tool.js +0 -48
  378. package/lib/services/agent/tools/searchMusic.tool.d.ts +0 -49
  379. package/lib/services/agent/tools/searchMusic.tool.d.ts.map +0 -1
  380. package/lib/services/agent/tools/searchMusic.tool.js +0 -74
  381. package/lib/services/agent/tools/searchStock.tool.d.ts +0 -41
  382. package/lib/services/agent/tools/searchStock.tool.d.ts.map +0 -1
  383. package/lib/services/agent/tools/searchStock.tool.js +0 -314
  384. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +0 -59
  385. package/lib/services/agent/tools/searchUserLibrary.tool.d.ts.map +0 -1
  386. package/lib/services/agent/tools/searchUserLibrary.tool.js +0 -58
  387. package/lib/services/agent/ttsDuration.d.ts +0 -29
  388. package/lib/services/agent/ttsDuration.d.ts.map +0 -1
  389. package/lib/services/agent/ttsDuration.js +0 -60
  390. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts +0 -31
  391. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.d.ts.map +0 -1
  392. package/lib/services/aiGen/canonicalAdapters/cameraControl.types.js +0 -2
  393. package/lib/services/aiGen/canonicalAdapters/index.d.ts +0 -3
  394. package/lib/services/aiGen/canonicalAdapters/index.d.ts.map +0 -1
  395. package/lib/services/aiGen/canonicalAdapters/index.js +0 -18
  396. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts +0 -23
  397. package/lib/services/aiGen/canonicalAdapters/multiShot.types.d.ts.map +0 -1
  398. package/lib/services/aiGen/canonicalAdapters/multiShot.types.js +0 -12
  399. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts +0 -18
  400. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.d.ts.map +0 -1
  401. package/lib/services/aiGen/providers/elevenlabs/elevenlabs.service.js +0 -102
  402. package/lib/services/aiGen/providers/fal/falImage.service.d.ts +0 -15
  403. package/lib/services/aiGen/providers/fal/falImage.service.d.ts.map +0 -1
  404. package/lib/services/aiGen/providers/fal/falImage.service.js +0 -141
  405. package/lib/services/aiGen/providers/fal/index.d.ts +0 -2
  406. package/lib/services/aiGen/providers/fal/index.d.ts.map +0 -1
  407. package/lib/services/aiGen/providers/fal/index.js +0 -17
  408. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts +0 -4
  409. package/lib/services/aiGen/providers/kling/cameraAdapter.d.ts.map +0 -1
  410. package/lib/services/aiGen/providers/kling/cameraAdapter.js +0 -53
  411. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts +0 -21
  412. package/lib/services/aiGen/providers/kling/klingImage.service.d.ts.map +0 -1
  413. package/lib/services/aiGen/providers/kling/klingImage.service.js +0 -208
  414. package/lib/services/aiGen/providers/pexels/index.d.ts +0 -2
  415. package/lib/services/aiGen/providers/pexels/index.d.ts.map +0 -1
  416. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts +0 -11
  417. package/lib/services/aiGen/providers/pexels/pexels.service.d.ts.map +0 -1
  418. package/lib/services/aiGen/providers/pexels/pexels.service.js +0 -150
  419. package/lib/services/aiGen/providers/pixabay/index.d.ts +0 -2
  420. package/lib/services/aiGen/providers/pixabay/index.d.ts.map +0 -1
  421. package/lib/services/aiGen/providers/pixabay/index.js +0 -17
  422. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts +0 -12
  423. package/lib/services/aiGen/providers/pixabay/pixabay.service.d.ts.map +0 -1
  424. package/lib/services/aiGen/providers/pixabay/pixabay.service.js +0 -156
  425. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts +0 -3
  426. package/lib/services/aiGen/providers/runway/cameraAdapter.d.ts.map +0 -1
  427. package/lib/services/aiGen/providers/runway/cameraAdapter.js +0 -46
  428. package/lib/services/aiGen/providers/unsplash/index.d.ts +0 -2
  429. package/lib/services/aiGen/providers/unsplash/index.d.ts.map +0 -1
  430. package/lib/services/aiGen/providers/unsplash/index.js +0 -17
  431. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts +0 -16
  432. package/lib/services/aiGen/providers/unsplash/unsplash.service.d.ts.map +0 -1
  433. package/lib/services/aiGen/providers/unsplash/unsplash.service.js +0 -131
  434. package/lib/services/apiUsageCounter.service.d.ts +0 -20
  435. package/lib/services/apiUsageCounter.service.d.ts.map +0 -1
  436. package/lib/services/apiUsageCounter.service.js +0 -84
  437. package/lib/services/asr/assemblyai.service.d.ts +0 -72
  438. package/lib/services/asr/assemblyai.service.d.ts.map +0 -1
  439. package/lib/services/asr/assemblyai.service.js +0 -89
  440. package/lib/services/asr/index.d.ts +0 -3
  441. package/lib/services/asr/index.d.ts.map +0 -1
  442. package/lib/services/asr/index.js +0 -18
  443. package/lib/services/asr/whisper.service.d.ts +0 -18
  444. package/lib/services/asr/whisper.service.d.ts.map +0 -1
  445. package/lib/services/asr/whisper.service.js +0 -151
  446. package/lib/services/assetCache.service.d.ts +0 -54
  447. package/lib/services/assetCache.service.d.ts.map +0 -1
  448. package/lib/services/assetCache.service.js +0 -109
  449. package/lib/services/audioAnalysis/index.d.ts +0 -2
  450. package/lib/services/audioAnalysis/index.d.ts.map +0 -1
  451. package/lib/services/audioAnalysis/index.js +0 -17
  452. package/lib/services/audioAnalysis/onsetDetection.service.d.ts +0 -50
  453. package/lib/services/audioAnalysis/onsetDetection.service.d.ts.map +0 -1
  454. package/lib/services/audioAnalysis/onsetDetection.service.js +0 -140
  455. package/lib/services/credits/pricing.d.ts +0 -58
  456. package/lib/services/credits/pricing.d.ts.map +0 -1
  457. package/lib/services/credits/pricing.js +0 -111
  458. package/lib/services/editor/designToProject.d.ts +0 -75
  459. package/lib/services/editor/designToProject.d.ts.map +0 -1
  460. package/lib/services/editor/designToProject.js +0 -295
  461. package/lib/services/editor/planToProject.d.ts +0 -84
  462. package/lib/services/editor/planToProject.d.ts.map +0 -1
  463. package/lib/services/editor/planToProject.js +0 -395
  464. package/lib/services/editor/projectToDesign.d.ts +0 -4
  465. package/lib/services/editor/projectToDesign.d.ts.map +0 -1
  466. package/lib/services/editor/projectToDesign.js +0 -186
  467. package/lib/services/gcp/uploadAudioBuffer.d.ts +0 -13
  468. package/lib/services/gcp/uploadAudioBuffer.d.ts.map +0 -1
  469. package/lib/services/gcp/uploadAudioBuffer.js +0 -28
  470. package/lib/services/musicGen/index.d.ts +0 -6
  471. package/lib/services/musicGen/index.d.ts.map +0 -1
  472. package/lib/services/musicGen/index.js +0 -26
  473. package/lib/services/musicGen/musicSearchFactory.service.d.ts +0 -14
  474. package/lib/services/musicGen/musicSearchFactory.service.d.ts.map +0 -1
  475. package/lib/services/musicGen/musicSearchFactory.service.js +0 -59
  476. package/lib/services/musicGen/providers/curated.service.d.ts +0 -24
  477. package/lib/services/musicGen/providers/curated.service.d.ts.map +0 -1
  478. package/lib/services/musicGen/providers/curated.service.js +0 -173
  479. package/lib/services/musicGen/providers/jamendo.service.d.ts +0 -8
  480. package/lib/services/musicGen/providers/jamendo.service.d.ts.map +0 -1
  481. package/lib/services/musicGen/providers/jamendo.service.js +0 -113
  482. package/lib/services/musicGen/providers/mubert.service.d.ts +0 -10
  483. package/lib/services/musicGen/providers/mubert.service.d.ts.map +0 -1
  484. package/lib/services/musicGen/providers/mubert.service.js +0 -128
  485. package/lib/services/musicGen/types.d.ts +0 -46
  486. package/lib/services/musicGen/types.d.ts.map +0 -1
  487. package/lib/services/musicGen/types.js +0 -10
  488. package/lib/services/notification.service.d.ts +0 -22
  489. package/lib/services/notification.service.d.ts.map +0 -1
  490. package/lib/services/notification.service.js +0 -76
  491. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts +0 -78
  492. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts.map +0 -1
  493. package/lib/services/rateLimiter/distributedRateLimiter.service.js +0 -269
  494. package/lib/services/rateLimiter/index.d.ts +0 -2
  495. package/lib/services/rateLimiter/index.d.ts.map +0 -1
  496. package/lib/services/rateLimiter/index.js +0 -17
  497. package/lib/services/redisOptions.d.ts +0 -22
  498. package/lib/services/redisOptions.d.ts.map +0 -1
  499. package/lib/services/redisOptions.js +0 -51
  500. package/lib/services/tts/providers/minimax.service.d.ts +0 -14
  501. package/lib/services/tts/providers/minimax.service.d.ts.map +0 -1
  502. package/lib/services/tts/providers/minimax.service.js +0 -78
  503. package/lib/services/tts/providers/openai.service.d.ts +0 -14
  504. package/lib/services/tts/providers/openai.service.d.ts.map +0 -1
  505. 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"}