vidspotai-shared 1.0.82-dev.0 → 1.0.83

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 (468) hide show
  1. package/lib/globals/aiModels/enums.d.ts +11 -1
  2. package/lib/globals/aiModels/enums.d.ts.map +1 -1
  3. package/lib/globals/aiModels/enums.js +24 -1
  4. package/lib/globals/aiModels/index.d.ts.map +1 -1
  5. package/lib/globals/aiModels/index.js +2 -0
  6. package/lib/globals/aiModels/providers/anthropic.d.ts +12 -0
  7. package/lib/globals/aiModels/providers/anthropic.d.ts.map +1 -0
  8. package/lib/globals/aiModels/providers/anthropic.js +88 -0
  9. package/lib/globals/aiModels/providers/google.d.ts.map +1 -1
  10. package/lib/globals/aiModels/providers/google.js +115 -10
  11. package/lib/globals/aiModels/providers/openai.d.ts.map +1 -1
  12. package/lib/globals/aiModels/providers/openai.js +63 -4
  13. package/lib/globals/aiModels/tierHelpers.d.ts +12 -0
  14. package/lib/globals/aiModels/tierHelpers.d.ts.map +1 -1
  15. package/lib/globals/aiModels/tierHelpers.js +83 -0
  16. package/lib/globals/aiModels/types.d.ts +19 -0
  17. package/lib/globals/aiModels/types.d.ts.map +1 -1
  18. package/lib/globals/types.d.ts +120 -1
  19. package/lib/globals/types.d.ts.map +1 -1
  20. package/lib/globals/types.js +135 -1
  21. package/lib/models/agent.model.d.ts +41 -1
  22. package/lib/models/agent.model.d.ts.map +1 -1
  23. package/lib/models/index.d.ts +1 -0
  24. package/lib/models/index.d.ts.map +1 -1
  25. package/lib/models/index.js +1 -0
  26. package/lib/models/social.model.d.ts +180 -0
  27. package/lib/models/social.model.d.ts.map +1 -0
  28. package/lib/models/social.model.js +2 -0
  29. package/lib/models/user.model.d.ts +10 -0
  30. package/lib/models/user.model.d.ts.map +1 -1
  31. package/lib/models/video.model.d.ts +6 -0
  32. package/lib/models/video.model.d.ts.map +1 -1
  33. package/lib/schemas/brief.schema.d.ts +46 -0
  34. package/lib/schemas/brief.schema.d.ts.map +1 -1
  35. package/lib/schemas/brief.schema.js +72 -1
  36. package/lib/schemas/index.d.ts +1 -0
  37. package/lib/schemas/index.d.ts.map +1 -1
  38. package/lib/schemas/index.js +1 -0
  39. package/lib/schemas/project.schema.d.ts +70 -3
  40. package/lib/schemas/project.schema.d.ts.map +1 -1
  41. package/lib/schemas/project.schema.js +12 -0
  42. package/lib/schemas/social.schema.d.ts +91 -0
  43. package/lib/schemas/social.schema.d.ts.map +1 -0
  44. package/lib/schemas/social.schema.js +114 -0
  45. package/lib/schemas/videoPlan.schema.d.ts +117 -3
  46. package/lib/schemas/videoPlan.schema.d.ts.map +1 -1
  47. package/lib/schemas/videoPlan.schema.js +141 -1
  48. package/lib/services/agent/chatAgent.d.ts +25 -1
  49. package/lib/services/agent/chatAgent.d.ts.map +1 -1
  50. package/lib/services/agent/chatAgent.js +145 -9
  51. package/lib/services/agent/costPreflight.d.ts +11 -1
  52. package/lib/services/agent/costPreflight.d.ts.map +1 -1
  53. package/lib/services/agent/costPreflight.js +18 -1
  54. package/lib/services/agent/covers/coverPlanner.d.ts +41 -0
  55. package/lib/services/agent/covers/coverPlanner.d.ts.map +1 -0
  56. package/lib/services/agent/covers/coverPlanner.js +278 -0
  57. package/lib/services/agent/covers/covers.schema.d.ts +158 -0
  58. package/lib/services/agent/covers/covers.schema.d.ts.map +1 -0
  59. package/lib/services/agent/covers/covers.schema.js +166 -0
  60. package/lib/services/agent/covers/index.d.ts +3 -0
  61. package/lib/services/agent/covers/index.d.ts.map +1 -0
  62. package/lib/services/agent/covers/index.js +18 -0
  63. package/lib/services/agent/critic.d.ts +10 -0
  64. package/lib/services/agent/critic.d.ts.map +1 -1
  65. package/lib/services/agent/critic.js +37 -1
  66. package/lib/services/agent/editClassifier.d.ts +4 -4
  67. package/lib/services/agent/editClassifier.js +2 -2
  68. package/lib/services/agent/editExisting/editAssembler.d.ts +78 -0
  69. package/lib/services/agent/editExisting/editAssembler.d.ts.map +1 -0
  70. package/lib/services/agent/editExisting/editAssembler.js +172 -0
  71. package/lib/services/agent/editExisting/editExisting.schema.d.ts +119 -0
  72. package/lib/services/agent/editExisting/editExisting.schema.d.ts.map +1 -0
  73. package/lib/services/agent/editExisting/editExisting.schema.js +157 -0
  74. package/lib/services/agent/editExisting/highlightPicker.d.ts +48 -0
  75. package/lib/services/agent/editExisting/highlightPicker.d.ts.map +1 -0
  76. package/lib/services/agent/editExisting/highlightPicker.js +199 -0
  77. package/lib/services/agent/editExisting/index.d.ts +4 -0
  78. package/lib/services/agent/editExisting/index.d.ts.map +1 -0
  79. package/lib/services/agent/editExisting/index.js +19 -0
  80. package/lib/services/agent/eval/recorder.d.ts +13 -1
  81. package/lib/services/agent/eval/recorder.d.ts.map +1 -1
  82. package/lib/services/agent/eval/recorder.js +59 -0
  83. package/lib/services/agent/eval/seedBriefs.d.ts +4 -3
  84. package/lib/services/agent/eval/seedBriefs.d.ts.map +1 -1
  85. package/lib/services/agent/eval/seedBriefs.js +283 -3
  86. package/lib/services/agent/eval/types.d.ts +10 -0
  87. package/lib/services/agent/eval/types.d.ts.map +1 -1
  88. package/lib/services/agent/executor/core.d.ts +70 -0
  89. package/lib/services/agent/executor/core.d.ts.map +1 -0
  90. package/lib/services/agent/executor/core.js +250 -0
  91. package/lib/services/agent/executor/duration.d.ts +20 -0
  92. package/lib/services/agent/executor/duration.d.ts.map +1 -0
  93. package/lib/services/agent/executor/duration.js +46 -0
  94. package/lib/services/agent/executor/index.d.ts +15 -0
  95. package/lib/services/agent/executor/index.d.ts.map +1 -0
  96. package/lib/services/agent/executor/index.js +32 -0
  97. package/lib/services/agent/executor/types.d.ts +183 -0
  98. package/lib/services/agent/executor/types.d.ts.map +1 -0
  99. package/lib/services/agent/executor/types.js +29 -0
  100. package/lib/services/agent/executor/visual.d.ts +32 -0
  101. package/lib/services/agent/executor/visual.d.ts.map +1 -0
  102. package/lib/services/agent/executor/visual.js +400 -0
  103. package/lib/services/agent/executor/voice.d.ts +17 -0
  104. package/lib/services/agent/executor/voice.d.ts.map +1 -0
  105. package/lib/services/agent/executor/voice.js +119 -0
  106. package/lib/services/agent/extendChain.d.ts +101 -0
  107. package/lib/services/agent/extendChain.d.ts.map +1 -0
  108. package/lib/services/agent/extendChain.js +177 -0
  109. package/lib/services/agent/index.d.ts +11 -1
  110. package/lib/services/agent/index.d.ts.map +1 -1
  111. package/lib/services/agent/index.js +11 -1
  112. package/lib/services/agent/llmCaller.d.ts +7 -8
  113. package/lib/services/agent/llmCaller.d.ts.map +1 -1
  114. package/lib/services/agent/llmCallerAnthropic.d.ts +44 -31
  115. package/lib/services/agent/llmCallerAnthropic.d.ts.map +1 -1
  116. package/lib/services/agent/llmCallerAnthropic.js +135 -60
  117. package/lib/services/agent/llmCallerFactory.d.ts +34 -0
  118. package/lib/services/agent/llmCallerFactory.d.ts.map +1 -0
  119. package/lib/services/agent/llmCallerFactory.js +31 -0
  120. package/lib/services/agent/llmCallerGemini.d.ts +62 -0
  121. package/lib/services/agent/llmCallerGemini.d.ts.map +1 -0
  122. package/lib/services/agent/llmCallerGemini.js +235 -0
  123. package/lib/services/agent/llmCallerOpenai.d.ts +56 -0
  124. package/lib/services/agent/llmCallerOpenai.d.ts.map +1 -0
  125. package/lib/services/agent/llmCallerOpenai.js +230 -0
  126. package/lib/services/agent/llmCallerRegistry.d.ts.map +1 -1
  127. package/lib/services/agent/llmCallerRegistry.js +7 -7
  128. package/lib/services/agent/llmCallerRouting.d.ts +63 -0
  129. package/lib/services/agent/llmCallerRouting.d.ts.map +1 -0
  130. package/lib/services/agent/llmCallerRouting.js +124 -0
  131. package/lib/services/agent/llmModelRegistry.d.ts +59 -0
  132. package/lib/services/agent/llmModelRegistry.d.ts.map +1 -0
  133. package/lib/services/agent/llmModelRegistry.js +168 -0
  134. package/lib/services/agent/llmRetry.d.ts +57 -0
  135. package/lib/services/agent/llmRetry.d.ts.map +1 -0
  136. package/lib/services/agent/llmRetry.js +102 -0
  137. package/lib/services/agent/modelRouter.d.ts +3 -3
  138. package/lib/services/agent/modelRouter.d.ts.map +1 -1
  139. package/lib/services/agent/modelRouter.js +27 -13
  140. package/lib/services/agent/planMutations.d.ts +54 -1
  141. package/lib/services/agent/planMutations.d.ts.map +1 -1
  142. package/lib/services/agent/planMutations.js +78 -0
  143. package/lib/services/agent/planner/Planner.d.ts +0 -17
  144. package/lib/services/agent/planner/Planner.d.ts.map +1 -1
  145. package/lib/services/agent/planner/Planner.js +67 -303
  146. package/lib/services/agent/planner/overlayRegen.d.ts +38 -0
  147. package/lib/services/agent/planner/overlayRegen.d.ts.map +1 -0
  148. package/lib/services/agent/planner/overlayRegen.js +145 -0
  149. package/lib/services/agent/planner/plannerMessages.d.ts +34 -0
  150. package/lib/services/agent/planner/plannerMessages.d.ts.map +1 -0
  151. package/lib/services/agent/planner/plannerMessages.js +185 -0
  152. package/lib/services/agent/planner/promptSections.d.ts +12 -0
  153. package/lib/services/agent/planner/promptSections.d.ts.map +1 -1
  154. package/lib/services/agent/planner/promptSections.js +57 -0
  155. package/lib/services/agent/planner/scriptFirstPlanner.d.ts +35 -0
  156. package/lib/services/agent/planner/scriptFirstPlanner.d.ts.map +1 -0
  157. package/lib/services/agent/planner/scriptFirstPlanner.js +140 -0
  158. package/lib/services/agent/planner/structuralRules.d.ts +10 -0
  159. package/lib/services/agent/planner/structuralRules.d.ts.map +1 -1
  160. package/lib/services/agent/planner/structuralRules.js +92 -9
  161. package/lib/services/agent/planner/validators.d.ts +18 -0
  162. package/lib/services/agent/planner/validators.d.ts.map +1 -1
  163. package/lib/services/agent/planner/validators.js +97 -0
  164. package/lib/services/agent/planner.d.ts +2 -1
  165. package/lib/services/agent/planner.d.ts.map +1 -1
  166. package/lib/services/agent/planner.js +5 -1
  167. package/lib/services/agent/priorProject.d.ts +26 -0
  168. package/lib/services/agent/priorProject.d.ts.map +1 -0
  169. package/lib/services/agent/priorProject.js +51 -0
  170. package/lib/services/agent/providerFallback/chains.d.ts.map +1 -1
  171. package/lib/services/agent/providerFallback/chains.js +27 -15
  172. package/lib/services/agent/repurpose/index.d.ts +3 -0
  173. package/lib/services/agent/repurpose/index.d.ts.map +1 -0
  174. package/lib/services/agent/repurpose/index.js +18 -0
  175. package/lib/services/agent/repurpose/repurpose.schema.d.ts +132 -0
  176. package/lib/services/agent/repurpose/repurpose.schema.d.ts.map +1 -0
  177. package/lib/services/agent/repurpose/repurpose.schema.js +144 -0
  178. package/lib/services/agent/repurpose/shortsPicker.d.ts +25 -0
  179. package/lib/services/agent/repurpose/shortsPicker.d.ts.map +1 -0
  180. package/lib/services/agent/repurpose/shortsPicker.js +218 -0
  181. package/lib/services/agent/runHelpers.d.ts +21 -2
  182. package/lib/services/agent/runHelpers.d.ts.map +1 -1
  183. package/lib/services/agent/runHelpers.js +71 -2
  184. package/lib/services/agent/tools/animateImage.tool.d.ts +1 -0
  185. package/lib/services/agent/tools/animateImage.tool.d.ts.map +1 -1
  186. package/lib/services/agent/tools/animateImage.tool.js +12 -0
  187. package/lib/services/agent/tools/chapterOutline.tool.d.ts +42 -0
  188. package/lib/services/agent/tools/chapterOutline.tool.d.ts.map +1 -0
  189. package/lib/services/agent/tools/chapterOutline.tool.js +115 -0
  190. package/lib/services/agent/tools/composeScene.tool.d.ts +65 -2
  191. package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -1
  192. package/lib/services/agent/tools/estimateCost.tool.d.ts +28 -1
  193. package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -1
  194. package/lib/services/agent/tools/estimateCost.tool.js +55 -7
  195. package/lib/services/agent/tools/extendVideo.tool.d.ts +26 -0
  196. package/lib/services/agent/tools/extendVideo.tool.d.ts.map +1 -0
  197. package/lib/services/agent/tools/extendVideo.tool.js +149 -0
  198. package/lib/services/agent/tools/generateScript.tool.d.ts +184 -0
  199. package/lib/services/agent/tools/generateScript.tool.d.ts.map +1 -0
  200. package/lib/services/agent/tools/generateScript.tool.js +123 -0
  201. package/lib/services/agent/tools/generateVideo.tool.d.ts +1 -0
  202. package/lib/services/agent/tools/generateVideo.tool.d.ts.map +1 -1
  203. package/lib/services/agent/tools/generateVideo.tool.js +20 -1
  204. package/lib/services/agent/tools/index.d.ts +4 -0
  205. package/lib/services/agent/tools/index.d.ts.map +1 -1
  206. package/lib/services/agent/tools/index.js +4 -0
  207. package/lib/services/agent/tools/matchBrollToScript.tool.d.ts +50 -0
  208. package/lib/services/agent/tools/matchBrollToScript.tool.d.ts.map +1 -0
  209. package/lib/services/agent/tools/matchBrollToScript.tool.js +139 -0
  210. package/lib/services/agent/tools/planVideo.tool.d.ts +57 -1
  211. package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -1
  212. package/lib/services/agent/tools/planVideo.tool.js +3 -3
  213. package/lib/services/agent/tools/render.tool.d.ts +22 -1
  214. package/lib/services/agent/tools/render.tool.d.ts.map +1 -1
  215. package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
  216. package/lib/services/aiGen/aiGenFactory.service.js +18 -3
  217. package/lib/services/aiGen/helpers.d.ts +8 -0
  218. package/lib/services/aiGen/helpers.d.ts.map +1 -1
  219. package/lib/services/aiGen/helpers.js +12 -0
  220. package/lib/services/aiGen/providers/anthropic/anthropic.service.d.ts +26 -0
  221. package/lib/services/aiGen/providers/anthropic/anthropic.service.d.ts.map +1 -0
  222. package/lib/services/aiGen/providers/anthropic/anthropic.service.js +95 -0
  223. package/lib/services/aiGen/providers/google/google.service.d.ts +25 -1
  224. package/lib/services/aiGen/providers/google/google.service.d.ts.map +1 -1
  225. package/lib/services/aiGen/providers/google/google.service.js +136 -237
  226. package/lib/services/aiGen/providers/google/googleApiKeys.d.ts +71 -0
  227. package/lib/services/aiGen/providers/google/googleApiKeys.d.ts.map +1 -0
  228. package/lib/services/aiGen/providers/google/googleApiKeys.js +137 -0
  229. package/lib/services/aiGen/providers/google/googleErrors.d.ts +13 -0
  230. package/lib/services/aiGen/providers/google/googleErrors.d.ts.map +1 -0
  231. package/lib/services/aiGen/providers/google/googleErrors.js +102 -0
  232. package/lib/services/aiGen/providers/google/googleFetch.d.ts +8 -0
  233. package/lib/services/aiGen/providers/google/googleFetch.d.ts.map +1 -0
  234. package/lib/services/aiGen/providers/google/googleFetch.js +96 -0
  235. package/lib/services/aiGen/providers/google/googleKeyPool.d.ts +52 -0
  236. package/lib/services/aiGen/providers/google/googleKeyPool.d.ts.map +1 -0
  237. package/lib/services/aiGen/providers/google/googleKeyPool.js +129 -0
  238. package/lib/services/aiGen/providers/google/googleMusic.d.ts +15 -0
  239. package/lib/services/aiGen/providers/google/googleMusic.d.ts.map +1 -0
  240. package/lib/services/aiGen/providers/google/googleMusic.js +77 -0
  241. package/lib/services/aiGen/providers/kling/kling.service.d.ts +7 -3
  242. package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
  243. package/lib/services/aiGen/providers/kling/kling.service.js +23 -367
  244. package/lib/services/aiGen/providers/kling/klingCredits.d.ts +9 -0
  245. package/lib/services/aiGen/providers/kling/klingCredits.d.ts.map +1 -0
  246. package/lib/services/aiGen/providers/kling/klingCredits.js +63 -0
  247. package/lib/services/aiGen/providers/kling/klingRequests.d.ts +32 -0
  248. package/lib/services/aiGen/providers/kling/klingRequests.d.ts.map +1 -0
  249. package/lib/services/aiGen/providers/kling/klingRequests.js +194 -0
  250. package/lib/services/aiGen/providers/kling/klingStatus.d.ts +16 -0
  251. package/lib/services/aiGen/providers/kling/klingStatus.d.ts.map +1 -0
  252. package/lib/services/aiGen/providers/kling/klingStatus.js +173 -0
  253. package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
  254. package/lib/services/aiGen/providers/pixverse/pixverse.service.js +7 -1
  255. package/lib/services/bullmq.service.d.ts +61 -0
  256. package/lib/services/bullmq.service.d.ts.map +1 -1
  257. package/lib/services/bullmq.service.js +124 -2
  258. package/lib/services/crypto/index.d.ts +2 -0
  259. package/lib/services/crypto/index.d.ts.map +1 -0
  260. package/lib/services/crypto/index.js +17 -0
  261. package/lib/services/crypto/tokenVault.d.ts +47 -0
  262. package/lib/services/crypto/tokenVault.d.ts.map +1 -0
  263. package/lib/services/crypto/tokenVault.js +179 -0
  264. package/lib/services/editor/captionStyleHint.d.ts +3 -0
  265. package/lib/services/editor/captionStyleHint.d.ts.map +1 -0
  266. package/lib/services/editor/captionStyleHint.js +112 -0
  267. package/lib/services/editor/planToProject.d.ts +7 -66
  268. package/lib/services/editor/planToProject.d.ts.map +1 -1
  269. package/lib/services/editor/planToProject.helpers.d.ts +40 -0
  270. package/lib/services/editor/planToProject.helpers.d.ts.map +1 -0
  271. package/lib/services/editor/planToProject.helpers.js +177 -0
  272. package/lib/services/editor/planToProject.js +197 -180
  273. package/lib/services/editor/planToProject.types.d.ts +94 -0
  274. package/lib/services/editor/planToProject.types.d.ts.map +1 -0
  275. package/lib/services/editor/planToProject.types.js +2 -0
  276. package/lib/services/firestore.service.d.ts +5 -0
  277. package/lib/services/firestore.service.d.ts.map +1 -1
  278. package/lib/services/firestore.service.js +13 -0
  279. package/lib/services/index.d.ts +13 -0
  280. package/lib/services/index.d.ts.map +1 -1
  281. package/lib/services/index.js +13 -0
  282. package/lib/services/promptEnhancer/index.d.ts +18 -0
  283. package/lib/services/promptEnhancer/index.d.ts.map +1 -0
  284. package/lib/services/promptEnhancer/index.js +33 -0
  285. package/lib/services/promptEnhancer/models.d.ts +54 -0
  286. package/lib/services/promptEnhancer/models.d.ts.map +1 -0
  287. package/lib/services/promptEnhancer/models.js +37 -0
  288. package/lib/services/promptEnhancer/profiles/agent.profile.d.ts +14 -0
  289. package/lib/services/promptEnhancer/profiles/agent.profile.d.ts.map +1 -0
  290. package/lib/services/promptEnhancer/profiles/agent.profile.js +40 -0
  291. package/lib/services/promptEnhancer/profiles/avatar.profile.d.ts +13 -0
  292. package/lib/services/promptEnhancer/profiles/avatar.profile.d.ts.map +1 -0
  293. package/lib/services/promptEnhancer/profiles/avatar.profile.js +40 -0
  294. package/lib/services/promptEnhancer/profiles/base.d.ts +28 -0
  295. package/lib/services/promptEnhancer/profiles/base.d.ts.map +1 -0
  296. package/lib/services/promptEnhancer/profiles/base.js +35 -0
  297. package/lib/services/promptEnhancer/profiles/image.profile.d.ts +11 -0
  298. package/lib/services/promptEnhancer/profiles/image.profile.d.ts.map +1 -0
  299. package/lib/services/promptEnhancer/profiles/image.profile.js +42 -0
  300. package/lib/services/promptEnhancer/profiles/index.d.ts +12 -0
  301. package/lib/services/promptEnhancer/profiles/index.d.ts.map +1 -0
  302. package/lib/services/promptEnhancer/profiles/index.js +33 -0
  303. package/lib/services/promptEnhancer/profiles/video.profile.d.ts +15 -0
  304. package/lib/services/promptEnhancer/profiles/video.profile.d.ts.map +1 -0
  305. package/lib/services/promptEnhancer/profiles/video.profile.js +81 -0
  306. package/lib/services/promptEnhancer/promptEnhancer.service.d.ts +45 -0
  307. package/lib/services/promptEnhancer/promptEnhancer.service.d.ts.map +1 -0
  308. package/lib/services/promptEnhancer/promptEnhancer.service.js +157 -0
  309. package/lib/services/promptEnhancer/schema.d.ts +19 -0
  310. package/lib/services/promptEnhancer/schema.d.ts.map +1 -0
  311. package/lib/services/promptEnhancer/schema.js +43 -0
  312. package/lib/services/promptEnhancer/types.d.ts +112 -0
  313. package/lib/services/promptEnhancer/types.d.ts.map +1 -0
  314. package/lib/services/promptEnhancer/types.js +2 -0
  315. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts +60 -5
  316. package/lib/services/rateLimiter/distributedRateLimiter.service.d.ts.map +1 -1
  317. package/lib/services/rateLimiter/distributedRateLimiter.service.js +184 -16
  318. package/lib/services/socialAI/captionGen.d.ts +81 -0
  319. package/lib/services/socialAI/captionGen.d.ts.map +1 -0
  320. package/lib/services/socialAI/captionGen.js +206 -0
  321. package/lib/services/socialAI/hookScore.d.ts +85 -0
  322. package/lib/services/socialAI/hookScore.d.ts.map +1 -0
  323. package/lib/services/socialAI/hookScore.js +170 -0
  324. package/lib/services/socialAI/index.d.ts +3 -0
  325. package/lib/services/socialAI/index.d.ts.map +1 -0
  326. package/lib/services/socialAI/index.js +18 -0
  327. package/lib/services/socialAccounts/index.d.ts +2 -0
  328. package/lib/services/socialAccounts/index.d.ts.map +1 -0
  329. package/lib/services/socialAccounts/index.js +17 -0
  330. package/lib/services/socialAccounts/socialAccountService.d.ts +25 -0
  331. package/lib/services/socialAccounts/socialAccountService.d.ts.map +1 -0
  332. package/lib/services/socialAccounts/socialAccountService.js +105 -0
  333. package/lib/services/socialEngage/factory.d.ts +7 -0
  334. package/lib/services/socialEngage/factory.d.ts.map +1 -0
  335. package/lib/services/socialEngage/factory.js +25 -0
  336. package/lib/services/socialEngage/index.d.ts +6 -0
  337. package/lib/services/socialEngage/index.d.ts.map +1 -0
  338. package/lib/services/socialEngage/index.js +21 -0
  339. package/lib/services/socialEngage/meta.engage.d.ts +17 -0
  340. package/lib/services/socialEngage/meta.engage.d.ts.map +1 -0
  341. package/lib/services/socialEngage/meta.engage.js +128 -0
  342. package/lib/services/socialEngage/metaWebhook.d.ts +50 -0
  343. package/lib/services/socialEngage/metaWebhook.d.ts.map +1 -0
  344. package/lib/services/socialEngage/metaWebhook.js +93 -0
  345. package/lib/services/socialEngage/types.d.ts +72 -0
  346. package/lib/services/socialEngage/types.d.ts.map +1 -0
  347. package/lib/services/socialEngage/types.js +10 -0
  348. package/lib/services/socialEngage/youtube.engage.d.ts +9 -0
  349. package/lib/services/socialEngage/youtube.engage.d.ts.map +1 -0
  350. package/lib/services/socialEngage/youtube.engage.js +87 -0
  351. package/lib/services/socialFormat/aspectGeometry.d.ts +74 -0
  352. package/lib/services/socialFormat/aspectGeometry.d.ts.map +1 -0
  353. package/lib/services/socialFormat/aspectGeometry.js +135 -0
  354. package/lib/services/socialFormat/index.d.ts +2 -0
  355. package/lib/services/socialFormat/index.d.ts.map +1 -0
  356. package/lib/services/socialFormat/index.js +19 -0
  357. package/lib/services/socialInsights/index.d.ts +3 -0
  358. package/lib/services/socialInsights/index.d.ts.map +1 -0
  359. package/lib/services/socialInsights/index.js +18 -0
  360. package/lib/services/socialInsights/recommendations.d.ts +131 -0
  361. package/lib/services/socialInsights/recommendations.d.ts.map +1 -0
  362. package/lib/services/socialInsights/recommendations.js +277 -0
  363. package/lib/services/socialInsights/timeBuckets.d.ts +35 -0
  364. package/lib/services/socialInsights/timeBuckets.d.ts.map +1 -0
  365. package/lib/services/socialInsights/timeBuckets.js +78 -0
  366. package/lib/services/socialMetrics/factory.d.ts +5 -0
  367. package/lib/services/socialMetrics/factory.d.ts.map +1 -0
  368. package/lib/services/socialMetrics/factory.js +24 -0
  369. package/lib/services/socialMetrics/index.d.ts +6 -0
  370. package/lib/services/socialMetrics/index.d.ts.map +1 -0
  371. package/lib/services/socialMetrics/index.js +21 -0
  372. package/lib/services/socialMetrics/meta.metrics.d.ts +22 -0
  373. package/lib/services/socialMetrics/meta.metrics.d.ts.map +1 -0
  374. package/lib/services/socialMetrics/meta.metrics.js +137 -0
  375. package/lib/services/socialMetrics/tiktok.metrics.d.ts +8 -0
  376. package/lib/services/socialMetrics/tiktok.metrics.d.ts.map +1 -0
  377. package/lib/services/socialMetrics/tiktok.metrics.js +43 -0
  378. package/lib/services/socialMetrics/types.d.ts +54 -0
  379. package/lib/services/socialMetrics/types.d.ts.map +1 -0
  380. package/lib/services/socialMetrics/types.js +2 -0
  381. package/lib/services/socialMetrics/youtube.metrics.d.ts +8 -0
  382. package/lib/services/socialMetrics/youtube.metrics.d.ts.map +1 -0
  383. package/lib/services/socialMetrics/youtube.metrics.js +43 -0
  384. package/lib/services/socialOAuth/factory.d.ts +7 -0
  385. package/lib/services/socialOAuth/factory.d.ts.map +1 -0
  386. package/lib/services/socialOAuth/factory.js +42 -0
  387. package/lib/services/socialOAuth/index.d.ts +11 -0
  388. package/lib/services/socialOAuth/index.d.ts.map +1 -0
  389. package/lib/services/socialOAuth/index.js +26 -0
  390. package/lib/services/socialOAuth/linkedin.oauth.d.ts +14 -0
  391. package/lib/services/socialOAuth/linkedin.oauth.d.ts.map +1 -0
  392. package/lib/services/socialOAuth/linkedin.oauth.js +127 -0
  393. package/lib/services/socialOAuth/meta.oauth.d.ts +31 -0
  394. package/lib/services/socialOAuth/meta.oauth.d.ts.map +1 -0
  395. package/lib/services/socialOAuth/meta.oauth.js +214 -0
  396. package/lib/services/socialOAuth/oauthState.d.ts +14 -0
  397. package/lib/services/socialOAuth/oauthState.d.ts.map +1 -0
  398. package/lib/services/socialOAuth/oauthState.js +66 -0
  399. package/lib/services/socialOAuth/pinterest.oauth.d.ts +15 -0
  400. package/lib/services/socialOAuth/pinterest.oauth.d.ts.map +1 -0
  401. package/lib/services/socialOAuth/pinterest.oauth.js +126 -0
  402. package/lib/services/socialOAuth/threads.oauth.d.ts +14 -0
  403. package/lib/services/socialOAuth/threads.oauth.d.ts.map +1 -0
  404. package/lib/services/socialOAuth/threads.oauth.js +129 -0
  405. package/lib/services/socialOAuth/tiktok.oauth.d.ts +15 -0
  406. package/lib/services/socialOAuth/tiktok.oauth.d.ts.map +1 -0
  407. package/lib/services/socialOAuth/tiktok.oauth.js +151 -0
  408. package/lib/services/socialOAuth/types.d.ts +67 -0
  409. package/lib/services/socialOAuth/types.d.ts.map +1 -0
  410. package/lib/services/socialOAuth/types.js +2 -0
  411. package/lib/services/socialOAuth/x.oauth.d.ts +17 -0
  412. package/lib/services/socialOAuth/x.oauth.d.ts.map +1 -0
  413. package/lib/services/socialOAuth/x.oauth.js +134 -0
  414. package/lib/services/socialOAuth/youtube.oauth.d.ts +15 -0
  415. package/lib/services/socialOAuth/youtube.oauth.d.ts.map +1 -0
  416. package/lib/services/socialOAuth/youtube.oauth.js +156 -0
  417. package/lib/services/socialPublish/factory.d.ts +5 -0
  418. package/lib/services/socialPublish/factory.d.ts.map +1 -0
  419. package/lib/services/socialPublish/factory.js +32 -0
  420. package/lib/services/socialPublish/index.d.ts +10 -0
  421. package/lib/services/socialPublish/index.d.ts.map +1 -0
  422. package/lib/services/socialPublish/index.js +25 -0
  423. package/lib/services/socialPublish/linkedin.publish.d.ts +9 -0
  424. package/lib/services/socialPublish/linkedin.publish.d.ts.map +1 -0
  425. package/lib/services/socialPublish/linkedin.publish.js +143 -0
  426. package/lib/services/socialPublish/meta.publish.d.ts +28 -0
  427. package/lib/services/socialPublish/meta.publish.d.ts.map +1 -0
  428. package/lib/services/socialPublish/meta.publish.js +149 -0
  429. package/lib/services/socialPublish/pinterest.publish.d.ts +13 -0
  430. package/lib/services/socialPublish/pinterest.publish.d.ts.map +1 -0
  431. package/lib/services/socialPublish/pinterest.publish.js +130 -0
  432. package/lib/services/socialPublish/threads.publish.d.ts +12 -0
  433. package/lib/services/socialPublish/threads.publish.d.ts.map +1 -0
  434. package/lib/services/socialPublish/threads.publish.js +96 -0
  435. package/lib/services/socialPublish/tiktok.publish.d.ts +13 -0
  436. package/lib/services/socialPublish/tiktok.publish.d.ts.map +1 -0
  437. package/lib/services/socialPublish/tiktok.publish.js +118 -0
  438. package/lib/services/socialPublish/types.d.ts +47 -0
  439. package/lib/services/socialPublish/types.d.ts.map +1 -0
  440. package/lib/services/socialPublish/types.js +2 -0
  441. package/lib/services/socialPublish/x.publish.d.ts +12 -0
  442. package/lib/services/socialPublish/x.publish.d.ts.map +1 -0
  443. package/lib/services/socialPublish/x.publish.js +147 -0
  444. package/lib/services/socialPublish/youtube.publish.d.ts +9 -0
  445. package/lib/services/socialPublish/youtube.publish.d.ts.map +1 -0
  446. package/lib/services/socialPublish/youtube.publish.js +107 -0
  447. package/lib/services/stock/index.d.ts +2 -0
  448. package/lib/services/stock/index.d.ts.map +1 -0
  449. package/lib/services/stock/index.js +17 -0
  450. package/lib/services/stock/realPersonSafety.d.ts +99 -0
  451. package/lib/services/stock/realPersonSafety.d.ts.map +1 -0
  452. package/lib/services/stock/realPersonSafety.js +248 -0
  453. package/lib/services/translation/index.d.ts +2 -0
  454. package/lib/services/translation/index.d.ts.map +1 -0
  455. package/lib/services/translation/index.js +9 -0
  456. package/lib/services/translation/translation.service.d.ts +50 -0
  457. package/lib/services/translation/translation.service.d.ts.map +1 -0
  458. package/lib/services/translation/translation.service.js +211 -0
  459. package/lib/utils/helpers.d.ts +2 -4
  460. package/lib/utils/helpers.d.ts.map +1 -1
  461. package/lib/utils/helpers.js +9 -63
  462. package/lib/utils/index.d.ts +1 -0
  463. package/lib/utils/index.d.ts.map +1 -1
  464. package/lib/utils/index.js +1 -0
  465. package/lib/utils/renderTier.d.ts +26 -0
  466. package/lib/utils/renderTier.d.ts.map +1 -0
  467. package/lib/utils/renderTier.js +34 -0
  468. package/package.json +1 -1
