@purpleschool/gptbot-tools 0.0.77-ai-proxy → 0.0.78-ai-proxy

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 (215) hide show
  1. package/ai-vendor/index.ts +1 -0
  2. package/ai-vendor/models/ai-vendor.schema.ts +13 -0
  3. package/ai-vendor/models/index.ts +1 -0
  4. package/build/ai-vendor/index.js +17 -0
  5. package/build/ai-vendor/models/ai-vendor.schema.js +13 -0
  6. package/build/ai-vendor/models/index.js +17 -0
  7. package/build/common/errors/errors.js +163 -0
  8. package/build/common/models/attached-file.schema.js +13 -0
  9. package/build/common/models/index.js +1 -0
  10. package/build/image-editor/commands/image-editor-model/get-image-editor-model-by-uuid.command.js +13 -0
  11. package/build/image-editor/commands/image-editor-model/index.js +17 -0
  12. package/build/image-editor/commands/image-editor.command.js +3 -1
  13. package/build/image-editor/commands/index.js +1 -0
  14. package/build/image-editor/commands/retry-image-editor-job.command.js +4 -0
  15. package/build/image-editor/commands/set-reaction-to-image-editor-job.command.js +12 -2
  16. package/build/image-editor/enums/image-editor-model-type.enum.js +2 -0
  17. package/build/image-editor/enums/image-editor-strategy.enum.js +4 -0
  18. package/build/image-editor/models/image-editor-config.schema.js +1 -0
  19. package/build/image-editor/models/image-editor-job.schema.js +2 -0
  20. package/build/image-editor/models/image-editor-model.schema.js +9 -1
  21. package/build/image-editor/routes/image-editor-model.amqp.routes.js +6 -0
  22. package/build/image-editor/routes/image-editor.http.routes.js +1 -0
  23. package/build/image-editor/routes/index.js +1 -0
  24. package/build/image-generation/commands/execute-image-generation.command.js +20 -0
  25. package/build/image-generation/commands/forward-image-generation-job.command.js +32 -0
  26. package/build/image-generation/commands/index.js +23 -0
  27. package/build/image-generation/commands/save-image-generation-job.command.js +17 -0
  28. package/build/image-generation/commands/set-reaction-to-image-generation-job.command.js +27 -0
  29. package/build/image-generation/commands/soft-delete-image-generation-job-by-uuid.command.js +14 -0
  30. package/build/image-generation/commands/soft-delete-image-generation-jobs-by-criteria.command.js +13 -0
  31. package/build/image-generation/commands/update-image-generation-job-title.command.js +16 -0
  32. package/build/image-generation/enums/image-generation-model-strategy.enum.js +23 -0
  33. package/build/image-generation/enums/image-generation-models.enum.js +8 -0
  34. package/build/image-generation/enums/image-generation-resolution.enum.js +9 -0
  35. package/build/image-generation/enums/index.js +19 -0
  36. package/build/image-generation/index.js +21 -0
  37. package/build/image-generation/models/image-generation-config.schema.js +12 -0
  38. package/build/image-generation/models/image-generation-job.schema.js +35 -0
  39. package/build/image-generation/models/image-generation-model.schema.js +51 -0
  40. package/build/image-generation/models/image-generation-preset.schema.js +13 -0
  41. package/build/image-generation/models/index.js +20 -0
  42. package/build/image-generation/queries/find-image-generation-job-by-id.query.js +19 -0
  43. package/build/image-generation/queries/find-image-generation-jobs.query.js +28 -0
  44. package/build/image-generation/queries/get-image-generation-config.query.js +11 -0
  45. package/build/image-generation/queries/index.js +19 -0
  46. package/build/image-generation/routes/image-generation.amqp.routes.js +14 -0
  47. package/build/image-generation/routes/image-generation.http.routes.js +9 -0
  48. package/build/image-generation/routes/index.js +18 -0
  49. package/build/index.js +6 -0
  50. package/build/music/commands/index.js +1 -0
  51. package/build/music/commands/music-model/get-music-model-by-uuid.command.js +13 -0
  52. package/build/music/commands/music-model/index.js +17 -0
  53. package/build/music/commands/retry-music-job.command.js +2 -0
  54. package/build/music/commands/set-reaction-to-music-job.command.js +12 -2
  55. package/build/music/models/music-job.schema.js +1 -0
  56. package/build/music/models/music-track.schema.js +1 -0
  57. package/build/music/routes/index.js +1 -0
  58. package/build/music/routes/music-model.amqp.routes.js +6 -0
  59. package/build/paraphrase/commands/delete-all-paraphrase-jobs.command.js +13 -0
  60. package/build/paraphrase/commands/delete-paraphrase-job-by-uuid.command.js +14 -0
  61. package/build/paraphrase/commands/index.js +5 -0
  62. package/build/paraphrase/commands/retry-paraphrase-job.command.js +16 -0
  63. package/build/paraphrase/commands/set-reaction-to-paraphrase-job.command.js +27 -0
  64. package/build/paraphrase/commands/update-paraphrase-job-title.command.js +16 -0
  65. package/build/paraphrase/models/paraphrase-job.schema.js +7 -0
  66. package/build/paraphrase/queries/find-paraphrase-jobs.query.js +28 -0
  67. package/build/paraphrase/queries/index.js +1 -0
  68. package/build/paraphrase/routes/paraphrase.amqp.routes.js +6 -0
  69. package/build/presentation/commands/index.js +1 -0
  70. package/build/presentation/commands/set-reaction-to-presentation.command.js +26 -0
  71. package/build/presentation/constants/slide-layout-map.constant.js +1 -0
  72. package/build/presentation/enums/slide-content-type.enum.js +1 -0
  73. package/build/presentation/models/pptx-export-payload.js +19 -1
  74. package/build/presentation/models/presentation.schema.js +3 -0
  75. package/build/presentation/models/slide-content-edit.schema.js +18 -1
  76. package/build/presentation/models/slide-content.schema.js +30 -1
  77. package/build/presentation/routes/presentation.routes.js +1 -0
  78. package/build/stt/commands/set-reaction-to-stt-job.command.js +12 -2
  79. package/build/stt/models/stt-job.schema.js +2 -0
  80. package/build/tools/enums/tool-content-type.enum.js +1 -0
  81. package/build/tools/enums/tool-type.enum.js +1 -0
  82. package/build/tools/models/global-tools-config.schema.js +2 -0
  83. package/build/tools/models/tool.schema.js +3 -0
  84. package/build/tools/models/tools-with-configs.schema.js +5 -0
  85. package/build/tts/commands/set-reaction-to-tts-job.command.js +12 -2
  86. package/build/tts/models/tts-job.schema.js +2 -0
  87. package/build/video/commands/index.js +1 -0
  88. package/build/video/commands/retry-video-job.command.js +4 -0
  89. package/build/video/commands/set-reaction-to-video-job.command.js +12 -2
  90. package/build/video/commands/video-model/get-video-model-by-uuid.command.js +13 -0
  91. package/build/video/commands/video-model/index.js +17 -0
  92. package/build/video/enums/video-pricing-rule-type.enum.js +1 -0
  93. package/build/video/enums/video-strategy.enum.js +1 -0
  94. package/build/video/models/video-job.schema.js +3 -0
  95. package/build/video/models/video-model.schema.js +9 -1
  96. package/build/video/routes/index.js +1 -0
  97. package/build/video/routes/video-model.amqp.routes.js +6 -0
  98. package/build/video/routes/video.http.routes.js +1 -0
  99. package/build/video/utils/calculate-video-generation-price.util.js +5 -1
  100. package/build/video-editor/commands/edit-video.command.js +2 -1
  101. package/build/video-editor/commands/index.js +1 -0
  102. package/build/video-editor/commands/retry-video-editor-job.command.js +5 -0
  103. package/build/video-editor/commands/set-reaction-to-video-editor-job.command.js +12 -2
  104. package/build/video-editor/commands/video-editor-model/get-video-editor-model.command.js +13 -0
  105. package/build/video-editor/commands/video-editor-model/index.js +17 -0
  106. package/build/video-editor/models/video-editor-job.schema.js +3 -0
  107. package/build/video-editor/routes/index.js +1 -0
  108. package/build/video-editor/routes/video-editor-model.amqp.routes.js +6 -0
  109. package/build/writer/commands/set-reaction-writer-document.command.js +11 -1
  110. package/build/writer/models/writer-document.schema.js +1 -0
  111. package/common/errors/errors.ts +163 -0
  112. package/common/models/attached-file.schema.ts +11 -0
  113. package/common/models/index.ts +1 -0
  114. package/image-editor/commands/image-editor-model/get-image-editor-model-by-uuid.command.ts +13 -0
  115. package/image-editor/commands/image-editor-model/index.ts +1 -0
  116. package/image-editor/commands/image-editor.command.ts +3 -1
  117. package/image-editor/commands/index.ts +1 -0
  118. package/image-editor/commands/retry-image-editor-job.command.ts +5 -1
  119. package/image-editor/commands/set-reaction-to-image-editor-job.command.ts +19 -6
  120. package/image-editor/enums/image-editor-model-type.enum.ts +2 -0
  121. package/image-editor/enums/image-editor-strategy.enum.ts +4 -0
  122. package/image-editor/models/image-editor-config.schema.ts +1 -0
  123. package/image-editor/models/image-editor-job.schema.ts +3 -1
  124. package/image-editor/models/image-editor-model.schema.ts +16 -0
  125. package/image-editor/routes/image-editor-model.amqp.routes.ts +3 -0
  126. package/image-editor/routes/image-editor.http.routes.ts +1 -0
  127. package/image-editor/routes/index.ts +1 -0
  128. package/image-generation/commands/execute-image-generation.command.ts +20 -0
  129. package/image-generation/commands/forward-image-generation-job.command.ts +32 -0
  130. package/image-generation/commands/index.ts +7 -0
  131. package/image-generation/commands/save-image-generation-job.command.ts +17 -0
  132. package/image-generation/commands/set-reaction-to-image-generation-job.command.ts +30 -0
  133. package/image-generation/commands/soft-delete-image-generation-job-by-uuid.command.ts +14 -0
  134. package/image-generation/commands/soft-delete-image-generation-jobs-by-criteria.command.ts +13 -0
  135. package/image-generation/commands/update-image-generation-job-title.command.ts +16 -0
  136. package/image-generation/enums/image-generation-model-strategy.enum.ts +24 -0
  137. package/image-generation/enums/image-generation-models.enum.ts +4 -0
  138. package/image-generation/enums/image-generation-resolution.enum.ts +5 -0
  139. package/image-generation/enums/index.ts +3 -0
  140. package/image-generation/index.ts +5 -0
  141. package/image-generation/models/image-generation-config.schema.ts +11 -0
  142. package/image-generation/models/image-generation-job.schema.ts +37 -0
  143. package/image-generation/models/image-generation-model.schema.ts +64 -0
  144. package/image-generation/models/image-generation-preset.schema.ts +13 -0
  145. package/image-generation/models/index.ts +4 -0
  146. package/image-generation/queries/find-image-generation-job-by-id.query.ts +19 -0
  147. package/image-generation/queries/find-image-generation-jobs.query.ts +33 -0
  148. package/image-generation/queries/get-image-generation-config.query.ts +11 -0
  149. package/image-generation/queries/index.ts +3 -0
  150. package/image-generation/routes/image-generation.amqp.routes.ts +11 -0
  151. package/image-generation/routes/image-generation.http.routes.ts +7 -0
  152. package/image-generation/routes/index.ts +2 -0
  153. package/index.ts +6 -0
  154. package/music/commands/index.ts +1 -0
  155. package/music/commands/music-model/get-music-model-by-uuid.command.ts +13 -0
  156. package/music/commands/music-model/index.ts +1 -0
  157. package/music/commands/retry-music-job.command.ts +3 -1
  158. package/music/commands/set-reaction-to-music-job.command.ts +19 -6
  159. package/music/models/music-job.schema.ts +1 -0
  160. package/music/models/music-track.schema.ts +1 -0
  161. package/music/routes/index.ts +1 -0
  162. package/music/routes/music-model.amqp.routes.ts +3 -0
  163. package/package.json +1 -1
  164. package/paraphrase/commands/delete-all-paraphrase-jobs.command.ts +13 -0
  165. package/paraphrase/commands/delete-paraphrase-job-by-uuid.command.ts +14 -0
  166. package/paraphrase/commands/index.ts +5 -0
  167. package/paraphrase/commands/retry-paraphrase-job.command.ts +16 -0
  168. package/paraphrase/commands/set-reaction-to-paraphrase-job.command.ts +30 -0
  169. package/paraphrase/commands/update-paraphrase-job-title.command.ts +16 -0
  170. package/paraphrase/models/paraphrase-job.schema.ts +7 -0
  171. package/paraphrase/queries/find-paraphrase-jobs.query.ts +33 -0
  172. package/paraphrase/queries/index.ts +1 -0
  173. package/paraphrase/routes/paraphrase.amqp.routes.ts +6 -0
  174. package/presentation/commands/index.ts +1 -0
  175. package/presentation/commands/set-reaction-to-presentation.command.ts +29 -0
  176. package/presentation/constants/slide-layout-map.constant.ts +1 -0
  177. package/presentation/enums/slide-content-type.enum.ts +1 -0
  178. package/presentation/models/pptx-export-payload.ts +20 -0
  179. package/presentation/models/presentation.schema.ts +3 -0
  180. package/presentation/models/slide-content-edit.schema.ts +21 -0
  181. package/presentation/models/slide-content.schema.ts +51 -0
  182. package/presentation/routes/presentation.routes.ts +1 -0
  183. package/stt/commands/set-reaction-to-stt-job.command.ts +19 -6
  184. package/stt/models/stt-job.schema.ts +2 -0
  185. package/tools/enums/tool-content-type.enum.ts +1 -0
  186. package/tools/enums/tool-type.enum.ts +1 -0
  187. package/tools/models/global-tools-config.schema.ts +2 -0
  188. package/tools/models/tool.schema.ts +3 -0
  189. package/tools/models/tools-with-configs.schema.ts +7 -0
  190. package/tts/commands/set-reaction-to-tts-job.command.ts +19 -6
  191. package/tts/models/tts-job.schema.ts +2 -0
  192. package/video/commands/index.ts +1 -0
  193. package/video/commands/retry-video-job.command.ts +4 -0
  194. package/video/commands/set-reaction-to-video-job.command.ts +19 -6
  195. package/video/commands/video-model/get-video-model-by-uuid.command.ts +13 -0
  196. package/video/commands/video-model/index.ts +1 -0
  197. package/video/enums/video-pricing-rule-type.enum.ts +1 -0
  198. package/video/enums/video-strategy.enum.ts +1 -0
  199. package/video/models/video-job.schema.ts +3 -0
  200. package/video/models/video-model.schema.ts +9 -1
  201. package/video/routes/index.ts +1 -0
  202. package/video/routes/video-model.amqp.routes.ts +3 -0
  203. package/video/routes/video.http.routes.ts +1 -0
  204. package/video/utils/calculate-video-generation-price.util.ts +7 -1
  205. package/video-editor/commands/edit-video.command.ts +2 -1
  206. package/video-editor/commands/index.ts +1 -0
  207. package/video-editor/commands/retry-video-editor-job.command.ts +5 -0
  208. package/video-editor/commands/set-reaction-to-video-editor-job.command.ts +19 -6
  209. package/video-editor/commands/video-editor-model/get-video-editor-model.command.ts +13 -0
  210. package/video-editor/commands/video-editor-model/index.ts +1 -0
  211. package/video-editor/models/video-editor-job.schema.ts +3 -0
  212. package/video-editor/routes/index.ts +1 -0
  213. package/video-editor/routes/video-editor-model.amqp.routes.ts +3 -0
  214. package/writer/commands/set-reaction-writer-document.command.ts +19 -6
  215. package/writer/models/writer-document.schema.ts +1 -0
