@purpleschool/gptbot-tools 0.0.22 → 0.0.25

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 (65) hide show
  1. package/build/common/errors/errors.js +86 -0
  2. package/build/index.js +3 -0
  3. package/build/video/commands/delete-all-video-jobs.command.js +13 -0
  4. package/build/video/commands/delete-video-job-by-uuid.command.js +14 -0
  5. package/build/video/commands/index.js +22 -0
  6. package/build/video/commands/retry-video-job.command.js +16 -0
  7. package/build/video/commands/set-reaction-to-video-job.command.js +17 -0
  8. package/build/video/commands/update-video-job-title.command.js +16 -0
  9. package/build/video/commands/video.command.js +23 -0
  10. package/build/video/const/index.js +17 -0
  11. package/build/video/const/videoMaxDuration.js +4 -0
  12. package/build/video/enums/index.js +24 -0
  13. package/build/video/enums/veo-aspect-ratio.enum.js +8 -0
  14. package/build/video/enums/veo-audio-support.enum.js +8 -0
  15. package/build/video/enums/veo-input-modality.enum.js +8 -0
  16. package/build/video/enums/veo-job-params-type.enum.js +8 -0
  17. package/build/video/enums/veo-person-allow.enum.js +9 -0
  18. package/build/video/enums/video-model-type.enum.js +8 -0
  19. package/build/video/enums/video-resolution.enum.js +8 -0
  20. package/build/video/enums/video-strategy.enum.js +10 -0
  21. package/build/video/index.js +21 -0
  22. package/build/video/models/index.js +19 -0
  23. package/build/video/models/video-config.schema.js +8 -0
  24. package/build/video/models/video-job.schema.js +30 -0
  25. package/build/video/models/video-model.schema.js +35 -0
  26. package/build/video/queries/find-video-job-by-id.query.js +10 -0
  27. package/build/video/queries/find-video-jobs.query.js +28 -0
  28. package/build/video/queries/get-video-config.query.js +9 -0
  29. package/build/video/queries/index.js +19 -0
  30. package/build/video/routes/index.js +18 -0
  31. package/build/video/routes/video.amqp.routes.js +14 -0
  32. package/build/video/routes/video.http.routes.js +8 -0
  33. package/common/errors/errors.ts +86 -0
  34. package/index.ts +3 -0
  35. package/package.json +1 -1
  36. package/video/commands/delete-all-video-jobs.command.ts +13 -0
  37. package/video/commands/delete-video-job-by-uuid.command.ts +14 -0
  38. package/video/commands/index.ts +6 -0
  39. package/video/commands/retry-video-job.command.ts +16 -0
  40. package/video/commands/set-reaction-to-video-job.command.ts +17 -0
  41. package/video/commands/update-video-job-title.command.ts +16 -0
  42. package/video/commands/video.command.ts +23 -0
  43. package/video/const/index.ts +1 -0
  44. package/video/const/videoMaxDuration.ts +1 -0
  45. package/video/enums/index.ts +8 -0
  46. package/video/enums/veo-aspect-ratio.enum.ts +4 -0
  47. package/video/enums/veo-audio-support.enum.ts +4 -0
  48. package/video/enums/veo-input-modality.enum.ts +4 -0
  49. package/video/enums/veo-job-params-type.enum.ts +4 -0
  50. package/video/enums/veo-person-allow.enum.ts +5 -0
  51. package/video/enums/video-model-type.enum.ts +4 -0
  52. package/video/enums/video-resolution.enum.ts +4 -0
  53. package/video/enums/video-strategy.enum.ts +6 -0
  54. package/video/index.ts +5 -0
  55. package/video/models/index.ts +3 -0
  56. package/video/models/video-config.schema.ts +8 -0
  57. package/video/models/video-job.schema.ts +33 -0
  58. package/video/models/video-model.schema.ts +38 -0
  59. package/video/queries/find-video-job-by-id.query.ts +11 -0
  60. package/video/queries/find-video-jobs.query.ts +33 -0
  61. package/video/queries/get-video-config.query.ts +8 -0
  62. package/video/queries/index.ts +3 -0
  63. package/video/routes/index.ts +2 -0
  64. package/video/routes/video.amqp.routes.ts +11 -0
  65. package/video/routes/video.http.routes.ts +6 -0
@@ -247,4 +247,90 @@ exports.ERRORS = {
247
247
  httpCode: 400,
248
248
  },
249
249
  },