@@ -0,0 +1,12 @@
1
+ import { EnhanceTarget } from "../types";
2
+ import { EnhancerProfile } from "./base";
3
+ export { EnhancerProfile, BASE_PRESERVATION_CONTRACT } from "./base";
4
+ export { VIDEO_PROFILE } from "./video.profile";
5
+ export { IMAGE_PROFILE } from "./image.profile";
6
+ export { AVATAR_PROFILE } from "./avatar.profile";
7
+ export { AGENT_PROFILE } from "./agent.profile";
8
+ /** Registry of every target profile, keyed by target. */
9
+ export declare const ENHANCER_PROFILES: Record<EnhanceTarget, EnhancerProfile>;
10
+ /** Resolve the profile for a target. Throws on an unknown target. */
11
+ export declare function getProfile(target: EnhanceTarget): EnhancerProfile;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/promptEnhancer/profiles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAMzC,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,aAAa,EAAE,eAAe,CAKpE,CAAC;AAEF,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAMjE"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ENHANCER_PROFILES = exports.AGENT_PROFILE = exports.AVATAR_PROFILE = exports.IMAGE_PROFILE = exports.VIDEO_PROFILE = exports.BASE_PRESERVATION_CONTRACT = void 0;
4
+ exports.getProfile = getProfile;
5
+ const video_profile_1 = require("./video.profile");
6
+ const image_profile_1 = require("./image.profile");
7
+ const avatar_profile_1 = require("./avatar.profile");
8
+ const agent_profile_1 = require("./agent.profile");
9
+ var base_1 = require("./base");
10
+ Object.defineProperty(exports, "BASE_PRESERVATION_CONTRACT", { enumerable: true, get: function () { return base_1.BASE_PRESERVATION_CONTRACT; } });
11
+ var video_profile_2 = require("./video.profile");
12
+ Object.defineProperty(exports, "VIDEO_PROFILE", { enumerable: true, get: function () { return video_profile_2.VIDEO_PROFILE; } });
13
+ var image_profile_2 = require("./image.profile");
14
+ Object.defineProperty(exports, "IMAGE_PROFILE", { enumerable: true, get: function () { return image_profile_2.IMAGE_PROFILE; } });
15
+ var avatar_profile_2 = require("./avatar.profile");
16
+ Object.defineProperty(exports, "AVATAR_PROFILE", { enumerable: true, get: function () { return avatar_profile_2.AVATAR_PROFILE; } });
17
+ var agent_profile_2 = require("./agent.profile");
18
+ Object.defineProperty(exports, "AGENT_PROFILE", { enumerable: true, get: function () { return agent_profile_2.AGENT_PROFILE; } });
19
+ /** Registry of every target profile, keyed by target. */
20
+ exports.ENHANCER_PROFILES = {
21
+ video: video_profile_1.VIDEO_PROFILE,
22
+ image: image_profile_1.IMAGE_PROFILE,
23
+ avatar: avatar_profile_1.AVATAR_PROFILE,
24
+ agent: agent_profile_1.AGENT_PROFILE,
25
+ };
26
+ /** Resolve the profile for a target. Throws on an unknown target. */
27
+ function getProfile(target) {
28
+ const profile = exports.ENHANCER_PROFILES[target];
29
+ if (!profile) {
30
+ throw new Error(`[promptEnhancer] no profile registered for target "${target}"`);
31
+ }
32
+ return profile;
33
+ }
@@ -0,0 +1,15 @@
1
+ import { EnhancerProfile } from "./base";
2
+ /**
3
+ * VIDEO profile — cinematic text-to-video / image-to-video prompts.
4
+ *
5
+ * The structure below is distilled from a set of gold-standard production
6
+ * prompts (aerial dogfight, Brooklyn tsunami, neutron-star flyby, Nike golf
7
+ * commercial). Those share a recognisable anatomy: a Style&Mood header, named
8
+ * subjects with stable descriptors + reference-image bindings, a Dynamic
9
+ * description of the action, a Static description of the unchanging set, a
10
+ * shot/timestamp breakdown, and explicit native-audio design. We teach that
11
+ * anatomy here so a sparse user prompt comes out at that level — without ever
12
+ * overriding what the user already specified.
13
+ */
14
+ export declare const VIDEO_PROFILE: EnhancerProfile;
15
+ //# sourceMappingURL=video.profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.profile.d.ts","sourceRoot":"","sources":["../../../../src/services/promptEnhancer/profiles/video.profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,EAAE,eAiE3B,CAAC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VIDEO_PROFILE = void 0;
4
+ /**
5
+ * VIDEO profile — cinematic text-to-video / image-to-video prompts.
6
+ *
7
+ * The structure below is distilled from a set of gold-standard production
8
+ * prompts (aerial dogfight, Brooklyn tsunami, neutron-star flyby, Nike golf
9
+ * commercial). Those share a recognisable anatomy: a Style&Mood header, named
10
+ * subjects with stable descriptors + reference-image bindings, a Dynamic
11
+ * description of the action, a Static description of the unchanging set, a
12
+ * shot/timestamp breakdown, and explicit native-audio design. We teach that
13
+ * anatomy here so a sparse user prompt comes out at that level — without ever
14
+ * overriding what the user already specified.
15
+ */
16
+ exports.VIDEO_PROFILE = {
17
+ target: "video",
18
+ defaultTemperature: 0.45,
19
+ defaultMaxTokens: 2200,
20
+ systemPrompt: [
21
+ "MEDIUM: text-to-video / image-to-video. The model generates a moving shot (or short",
22
+ "sequence of shots) from your prompt. It cannot read your mind about camera, light, lens, or",
23
+ "sound — so describe them. Quality comes from concrete, physically coherent cinematic detail.",
24
+ "",
25
+ "Compose the enhanced prompt using these sections, in this order. Include a section only when",
26
+ "it adds value; never output an empty heading. Use the user's own content to fill them and add",
27
+ "craft where they were silent.",
28
+ "",
29
+ "1. STYLE & MOOD — lead with it. Name the medium and realism level (e.g. 'photoreal cinematic',",
30
+ " 'stylised 2D'), the color grade / palette, the camera + lens + film-stock feel (e.g. 'ARRI",
31
+ " ALEXA, 35mm, filmic grain'), the overall mood, and continuity (how many shots / cuts, or",
32
+ " 'one continuous handheld take'). Keep the user's chosen look if they gave one.",
33
+ "",
34
+ "2. SUBJECTS — define each recurring subject ONCE with stable, distinctive descriptors so the",
35
+ " model keeps them consistent across the shot. When the user supplied reference images, bind",
36
+ " each subject to its token exactly as given (e.g. 'PILOT: face exactly from @image 3'). When",
37
+ " two subjects could be confused, add a disambiguator ('never confuse the two planes').",
38
+ "",
39
+ "3. DYNAMIC DESCRIPTION — the action as it unfolds: what moves, what changes, and the camera",
40
+ " language driving it (locked-off, slow push-in, whip-pan, tracking, handheld micro-shake,",
41
+ " focus hunt, banking). Keep the user's described events and their ORDER intact; render them",
42
+ " in vivid, physically plausible motion.",
43
+ "",
44
+ "4. STATIC DESCRIPTION — the unchanging environment / set: location, time of day, weather,",
45
+ " light direction, atmosphere. Include explicit exclusions when they matter ('no ground",
46
+ " visible', 'only these two subjects exist in this space').",
47
+ "",
48
+ "5. SHOT / TIME BREAKDOWN — when the duration warrants more than one beat, break it into",
49
+ " timestamped segments ('00:00–00:03 …') or numbered shots ('Shot 1 …'), each stating camera",
50
+ " + subject + action. Budget the number of beats to the duration: roughly one distinct beat",
51
+ " per 2–4 seconds; do not over-cut a short clip. Respect any cut count the user specified.",
52
+ "",
53
+ "6. NATIVE AUDIO — describe the diegetic sound design (impacts, ambience, foley, dialogue",
54
+ " energy) or state 'No music.' if the user asked for none. Honour the user's audio wishes",
55
+ " exactly. Omit this section entirely for silent / audio-less models.",
56
+ "",
57
+ "7. ASPECT RATIO — state it if known (e.g. '2.39:1', '9:16').",
58
+ "",
59
+ "RULES OF THE CRAFT:",
60
+ "- Concrete nouns over adjectives; describe light physically (key/fill/rim, color temperature,",
61
+ " how it interacts with surfaces).",
62
+ "- One coherent world: do not stack contradictory styles or add subjects/props the user didn't",
63
+ " ask for.",
64
+ "- Preserve every reference-image token and the role it was bound to. Never reassign a token.",
65
+ "- If the user's prompt is already detailed and well-structured, enhance lightly and keep their",
66
+ " structure — do not rewrite a strong prompt into your template for its own sake.",
67
+ "",
68
+ "SHAPE OF A GREAT RESULT (illustrative — a sparse input lifted to production grade):",
69
+ " User: 'a knight fights a dragon in a castle'",
70
+ " Enhanced (abridged): 'Style & Mood: photoreal dark-fantasy cinematic, ARRI-style, cold",
71
+ " steel-blue grade with ember-orange firelight, anamorphic 2.39:1, handheld with controlled",
72
+ " micro-shake. SUBJECT — KNIGHT: battered plate armor, dented helm, longsword. SUBJECT —",
73
+ " DRAGON: 12m wingspan, charcoal scales, molten throat-glow. Dynamic: low tracking shot as the",
74
+ " knight charges across the courtyard, the dragon rears and unleashes a fire breath, the knight",
75
+ " rolls behind a stone pillar that scorches black, then drives the sword up into the dragon's",
76
+ " jaw. Static: ruined torch-lit castle courtyard at night, smoke and floating embers, rain",
77
+ " catching the firelight. Native audio: roar, sword scrape, fire whoosh, rain, no music.'",
78
+ " — note how every user element (knight, dragon, castle, fight) is preserved and only the",
79
+ " silent gaps (grade, lens, light, camera, audio) were filled.",
80
+ ].join("\n"),
81
+ };
@@ -0,0 +1,45 @@
1
+ import { LlmCaller } from "../agent/llmCaller";
2
+ import { EnhancerModelPolicy } from "./models";
3
+ import { EnhanceRequest, EnhanceResult } from "./types";
4
+ /** Dependencies the enhancer needs; defaulted to the shared singletons/policy. */
5
+ export interface PromptEnhancerDeps {
6
+ /** LLM caller. Defaults to the host-wired singleton via getLlmCaller(). */
7
+ llm?: LlmCaller;
8
+ /** Model policy. Defaults to DEFAULT_ENHANCER_MODELS (gemini-2.5-flash primary). */
9
+ models?: EnhancerModelPolicy;
10
+ }
11
+ /**
12
+ * Modular, target-aware prompt enhancer. Reusable across the video, image,
13
+ * avatar, and agent pipelines — same engine, per-target profiles.
14
+ *
15
+ * const enhancer = new PromptEnhancer();
16
+ * const { enhancedPrompt } = await enhancer.enhance({
17
+ * prompt: userPrompt,
18
+ * target: "video",
19
+ * context: { aspectRatio: "16:9", durationSec: 8 },
20
+ * });
21
+ */
22
+ export declare class PromptEnhancer {
23
+ private readonly deps;
24
+ constructor(deps?: PromptEnhancerDeps);
25
+ /**
26
+ * Enhance a prompt. Throws if the prompt is empty or the LLM call fails
27
+ * (transient errors already retried by the caller). Use `enhanceSafe` when a
28
+ * failure must not break the host pipeline.
29
+ */
30
+ enhance(req: EnhanceRequest): Promise<EnhanceResult>;
31
+ /**
32
+ * Pipeline-safe variant: on ANY failure (LLM unconfigured, transient errors
33
+ * exhausted, schema mismatch) it logs and returns the untouched original as
34
+ * `enhancedPrompt` with `degraded: true`. Wiring this into a hot path can
35
+ * never break generation — worst case the user's raw prompt is used as-is.
36
+ */
37
+ enhanceSafe(req: EnhanceRequest): Promise<EnhanceResult>;
38
+ }
39
+ /** Process-wide default instance; convenient for one-off calls. */
40
+ export declare const promptEnhancer: PromptEnhancer;
41
+ /** Convenience wrapper around the default instance. */
42
+ export declare function enhancePrompt(req: EnhanceRequest): Promise<EnhanceResult>;
43
+ /** Pipeline-safe convenience wrapper around the default instance. */
44
+ export declare function enhancePromptSafe(req: EnhanceRequest): Promise<EnhanceResult>;
45
+ //# sourceMappingURL=promptEnhancer.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptEnhancer.service.d.ts","sourceRoot":"","sources":["../../../src/services/promptEnhancer/promptEnhancer.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAEL,mBAAmB,EAEpB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAkB,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIxE,kFAAkF;AAClF,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,oFAAoF;IACpF,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;gBAE9B,IAAI,GAAE,kBAAuB;IAIzC;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA+C1D;;;;;OAKG;IACG,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAmB/D;AA8DD,mEAAmE;AACnE,eAAO,MAAM,cAAc,gBAAuB,CAAC;AAEnD,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAEzE;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAE7E"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promptEnhancer = exports.PromptEnhancer = void 0;
4
+ exports.enhancePrompt = enhancePrompt;
5
+ exports.enhancePromptSafe = enhancePromptSafe;
6
+ const logger_1 = require("../../utils/logger");
7
+ const llmCallerRegistry_1 = require("../agent/llmCallerRegistry");
8
+ const models_1 = require("./models");
9
+ const profiles_1 = require("./profiles");
10
+ const schema_1 = require("./schema");
11
+ const log = (0, logger_1.createLogger)("promptEnhancer");
12
+ /**
13
+ * Modular, target-aware prompt enhancer. Reusable across the video, image,
14
+ * avatar, and agent pipelines — same engine, per-target profiles.
15
+ *
16
+ * const enhancer = new PromptEnhancer();
17
+ * const { enhancedPrompt } = await enhancer.enhance({
18
+ * prompt: userPrompt,
19
+ * target: "video",
20
+ * context: { aspectRatio: "16:9", durationSec: 8 },
21
+ * });
22
+ */
23
+ class PromptEnhancer {
24
+ constructor(deps = {}) {
25
+ this.deps = deps;
26
+ }
27
+ /**
28
+ * Enhance a prompt. Throws if the prompt is empty or the LLM call fails
29
+ * (transient errors already retried by the caller). Use `enhanceSafe` when a
30
+ * failure must not break the host pipeline.
31
+ */
32
+ async enhance(req) {
33
+ const original = (req.prompt ?? "").trim();
34
+ if (!original) {
35
+ throw new Error("[promptEnhancer] prompt is empty");
36
+ }
37
+ const profile = (0, profiles_1.getProfile)(req.target);
38
+ // Resolve deps lazily at call time so the host has had a chance to wire the
39
+ // LlmCaller singleton during boot.
40
+ const llm = this.deps.llm ?? (0, llmCallerRegistry_1.getLlmCaller)();
41
+ const policy = this.deps.models ?? models_1.DEFAULT_ENHANCER_MODELS;
42
+ // An explicit per-call model override bypasses the policy + premium flag.
43
+ const { model, fallbackModel } = req.options?.model
44
+ ? { model: req.options.model, fallbackModel: req.options.fallbackModel }
45
+ : (0, models_1.pickEnhancerModel)(policy, req.options?.premium);
46
+ const messages = buildMessages(profile, original, req.context);
47
+ const res = await llm.structured({
48
+ model,
49
+ fallbackModel,
50
+ schema: schema_1.EnhancedPromptSchema,
51
+ schemaName: "EnhancedPrompt",
52
+ messages,
53
+ temperature: req.options?.temperature ?? profile.defaultTemperature,
54
+ maxTokens: req.options?.maxTokens ?? profile.defaultMaxTokens,
55
+ });
56
+ const enhanced = (res.data.enhancedPrompt ?? "").trim();
57
+ // Defensive: if the model returned nothing usable, fall back to the original
58
+ // rather than handing an empty prompt to a generation model.
59
+ const enhancedPrompt = enhanced.length > 0 ? enhanced : original;
60
+ return {
61
+ enhancedPrompt,
62
+ originalPrompt: original,
63
+ preservedRequirements: res.data.preservedRequirements ?? [],
64
+ additions: res.data.additions ?? [],
65
+ target: req.target,
66
+ model: model.modelId,
67
+ usedFallback: res.usedFallback,
68
+ degraded: enhanced.length === 0,
69
+ usage: res.usage,
70
+ };
71
+ }
72
+ /**
73
+ * Pipeline-safe variant: on ANY failure (LLM unconfigured, transient errors
74
+ * exhausted, schema mismatch) it logs and returns the untouched original as
75
+ * `enhancedPrompt` with `degraded: true`. Wiring this into a hot path can
76
+ * never break generation — worst case the user's raw prompt is used as-is.
77
+ */
78
+ async enhanceSafe(req) {
79
+ const original = (req.prompt ?? "").trim();
80
+ try {
81
+ return await this.enhance(req);
82
+ }
83
+ catch (err) {
84
+ log.warn("enhance failed; falling back to original prompt", {
85
+ target: req.target,
86
+ error: err instanceof Error ? err.message : String(err),
87
+ });
88
+ return {
89
+ enhancedPrompt: original,
90
+ originalPrompt: original,
91
+ preservedRequirements: [],
92
+ additions: [],
93
+ target: req.target,
94
+ degraded: true,
95
+ };
96
+ }
97
+ }
98
+ }
99
+ exports.PromptEnhancer = PromptEnhancer;
100
+ /** Build the system + context + user messages for one enhance call. */
101
+ function buildMessages(profile, prompt, context) {
102
+ const system = `${profiles_1.BASE_PRESERVATION_CONTRACT}\n\n=== ${profile.target.toUpperCase()} MEDIUM ===\n${profile.systemPrompt}`;
103
+ const contextBlock = buildContextBlock(context);
104
+ const userContent = contextBlock
105
+ ? `${contextBlock}\n\nUSER PROMPT:\n${prompt}`
106
+ : `USER PROMPT:\n${prompt}`;
107
+ const userMessage = { role: "user", content: userContent };
108
+ // Attach reference images for vision only when explicitly requested and URLs
109
+ // are present — the host is responsible for routing to a vision-capable model.
110
+ if (context?.useVision && context.referenceImages?.length) {
111
+ const urls = context.referenceImages
112
+ .map((r) => r.url)
113
+ .filter((u) => typeof u === "string" && u.length > 0);
114
+ if (urls.length) {
115
+ userMessage.imageUrls = urls;
116
+ }
117
+ }
118
+ return [{ role: "system", content: system }, userMessage];
119
+ }
120
+ /** Render the optional context as a compact, labelled block. Empty fields are omitted. */
121
+ function buildContextBlock(context) {
122
+ if (!context)
123
+ return "";
124
+ const lines = [];
125
+ if (context.modelKey)
126
+ lines.push(`TARGET MODEL: ${context.modelKey}`);
127
+ if (context.aspectRatio)
128
+ lines.push(`ASPECT RATIO: ${context.aspectRatio}`);
129
+ if (typeof context.durationSec === "number") {
130
+ lines.push(`DURATION: ${context.durationSec}s`);
131
+ }
132
+ if (context.persona)
133
+ lines.push(`PERSONA / NICHE: ${context.persona}`);
134
+ if (context.referenceImages?.length) {
135
+ const refs = context.referenceImages
136
+ .map((r, i) => {
137
+ const token = r.token ?? `@image ${i + 1}`;
138
+ return r.role ? ` - ${token} → ${r.role}` : ` - ${token}`;
139
+ })
140
+ .join("\n");
141
+ lines.push(`REFERENCE IMAGES (preserve these tokens and their roles exactly):\n${refs}`);
142
+ }
143
+ if (context.extraInstructions) {
144
+ lines.push(`ADDITIONAL HARD INSTRUCTIONS: ${context.extraInstructions}`);
145
+ }
146
+ return lines.length ? `CONTEXT:\n${lines.join("\n")}` : "";
147
+ }
148
+ /** Process-wide default instance; convenient for one-off calls. */
149
+ exports.promptEnhancer = new PromptEnhancer();
150
+ /** Convenience wrapper around the default instance. */
151
+ function enhancePrompt(req) {
152
+ return exports.promptEnhancer.enhance(req);
153
+ }
154
+ /** Pipeline-safe convenience wrapper around the default instance. */
155
+ function enhancePromptSafe(req) {
156
+ return exports.promptEnhancer.enhanceSafe(req);
157
+ }
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Structured output the enhancer LLM must return.
4
+ *
5
+ * The field ORDER matters: the model is asked to enumerate the user's
6
+ * requirements FIRST, then write the enhanced prompt, then list what it added.
7
+ * Forcing the enumeration up front is the core preservation guard — the model
8
+ * commits to the user's constraints before it starts embellishing, which makes
9
+ * it far less likely to silently drop or "improve" a stated requirement. The
10
+ * enumerated arrays also give callers a hook for a future verification pass
11
+ * (assert every preservedRequirement appears in enhancedPrompt).
12
+ */
13
+ export declare const EnhancedPromptSchema: z.ZodObject<{
14
+ preservedRequirements: z.ZodArray<z.ZodString>;
15
+ enhancedPrompt: z.ZodString;
16
+ additions: z.ZodArray<z.ZodString>;
17
+ }, z.core.$strip>;
18
+ export type EnhancedPromptOutput = z.infer<typeof EnhancedPromptSchema>;
19
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/services/promptEnhancer/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;;;;iBAiC/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnhancedPromptSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ /**
6
+ * Structured output the enhancer LLM must return.
7
+ *
8
+ * The field ORDER matters: the model is asked to enumerate the user's
9
+ * requirements FIRST, then write the enhanced prompt, then list what it added.
10
+ * Forcing the enumeration up front is the core preservation guard — the model
11
+ * commits to the user's constraints before it starts embellishing, which makes
12
+ * it far less likely to silently drop or "improve" a stated requirement. The
13
+ * enumerated arrays also give callers a hook for a future verification pass
14
+ * (assert every preservedRequirement appears in enhancedPrompt).
15
+ */
16
+ exports.EnhancedPromptSchema = zod_1.z.object({
17
+ preservedRequirements: zod_1.z
18
+ .array(zod_1.z.string())
19
+ .describe([
20
+ "Every concrete requirement stated or clearly implied by the user's original prompt.",
21
+ "Include: subjects and named entities, specific actions/events, style and mood words the",
22
+ "user chose, brand names, numbers (durations, counts, timestamps), reference-image",
23
+ "bindings (e.g. '@image 2', 'Person A'), aspect ratio, and explicit exclusions",
24
+ "(e.g. 'no music', 'no ground visible'). Each item here MUST appear, unchanged in meaning,",
25
+ "in enhancedPrompt. If the user's prompt is sparse, this list may be short — that is fine.",
26
+ ].join(" ")),
27
+ enhancedPrompt: zod_1.z
28
+ .string()
29
+ .min(1)
30
+ .describe([
31
+ "The final, ready-to-use prompt. It must (a) preserve every item in preservedRequirements",
32
+ "with its original meaning intact, and (b) layer production-grade detail on top following",
33
+ "the profile's structure. Output ONLY the prompt text itself — no preamble, no markdown",
34
+ "fences, no commentary about what you did.",
35
+ ].join(" ")),
36
+ additions: zod_1.z
37
+ .array(zod_1.z.string())
38
+ .describe([
39
+ "The specific details you ADDED where the user was silent or vague (e.g. color grade, lens,",
40
+ "lighting, camera movement, audio design, pacing). Do NOT list anything that changes or",
41
+ "contradicts a preserved requirement — additions only fill gaps, they never override the user.",
42
+ ].join(" ")),
43
+ });
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Public types for the modular Prompt Enhancer.
3
+ *
4
+ * The enhancer takes a user's raw prompt and rewrites it into a richer,
5
+ * production-grade prompt for a downstream generative model — while
6
+ * PRESERVING everything the user explicitly asked for and only ADDING detail
7
+ * where the user was silent. It is target-aware (video / image / avatar /
8
+ * agent) so the same engine produces the right idiom for each pipeline.
9
+ */
10
+ import { ModelChoice } from "../agent/modelRouter";
11
+ /**
12
+ * Which pipeline the enhanced prompt feeds. Each target has its own profile
13
+ * (system prompt + rules + model routing):
14
+ * - "video" : cinematic text-to-video / image-to-video prompt (the richest
15
+ * profile — style+mood, named subjects, dynamic vs static
16
+ * description, timestamped shot breakdown, native audio).
17
+ * - "image" : single still-frame prompt (composition, lens, lighting, grade;
18
+ * no motion, no audio, no temporal beats).
19
+ * - "avatar" : talking-head performance hint over a fixed portrait + audio
20
+ * (expression, micro-gesture, delivery; never a new scene).
21
+ * - "agent" : creative-brief clarifier fed to the agent Planner (sharpens
22
+ * concept/audience/tone/beats; does NOT pre-explode scenes — the
23
+ * Planner owns scene decomposition).
24
+ */
25
+ export type EnhanceTarget = "video" | "image" | "avatar" | "agent";
26
+ /**
27
+ * A reference image the user supplied. Its token and role are user
28
+ * requirements and MUST survive into the enhanced prompt unchanged.
29
+ */
30
+ export interface ReferenceImageHint {
31
+ /** Token the prompt uses to refer to this image, e.g. "@image 1", "@Image2". */
32
+ token?: string;
33
+ /** What the image depicts / its role, e.g. "the pilot's face", "Person A". */
34
+ role?: string;
35
+ /**
36
+ * Public URL. Only read by the enhancer when `EnhanceContext.useVision` is
37
+ * true and the routed model is vision-capable — otherwise it is ignored and
38
+ * only `token`/`role` are used.
39
+ */
40
+ url?: string;
41
+ }
42
+ /** Optional context that lets a profile tailor the enhancement. */
43
+ export interface EnhanceContext {
44
+ /** Destination model key (e.g. "runway-gen4-turbo"). Lets profiles tune syntax/length. */
45
+ modelKey?: string;
46
+ /** Output aspect ratio, e.g. "16:9", "9:16", "2.39:1". Preserved verbatim. */
47
+ aspectRatio?: string;
48
+ /** Target duration in seconds (video/avatar). Drives shot count + timestamp budget. */
49
+ durationSec?: number;
50
+ /** Reference images the user supplied; their tokens/roles MUST be preserved. */
51
+ referenceImages?: ReferenceImageHint[];
52
+ /** Persona / niche hint (agent path), e.g. "ugc-ad". Free-form, advisory only. */
53
+ persona?: string;
54
+ /** Extra hard instructions from the caller that must also be honoured. */
55
+ extraInstructions?: string;
56
+ /**
57
+ * When true, attach `referenceImages[].url` to the LLM call so a
58
+ * vision-capable model can describe them faithfully. Host must ensure the
59
+ * routed model supports vision.
60
+ */
61
+ useVision?: boolean;
62
+ }
63
+ /** Knobs for a single enhance call. */
64
+ export interface EnhanceOptions {
65
+ /** Use the premium enhancer model (higher quality, higher cost/latency). Default false. */
66
+ premium?: boolean;
67
+ /**
68
+ * Explicit model override. Bypasses the enhancer model policy (and the
69
+ * `premium` flag) entirely. Provider must have a native caller wired.
70
+ */
71
+ model?: ModelChoice;
72
+ /** Fallback used alongside `model`. Ignored unless `model` is set. */
73
+ fallbackModel?: ModelChoice;
74
+ /** Creativity. Defaults to the profile's value. Lower = more faithful. */
75
+ temperature?: number;
76
+ /** Max output tokens. Defaults to the profile's value. */
77
+ maxTokens?: number;
78
+ }
79
+ export interface EnhanceRequest {
80
+ /** The user's raw prompt. Required, non-empty after trim. */
81
+ prompt: string;
82
+ /** Which pipeline this prompt feeds. */
83
+ target: EnhanceTarget;
84
+ context?: EnhanceContext;
85
+ options?: EnhanceOptions;
86
+ }
87
+ export interface EnhanceResult {
88
+ /** The enhanced, ready-to-use prompt. Drop-in replacement for the raw prompt. */
89
+ enhancedPrompt: string;
90
+ /** The original prompt, verbatim (so callers can persist it as originalPrompt). */
91
+ originalPrompt: string;
92
+ /**
93
+ * Hard requirements the enhancer extracted from the user prompt and
94
+ * preserved. Useful for debugging/telemetry and a future verification pass.
95
+ */
96
+ preservedRequirements: string[];
97
+ /** Detail the enhancer added where the user was silent. */
98
+ additions: string[];
99
+ /** Target this was enhanced for. */
100
+ target: EnhanceTarget;
101
+ /** Logical model id that produced the result. */
102
+ model?: string;
103
+ /** True if the fallback model produced the result. */
104
+ usedFallback?: boolean;
105
+ /** True when enhancement failed and `enhancedPrompt` is the untouched original. */
106
+ degraded?: boolean;
107
+ usage?: {
108
+ promptTokens?: number;
109
+ completionTokens?: number;
110
+ };
111
+ }
112
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/promptEnhancer/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACvC,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,sEAAsE;IACtE,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,iFAAiF;IACjF,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,2DAA2D;IAC3D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oCAAoC;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +1,18 @@
1
1
  import { TAiGenModel } from "../../globals/aiModels";
