@purpleschool/gptbot-tools 0.0.54 → 0.0.56-presentation

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 (188) hide show
  1. package/build/common/errors/errors.js +399 -2
  2. package/build/index.js +6 -0
  3. package/build/music/commands/convert-to-wav.command.js +15 -0
  4. package/build/music/commands/delete-all-music-jobs.command.js +13 -0
  5. package/build/music/commands/delete-music-job-by-uuid.command.js +14 -0
  6. package/build/music/commands/generate-lyrics.command.js +18 -0
  7. package/build/music/commands/generate-music.command.js +18 -0
  8. package/build/music/commands/index.js +24 -0
  9. package/build/music/commands/retry-music-job.command.js +16 -0
  10. package/build/music/commands/set-reaction-to-music-job.command.js +17 -0
  11. package/build/music/commands/update-music-job-title.command.js +16 -0
  12. package/build/music/enums/index.js +22 -0
  13. package/build/music/enums/music-action-type.enum.js +7 -0
  14. package/build/music/enums/music-pricing-rule-type.enum.js +7 -0
  15. package/build/music/enums/music-strategy.enum.js +7 -0
  16. package/build/music/enums/music-vocal-gender.enum.js +8 -0
  17. package/build/music/enums/suno-mode-type.enum.js +10 -0
  18. package/build/music/enums/suno-model-type.enum.js +10 -0
  19. package/build/music/index.js +22 -0
  20. package/build/music/models/index.js +20 -0
  21. package/build/music/models/music-config.schema.js +8 -0
  22. package/build/music/models/music-job.schema.js +54 -0
  23. package/build/music/models/music-model.schema.js +35 -0
  24. package/build/music/models/music-track.schema.js +17 -0
  25. package/build/music/queries/find-music-job-by-id.query.js +10 -0
  26. package/build/music/queries/find-music-jobs.query.js +28 -0
  27. package/build/music/queries/get-music-config.query.js +9 -0
  28. package/build/music/queries/index.js +19 -0
  29. package/build/music/routes/index.js +17 -0
  30. package/build/music/routes/music.amqp.routes.js +16 -0
  31. package/build/music/utils/calculate-music-generation-price.util.js +7 -0
  32. package/build/music/utils/index.js +17 -0
  33. package/build/presentation/commands/build-blank-slide.command.js +15 -0
  34. package/build/presentation/commands/generate-and-insert-slide.command.js +22 -0
  35. package/build/presentation/commands/index.js +7 -0
  36. package/build/presentation/commands/presentation-generate-report.command.js +18 -0
  37. package/build/presentation/commands/presentation-paraphrase.command.js +19 -0
  38. package/build/presentation/commands/update-presentation-slides.command.js +16 -0
  39. package/build/presentation/commands/update-slide-image-slot.command.js +34 -0
  40. package/build/presentation/commands/update-slide.command.js +17 -0
  41. package/build/presentation/enums/index.js +4 -0
  42. package/build/presentation/enums/presentation-ai-action-call-status.enum.js +9 -0
  43. package/build/presentation/enums/presentation-ai-action-pricing-type.enum.js +8 -0
  44. package/build/presentation/enums/presentation-ai-action-type.enum.js +8 -0
  45. package/build/presentation/enums/slide-image-slot-action.enum.js +8 -0
  46. package/build/presentation/index.js +1 -0
  47. package/build/presentation/models/index.js +1 -0
  48. package/build/presentation/models/presentation-ai-action.schema.js +27 -0
  49. package/build/presentation/models/presentation-config.schema.js +3 -0
  50. package/build/presentation/models/presentation.schema.js +4 -1
  51. package/build/presentation/models/slide-content-edit.schema.js +135 -0
  52. package/build/presentation/models/slide-content.schema.js +5 -1
  53. package/build/presentation/models/slide.schema.js +39 -1
  54. package/build/presentation/routes/presentation.routes.js +7 -0
  55. package/build/presentation/utils/calculate-presentation-ai-action-price.util.js +16 -0
  56. package/build/presentation/utils/index.js +17 -0
  57. package/build/tools/enums/tool-type.enum.js +4 -0
  58. package/build/video/enums/video-strategy.enum.js +2 -0
  59. package/build/video/routes/video.http.routes.js +1 -0
  60. package/build/video-editor/commands/delete-all-video-editor-jobs.command.js +13 -0
  61. package/build/video-editor/commands/delete-video-editor-job-by-uuid.command.js +14 -0
  62. package/build/video-editor/commands/edit-video.command.js +19 -0
  63. package/build/video-editor/commands/index.js +22 -0
  64. package/build/video-editor/commands/retry-video-editor-job.command.js +16 -0
  65. package/build/video-editor/commands/set-reaction-to-video-editor-job.command.js +17 -0
  66. package/build/video-editor/commands/update-video-editor-job-title.command.js +16 -0
  67. package/build/video-editor/enums/index.js +17 -0
  68. package/build/video-editor/enums/video-editor-model-strategy.enum.js +10 -0
  69. package/build/video-editor/index.js +22 -0
  70. package/build/video-editor/models/index.js +19 -0
  71. package/build/video-editor/models/video-editor-config.schema.js +11 -0
  72. package/build/video-editor/models/video-editor-job.schema.js +27 -0
  73. package/build/video-editor/models/video-editor-model.schema.js +24 -0
  74. package/build/video-editor/queries/find-video-editor-job-by-id.query.js +19 -0
  75. package/build/video-editor/queries/find-video-editor-jobs.query.js +28 -0
  76. package/build/video-editor/queries/get-video-editor-config.query.js +11 -0
  77. package/build/video-editor/queries/index.js +19 -0
  78. package/build/video-editor/routes/index.js +18 -0
  79. package/build/video-editor/routes/video-editor.amqp.routes.js +14 -0
  80. package/build/video-editor/routes/video-editor.http.routes.js +8 -0
  81. package/build/video-editor/utils/calculate-video-editing-price.js +10 -0
  82. package/build/video-editor/utils/index.js +17 -0
  83. package/build/writer/commands/generate-document-contents.command.js +1 -0
  84. package/build/writer/commands/index.js +1 -0
  85. package/build/writer/enums/index.js +1 -0
  86. package/build/writer/enums/writer-content-generation-strategy.enum.js +8 -0
  87. package/build/writer/index.js +1 -0
  88. package/build/writer/models/index.js +1 -0
  89. package/build/writer/models/writer-config.schema.js +2 -0
  90. package/build/writer/models/writer-document-type.schema.js +1 -0
  91. package/build/writer/models/writer-document.schema.js +1 -0
  92. package/build/writer/models/writer-model.schema.js +21 -0
  93. package/build/writer/utils/calculate-writer-content-generation-price.util.js +2 -2
  94. package/common/errors/errors.ts +408 -3
  95. package/index.ts +6 -0
  96. package/music/commands/convert-to-wav.command.ts +15 -0
  97. package/music/commands/delete-all-music-jobs.command.ts +13 -0
  98. package/music/commands/delete-music-job-by-uuid.command.ts +14 -0
  99. package/music/commands/generate-lyrics.command.ts +20 -0
  100. package/music/commands/generate-music.command.ts +18 -0
  101. package/music/commands/index.ts +8 -0
  102. package/music/commands/retry-music-job.command.ts +16 -0
  103. package/music/commands/set-reaction-to-music-job.command.ts +17 -0
  104. package/music/commands/update-music-job-title.command.ts +16 -0
  105. package/music/enums/index.ts +6 -0
  106. package/music/enums/music-action-type.enum.ts +3 -0
  107. package/music/enums/music-pricing-rule-type.enum.ts +3 -0
  108. package/music/enums/music-strategy.enum.ts +3 -0
  109. package/music/enums/music-vocal-gender.enum.ts +4 -0
  110. package/music/enums/suno-mode-type.enum.ts +6 -0
  111. package/music/enums/suno-model-type.enum.ts +6 -0
  112. package/music/index.ts +6 -0
  113. package/music/models/index.ts +4 -0
  114. package/music/models/music-config.schema.ts +8 -0
  115. package/music/models/music-job.schema.ts +57 -0
  116. package/music/models/music-model.schema.ts +40 -0
  117. package/music/models/music-track.schema.ts +19 -0
  118. package/music/queries/find-music-job-by-id.query.ts +11 -0
  119. package/music/queries/find-music-jobs.query.ts +33 -0
  120. package/music/queries/get-music-config.query.ts +8 -0
  121. package/music/queries/index.ts +3 -0
  122. package/music/routes/index.ts +1 -0
  123. package/music/routes/music.amqp.routes.ts +13 -0
  124. package/music/utils/calculate-music-generation-price.util.ts +5 -0
  125. package/music/utils/index.ts +1 -0
  126. package/package.json +1 -1
  127. package/presentation/commands/build-blank-slide.command.ts +15 -0
  128. package/presentation/commands/generate-and-insert-slide.command.ts +22 -0
  129. package/presentation/commands/index.ts +7 -0
  130. package/presentation/commands/presentation-generate-report.command.ts +20 -0
  131. package/presentation/commands/presentation-paraphrase.command.ts +21 -0
  132. package/presentation/commands/update-presentation-slides.command.ts +16 -0
  133. package/presentation/commands/update-slide-image-slot.command.ts +39 -0
  134. package/presentation/commands/update-slide.command.ts +17 -0
  135. package/presentation/enums/index.ts +4 -0
  136. package/presentation/enums/presentation-ai-action-call-status.enum.ts +5 -0
  137. package/presentation/enums/presentation-ai-action-pricing-type.enum.ts +4 -0
  138. package/presentation/enums/presentation-ai-action-type.enum.ts +4 -0
  139. package/presentation/enums/slide-image-slot-action.enum.ts +4 -0
  140. package/presentation/index.ts +1 -0
  141. package/presentation/models/index.ts +1 -0
  142. package/presentation/models/presentation-ai-action.schema.ts +30 -0
  143. package/presentation/models/presentation-config.schema.ts +3 -0
  144. package/presentation/models/presentation.schema.ts +4 -1
  145. package/presentation/models/slide-content-edit.schema.ts +160 -0
  146. package/presentation/models/slide-content.schema.ts +104 -11
  147. package/presentation/models/slide-image-slot.schema.ts +1 -0
  148. package/presentation/models/slide.schema.ts +47 -0
  149. package/presentation/routes/presentation.routes.ts +7 -0
  150. package/presentation/utils/calculate-presentation-ai-action-price.util.ts +20 -0
  151. package/presentation/utils/index.ts +1 -0
  152. package/tools/enums/tool-type.enum.ts +4 -0
  153. package/video/enums/video-strategy.enum.ts +2 -0
  154. package/video/routes/video.http.routes.ts +1 -0
  155. package/video-editor/commands/delete-all-video-editor-jobs.command.ts +13 -0
  156. package/video-editor/commands/delete-video-editor-job-by-uuid.command.ts +14 -0
  157. package/video-editor/commands/edit-video.command.ts +19 -0
  158. package/video-editor/commands/index.ts +6 -0
  159. package/video-editor/commands/retry-video-editor-job.command.ts +16 -0
  160. package/video-editor/commands/set-reaction-to-video-editor-job.command.ts +17 -0
  161. package/video-editor/commands/update-video-editor-job-title.command.ts +16 -0
  162. package/video-editor/enums/index.ts +1 -0
  163. package/video-editor/enums/video-editor-model-strategy.enum.ts +6 -0
  164. package/video-editor/index.ts +6 -0
  165. package/video-editor/models/index.ts +3 -0
  166. package/video-editor/models/video-editor-config.schema.ts +7 -0
  167. package/video-editor/models/video-editor-job.schema.ts +27 -0
  168. package/video-editor/models/video-editor-model.schema.ts +23 -0
  169. package/video-editor/queries/find-video-editor-job-by-id.query.ts +19 -0
  170. package/video-editor/queries/find-video-editor-jobs.query.ts +33 -0
  171. package/video-editor/queries/get-video-editor-config.query.ts +11 -0
  172. package/video-editor/queries/index.ts +3 -0
  173. package/video-editor/routes/index.ts +2 -0
  174. package/video-editor/routes/video-editor.amqp.routes.ts +11 -0
  175. package/video-editor/routes/video-editor.http.routes.ts +6 -0
  176. package/video-editor/utils/calculate-video-editing-price.ts +12 -0
  177. package/video-editor/utils/index.ts +1 -0
  178. package/writer/commands/generate-document-contents.command.ts +1 -0
  179. package/writer/commands/index.ts +1 -0
  180. package/writer/enums/index.ts +1 -0
  181. package/writer/enums/writer-content-generation-strategy.enum.ts +4 -0
  182. package/writer/index.ts +1 -0
  183. package/writer/models/index.ts +1 -0
  184. package/writer/models/writer-config.schema.ts +2 -0
  185. package/writer/models/writer-document-type.schema.ts +1 -0
  186. package/writer/models/writer-document.schema.ts +1 -0
  187. package/writer/models/writer-model.schema.ts +21 -0
  188. package/writer/utils/calculate-writer-content-generation-price.util.ts +4 -2