250
+ VIDEO: {
251
+ AI_ERROR: {
252
+ code: 'VIDEO.AI_ERROR',
253
+ message: 'Произошла ошибка во время запроса к ИИ',
254
+ httpCode: 500,
255
+ },
256
+ INSUFFICIENT_BALANCE: {
257
+ code: 'VIDEO.INSUFFICIENT_BALANCE',
258
+ message: 'У пользователя недостаточно средств',
259
+ httpCode: 400,
260
+ },
261
+ INVALID_PARAMS: {
262
+ code: 'VIDEO.INVALID_PARAMS',
263
+ message: 'Некорректные параметры видео',
264
+ httpCode: 400,
265
+ },
266
+ DELETE_ERROR: {
267
+ code: 'VIDEO.DELETE_ERROR',
268
+ message: 'Произошла ошибка при удалении генерации видео',
269
+ httpCode: 500,
270
+ },
271
+ INVALID_DURATION: {
272
+ code: 'VIDEO.INVALID_DURATION',
273
+ message: 'Некорректная длительность видео',
274
+ httpCode: 400,
275
+ },
276
+ MAX_PROMPT_LENGTH_EXCEEDED: {
277
+ code: 'VIDEO.MAX_PROMPT_LENGTH_EXCEEDED',
278
+ message: 'Превышена максимальная длина запроса',
279
+ httpCode: 400,
280
+ },
281
+ INVALID_ASPECT_RATIO: {
282
+ code: 'VIDEO.INVALID_ASPECT_RATIO',
283
+ message: 'Некорректное соотношение сторон',
284
+ httpCode: 400,
285
+ },
286
+ },
287
+ VIDEO_MODEL: {
288
+ SAVE_ERROR: {
289
+ code: 'VIDEO_MODEL.SAVE_ERROR',
290
+ message: 'Произошла ошибка при сохранении модели для генерации видео',
291
+ httpCode: 500,
292
+ },
293
+ FIND_ERROR: {
294
+ code: 'VIDEO_MODEL.FIND_ERROR',
295
+ message: 'Произошла ошибка при поиске модели для генерации видео',
296
+ httpCode: 500,
297
+ },
298
+ NOT_FOUND: {
299
+ code: 'VIDEO_MODEL.NOT_FOUND',
300
+ message: 'Модель для генерации видео не найдена',
301
+ httpCode: 404,
302
+ },
303
+ },
304
+ VIDEO_JOB: {
305
+ SAVE_ERROR: {
306
+ code: 'VIDEO_JOB.SAVE_ERROR',
307
+ message: 'Произошла ошибка при сохранении задания на генерацию видео',
308
+ httpCode: 500,
309
+ },
310
+ FIND_ERROR: {
311
+ code: 'VIDEO_JOB.FIND_ERROR',
312
+ message: 'Произошла ошибка при поиске задания на генерацию видео',
313
+ httpCode: 500,
314
+ },
315
+ NOT_FOUND: {
316
+ code: 'VIDEO_JOB.NOT_FOUND',
317
+ message: 'Задание на генерацию видео не найдено',
318
+ httpCode: 404,
319
+ },
320
+ NOT_AN_OWNER: {
321
+ code: 'VIDEO_JOB.NOT_AN_OWNER',
322
+ message: 'Пользователь не является владельцем задания на генерацию видео',
323
+ httpCode: 403,
324
+ },
325
+ NOT_IN_FAILED_STATE_TO_RETRY: {
326
+ code: 'VIDEO_JOB.NOT_IN_FAILED_STATE_TO_RETRY',
327
+ message: 'Задание на генерацию видео не в состоянии "failed". Невозможно повторить',
328
+ httpCode: 400,
329
+ },
330
+ DELETE_ERROR: {
331
+ code: 'VIDEO_JOB.DELETE_ERROR',
332
+ message: 'Произошла ошибка при удалении задания на генерацию видео',
333
+ httpCode: 500,
334
+ },
335
+ },
250
336
  };
package/build/index.js CHANGED
@@ -42,11 +42,13 @@ __exportStar(require("./paraphrase"), exports);
42
42
  __exportStar(require("./tools"), exports);
43
43
  __exportStar(require("./stt"), exports);
44
44
  __exportStar(require("./tts"), exports);
45
+ __exportStar(require("./video"), exports);
45
46
  const common = __importStar(require("./common"));
46
47
  const paraphrase = __importStar(require("./paraphrase"));
47
48
  const tools = __importStar(require("./tools"));
48
49
  const stt = __importStar(require("./stt"));
49
50
  const tts = __importStar(require("./tts"));
51
+ const video = __importStar(require("./video"));
50
52
  var ToolService;