@@ -11,6 +11,11 @@ var RetryVideoEditorJobCommand;
11
11
  userBalance: zod_1.z.number(),
12
12
  userId: zod_1.z.string().uuid().nullable().optional(),
13
13
  unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
14
+ prompt: zod_1.z.string().optional(),
15
+ inputVideoId: zod_1.z.string().uuid().optional(),
16
+ inputVideoUrl: zod_1.z.string().optional(),
17
+ duration: zod_1.z.number().optional(),
18
+ modelId: zod_1.z.string().uuid().optional(),
14
19
  });
15
20
  RetryVideoEditorJobCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(video_editor_job_schema_1.VideoEditorJobSchema);
16
21
  })(RetryVideoEditorJobCommand || (exports.RetryVideoEditorJobCommand = RetryVideoEditorJobCommand = {}));
@@ -7,11 +7,21 @@ const video_editor_job_schema_1 = require("../models/video-editor-job.schema");
7
7
  const common_1 = require("../../common");
8
8
  var SetReactionToVideoEditorJobCommand;
9
9
  (function (SetReactionToVideoEditorJobCommand) {
10
- SetReactionToVideoEditorJobCommand.RequestSchema = zod_1.z.object({
10
+ SetReactionToVideoEditorJobCommand.RequestSchema = zod_1.z
11
+ .object({
11
12
  userId: zod_1.z.string().uuid().nullable().optional(),
12
13
  unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
13
- uuid: zod_1.z.string(),
14
+ uuid: zod_1.z.string().uuid(),
14
15
  reaction: zod_1.z.nativeEnum(common_1.USER_REACTION).nullable(),
16
+ dislikeReason: zod_1.z.string().nullable().default(null),
17
+ })
18
+ .refine((data) => {
19
+ if (data.reaction !== common_1.USER_REACTION.DISLIKED && data.dislikeReason) {
20
+ return false;
21
+ }
22
+ return true;
23
+ }, {
24
+ message: 'Dislike reason is not allowed when reaction is not disliked',
15
25
  });
16
26
  SetReactionToVideoEditorJobCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(video_editor_job_schema_1.VideoEditorJobSchema);
17
27
  })(SetReactionToVideoEditorJobCommand || (exports.SetReactionToVideoEditorJobCommand = SetReactionToVideoEditorJobCommand = {}));
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetVideoEditorModelByUuidCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const common_1 = require("../../../common");
6
+ const models_1 = require("../../models");
7
+ var GetVideoEditorModelByUuidCommand;
8
+ (function (GetVideoEditorModelByUuidCommand) {
9
+ GetVideoEditorModelByUuidCommand.RequestSchema = zod_1.z.object({
10
+ uuid: zod_1.z.string().uuid(),
11
+ });
12
+ GetVideoEditorModelByUuidCommand.ResponseSchema = (0, common_1.ICommandResponseSchema)(models_1.VideoEditorModelSchema);
13
+ })(GetVideoEditorModelByUuidCommand || (exports.GetVideoEditorModelByUuidCommand = GetVideoEditorModelByUuidCommand = {}));
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./get-video-editor-model.command"), exports);
@@ -12,10 +12,13 @@ exports.VideoEditorJobSchema = zod_1.z.object({
12
12
  error: zod_1.z.string().nullable(),
13
13
  price: zod_1.z.number(),
14
14
  reaction: zod_1.z.nativeEnum(common_1.USER_REACTION).nullable(),
15
+ dislikeReason: zod_1.z.string().nullable(),
15
16
  externalId: zod_1.z.string().nullable(),
16
17
  modelId: zod_1.z.string(),
17
18
  inputVideoUrl: zod_1.z.string(),
19
+ inputVideoId: zod_1.z.string().nullable(),
18
20
  outputVideoUrl: zod_1.z.string().nullable(),
21
+ outputVideoId: zod_1.z.string().nullable(),
19
22
  duration: zod_1.z.number(),
20
23
  attempts: zod_1.z.array(zod_1.z.any()),
21
24
  userId: zod_1.z.string().nullable().optional(),
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./video-editor.amqp.routes"), exports);
18
18
  __exportStar(require("./video-editor.http.routes"), exports);
19
+ __exportStar(require("./video-editor-model.amqp.routes"), exports);
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VIDEO_EDITOR_MODEL_AMQP_ROUTES = void 0;
4
+ exports.VIDEO_EDITOR_MODEL_AMQP_ROUTES = {
5
+ GET_MODEL_BY_UUID: 'tools.video-editor.model.get-by-uuid.rpc',
6
+ };
@@ -6,11 +6,21 @@ const common_1 = require("../../common");
6
6
  const models_1 = require("../models");
7
7
  var SetReactionToWriterDocumentCommand;
8
8
  (function (SetReactionToWriterDocumentCommand) {
9
- SetReactionToWriterDocumentCommand.RequestSchema = zod_1.z.object({
9
+ SetReactionToWriterDocumentCommand.RequestSchema = zod_1.z
10
+ .object({
10
11
  userId: zod_1.z.string().uuid().nullable().optional(),
11
12
  unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
12
13
  documentId: zod_1.z.string().uuid(),
13
14
  reaction: zod_1.z.nativeEnum(common_1.USER_REACTION),
15
+ dislikeReason: zod_1.z.string().nullable().default(null),
16
+ })
17
+ .refine((data) => {
18
+ if (data.reaction !== common_1.USER_REACTION.DISLIKED && data.dislikeReason) {
19
+ return false;
20
+ }
21
+ return true;
22
+ }, {
23
+ message: 'Dislike reason is not allowed when reaction is not disliked',
14
24
  });
15
25
  SetReactionToWriterDocumentCommand.ResponseSchema = (0, common_1.ICommandResponseSchema)(models_1.WriterDocumentSchema);
16
26
  })(SetReactionToWriterDocumentCommand || (exports.SetReactionToWriterDocumentCommand = SetReactionToWriterDocumentCommand = {}));
@@ -18,6 +18,7 @@ exports.WriterDocumentSchema = zod_1.z.object({
18
18
  unregisteredUserId: zod_1.z.string().nullable(),
19
19
  modelId: zod_1.z.string().nullable(),
20
20
  reaction: zod_1.z.nativeEnum(common_1.USER_REACTION).nullable(),
21
+ dislikeReason: zod_1.z.string().nullable(),
21
22
  pages: zod_1.z.number(),
22
23
  isDeleted: zod_1.z.boolean(),
23
24
  createdAt: zod_1.z.date(),
@@ -101,6 +101,21 @@ export const ERRORS = {
101
101
  message: 'Задание на перефразирование не найдено',
102
102
  httpCode: 404,
103
103
  },
104
+ DELETE_ERROR: {
105
+ code: 'PARAPHRASE_JOB.DELETE_ERROR',
106
+ message: 'Произошла ошибка при удалении задания на перефразирование',
107
+ httpCode: 500,
108
+ },
109
+ NOT_AN_OWNER: {
110
+ code: 'PARAPHRASE_JOB.NOT_AN_OWNER',
111
+ message: 'Пользователь не является владельцем задания на перефразирование',
112
+ httpCode: 403,
113
+ },
114
+ NOT_IN_FAILED_STATE_TO_RETRY: {
115
+ code: 'PARAPHRASE_JOB.NOT_IN_FAILED_STATE_TO_RETRY',
116
+ message: 'Задание на перефразирование не в состоянии "failed". Невозможно повторить',
117
+ httpCode: 400,
118
+ },
104
119
  },
105
120
  S3: {
106
121
  GET_FILE_STREAM_ERROR: {
@@ -577,6 +592,11 @@ export const ERRORS = {
577
592
  message: 'Некорректное соотношение сторон',
578
593
  httpCode: 400,
579
594
  },
595
+ INVALID_RESOLUTION: {
596
+ code: 'VIDEO.INVALID_RESOLUTION',
597
+ message: 'Некорректное разрешение видео',
598
+ httpCode: 400,
599
+ },
580
600
  RUNWAY_CONTENT_POLICY: {
581
601
  code: 'VIDEO.RUNWAY_CONTENT_POLICY',
582
602
  message:
@@ -654,6 +674,11 @@ export const ERRORS = {
654
674
  message: 'Произошла ошибка при удалении задания на генерацию видео',
655
675
  httpCode: 500,
656
676
  },
677
+ UPDATE_ERROR: {
678
+ code: 'VIDEO_JOB.UPDATE_ERROR',
679
+ message: 'Произошла ошибка при обновлении задания на генерацию видео',
680
+ httpCode: 500,
681
+ },
657
682
  },
658
683
  WRITER_DOCUMENT: {
659
684
  SET_REACTION_TO_WRITER_DOCUMENT_ERROR: {
@@ -930,6 +955,11 @@ export const ERRORS = {
930
955
  message: 'Произошла ошибка при удалении задания на редактирование картинки',
931
956
  httpCode: 500,
932
957
  },
958
+ UPDATE_ERROR: {
959
+ code: 'IMAGE_EDITOR_JOB.UPDATE_ERROR',
960
+ message: 'Произошла ошибка при обновлении задания на редактирование картинки',
961
+ httpCode: 500,
962
+ },
933
963
  },
934
964
  VIDEO_EDITOR: {
935
965
  AI_ERROR: {
@@ -1029,6 +1059,11 @@ export const ERRORS = {
1029
1059
  message: 'Произошла ошибка при удалении задания на редактирование видео',
1030
1060
  httpCode: 500,
1031
1061
  },
1062
+ UPDATE_ERROR: {
1063
+ code: 'VIDEO_EDITOR_JOB.UPDATE_ERROR',
1064
+ message: 'Произошла ошибка при обновлении задания на редактирование видео',
1065
+ httpCode: 500,
1066
+ },
1032
1067
  },
1033
1068
  MUSIC_EDITOR: {
1034
1069
  AI_ERROR: {
@@ -1197,6 +1232,126 @@ export const ERRORS = {
1197
1232
  httpCode: 500,
1198
1233
  },
1199
1234
  },
1235
+ IMAGE_GENERATION: {
1236
+ AI_ERROR: {
1237
+ code: 'IMAGE_GENERATION.AI_ERROR',
1238
+ message: 'Произошла ошибка во время запроса к ИИ',
1239
+ httpCode: 500,
1240
+ },
1241
+ INSUFFICIENT_BALANCE: {
1242
+ code: 'IMAGE_GENERATION.INSUFFICIENT_BALANCE',
1243
+ message: 'У пользователя недостаточно средств',
1244
+ httpCode: 400,
1245
+ },
1246
+ INVALID_PARAMS: {
1247
+ code: 'IMAGE_GENERATION.INVALID_PARAMS',
1248
+ message: 'Некорректные параметры изображения',
1249
+ httpCode: 400,
1250
+ },
1251
+ DELETE_ERROR: {
1252
+ code: 'IMAGE_GENERATION.DELETE_ERROR',
1253
+ message: 'Произошла ошибка при удалении генерации изображения',
1254
+ httpCode: 500,
1255
+ },
1256
+ MAX_PROMPT_LENGTH_EXCEEDED: {
1257
+ code: 'IMAGE_GENERATION.MAX_PROMPT_LENGTH_EXCEEDED',
1258
+ message: 'Превышена максимальная длина запроса',
1259
+ httpCode: 400,
1260
+ },
1261
+ POLL_TIMEOUT: {
1262
+ code: 'IMAGE_GENERATION.POLL_TIMEOUT',
1263
+ message: 'Превышено время ожидания генерации изображения',
1264
+ httpCode: 500,
1265
+ },
1266
+ IMAGE_ATTACHMENT_NOT_SUPPORTED: {
1267
+ code: 'IMAGE_GENERATION.IMAGE_ATTACHMENT_NOT_SUPPORTED',
1268
+ message: 'Выбранная модель не поддерживает вложение изображений',
1269
+ httpCode: 400,
1270
+ },
1271
+ TOO_MANY_ATTACHED_IMAGES: {
1272
+ code: 'IMAGE_GENERATION.TOO_MANY_ATTACHED_IMAGES',
1273
+ message: 'Слишком много вложенных изображений',
1274
+ httpCode: 400,
1275
+ },
1276
+ },
1277
+ IMAGE_GENERATION_MODEL: {
1278
+ SAVE_ERROR: {
1279
+ code: 'IMAGE_GENERATION_MODEL.SAVE_ERROR',
1280
+ message: 'Произошла ошибка при сохранении модели для генерации изображений',
1281
+ httpCode: 500,
1282
+ },
1283
+ FIND_ERROR: {
1284
+ code: 'IMAGE_GENERATION_MODEL.FIND_ERROR',
1285
+ message: 'Произошла ошибка при поиске модели для генерации изображений',
1286
+ httpCode: 500,
1287
+ },
1288
+ NOT_FOUND: {
1289
+ code: 'IMAGE_GENERATION_MODEL.NOT_FOUND',
1290
+ message: 'Модель для генерации изображений не найдена',
1291
+ httpCode: 404,
1292
+ },
1293
+ MODEL_INACTIVE: {
1294
+ code: 'IMAGE_GENERATION_MODEL.MODEL_INACTIVE',
1295
+ message: 'Модель для генерации изображений неактивна',
1296
+ httpCode: 400,
1297
+ },
1298
+ },
1299
+ IMAGE_GENERATION_JOB: {
1300
+ SAVE_ERROR: {
1301
+ code: 'IMAGE_GENERATION_JOB.SAVE_ERROR',
1302
+ message: 'Произошла ошибка при сохранении задания на генерацию изображения',
1303
+ httpCode: 500,
1304
+ },
1305
+ FIND_ERROR: {
1306
+ code: 'IMAGE_GENERATION_JOB.FIND_ERROR',
1307
+ message: 'Произошла ошибка при поиске задания на генерацию изображения',
1308
+ httpCode: 500,
1309
+ },
1310
+ NOT_FOUND: {
1311
+ code: 'IMAGE_GENERATION_JOB.NOT_FOUND',
1312
+ message: 'Задание на генерацию изображения не найдено',
1313
+ httpCode: 404,
1314
+ },
1315
+ NOT_AN_OWNER: {
1316
+ code: 'IMAGE_GENERATION_JOB.NOT_AN_OWNER',
1317
+ message: 'Пользователь не является владельцем задания на генерацию изображения',
1318
+ httpCode: 403,
1319
+ },
1320
+ DELETE_ERROR: {
1321
+ code: 'IMAGE_GENERATION_JOB.DELETE_ERROR',
1322
+ message: 'Произошла ошибка при удалении задания на генерацию изображения',
1323
+ httpCode: 500,
1324
+ },
1325
+ UPDATE_ERROR: {
1326
+ code: 'IMAGE_GENERATION_JOB.UPDATE_ERROR',
1327
+ message: 'Произошла ошибка при обновлении задания на генерацию изображения',
1328
+ httpCode: 500,
1329
+ },
1330
+ },
1331
+ IMAGE_GENERATION_PRESET: {
1332
+ FIND_ERROR: {
1333
+ code: 'IMAGE_GENERATION_PRESET.FIND_ERROR',
1334
+ message: 'Произошла ошибка при поиске пресета генерации изображения',
1335
+ httpCode: 500,
1336
+ },
1337
+ NOT_FOUND: {
1338
+ code: 'IMAGE_GENERATION_PRESET.NOT_FOUND',
1339
+ message: 'Пресет генерации изображения не найден',
1340
+ httpCode: 404,
1341
+ },
1342
+ },
1343
+ AI_VENDOR: {
1344
+ FIND_ERROR: {
1345
+ code: 'AI_VENDOR.FIND_ERROR',
1346
+ message: 'Произошла ошибка при поиске поставщика ИИ',
1347
+ httpCode: 500,
1348
+ },
1349
+ NOT_FOUND: {
1350
+ code: 'AI_VENDOR.NOT_FOUND',
1351
+ message: 'Поставщик ИИ не найден',
1352
+ httpCode: 404,
1353
+ },
1354
+ },
1200
1355
  CONTENT_POLICY: {
1201
1356
  PHOTOREALISTIC_PEOPLE: {
1202
1357
  code: 'CONTENT_POLICY.PHOTOREALISTIC_PEOPLE',
@@ -1259,4 +1414,12 @@ export const ERRORS = {
1259
1414
  httpCode: 400,
1260
1415
  },
1261
1416
  },
1417
+ // KIE
1418
+ KIE: {
1419
+ AI_ERROR: {
1420
+ code: 'KIE.GET_TASK_BY_ID_RESPONSE_ERROR',
1421
+ message: 'Произошла ошибка при получении ответа от KIE',
1422
+ httpCode: 500,
1423
+ },
1424
+ },
1262
1425
  } as const;
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+
3
+ export const AttachedFileSchema = z.object({
4
+ uuid: z.string(),
5
+ url: z.string(),
6
+ name: z.string(),
7
+ mimeType: z.string(),
8
+ type: z.string(),
9
+ size: z.number(),
10
+ duration: z.number().optional().nullable(),
11
+ });
@@ -1,2 +1,3 @@
1
1
  export * from './command-response.schema';
2
2
  export * from './icon-variants.schema';
3
+ export * from './attached-file.schema';
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ import { ImageEditorModelSchema } from '../../models';
3
+ import { ICommandResponseSchema } from '../../../common';
4
+
5
+ export namespace GetImageEditorModelByUuidCommand {
6
+ export const RequestSchema = z.object({
7
+ uuid: z.string().uuid(),
8
+ });
9
+ export type Request = z.infer<typeof RequestSchema>;
10
+
11
+ export const ResponseSchema = ICommandResponseSchema(ImageEditorModelSchema);
12
+ export type Response = z.infer<typeof ResponseSchema>;
13
+ }
@@ -0,0 +1 @@
1
+ export * from './get-image-editor-model-by-uuid.command';
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
3
  import { ImageEditorJobSchema } from '../models';
4
+ import { AttachedFileSchema } from '../../common';
4
5
 
5
6
  export namespace ImageEditorCommand {
6
7
  export const RequestSchema = z.object({
@@ -10,9 +11,10 @@ export namespace ImageEditorCommand {
10
11
  userBalance: z.number(),
11
12
  modelId: z.string(),
12
13
  params: z.object({
13
- imageUrls: z.array(z.string()),
14
+ attachedFiles: z.array(AttachedFileSchema),
14
15
  systemPromptId: z.string().optional(),
15
16
  }),
17
+ userHasActiveSubscriptionOrProduct: z.boolean(),
16
18
  });
17
19
  export type Request = z.infer<typeof RequestSchema>;
18
20
 
@@ -4,3 +4,4 @@ export * from './retry-image-editor-job.command';
4
4
  export * from './set-reaction-to-image-editor-job.command';
5
5
  export * from './image-editor.command';
6
6
  export * from './update-image-editor-job-title.command';
7
+ export * from './image-editor-model';
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
- import { ImageEditorJobSchema } from '../models';
3
+ import { ImageEditorJobParamsSchema, ImageEditorJobSchema } from '../models';
4
4
 
5
5
  export namespace RetryImageEditorJobCommand {
6
6
  export const RequestSchema = z.object({
@@ -8,6 +8,10 @@ export namespace RetryImageEditorJobCommand {
8
8
  userBalance: z.number(),
9
9
  userId: z.string().uuid().nullable().optional(),
10
10
  unregisteredUserId: z.string().uuid().nullable().optional(),
11
+ userHasActiveSubscriptionOrProduct: z.boolean(),
12
+ modelId: z.string().optional(),
13
+ prompt: z.string().optional(),
14
+ params: ImageEditorJobParamsSchema.optional(),
11
15
  });
12
16
  export type Request = z.infer<typeof RequestSchema>;
13
17
 
@@ -4,12 +4,25 @@ import { ImageEditorJobSchema } from '../models';
4
4
  import { USER_REACTION } from '../../common';
5
5
 
6
6
  export namespace SetReactionToImageEditorJobCommand {
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
- });
7
+ export const RequestSchema = z
8
+ .object({
9
+ userId: z.string().uuid().nullable().optional(),
10
+ unregisteredUserId: z.string().uuid().nullable().optional(),
11
+ uuid: z.string().uuid(),
12
+ reaction: z.nativeEnum(USER_REACTION).nullable(),
13
+ dislikeReason: z.string().nullable().default(null),
14
+ })
15
+ .refine(
16
+ (data) => {
17
+ if (data.reaction !== USER_REACTION.DISLIKED && data.dislikeReason) {
18
+ return false;
19
+ }
20
+ return true;
21
+ },
22
+ {
23
+ message: 'Dislike reason is not allowed when reaction is not disliked',
24
+ },
25
+ );
13
26
  export type Request = z.infer<typeof RequestSchema>;
14
27
 
15
28
  export const ResponseSchema = ICommandResponseSchema(ImageEditorJobSchema);
@@ -1,3 +1,5 @@
1
1
  export enum IMAGE_EDITOR_MODEL_TYPE {
2
2
  NANO_BANANA_EDIT = 'NANO_BANANA_EDIT',
3
+ RECRAFT_REMOVE_BACKGROUND = 'RECRAFT_REMOVE_BACKGROUND',
4
+ NANO_BANANA_PRO_EDIT = 'NANO_BANANA_PRO_EDIT',
3
5
  }
@@ -1,4 +1,8 @@
1
1
  export enum IMAGE_EDITING_STRATEGY {
2
2
  NANO_BANANA_POLLING = 'NANO_BANANA_POLLING',
3
3
  NANO_BANANA_CALLBACK = 'NANO_BANANA_CALLBACK',
4
+ RECRAFT_REMOVE_BACKGROUND_CALLBACK = 'RECRAFT_REMOVE_BACKGROUND_CALLBACK',
5
+ RECRAFT_REMOVE_BACKGROUND_POLLING = 'RECRAFT_REMOVE_BACKGROUND_POLLING',
6
+ NANO_BANANA_PRO_CALLBACK = 'NANO_BANANA_PRO_CALLBACK',
7
+ NANO_BANANA_PRO_POLLING = 'NANO_BANANA_PRO_POLLING',
4
8
  }
@@ -26,6 +26,7 @@ export const SystemPromptSchema = z.object({
26
26
  })
27
27
  .nullable(),
28
28
  order: z.number(),
29
+ placeholder: z.string().nullable(),
29
30
  });
30
31
 
31
32
  export const ImageEditorActionGroup = z.object({
@@ -1,8 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  import { JOB_STATUS } from '../../tools';
3
- import { USER_REACTION } from '../../common';
3
+ import { AttachedFileSchema, USER_REACTION } from '../../common';
4
4
 
5
5
  export const ImageEditorJobParamsSchema = z.object({
6
+ attachedFiles: z.array(AttachedFileSchema).optional(),
6
7
  imageUrls: z.array(z.string()).optional(),
7
8
  systemPromptId: z.string().optional(),
8
9
  });
@@ -13,6 +14,7 @@ export const ImageEditorJobSchema = z.object({
13
14
  uuid: z.string(),
14
15
  prompt: z.string(),
15
16
  reaction: z.nativeEnum(USER_REACTION).nullable(),
17
+ dislikeReason: z.string().nullable(),
16
18
  externalId: z.string().nullable(),
17
19
  title: z.string(),
18
20
  status: z.nativeEnum(JOB_STATUS),
@@ -12,6 +12,21 @@ export const ImageEditorModelParamsSchema = z.object({
12
12
 
13
13
  export type ImageEditorModelParams = z.infer<typeof ImageEditorModelParamsSchema>;
14
14
 
15
+ export const ImageEditorModelPricingRuleConditionSchema = z.object({
16
+ withoutSub: z.boolean().optional(),
17
+ });
18
+ export type ImageEditorModelPricingRuleCondition = z.infer<
19
+ typeof ImageEditorModelPricingRuleConditionSchema
20
+ >;
21
+
22
+ export const ImageEditorModelPricingRulesSchema = z.array(
23
+ z.object({
24
+ condition: ImageEditorModelPricingRuleConditionSchema,
25
+ value: z.number(),
26
+ }),
27
+ );
28
+ export type ImageEditorModelPricingRules = z.infer<typeof ImageEditorModelPricingRulesSchema>;
29
+
15
30
  export const ImageEditorModelSchema = z.object({
16
31
  uuid: z.string(),
17
32
  title: z.string(),
@@ -24,6 +39,7 @@ export const ImageEditorModelSchema = z.object({
24
39
  strategy: z.nativeEnum(IMAGE_EDITING_STRATEGY),
25
40
  maxInputLength: z.number(),
26
41
  params: ImageEditorModelParamsSchema,
42
+ pricingRules: ImageEditorModelPricingRulesSchema,
27
43
  createdAt: z.date(),
28
44
  updatedAt: z.date(),
29
45
  });
@@ -0,0 +1,3 @@
1
+ export const IMAGE_EDITOR_MODEL_AMQP_ROUTES = {
2
+ GET_MODEL_BY_UUID: 'tools.image-editor.model.get-by-uuid.rpc',
3
+ } as const;
@@ -2,4 +2,5 @@ export const IMAGE_EDITOR_CONTROLLER = 'image-editor';
2
2
 
3
3
  export const IMAGE_EDITOR_ROUTES = {
4
4
  KIE_NANO_BANANA_CALLBACK: '/kie/nano-banana/callback',
5
+ KIE_RECRAFT_REMOVE_BACKGROUND: '/kie/recraft-remove-background/callback',
5
6
  };
@@ -1,2 +1,3 @@
1
1
  export * from './image-editor.amqp.routes';
2
2
  export * from './image-editor.http.routes';
3
+ export * from './image-editor-model.amqp.routes';
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { ImageGenerationJobSchema, ImageGenerationRequestParamsSchema } from '../models';
4
+
5
+ export namespace ExecuteImageGenerationCommand {
6
+ export const RequestSchema = z.object({
7
+ userId: z.string().uuid().nullable().optional(),
8
+ unregisteredUserId: z.string().uuid().nullable().optional(),
9
+ prompt: z.string(),
10
+ userBalance: z.number(),
11
+ modelId: z.string().uuid(),
12
+ params: ImageGenerationRequestParamsSchema,
13
+ presetId: z.string().uuid().nullable().optional(),
14
+ userHasActiveSubscriptionOrProduct: z.boolean(),
15
+ });
16
+ export type Request = z.infer<typeof RequestSchema>;
17
+
18
+ export const ResponseSchema = ICommandResponseSchema(ImageGenerationJobSchema);
19
+ export type Response = z.infer<typeof ResponseSchema>;
20
+ }
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { ImageGenerationJobSchema, ImageGenerationJobParamsSchema } from '../models';
4
+ import { JOB_STATUS } from '../../tools/enums/job-status.enum';
5
+ import { USER_REACTION } from '../../common/enums/user-reaction.enum';
6
+
7
+ export namespace ForwardImageGenerationJobCommand {
8
+ export const RequestSchema = z.object({
9
+ uuid: z.string().uuid(),
10
+ prompt: z.string(),
11
+ title: z.string(),
12
+ status: z.nativeEnum(JOB_STATUS),
13
+ error: z.string().nullable(),
14
+ price: z.number(),
15
+ reaction: z.nativeEnum(USER_REACTION).nullable(),
16
+ externalId: z.string().nullable(),
17
+ output: z.array(z.string()),
18
+ params: ImageGenerationJobParamsSchema,
19
+ modelId: z.string().uuid(),
20
+ presetId: z.string().uuid().nullable().optional(),
21
+ userId: z.string().uuid().nullable().optional(),
22
+ unregisteredUserId: z.string().uuid().nullable().optional(),
23
+ isDeleted: z.boolean(),
24
+ internalError: z.string().nullable(),
25
+ createdAt: z.coerce.date(),
26
+ updatedAt: z.coerce.date(),
27
+ });
28
+ export type Request = z.infer<typeof RequestSchema>;
29
+
30
+ export const ResponseSchema = ICommandResponseSchema(ImageGenerationJobSchema);
31
+ export type Response = z.infer<typeof ResponseSchema>;
32
+ }
@@ -0,0 +1,7 @@
1
+ export * from './execute-image-generation.command';
2
+ export * from './forward-image-generation-job.command';
3
+ export * from './save-image-generation-job.command';
4
+ export * from './soft-delete-image-generation-job-by-uuid.command';
5
+ export * from './soft-delete-image-generation-jobs-by-criteria.command';
6
+ export * from './set-reaction-to-image-generation-job.command';
7
+ export * from './update-image-generation-job-title.command';
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { ImageGenerationJobSchema } from '../models';
4
+
5
+ export namespace SaveImageGenerationJobCommand {
6
+ export const RequestSchema = z.object({
7
+ userId: z.string().uuid().nullable().optional(),
8
+ unregisteredUserId: z.string().uuid().nullable().optional(),
9
+ prompt: z.string(),
10
+ modelId: z.string().uuid(),
11
+ userBalance: z.number(),
12
+ });
13
+ export type Request = z.infer<typeof RequestSchema>;
14
+
15
+ export const ResponseSchema = ICommandResponseSchema(ImageGenerationJobSchema);
16
+ export type Response = z.infer<typeof ResponseSchema>;
17
+ }