@@ -342,6 +342,95 @@ export const ERRORS = {
342
342
  message: 'У пользователя недостаточно средств для генерации слайдов',
343
343
  httpCode: 400,
344
344
  },
345
+ CREATE_BLANK_SLIDE_ERROR: {
346
+ code: 'PRESENTATION.CREATE_BLANK_SLIDE_ERROR',
347
+ message: 'Произошла ошибка при создании пустого слайда',
348
+ httpCode: 500,
349
+ },
350
+ INVALID_CONTENT_TYPE_CHANGE: {
351
+ code: 'PRESENTATION.INVALID_CONTENT_TYPE_CHANGE',
352
+ message: 'Невозможно изменить тип существующего слайда',
353
+ httpCode: 400,
354
+ },
355
+ INVALID_SLIDE_POSITION: {
356
+ code: 'PRESENTATION.INVALID_SLIDE_POSITION',
357
+ message: 'Неверная позиция для вставки слайда',
358
+ httpCode: 400,
359
+ },
360
+ SLIDES_UPDATE_ERROR: {
361
+ code: 'PRESENTATION.SLIDES_UPDATE_ERROR',
362
+ message: 'Произошла ошибка при обновлении слайдов презентации',
363
+ httpCode: 500,
364
+ },
365
+ SLIDE_NOT_FOUND: {
366
+ code: 'PRESENTATION.SLIDE_NOT_FOUND',
367
+ message: 'Слайд не найден',
368
+ httpCode: 404,
369
+ },
370
+ SLIDE_IMAGE_SLOT_NOT_FOUND: {
371
+ code: 'PRESENTATION.SLIDE_IMAGE_SLOT_NOT_FOUND',
372
+ message: 'Слот изображения слайда не найден',
373
+ httpCode: 404,
374
+ },
375
+ SLIDE_IMAGE_UPDATE_ERROR: {
376
+ code: 'PRESENTATION.SLIDE_IMAGE_UPDATE_ERROR',
377
+ message: 'Произошла ошибка при обновлении слота изображения слайда',
378
+ httpCode: 500,
379
+ },
380
+ INSUFFICIENT_BALANCE_FOR_IMAGE_GENERATION: {
381
+ code: 'PRESENTATION.INSUFFICIENT_BALANCE_FOR_IMAGE_GENERATION',
382
+ message: 'У пользователя недостаточно средств для генерации изображения',
383
+ httpCode: 400,
384
+ },
385
+ },
386
+ PRESENTATION_AI_ACTION: {
387
+ NOT_FOUND: {
388
+ code: 'PRESENTATION_AI_ACTION.NOT_FOUND',
389
+ message: 'ИИ операция для презентации не найдено',
390
+ httpCode: 404,
391
+ },
392
+ PROMPT_TOO_LONG: {
393
+ code: 'PRESENTATION_AI_ACTION.PROMPT_TOO_LONG',
394
+ message: 'Превышена максимальная длина запроса',
395
+ httpCode: 400,
396
+ },
397
+ INSUFFICIENT_BALANCE: {
398
+ code: 'PRESENTATION_AI_ACTION.INSUFFICIENT_BALANCE',
399
+ message: 'У пользователя недостаточно средств для выполнения операции',
400
+ httpCode: 400,
401
+ },
402
+ AI_ERROR: {
403
+ code: 'PRESENTATION_AI_ACTION.AI_ERROR',
404
+ message: 'Произошла ошибка во время запроса к ИИ',
405
+ httpCode: 500,
406
+ },
407
+ SAVE_ERROR: {
408
+ code: 'PRESENTATION_AI_ACTION.SAVE_ERROR',
409
+ message: 'Произошла ошибка при сохранении ИИ операции для презентации',
410
+ httpCode: 500,
411
+ },
412
+ FIND_ERROR: {
413
+ code: 'PRESENTATION_AI_ACTION.FIND_ERROR',
414
+ message: 'Произошла ошибка при поиске ИИ операций для презентации',
415
+ httpCode: 500,
416
+ },
417
+ },
418
+ PRESENTATION_AI_ACTION_CALL: {
419
+ NOT_FOUND: {
420
+ code: 'PRESENTATION_AI_ACTION_CALL.NOT_FOUND',
421
+ message: 'Вызов ИИ операции для презентации не найден',
422
+ httpCode: 404,
423
+ },
424
+ SAVE_ERROR: {
425
+ code: 'PRESENTATION_AI_ACTION_CALL.SAVE_ERROR',
426
+ message: 'Произошла ошибка при сохранении вызова ИИ операции для презентации',
427
+ httpCode: 500,
428
+ },
429
+ FIND_ERROR: {
430
+ code: 'PRESENTATION_AI_ACTION_CALL.FIND_ERROR',
431
+ message: 'Произошла ошибка при поиске вызова ИИ операции для презентации',
432
+ httpCode: 500,
433
+ },
345
434
  },