51
53
  (function (ToolService) {
52
54
  ToolService.Common = common;
@@ -54,4 +56,5 @@ var ToolService;
54
56
  ToolService.Tools = tools;
55
57
  ToolService.TTS = tts;
56
58
  ToolService.STT = stt;
59
+ ToolService.Video = video;
57
60
  })(ToolService || (exports.ToolService = ToolService = {}));
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteAllVideoJobsCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const command_response_schema_1 = require("../../common/models/command-response.schema");
6
+ var DeleteAllVideoJobsCommand;
7
+ (function (DeleteAllVideoJobsCommand) {
8
+ DeleteAllVideoJobsCommand.RequestSchema = zod_1.z.object({
9
+ userId: zod_1.z.string().uuid().nullable().optional(),
10
+ unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
11
+ });
12
+ DeleteAllVideoJobsCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(zod_1.z.boolean());
13
+ })(DeleteAllVideoJobsCommand || (exports.DeleteAllVideoJobsCommand = DeleteAllVideoJobsCommand = {}));
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteVideoJobByUuidCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const command_response_schema_1 = require("../../common/models/command-response.schema");
6
+ var DeleteVideoJobByUuidCommand;
7
+ (function (DeleteVideoJobByUuidCommand) {
8
+ DeleteVideoJobByUuidCommand.RequestSchema = zod_1.z.object({
9
+ userId: zod_1.z.string().uuid().nullable().optional(),
10
+ unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
11
+ uuid: zod_1.z.string(),
12
+ });
13
+ DeleteVideoJobByUuidCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(zod_1.z.boolean());
14
+ })(DeleteVideoJobByUuidCommand || (exports.DeleteVideoJobByUuidCommand = DeleteVideoJobByUuidCommand = {}));
@@ -0,0 +1,22 @@
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("./delete-video-job-by-uuid.command"), exports);
18
+ __exportStar(require("./delete-all-video-jobs.command"), exports);
19
+ __exportStar(require("./retry-video-job.command"), exports);
20
+ __exportStar(require("./set-reaction-to-video-job.command"), exports);
21
+ __exportStar(require("./video.command"), exports);
22
+ __exportStar(require("./update-video-job-title.command"), exports);
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RetryVideoJobCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const command_response_schema_1 = require("../../common/models/command-response.schema");
6
+ const video_job_schema_1 = require("../models/video-job.schema");
7
+ var RetryVideoJobCommand;
8
+ (function (RetryVideoJobCommand) {
9
+ RetryVideoJobCommand.RequestSchema = zod_1.z.object({
10
+ uuid: zod_1.z.string().uuid(),
11
+ userBalance: zod_1.z.number(),
12
+ userId: zod_1.z.string().uuid().nullable().optional(),
13
+ unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
14
+ });
15
+ RetryVideoJobCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(video_job_schema_1.VideoJobSchema);
16
+ })(RetryVideoJobCommand || (exports.RetryVideoJobCommand = RetryVideoJobCommand = {}));
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetReactionToVideoJobCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const command_response_schema_1 = require("../../common/models/command-response.schema");
6
+ const video_job_schema_1 = require("../models/video-job.schema");
7
+ const common_1 = require("../../common");
8
+ var SetReactionToVideoJobCommand;
9
+ (function (SetReactionToVideoJobCommand) {
10
+ SetReactionToVideoJobCommand.RequestSchema = zod_1.z.object({
11
+ userId: zod_1.z.string().uuid().nullable().optional(),
12
+ unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
13
+ uuid: zod_1.z.string(),
14
+ reaction: zod_1.z.nativeEnum(common_1.USER_REACTION).nullable(),
15
+ });
16
+ SetReactionToVideoJobCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(video_job_schema_1.VideoJobSchema);
17
+ })(SetReactionToVideoJobCommand || (exports.SetReactionToVideoJobCommand = SetReactionToVideoJobCommand = {}));
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateVideoJobTitleCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const command_response_schema_1 = require("../../common/models/command-response.schema");
6
+ const video_job_schema_1 = require("../models/video-job.schema");
7
+ var UpdateVideoJobTitleCommand;
8
+ (function (UpdateVideoJobTitleCommand) {
9
+ UpdateVideoJobTitleCommand.RequestSchema = zod_1.z.object({
10
+ uuid: zod_1.z.string().uuid(),
11
+ userId: zod_1.z.string().uuid().nullable().optional(),
12
+ unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
13
+ title: zod_1.z.string().min(1).max(40),
14
+ });
15
+ UpdateVideoJobTitleCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(video_job_schema_1.VideoJobSchema);
16
+ })(UpdateVideoJobTitleCommand || (exports.UpdateVideoJobTitleCommand = UpdateVideoJobTitleCommand = {}));
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VideoCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const command_response_schema_1 = require("../../common/models/command-response.schema");
6
+ const video_job_schema_1 = require("../models/video-job.schema");
7
+ var VideoCommand;
8
+ (function (VideoCommand) {
9
+ VideoCommand.RequestSchema = zod_1.z.object({
10
+ userId: zod_1.z.string().uuid().nullable().optional(),
11
+ unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
12
+ prompt: zod_1.z.string(),
13
+ userBalance: zod_1.z.number(),
14
+ modelId: zod_1.z.string(),
15
+ params: zod_1.z.object({
16
+ imageUrls: zod_1.z.string().array().optional(),
17
+ duration: zod_1.z.number(),
18
+ aspectRatio: zod_1.z.string().optional(),
19
+ quality: zod_1.z.string().optional(),
20
+ }),
21
+ });
22
+ VideoCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(video_job_schema_1.VideoJobSchema);
23
+ })(VideoCommand || (exports.VideoCommand = VideoCommand = {}));
@@ -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("./videoMaxDuration"), exports);
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.videoMaxDuration = void 0;
4
+ exports.videoMaxDuration = 8;
@@ -0,0 +1,24 @@
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("./video-model-type.enum"), exports);
18
+ __exportStar(require("./video-strategy.enum"), exports);
19
+ __exportStar(require("./veo-input-modality.enum"), exports);
20
+ __exportStar(require("./veo-audio-support.enum"), exports);
21
+ __exportStar(require("./veo-aspect-ratio.enum"), exports);
22
+ __exportStar(require("./veo-person-allow.enum"), exports);
23
+ __exportStar(require("./veo-job-params-type.enum"), exports);
24
+ __exportStar(require("./video-resolution.enum"), exports);
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VEO_ASPECT_RATIO = void 0;
4
+ var VEO_ASPECT_RATIO;
5
+ (function (VEO_ASPECT_RATIO) {
6
+ VEO_ASPECT_RATIO["HORIZONTAL"] = "16:9";
7
+ VEO_ASPECT_RATIO["VERTICAL"] = "9:16";
8
+ })(VEO_ASPECT_RATIO || (exports.VEO_ASPECT_RATIO = VEO_ASPECT_RATIO = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VEO_AUDIO_SUPPORT = void 0;
4
+ var VEO_AUDIO_SUPPORT;
5
+ (function (VEO_AUDIO_SUPPORT) {
6
+ VEO_AUDIO_SUPPORT["NONE"] = "NONE";
7
+ VEO_AUDIO_SUPPORT["NATIVE"] = "NATIVE";
8
+ })(VEO_AUDIO_SUPPORT || (exports.VEO_AUDIO_SUPPORT = VEO_AUDIO_SUPPORT = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VEO_INPUT_MODALITY = void 0;
4
+ var VEO_INPUT_MODALITY;
5
+ (function (VEO_INPUT_MODALITY) {
6
+ VEO_INPUT_MODALITY["TEXT"] = "TEXT_TO_VIDEO";
7
+ VEO_INPUT_MODALITY["TEXT_IMAGE"] = "TEXT_IMAGE_TO_VIDEO";
8
+ })(VEO_INPUT_MODALITY || (exports.VEO_INPUT_MODALITY = VEO_INPUT_MODALITY = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VEO_JOB_PARAMS_TYPE = void 0;
4
+ var VEO_JOB_PARAMS_TYPE;
5
+ (function (VEO_JOB_PARAMS_TYPE) {
6
+ VEO_JOB_PARAMS_TYPE["VEO2"] = "veo2";
7
+ VEO_JOB_PARAMS_TYPE["VEO3"] = "veo3";
8
+ })(VEO_JOB_PARAMS_TYPE || (exports.VEO_JOB_PARAMS_TYPE = VEO_JOB_PARAMS_TYPE = {}));
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VEO_PERSON_ALLOW = void 0;
4
+ var VEO_PERSON_ALLOW;
5
+ (function (VEO_PERSON_ALLOW) {
6
+ VEO_PERSON_ALLOW["ALLOW_ALL"] = "allow_all";
7
+ VEO_PERSON_ALLOW["ALLOW_ADULT"] = "allow_adult";
8
+ VEO_PERSON_ALLOW["DONT_ALLOW"] = "dont_allow";
9
+ })(VEO_PERSON_ALLOW || (exports.VEO_PERSON_ALLOW = VEO_PERSON_ALLOW = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VEO_MODEL_TYPE = void 0;
4
+ var VEO_MODEL_TYPE;
5
+ (function (VEO_MODEL_TYPE) {
6
+ VEO_MODEL_TYPE["VEO_3"] = "veo3";
7
+ VEO_MODEL_TYPE["VEO_3_FAST"] = "veo3_fast";
8
+ })(VEO_MODEL_TYPE || (exports.VEO_MODEL_TYPE = VEO_MODEL_TYPE = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VIDEO_RESOLUTION = void 0;
4
+ var VIDEO_RESOLUTION;
5
+ (function (VIDEO_RESOLUTION) {
6
+ VIDEO_RESOLUTION["STANDART"] = "720p";
7
+ VIDEO_RESOLUTION["HIGH"] = "1080p";
8
+ })(VIDEO_RESOLUTION || (exports.VIDEO_RESOLUTION = VIDEO_RESOLUTION = {}));
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VIDEO_GENERATION_STRATEGY = void 0;
4
+ var VIDEO_GENERATION_STRATEGY;
5
+ (function (VIDEO_GENERATION_STRATEGY) {
6
+ VIDEO_GENERATION_STRATEGY["VEO_POLLING"] = "VEO_POLLING";
7
+ VIDEO_GENERATION_STRATEGY["VEO_CALLBACK"] = "VEO_CALLBACK";
8
+ VIDEO_GENERATION_STRATEGY["RUNWAY_POLLING"] = "RUNWAY_POLLING";
9
+ VIDEO_GENERATION_STRATEGY["RUNWAY_CALLBACK"] = "RUNWAY_CALLBACK";
10
+ })(VIDEO_GENERATION_STRATEGY || (exports.VIDEO_GENERATION_STRATEGY = VIDEO_GENERATION_STRATEGY = {}));
@@ -0,0 +1,21 @@
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("./commands"), exports);
18
+ __exportStar(require("./enums"), exports);
19
+ __exportStar(require("./models"), exports);
20
+ __exportStar(require("./queries"), exports);
21
+ __exportStar(require("./routes"), exports);
@@ -0,0 +1,19 @@
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("./video-config.schema"), exports);
18
+ __exportStar(require("./video-job.schema"), exports);
19
+ __exportStar(require("./video-model.schema"), exports);
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VideoConfigSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const video_model_schema_1 = require("./video-model.schema");
6
+ exports.VideoConfigSchema = zod_1.z.object({
7
+ models: zod_1.z.array(video_model_schema_1.VideoModelSchema),
8
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VideoJobSchema = exports.VideoJobParamsSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const tools_1 = require("../../tools");
6
+ const common_1 = require("../../common");
7
+ exports.VideoJobParamsSchema = zod_1.z.object({
8
+ imageUrls: zod_1.z.string().array().optional(),
9
+ duration: zod_1.z.number().optional(),
10
+ });
11
+ exports.VideoJobSchema = zod_1.z.object({
12
+ uuid: zod_1.z.string(),
13
+ prompt: zod_1.z.string(),
14
+ reaction: zod_1.z.nativeEnum(common_1.USER_REACTION).nullable(),
15
+ externalId: zod_1.z.string().nullable(),
16
+ title: zod_1.z.string(),
17
+ status: zod_1.z.nativeEnum(tools_1.JOB_STATUS),
18
+ error: zod_1.z.string().nullable(),
19
+ modelId: zod_1.z.string(),
20
+ price: zod_1.z.number(),
21
+ params: exports.VideoJobParamsSchema,
22
+ videoUrl: zod_1.z.string().nullable(),
23
+ attempts: zod_1.z.array(zod_1.z.any()),
24
+ userId: zod_1.z.string().nullable().optional(),
25
+ unregisteredUserId: zod_1.z.string().nullable().optional(),
26
+ isDeleted: zod_1.z.boolean(),
27
+ createdAt: zod_1.z.date(),
28
+ completedAt: zod_1.z.date().nullable().optional(),
29
+ updatedAt: zod_1.z.date(),
30
+ });
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VideoModelSchema = exports.VideoModelParamsSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const common_1 = require("../../common");
6
+ const enums_1 = require("../enums");
7
+ exports.VideoModelParamsSchema = zod_1.z.object({
8
+ imageAttachment: zod_1.z.object({
9
+ supported: zod_1.z.boolean(),
10
+ maxImages: zod_1.z.number(),
11
+ }),
12
+ duration: zod_1.z.object({
13
+ options: zod_1.z.array(zod_1.z.number()),
14
+ }),
15
+ aspectRatio: zod_1.z
16
+ .object({
17
+ options: zod_1.z.array(zod_1.z.string()),
18
+ })
19
+ .optional(),
20
+ quality: zod_1.z.string().optional(),
21
+ });
22
+ exports.VideoModelSchema = zod_1.z.object({
23
+ uuid: zod_1.z.string(),
24
+ title: zod_1.z.string(),
25
+ description: zod_1.z.string(),
26
+ aiModel: zod_1.z.string(),
27
+ pricePerSecond: zod_1.z.number(),
28
+ order: zod_1.z.number(),
29
+ icons: common_1.IconVariantsSchema,
30
+ strategy: zod_1.z.nativeEnum(enums_1.VIDEO_GENERATION_STRATEGY),
31
+ maxInputLength: zod_1.z.number(),
32
+ params: exports.VideoModelParamsSchema,
33
+ createdAt: zod_1.z.date(),
34
+ updatedAt: zod_1.z.date(),
35
+ });
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FindVideoJobByIdQuery = void 0;
4
+ const command_response_schema_1 = require("../../common/models/command-response.schema");
5
+ const video_job_schema_1 = require("../models/video-job.schema");
6
+ var FindVideoJobByIdQuery;
7
+ (function (FindVideoJobByIdQuery) {
8
+ FindVideoJobByIdQuery.RequestSchema = video_job_schema_1.VideoJobSchema.pick({ uuid: true });
9
+ FindVideoJobByIdQuery.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(video_job_schema_1.VideoJobSchema);
10
+ })(FindVideoJobByIdQuery || (exports.FindVideoJobByIdQuery = FindVideoJobByIdQuery = {}));
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FindVideoJobsQuery = void 0;
4
+ const zod_1 = require("zod");
5
+ const command_response_schema_1 = require("../../common/models/command-response.schema");
6
+ const video_job_schema_1 = require("../models/video-job.schema");
7
+ var FindVideoJobsQuery;
8
+ (function (FindVideoJobsQuery) {
9
+ FindVideoJobsQuery.RequestSchema = zod_1.z
10
+ .object({
11
+ userId: zod_1.z.string().uuid().optional(),
12
+ unregisteredUserId: zod_1.z.string().uuid().optional(),
13
+ title: zod_1.z.string().optional(),
14
+ limit: zod_1.z.coerce.number().min(1).optional(),
15
+ offset: zod_1.z.coerce.number().min(0).default(0).optional(),
16
+ })
17
+ .refine((data) => {
18
+ return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
19
+ }, {
20
+ message: 'At least userId or unregisteredUserId must be present',
21
+ path: ['userId', 'unregisteredUserId'],
22
+ });
23
+ FindVideoJobsQuery.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(zod_1.z.object({
24
+ data: zod_1.z.array(video_job_schema_1.VideoJobSchema),
25
+ page: zod_1.z.number(),
26
+ totalPages: zod_1.z.number(),
27
+ }));
28
+ })(FindVideoJobsQuery || (exports.FindVideoJobsQuery = FindVideoJobsQuery = {}));
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetVideoConfigQuery = void 0;
4
+ const command_response_schema_1 = require("../../common/models/command-response.schema");
5
+ const models_1 = require("../models");
6
+ var GetVideoConfigQuery;
7
+ (function (GetVideoConfigQuery) {
8
+ GetVideoConfigQuery.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(models_1.VideoConfigSchema);
9
+ })(GetVideoConfigQuery || (exports.GetVideoConfigQuery = GetVideoConfigQuery = {}));
@@ -0,0 +1,19 @@
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("./find-video-job-by-id.query"), exports);
18
+ __exportStar(require("./find-video-jobs.query"), exports);
19
+ __exportStar(require("./get-video-config.query"), exports);
@@ -0,0 +1,18 @@
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("./video.amqp.routes"), exports);
18
+ __exportStar(require("./video.http.routes"), exports);
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VIDEO_AMQP_ROUTES = void 0;
4
+ exports.VIDEO_AMQP_ROUTES = {
5
+ EXECUTE: 'tools.video.execute.rpc',
6
+ CONFIG: 'tools.video.config.rpc',
7
+ GET_JOB: 'tools.video.jobs.get.rpc',
8
+ LIST_JOBS: 'tools.video.jobs.list.rpc',
9
+ SET_REACTION: 'tools.video.jobs.set-reaction.rpc',
10
+ UPDATE_TITLE: 'tools.video.jobs.update-title.rpc',
11
+ SOFT_DELETE: 'tools.video.jobs.soft-delete.rpc',
12
+ SOFT_DELETE_ALL: 'tools.video.jobs.soft-delete-all.rpc',
13
+ RETRY: 'tools.video.jobs.retry.rpc',
14
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VIDEO_GENERATION_ROUTES = exports.VIDEO_GENERATION_CONTROLLER = void 0;
4
+ exports.VIDEO_GENERATION_CONTROLLER = 'video-generation';
5
+ exports.VIDEO_GENERATION_ROUTES = {
6
+ KIE_VEO_CALLBACK: 'kie/veo/callback',
7
+ KIE_RUNWAY_CALLBACK: 'kie/runway/callback',
8
+ };
@@ -246,4 +246,90 @@ export const ERRORS = {
246
246
  httpCode: 400,
247
247
  },
248
248
  },
249
+ VIDEO: {
250
+ AI_ERROR: {
251
+ code: 'VIDEO.AI_ERROR',
252
+ message: 'Произошла ошибка во время запроса к ИИ',
253
+ httpCode: 500,
254
+ },
255
+ INSUFFICIENT_BALANCE: {
256
+ code: 'VIDEO.INSUFFICIENT_BALANCE',
257
+ message: 'У пользователя недостаточно средств',
258
+ httpCode: 400,
259
+ },
260
+ INVALID_PARAMS: {
261
+ code: 'VIDEO.INVALID_PARAMS',
262
+ message: 'Некорректные параметры видео',
263
+ httpCode: 400,
264
+ },
265
+ DELETE_ERROR: {
266
+ code: 'VIDEO.DELETE_ERROR',
267
+ message: 'Произошла ошибка при удалении генерации видео',
268
+ httpCode: 500,
269
+ },
270
+ INVALID_DURATION: {
271
+ code: 'VIDEO.INVALID_DURATION',
272
+ message: 'Некорректная длительность видео',
273
+ httpCode: 400,
274
+ },
275
+ MAX_PROMPT_LENGTH_EXCEEDED: {
276
+ code: 'VIDEO.MAX_PROMPT_LENGTH_EXCEEDED',
277
+ message: 'Превышена максимальная длина запроса',
278
+ httpCode: 400,
279
+ },
280
+ INVALID_ASPECT_RATIO: {
281
+ code: 'VIDEO.INVALID_ASPECT_RATIO',
282
+ message: 'Некорректное соотношение сторон',
283
+ httpCode: 400,
284
+ },
285
+ },
286
+ VIDEO_MODEL: {
287
+ SAVE_ERROR: {
288
+ code: 'VIDEO_MODEL.SAVE_ERROR',
289
+ message: 'Произошла ошибка при сохранении модели для генерации видео',
290
+ httpCode: 500,
291
+ },
292
+ FIND_ERROR: {
293
+ code: 'VIDEO_MODEL.FIND_ERROR',
294
+ message: 'Произошла ошибка при поиске модели для генерации видео',
295
+ httpCode: 500,
296
+ },
297
+ NOT_FOUND: {
298
+ code: 'VIDEO_MODEL.NOT_FOUND',
299
+ message: 'Модель для генерации видео не найдена',
300
+ httpCode: 404,
301
+ },
302
+ },
303
+ VIDEO_JOB: {
304
+ SAVE_ERROR: {
305
+ code: 'VIDEO_JOB.SAVE_ERROR',
306
+ message: 'Произошла ошибка при сохранении задания на генерацию видео',
307
+ httpCode: 500,
308
+ },
309
+ FIND_ERROR: {
310
+ code: 'VIDEO_JOB.FIND_ERROR',
311
+ message: 'Произошла ошибка при поиске задания на генерацию видео',
312
+ httpCode: 500,
313
+ },
314
+ NOT_FOUND: {
315
+ code: 'VIDEO_JOB.NOT_FOUND',
316
+ message: 'Задание на генерацию видео не найдено',
317
+ httpCode: 404,
318
+ },
319
+ NOT_AN_OWNER: {
320
+ code: 'VIDEO_JOB.NOT_AN_OWNER',
321
+ message: 'Пользователь не является владельцем задания на генерацию видео',
322
+ httpCode: 403,
323
+ },
324
+ NOT_IN_FAILED_STATE_TO_RETRY: {
325
+ code: 'VIDEO_JOB.NOT_IN_FAILED_STATE_TO_RETRY',
326
+ message: 'Задание на генерацию видео не в состоянии "failed". Невозможно повторить',
327
+ httpCode: 400,
328
+ },
329
+ DELETE_ERROR: {
330
+ code: 'VIDEO_JOB.DELETE_ERROR',
331
+ message: 'Произошла ошибка при удалении задания на генерацию видео',
332
+ httpCode: 500,
333
+ },
334
+ },
249
335
  } as const;
package/index.ts CHANGED
@@ -3,12 +3,14 @@ export * from './paraphrase';
3
3
  export * from './tools';
4
4
  export * from './stt';
5
5
  export * from './tts';
6
+ export * from './video';
6
7
 
7
8
  import * as common from './common';
8
9
  import * as paraphrase from './paraphrase';
9
10
  import * as tools from './tools';
10
11
  import * as stt from './stt';
11
12
  import * as tts from './tts';
13
+ import * as video from './video';
12
14
 
13
15
  export namespace ToolService {
14
16
  export import Common = common;
@@ -16,4 +18,5 @@ export namespace ToolService {
16
18
  export import Tools = tools;
17
19
  export import TTS = tts;
18
20
  export import STT = stt;
21
+ export import Video = video;
19
22
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpleschool/gptbot-tools",
3
- "version": "0.0.22",
3
+ "version": "0.0.25",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "scripts": {
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+
4
+ export namespace DeleteAllVideoJobsCommand {
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 DeleteVideoJobByUuidCommand {
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,6 @@
1
+ export * from './delete-video-job-by-uuid.command';
2
+ export * from './delete-all-video-jobs.command';
3
+ export * from './retry-video-job.command';
4
+ export * from './set-reaction-to-video-job.command';
5
+ export * from './video.command';
6
+ export * from './update-video-job-title.command';
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { VideoJobSchema } from '../models/video-job.schema';
4
+
5
+ export namespace RetryVideoJobCommand {
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(VideoJobSchema);
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 { VideoJobSchema } from '../models/video-job.schema';
4
+ import { USER_REACTION } from '../../common';
5
+
6
+ export namespace SetReactionToVideoJobCommand {
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(VideoJobSchema);
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 { VideoJobSchema } from '../models/video-job.schema';
4
+
5
+ export namespace UpdateVideoJobTitleCommand {
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(VideoJobSchema);
15
+ export type Response = z.infer<typeof ResponseSchema>;
16
+ }
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { VideoJobSchema } from '../models/video-job.schema';
4
+
5
+ export namespace VideoCommand {
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(),
12
+ params: z.object({
13
+ imageUrls: z.string().array().optional(),
14
+ duration: z.number(),
15
+ aspectRatio: z.string().optional(),
16
+ quality: z.string().optional(),
17
+ }),
18
+ });
19
+ export type Request = z.infer<typeof RequestSchema>;
20
+
21
+ export const ResponseSchema = ICommandResponseSchema(VideoJobSchema);
22
+ export type Response = z.infer<typeof ResponseSchema>;
23
+ }
@@ -0,0 +1 @@
1
+ export * from './videoMaxDuration';
@@ -0,0 +1 @@
1
+ export const videoMaxDuration = 8;
@@ -0,0 +1,8 @@
1
+ export * from './video-model-type.enum';
2
+ export * from './video-strategy.enum';
3
+ export * from './veo-input-modality.enum';
4
+ export * from './veo-audio-support.enum';
5
+ export * from './veo-aspect-ratio.enum';
6
+ export * from './veo-person-allow.enum';
7
+ export * from './veo-job-params-type.enum';
8
+ export * from './video-resolution.enum';
@@ -0,0 +1,4 @@
1
+ export enum VEO_ASPECT_RATIO {
2
+ HORIZONTAL = '16:9',
3
+ VERTICAL = '9:16',
4
+ }
@@ -0,0 +1,4 @@
1
+ export enum VEO_AUDIO_SUPPORT {
2
+ NONE = 'NONE',
3
+ NATIVE = 'NATIVE',
4
+ }
@@ -0,0 +1,4 @@
1
+ export enum VEO_INPUT_MODALITY {
2
+ TEXT = 'TEXT_TO_VIDEO',
3
+ TEXT_IMAGE = 'TEXT_IMAGE_TO_VIDEO',
4
+ }
@@ -0,0 +1,4 @@
1
+ export enum VEO_JOB_PARAMS_TYPE {
2
+ VEO2 = 'veo2',
3
+ VEO3 = 'veo3',
4
+ }
@@ -0,0 +1,5 @@
1
+ export enum VEO_PERSON_ALLOW {
2
+ ALLOW_ALL = 'allow_all',
3
+ ALLOW_ADULT = 'allow_adult',
4
+ DONT_ALLOW = 'dont_allow',
5
+ }
@@ -0,0 +1,4 @@
1
+ export enum VEO_MODEL_TYPE {
2
+ VEO_3 = 'veo3',
3
+ VEO_3_FAST = 'veo3_fast',
4
+ }
@@ -0,0 +1,4 @@
1
+ export enum VIDEO_RESOLUTION {
2
+ STANDART = '720p',
3
+ HIGH = '1080p',
4
+ }
@@ -0,0 +1,6 @@
1
+ export enum VIDEO_GENERATION_STRATEGY {
2
+ VEO_POLLING = 'VEO_POLLING',
3
+ VEO_CALLBACK = 'VEO_CALLBACK',
4
+ RUNWAY_POLLING = 'RUNWAY_POLLING',
5
+ RUNWAY_CALLBACK = 'RUNWAY_CALLBACK',
6
+ }
package/video/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './commands';
2
+ export * from './enums';
3
+ export * from './models';
4
+ export * from './queries';
5
+ export * from './routes';
@@ -0,0 +1,3 @@
1
+ export * from './video-config.schema';
2
+ export * from './video-job.schema';
3
+ export * from './video-model.schema';
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ import { VideoModelSchema } from './video-model.schema';
3
+
4
+ export const VideoConfigSchema = z.object({
5
+ models: z.array(VideoModelSchema),
6
+ });
7
+
8
+ export type VideoConfig = z.infer<typeof VideoConfigSchema>;
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ import { JOB_STATUS } from '../../tools';
3
+ import { USER_REACTION } from '../../common';
4
+
5
+ export const VideoJobParamsSchema = z.object({
6
+ imageUrls: z.string().array().optional(),
7
+ duration: z.number().optional(),
8
+ });
9
+
10
+ export type VideoJobParams = z.infer<typeof VideoJobParamsSchema>;
11
+
12
+ export const VideoJobSchema = z.object({
13
+ uuid: z.string(),
14
+ prompt: z.string(),
15
+ reaction: z.nativeEnum(USER_REACTION).nullable(),
16
+ externalId: z.string().nullable(),
17
+ title: z.string(),
18
+ status: z.nativeEnum(JOB_STATUS),
19
+ error: z.string().nullable(),
20
+ modelId: z.string(),
21
+ price: z.number(),
22
+ params: VideoJobParamsSchema,
23
+ videoUrl: z.string().nullable(),
24
+ attempts: z.array(z.any()),
25
+ userId: z.string().nullable().optional(),
26
+ unregisteredUserId: z.string().nullable().optional(),
27
+ isDeleted: z.boolean(),
28
+ createdAt: z.date(),
29
+ completedAt: z.date().nullable().optional(),
30
+ updatedAt: z.date(),
31
+ });
32
+
33
+ export type VideoJob = z.infer<typeof VideoJobSchema>;
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ import { IconVariantsSchema } from '../../common';
3
+ import { VIDEO_GENERATION_STRATEGY } from '../enums';
4
+
5
+ export const VideoModelParamsSchema = z.object({
6
+ imageAttachment: z.object({
7
+ supported: z.boolean(),
8
+ maxImages: z.number(),
9
+ }),
10
+ duration: z.object({
11
+ options: z.array(z.number()),
12
+ }),
13
+ aspectRatio: z
14
+ .object({
15
+ options: z.array(z.string()),
16
+ })
17
+ .optional(),
18
+ quality: z.string().optional(),
19
+ });
20
+
21
+ export type VideoModelParams = z.infer<typeof VideoModelParamsSchema>;
22
+
23
+ export const VideoModelSchema = z.object({
24
+ uuid: z.string(),
25
+ title: z.string(),
26
+ description: z.string(),
27
+ aiModel: z.string(),
28
+ pricePerSecond: z.number(),
29
+ order: z.number(),
30
+ icons: IconVariantsSchema,
31
+ strategy: z.nativeEnum(VIDEO_GENERATION_STRATEGY),
32
+ maxInputLength: z.number(),
33
+ params: VideoModelParamsSchema,
34
+ createdAt: z.date(),
35
+ updatedAt: z.date(),
36
+ });
37
+
38
+ export type VideoModel = z.infer<typeof VideoModelSchema>;
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { VideoJobSchema } from '../models/video-job.schema';
4
+
5
+ export namespace FindVideoJobByIdQuery {
6
+ export const RequestSchema = VideoJobSchema.pick({ uuid: true });
7
+ export type Request = z.infer<typeof RequestSchema>;
8
+
9
+ export const ResponseSchema = ICommandResponseSchema(VideoJobSchema);
10
+ export type Response = z.infer<typeof ResponseSchema>;
11
+ }
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { VideoJobSchema } from '../models/video-job.schema';
4
+
5
+ export namespace FindVideoJobsQuery {
6
+ export const RequestSchema = z
7
+ .object({
8
+ userId: z.string().uuid().optional(),
9
+ unregisteredUserId: z.string().uuid().optional(),
10
+ title: z.string().optional(),
11
+ limit: z.coerce.number().min(1).optional(),
12
+ offset: z.coerce.number().min(0).default(0).optional(),
13
+ })
14
+ .refine(
15
+ (data) => {
16
+ return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
17
+ },
18
+ {
19
+ message: 'At least userId or unregisteredUserId must be present',
20
+ path: ['userId', 'unregisteredUserId'],
21
+ },
22
+ );
23
+ export type Request = z.infer<typeof RequestSchema>;
24
+
25
+ export const ResponseSchema = ICommandResponseSchema(
26
+ z.object({
27
+ data: z.array(VideoJobSchema),
28
+ page: z.number(),
29
+ totalPages: z.number(),
30
+ }),
31
+ );
32
+ export type Response = z.infer<typeof ResponseSchema>;
33
+ }
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ import { ICommandResponseSchema } from '../../common/models/command-response.schema';
3
+ import { VideoConfigSchema } from '../models';
4
+
5
+ export namespace GetVideoConfigQuery {
6
+ export const ResponseSchema = ICommandResponseSchema(VideoConfigSchema);
7
+ export type Response = z.infer<typeof ResponseSchema>;
8
+ }
@@ -0,0 +1,3 @@
1
+ export * from './find-video-job-by-id.query';
2
+ export * from './find-video-jobs.query';
3
+ export * from './get-video-config.query';
@@ -0,0 +1,2 @@
1
+ export * from './video.amqp.routes';
2
+ export * from './video.http.routes';
@@ -0,0 +1,11 @@
1
+ export const VIDEO_AMQP_ROUTES = {
2
+ EXECUTE: 'tools.video.execute.rpc',
3
+ CONFIG: 'tools.video.config.rpc',
4
+ GET_JOB: 'tools.video.jobs.get.rpc',
5
+ LIST_JOBS: 'tools.video.jobs.list.rpc',
6
+ SET_REACTION: 'tools.video.jobs.set-reaction.rpc',
7
+ UPDATE_TITLE: 'tools.video.jobs.update-title.rpc',
8
+ SOFT_DELETE: 'tools.video.jobs.soft-delete.rpc',
9
+ SOFT_DELETE_ALL: 'tools.video.jobs.soft-delete-all.rpc',
10
+ RETRY: 'tools.video.jobs.retry.rpc',
11
+ } as const;
@@ -0,0 +1,6 @@
1
+ export const VIDEO_GENERATION_CONTROLLER = 'video-generation';
2
+
3
+ export const VIDEO_GENERATION_ROUTES = {
4
+ KIE_VEO_CALLBACK: 'kie/veo/callback',
5
+ KIE_RUNWAY_CALLBACK: 'kie/runway/callback',
6
+ };