2
2
  import { TtsProvider } from "../../globals/ttsModels/types";
3
+ /**
4
+ * Capacity-planning thresholds (used by previewCapacity + the bounded gate).
5
+ *
6
+ * MAX_ACCEPTABLE_WAIT_MS — a model whose projected wait for a submit slot
7
+ * exceeds this is considered "not available" by previewCapacity, so the
8
+ * job-start selector spills to a less-loaded model in the same tier chain.
9
+ * DAILY_NEAR_RESET_MS — when a model's per-day cap is exhausted, we only wait
10
+ * it out if the UTC-midnight reset is within this window; otherwise the
11
+ * bounded gate fast-fails (VIDEO_PROVIDER_RATE_LIMITED) so the caller can
12
+ * fall back rather than block for hours.
13
+ */
14
+ export declare const MAX_ACCEPTABLE_WAIT_MS = 180000;
15
+ export declare const DAILY_NEAR_RESET_MS = 120000;
3
16
  /**
4
17
  * DistributedRateLimiter — three-tier provider quota gate.
5
18
  *
@@ -39,6 +52,29 @@ export interface LimiterSnapshot {
39
52
  perMinLimit?: number;
40
53
  perDayLimit?: number;
41
54
  }
55
+ /**
56
+ * Read-only capacity estimate for a model — does NOT consume a slot. Used by
57
+ * the job-start model selector to decide whether to spill to another model in
58
+ * the tier chain before triggering. `available` folds the projected-wait and
59
+ * daily-reset thresholds into a single go/no-go.
60
+ */
61
+ export interface CapacityPreview {
62
+ modelKey: string;
63
+ /** Rough estimate of how long until a NEW submit can proceed, in ms. */
64
+ projectedWaitMs: number;
65
+ /** Whether a new submission can proceed within the acceptable wait window. */
66
+ available: boolean;
67
+ /** Per-day cap is configured and currently exhausted. */
68
+ dailyExhausted: boolean;
69
+ secsUntilDayReset: number;
70
+ perMinUsed: number;
71
+ perMinLimit: number;
72
+ perDayUsed: number;
73
+ perDayLimit: number;
74
+ concurrentActive: number;
75
+ concurrentLimit: number;
76
+ concurrentQueueDepth: number;
77
+ }
42
78
  export declare class DistributedRateLimiter {
43
79
  private readonly modelKey;
44
80
  private readonly concurrentLimit;
@@ -52,15 +88,34 @@ export declare class DistributedRateLimiter {
52
88
  * a slot in each. Caller MUST call releaseSlot() when the in-flight task
53
89
  * settles — per-min / per-day auto-expire but the concurrent counter does
54
90
  * not. Mirrors the old AiGenModelRateLimiter API.
91
+ *
92
+ * `opts.maxWaitMs` bounds the rate-budget wait: if satisfying the per-day /
93
+ * per-minute gate would take longer than this, the call throws a
94
+ * `UserFacingError(VIDEO_PROVIDER_RATE_LIMITED)` instead of sleep-looping for
95
+ * hours. This is the backstop that stops jobs from piling up in-process when
96
+ * a daily cap is hit — the submit path passes it; legacy callers that omit
97
+ * it keep the original (unbounded) behavior.
55
98
  */
56
- waitUntilAvailable(): Promise<void>;
99
+ waitUntilAvailable(opts?: {
100
+ maxWaitMs?: number;
101
+ }): Promise<void>;
57
102
  /**
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.
103
+ * Bumps per-MINUTE only — does NOT count toward the concurrent cap and does
104
+ * NOT consume/await the per-day gate. Use for short-lived calls that share a
105
+ * provider's per-minute budget but must not be blocked by the daily SUBMIT
106
+ * cap: status polls of already-running tasks (failing a poll on daily quota
107
+ * would abandon a video that's already generating), plus sync image/TTS gens
108
+ * (which have no per-day limit configured anyway). No release needed — Redis
109
+ * auto-expires the counters.
62
110
  */
63
111
  waitUntilAvailableForOneShot(): Promise<void>;
112
+ /**
113
+ * Read-only capacity estimate — does NOT consume a slot. Reads current
114
+ * per-minute / per-day usage and concurrency pressure from Redis and
115
+ * projects how long a new submission would wait. Fails open (available:true,
116
+ * wait:0) on Redis errors / no client, matching the gate's fail-open policy.
117
+ */
118
+ previewCapacity(maxAcceptableWaitMs?: number): Promise<CapacityPreview>;
64
119
  /** Free a concurrent slot acquired via waitUntilAvailable(). */
65
120
  releaseSlot(): void;
66
121
  get activeConcurrentCount(): number;