346
435
  SLIDE_OUTLINE: {
347
436
  DELETE_ERROR: {
@@ -478,13 +567,30 @@ export const ERRORS = {
478
567
  message: 'Некорректное соотношение сторон',
479
568
  httpCode: 400,
480
569
  },
481
-
482
570
  RUNWAY_CONTENT_POLICY: {
483
- code: 'VIDEO.GOOGLE_CONTENT_POLICY',
571
+ code: 'VIDEO.RUNWAY_CONTENT_POLICY',
484
572
  message:
485
573
  'Запрос на создание видео был отклонен, т.к. он не соответствует требованиям политики безопасности Runway.',
486
574
  httpCode: 400,
487
575
  },
576
+
577
+ SORA_CONTENT_POLICY: {
578
+ code: 'VIDEO.SORA_CONTENT_POLICY',
579
+ message:
580
+ 'Запрос на создание видео был отклонен, т.к. он не соответствует требованиям политики безопасности SORA.',
581
+ httpCode: 400,
582
+ },
583
+ POLL_TIMEOUT: {
584
+ code: 'VIDEO.POLL_TIMEOUT',
585
+ message: 'Превышено время ожидания генерации видео',
586
+ httpCode: 500,
587
+ },
588
+ LUMA_CONTENT_POLICY: {
589
+ code: 'VIDEO.LUMA_CONTENT_POLICY',
590
+ message:
591
+ 'Запрос на создание видео был отклонен, т.к. он не соответствует требованиям политики безопасности Luma.',
592
+ httpCode: 400,
593
+ },
488
594
  },
489
595
  VIDEO_MODEL: {
490
596
  SAVE_ERROR: {
@@ -536,6 +642,11 @@ export const ERRORS = {
536
642
  },
537
643
  },
538
644
  WRITER_DOCUMENT: {
645
+ SET_REACTION_TO_WRITER_DOCUMENT_ERROR: {
646
+ code: 'WRITER_DOCUMENT.SET_REACTION_TO_WRITER_DOCUMENT_ERROR',
647
+ message: 'Произошла ошибка при установке реакции на документ',
648
+ httpCode: 500,
649
+ },
539
650
  SAVE_ERROR: {
540
651
  code: 'WRITER_DOCUMENT.SAVE_ERROR',
541
652
  message: 'Произошла ошибка при сохранении документа',
@@ -666,6 +777,23 @@ export const ERRORS = {
666
777
  httpCode: 404,
667
778
  },
668
779
  },
780
+ WRITER_MODEL: {
781
+ MODEL_NOT_ACTIVE: {
782
+ code: 'WRITER_MODEL.MODEL_NOT_ACTIVE',
783
+ message: 'Модель для генерации текста не активна',
784
+ httpCode: 400,
785
+ },
786
+ FIND_ERROR: {
787
+ code: 'WRITER_MODEL.FIND_ERROR',
788
+ message: 'Произошла ошибка при поиске модели для генерации текста',
789
+ httpCode: 500,
790
+ },
791
+ SAVE_ERROR: {
792
+ code: 'WRITER_MODEL.SAVE_ERROR',
793
+ message: 'Произошла ошибка при сохранении модели для генерации текста',
794
+ httpCode: 500,
795
+ },
796
+ },
669
797
  PROMPT_MODERATION: {
670
798
  AI_ERROR: {
671
799
  code: 'PROMPT_MODERATION.AI_ERROR',
@@ -674,15 +802,26 @@ export const ERRORS = {
674
802
  },
675
803
  PROMPT_IS_NOT_COMPLIANT: {
676
804
  code: 'PROMPT_MODERATION.PROMPT_IS_NOT_COMPLIANT',
677
- message: 'Запрос был отклонен, т.к. может не соответствовать правилам сервиса',
805
+ message: 'Запрос был отклонен, т.к. может не соответствовать правилам сервиса ruGPT',
678
806
  httpCode: 400,
679
807
  },
808
+ PROCESSING_ERROR: {
809
+ code: 'PROMPT_MODERATION.PROCESSING_ERROR',
810
+ message: 'Произошла ошибка при обработке запроса',
811
+ httpCode: 500,
812
+ },
680
813
  GOOGLE_CONTENT_POLICY: {
681
814
  code: 'PROMPT_MODERATION.GOOGLE_CONTENT_POLICY',
682
815
  message:
683
816
  'Запрос был отклонен, т.к. он не соответствует требованиям политики безопасности Google.',
684
817
  httpCode: 400,
685
818
  },
819
+ EXTERNAL_PROVIDER_CONTENT_POLICY: {
820
+ code: 'PROMPT_MODERATION.EXTERNAL_PROVIDER_CONTENT_POLICY',
821
+ message:
822
+ 'Запрос был отклонен, т.к. он не соответствует требованиям политики безопасности поставщика модели',
823
+ httpCode: 400,
824
+ },
686
825
  },
687
826
  PROMPT_MODERATION_LOG: {
688
827
  SAVE_ERROR: {
@@ -722,6 +861,11 @@ export const ERRORS = {
722
861
  message: 'Произошла ошибка при поиске системного запроса',
723
862
  httpCode: 404,
724
863
  },
864
+ POLL_TIMEOUT: {
865
+ code: 'IMAGE_EDITOR.POLL_TIMEOUT',
866
+ message: 'Превышено время ожидания задачи на редактирование картинки',
867
+ httpCode: 500,
868
+ },
725
869
  },
726
870
  IMAGE_EDITOR_MODEL: {
727
871
  SAVE_ERROR: {
@@ -773,4 +917,265 @@ export const ERRORS = {
773
917
  httpCode: 500,
774
918
  },
775
919
  },
920
+ VIDEO_EDITOR: {
921
+ AI_ERROR: {
922
+ code: 'VIDEO_EDITOR.AI_ERROR',
923
+ message: 'Произошла ошибка во время запроса к ИИ',
924
+ httpCode: 500,
925
+ },
926
+ INSUFFICIENT_BALANCE: {
927
+ code: 'VIDEO_EDITOR.INSUFFICIENT_BALANCE',
928
+ message: 'У пользователя недостаточно средств',
929
+ httpCode: 400,
930
+ },
931
+ DELETE_ERROR: {
932
+ code: 'VIDEO_EDITOR.DELETE_ERROR',
933
+ message: 'Произошла ошибка при удалении',
934
+ httpCode: 500,
935
+ },
936
+ MAX_PROMPT_LENGTH_EXCEEDED: {
937
+ code: 'VIDEO_EDITOR.MAX_PROMPT_LENGTH_EXCEEDED',
938
+ message: 'Превышена максимальная длина запроса',
939
+ httpCode: 400,
940
+ },
941
+ MAX_DURATION_EXCEEDED: {
942
+ code: 'VIDEO_EDITOR.MAX_DURATION_EXCEEDED',
943
+ message: 'Превышена максимальная длительность видео',
944
+ httpCode: 400,
945
+ },
946
+ RUNWAY_CONTENT_POLICY: {
947
+ code: 'VIDEO_EDITOR.RUNWAY_CONTENT_POLICY',
948
+ message:
949
+ 'Запрос на редактирование видео был отклонен, т.к. он не соответствует требованиям политики безопасности Runway.',
950
+ httpCode: 400,
951
+ },
952
+ POLL_TIMEOUT: {
953
+ code: 'VIDEO_EDITOR.POLL_TIMEOUT',
954
+ message: 'Превышено время ожидания редактирования видео',
955
+ httpCode: 500,
956
+ },
957
+ LUMA_CONTENT_POLICY: {
958
+ code: 'VIDEO.LUMA_CONTENT_POLICY',
959
+ message:
960
+ 'Запрос на редактирование видео был отклонен, т.к. он не соответствует требованиям политики безопасности Luma.',
961
+ httpCode: 400,
962
+ },
963
+ },
964
+ VIDEO_EDITOR_MODEL: {
965
+ SAVE_ERROR: {
966
+ code: 'VIDEO_EDITOR_MODEL.SAVE_ERROR',
967
+ message: 'Произошла ошибка при сохранении модели для редактирования видео',
968
+ httpCode: 500,
969
+ },
970
+ FIND_ERROR: {
971
+ code: 'VIDEO_EDITOR_MODEL.FIND_ERROR',
972
+ message: 'Произошла ошибка при поиске модели для редактирования видео',
973
+ httpCode: 500,
974
+ },
975
+ NOT_FOUND: {
976
+ code: 'VIDEO_EDITOR_MODEL.NOT_FOUND',
977
+ message: 'Модель для редактирования видео не найдена',
978
+ httpCode: 404,
979
+ },
980
+ },
981
+ VIDEO_EDITOR_JOB: {
982
+ SAVE_ERROR: {
983
+ code: 'VIDEO_EDITOR_JOB.SAVE_ERROR',
984
+ message: 'Произошла ошибка при сохранении задания на редактирование видео',
985
+ httpCode: 500,
986
+ },
987
+ FIND_ERROR: {
988
+ code: 'VIDEO_EDITOR_JOB.FIND_ERROR',
989
+ message: 'Произошла ошибка при поиске задания на редактирование видео',
990
+ httpCode: 500,
991
+ },
992
+ NOT_FOUND: {
993
+ code: 'VIDEO_EDITOR_JOB.NOT_FOUND',
994
+ message: 'Задание на редактирование видео не найдено',
995
+ httpCode: 404,
996
+ },
997
+ NOT_AN_OWNER: {
998
+ code: 'VIDEO_EDITOR_JOB.NOT_AN_OWNER',
999
+ message: 'Пользователь не является владельцем задания на редактирование видео',
1000
+ httpCode: 403,
1001
+ },
1002
+ NOT_IN_FAILED_STATE_TO_RETRY: {
1003
+ code: 'VIDEO_EDITOR_JOB.NOT_IN_FAILED_STATE_TO_RETRY',
1004
+ message:
1005
+ 'Задание на редактирование видео не в состоянии "failed". Невозможно повторить',
1006
+ httpCode: 400,
1007
+ },
1008
+ DELETE_ERROR: {
1009
+ code: 'VIDEO_EDITOR_JOB.DELETE_ERROR',
1010
+ message: 'Произошла ошибка при удалении задания на редактирование видео',
1011
+ httpCode: 500,
1012
+ },
1013
+ },
1014
+ MUSIC_EDITOR: {
1015
+ AI_ERROR: {
1016
+ code: 'MUSIC_EDITOR.AI_ERROR',
1017
+ message: 'Произошла ошибка во время запроса к ИИ',
1018
+ httpCode: 500,
1019
+ },
1020
+ INSUFFICIENT_BALANCE: {
1021
+ code: 'MUSIC_EDITOR.INSUFFICIENT_BALANCE',
1022
+ message: 'У пользователя недостаточно средств',
1023
+ httpCode: 400,
1024
+ },
1025
+ DELETE_ERROR: {
1026
+ code: 'MUSIC_EDITOR.DELETE_ERROR',
1027
+ message: 'Произошла ошибка при удалении',
1028
+ httpCode: 500,
1029
+ },
1030
+ MAX_PROMPT_LENGTH_EXCEEDED: {
1031
+ code: 'MUSIC_EDITOR.MAX_PROMPT_LENGTH_EXCEEDED',
1032
+ message: 'Превышена максимальная длина запроса',
1033
+ httpCode: 400,
1034
+ },
1035
+ MAX_DURATION_EXCEEDED: {
1036
+ code: 'MUSIC_EDITOR.MAX_DURATION_EXCEEDED',
1037
+ message: 'Превышена максимальная длительность музыки',
1038
+ httpCode: 400,
1039
+ },
1040
+ },
1041
+ MUSIC_EDITOR_JOB: {
1042
+ SAVE_ERROR: {
1043
+ code: 'MUSIC_EDITOR_JOB.SAVE_ERROR',
1044
+ message: 'Произошла ошибка при сохранении задания на редактирование музыки',
1045
+ httpCode: 500,
1046
+ },
1047
+ FIND_ERROR: {
1048
+ code: 'MUSIC_EDITOR_JOB.FIND_ERROR',
1049
+ message: 'Произошла ошибка при поиске задания на редактирование музыки',
1050
+ httpCode: 500,
1051
+ },
1052
+ NOT_FOUND: {
1053
+ code: 'MUSIC_EDITOR_JOB.NOT_FOUND',
1054
+ message: 'Задание на редактирование музыки не найдено',
1055
+ httpCode: 404,
1056
+ },
1057
+ NOT_AN_OWNER: {
1058
+ code: 'MUSIC_EDITOR_JOB.NOT_AN_OWNER',
1059
+ message: 'Пользователь не является владельцем задания на редактирование музыки',
1060
+ httpCode: 403,
1061
+ },
1062
+ NOT_IN_FAILED_STATE_TO_RETRY: {
1063
+ code: 'MUSIC_EDITOR_JOB.NOT_IN_FAILED_STATE_TO_RETRY',
1064
+ message:
1065
+ 'Задание на редактирование музыки не в состоянии "failed". Невозможно повторить',
1066
+ httpCode: 400,
1067
+ },
1068
+ DELETE_ERROR: {
1069
+ code: 'MUSIC_EDITOR_JOB.DELETE_ERROR',
1070
+ message: 'Произошла ошибка при удалении задания на редактирование музыки',
1071
+ httpCode: 500,
1072
+ },
1073
+ },
1074
+ MUSIC: {
1075
+ AI_ERROR: {
1076
+ code: 'MUSIC.AI_ERROR',
1077
+ message: 'Произошла ошибка во время запроса к ИИ',
1078
+ httpCode: 500,
1079
+ },
1080
+ INSUFFICIENT_BALANCE: {
1081
+ code: 'MUSIC.INSUFFICIENT_BALANCE',
1082
+ message: 'У пользователя недостаточно средств',
1083
+ httpCode: 400,
1084
+ },
1085
+ INVALID_PARAMS: {
1086
+ code: 'MUSIC.INVALID_PARAMS',
1087
+ message: 'Некорректные параметры музыки',
1088
+ httpCode: 400,
1089
+ },
1090
+ DELETE_ERROR: {
1091
+ code: 'MUSIC.DELETE_ERROR',
1092
+ message: 'Произошла ошибка при удалении генерации музыки',
1093
+ httpCode: 500,
1094
+ },
1095
+ INVALID_GENDER: {
1096
+ code: 'MUSIC.INVALID_GENDER',
1097
+ message: 'Некорректный выбор голоса вокала',
1098
+ httpCode: 400,
1099
+ },
1100
+ MAX_PROMPT_LENGTH_EXCEEDED: {
1101
+ code: 'MUSIC.MAX_PROMPT_LENGTH_EXCEEDED',
1102
+ message: 'Превышена максимальная длина запроса',
1103
+ httpCode: 400,
1104
+ },
1105
+ SUNO_CONTENT_POLICY: {
1106
+ code: 'MUSIC.SUNO_CONTENT_POLICY',
1107
+ message:
1108
+ 'Запрос на создание музыки был отклонен, т.к. он не соответствует требованиям политики безопасности Suno.',
1109
+ httpCode: 400,
1110
+ },
1111
+ GENERATE_LYRICS_ERROR: {
1112
+ code: 'MUSIC.GENERATE_LYRICS_ERROR',
1113
+ message: 'Произошла ошибка при генерации текста музыки',
1114
+ httpCode: 500,
1115
+ },
1116
+ CONVERT_TO_WAV_ERROR: {
1117
+ code: 'MUSIC.CONVERT_TO_WAV_ERROR',
1118
+ message: 'Произошла ошибка при конвертации mp3 в wav',
1119
+ httpCode: 500,
1120
+ },
1121
+ POLL_TIMEOUT: {
1122
+ code: 'MUSIC.POLL_TIMEOUT',
1123
+ message: 'Превышено время ожидания генерации музыки',
1124
+ httpCode: 500,
1125
+ },
1126
+ },
1127
+ MUSIC_MODEL: {
1128
+ SAVE_ERROR: {
1129
+ code: 'MUSIC_MODEL.SAVE_ERROR',
1130
+ message: 'Произошла ошибка при сохранении модели для генерации музыки',
1131
+ httpCode: 500,
1132
+ },
1133
+ FIND_ERROR: {
1134
+ code: 'MUSIC_MODEL.FIND_ERROR',
1135
+ message: 'Произошла ошибка при поиске модели для генерации музыки',
1136
+ httpCode: 500,
1137
+ },
1138
+ NOT_FOUND: {
1139
+ code: 'MUSIC_MODEL.NOT_FOUND',
1140
+ message: 'Модель для генерации музыки не найдена',
1141
+ httpCode: 404,
1142
+ },
1143
+ MODEL_ARCHIVED: {
1144
+ code: 'MUSIC_MODEL.MODEL_ARCHIVED',
1145
+ message: 'Модель для генерации музыки архивирована',
1146
+ httpCode: 400,
1147
+ },
1148
+ },
1149
+ MUSIC_JOB: {
1150
+ SAVE_ERROR: {
1151
+ code: 'MUSIC_JOB.SAVE_ERROR',
1152
+ message: 'Произошла ошибка при сохранении задания на генерацию музыки',
1153
+ httpCode: 500,
1154
+ },
1155
+ FIND_ERROR: {
1156
+ code: 'MUSIC_JOB.FIND_ERROR',
1157
+ message: 'Произошла ошибка при поиске задания на генерацию музыки',
1158
+ httpCode: 500,
1159
+ },
1160
+ NOT_FOUND: {
1161
+ code: 'MUSIC_JOB.NOT_FOUND',
1162
+ message: 'Задание на генерацию музыки не найдено',
1163
+ httpCode: 404,
1164
+ },
1165
+ NOT_AN_OWNER: {
1166
+ code: 'MUSIC_JOB.NOT_AN_OWNER',
1167
+ message: 'Пользователь не является владельцем задания на генерацию музыки',
1168
+ httpCode: 403,
1169
+ },
1170
+ NOT_IN_FAILED_STATE_TO_RETRY: {
1171
+ code: 'MUSIC_JOB.NOT_IN_FAILED_STATE_TO_RETRY',
1172
+ message: 'Задание на генерацию музыки не в состоянии "failed". Невозможно повторить',
1173
+ httpCode: 400,
1174
+ },
1175
+ DELETE_ERROR: {
1176
+ code: 'MUSIC_JOB.DELETE_ERROR',
1177
+ message: 'Произошла ошибка при удалении задания на генерацию музыки',
1178
+ httpCode: 500,
1179
+ },
1180
+ },
776
1181
  } as const;
package/index.ts CHANGED
@@ -7,6 +7,8 @@ export * from './language';
7
7
  export * from './video';
8
8
  export * from './writer';
9
9
  export * from './image-editor';
10
+ export * from './video-editor';
11
+ export * from './music';
10
12
 
11
13
  import * as common from './common';
12
14
  import * as paraphrase from './paraphrase';
@@ -18,6 +20,8 @@ import * as language from './language';
18
20
  import * as video from './video';
19
21
  import * as writer from './writer';
20
22
  import * as imageEditor from './image-editor';
23
+ import * as videoEditor from './video-editor';
24
+ import * as music from './music';
21
25
 
22
26
  export namespace ToolService {
23
27
  export import Common = common;
@@ -30,4 +34,6 @@ export namespace ToolService {
30
34
  export import Video = video;
31
35
  export import Writer = writer;
32
36
  export import ImageEditor = imageEditor;
37
+ export import VideoEditor = videoEditor;
38
+ export import Music = music;
33
39
  }
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+
4
+ export namespace ConvertToWavCommand {
5
+ export const RequestSchema = z.object({
6
+ userId: z.string().uuid().nullable().optional(),
7
+ unregisteredUserId: z.string().uuid().nullable().optional(),
8
+ taskId: z.string(),
9
+ audioId: z.string(),
10
+ });
11
+ export type Request = z.infer<typeof RequestSchema>;
12
+
13
+ export const ResponseSchema = ICommandResponseSchema(z.object({ url: z.string().url() }));
14
+ export type Response = z.infer<typeof ResponseSchema>;
15
+ }
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+
4
+ export namespace DeleteAllMusicJobsCommand {
5
+ export const RequestSchema = z.object({
6
+ userId: z.string().uuid().nullable().optional(),
7
+ unregisteredUserId: z.string().uuid().nullable().optional(),
8
+ });
9
+ export type Request = z.infer<typeof RequestSchema>;
10
+
11
+ export const ResponseSchema = ICommandResponseSchema(z.boolean());
12
+ export type Response = z.infer<typeof ResponseSchema>;
13
+ }
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+
4
+ export namespace DeleteMusicJobByUuidCommand {
5
+ export const RequestSchema = z.object({
6
+ userId: z.string().uuid().nullable().optional(),
7
+ unregisteredUserId: z.string().uuid().nullable().optional(),
8
+ uuid: z.string(),
9
+ });
10
+ export type Request = z.infer<typeof RequestSchema>;
11
+
12
+ export const ResponseSchema = ICommandResponseSchema(z.boolean());
13
+ export type Response = z.infer<typeof ResponseSchema>;
14
+ }
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+
4
+ export namespace GenerateLyricsCommand {
5
+ export const RequestSchema = z.object({
6
+ userId: z.string().uuid().nullable().optional(),
7
+ unregisteredUserId: z.string().uuid().nullable().optional(),
8
+ userBalance: z.number(),
9
+ prompt: z.string(),
10
+ });
11
+ export type Request = z.infer<typeof RequestSchema>;
12
+
13
+ export const ResponseSchema = ICommandResponseSchema(
14
+ z.object({
15
+ title: z.string(),
16
+ lyrics: z.string(),
17
+ }),
18
+ );
19
+ export type Response = z.infer<typeof ResponseSchema>;
20
+ }
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { MusicJobSchema } from '../models/music-job.schema';
4
+ import { MusicJobParamsSchema } from '../models';
5
+
6
+ export namespace GenerateMusicCommand {
7
+ export const RequestSchema = z.object({
8
+ userId: z.string().uuid().nullable().optional(),
9
+ unregisteredUserId: z.string().uuid().nullable().optional(),
10
+ userBalance: z.number(),
11
+ modelId: z.string(),
12
+ params: MusicJobParamsSchema,
13
+ });
14
+ export type Request = z.infer<typeof RequestSchema>;
15
+
16
+ export const ResponseSchema = ICommandResponseSchema(MusicJobSchema);
17
+ export type Response = z.infer<typeof ResponseSchema>;
18
+ }
@@ -0,0 +1,8 @@
1
+ export * from './delete-music-job-by-uuid.command';
2
+ export * from './delete-all-music-jobs.command';
3
+ export * from './retry-music-job.command';
4
+ export * from './set-reaction-to-music-job.command';
5
+ export * from './generate-music.command';
6
+ export * from './update-music-job-title.command';
7
+ export * from './convert-to-wav.command';
8
+ export * from './generate-lyrics.command';
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { MusicJobSchema } from '../models/music-job.schema';
4
+
5
+ export namespace RetryMusicJobCommand {
6
+ export const RequestSchema = z.object({
7
+ uuid: z.string().uuid(),
8
+ userBalance: z.number(),
9
+ userId: z.string().uuid().nullable().optional(),
10
+ unregisteredUserId: z.string().uuid().nullable().optional(),
11
+ });
12
+ export type Request = z.infer<typeof RequestSchema>;
13
+
14
+ export const ResponseSchema = ICommandResponseSchema(MusicJobSchema);
15
+ export type Response = z.infer<typeof ResponseSchema>;
16
+ }
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { MusicJobSchema } from '../models/music-job.schema';
4
+ import { USER_REACTION } from '../../common';
5
+
6
+ export namespace SetReactionToMusicJobCommand {
7
+ export const RequestSchema = z.object({
8
+ userId: z.string().uuid().nullable().optional(),
9
+ unregisteredUserId: z.string().uuid().nullable().optional(),
10
+ uuid: z.string(),
11
+ reaction: z.nativeEnum(USER_REACTION).nullable(),
12
+ });
13
+ export type Request = z.infer<typeof RequestSchema>;
14
+
15
+ export const ResponseSchema = ICommandResponseSchema(MusicJobSchema);
16
+ export type Response = z.infer<typeof ResponseSchema>;
17
+ }
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { MusicJobSchema } from '../models/music-job.schema';
4
+
5
+ export namespace UpdateMusicJobTitleCommand {
6
+ export const RequestSchema = z.object({
7
+ uuid: z.string().uuid(),
8
+ userId: z.string().uuid().nullable().optional(),
9
+ unregisteredUserId: z.string().uuid().nullable().optional(),
10
+ title: z.string().min(1).max(40),
11
+ });
12
+ export type Request = z.infer<typeof RequestSchema>;
13
+
14
+ export const ResponseSchema = ICommandResponseSchema(MusicJobSchema);
15
+ export type Response = z.infer<typeof ResponseSchema>;
16
+ }
@@ -0,0 +1,6 @@
1
+ export * from './suno-model-type.enum';
2
+ export * from './music-strategy.enum';
3
+ export * from './music-vocal-gender.enum';
4
+ export * from './music-pricing-rule-type.enum';
5
+ export * from './suno-mode-type.enum';
6
+ export * from './music-action-type.enum';
@@ -0,0 +1,3 @@
1
+ export enum MUSIC_ACTION_TYPE {
2
+ LYRICS = 'LYRICS',
3
+ }
@@ -0,0 +1,3 @@
1
+ export enum MUSIC_PRICING_RULE_TYPE {
2
+ FLAT = 'flat',
3
+ }
@@ -0,0 +1,3 @@
1
+ export enum MUSIC_GENERATION_STRATEGY {
2
+ SUNO_POLLING = 'SUNO_POLLING',
3
+ }
@@ -0,0 +1,4 @@
1
+ export enum MUSIC_VOCAL_GENDER {
2
+ MALE = 'm',
3
+ FEMALE = 'f',
4
+ }