@purpleschool/gptbot 0.7.70 → 0.7.72

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/api/controllers/http/index.ts +1 -0
  2. package/api/controllers/http/music.ts +16 -0
  3. package/build/api/controllers/http/index.js +1 -0
  4. package/build/api/controllers/http/music.js +18 -0
  5. package/build/commands/cabinet/get-user-statistics-by-month.command.js +2 -0
  6. package/build/commands/tools/index.js +1 -0
  7. package/build/commands/tools/music/convert-to-wav.command.js +16 -0
  8. package/build/commands/tools/music/delete-all-music-jobs.command.js +8 -0
  9. package/build/commands/tools/music/delete-music-job-by-uuid.command.js +11 -0
  10. package/build/commands/tools/music/find-music-job-by-uuid.command.js +14 -0
  11. package/build/commands/tools/music/find-music-jobs.command.js +18 -0
  12. package/build/commands/tools/music/generate-lyrics.command.js +16 -0
  13. package/build/commands/tools/music/generate-music.command.js +15 -0
  14. package/build/commands/tools/music/get-music-tool-config.command.js +11 -0
  15. package/build/commands/tools/music/index.js +27 -0
  16. package/build/commands/tools/music/retry-music-job.command.js +14 -0
  17. package/build/commands/tools/music/set-reaction-to-music-job.command.js +18 -0
  18. package/build/commands/tools/music/update-music-job-title.command.js +17 -0
  19. package/build/constants/errors/errors.js +91 -3
  20. package/build/constants/index.js +1 -0
  21. package/build/constants/tool-music/enums/index.js +21 -0
  22. package/build/constants/tool-music/enums/music-pricing-rule-type.enum.js +7 -0
  23. package/build/constants/tool-music/enums/music-strategy.enum.js +7 -0
  24. package/build/constants/tool-music/enums/music-vocal-gender.enum.js +8 -0
  25. package/build/constants/tool-music/enums/suno-mode-type.enum.js +10 -0
  26. package/build/constants/tool-music/enums/suno-model-type.enum.js +10 -0
  27. package/build/constants/tool-music/index.js +17 -0
  28. package/build/models/tools/index.js +1 -0
  29. package/build/models/tools/music/index.js +20 -0
  30. package/build/models/tools/music/music-config.schema.js +8 -0
  31. package/build/models/tools/music/music-job.schema.js +40 -0
  32. package/build/models/tools/music/music-model.schema.js +32 -0
  33. package/build/models/tools/music/music-track.schema.js +17 -0
  34. package/build/models/user-to-subscription.schema.js +1 -0
  35. package/commands/cabinet/get-user-statistics-by-month.command.ts +2 -0
  36. package/commands/tools/index.ts +1 -0
  37. package/commands/tools/music/convert-to-wav.command.ts +17 -0
  38. package/commands/tools/music/delete-all-music-jobs.command.ts +6 -0
  39. package/commands/tools/music/delete-music-job-by-uuid.command.ts +11 -0
  40. package/commands/tools/music/find-music-job-by-uuid.command.ts +16 -0
  41. package/commands/tools/music/find-music-jobs.command.ts +18 -0
  42. package/commands/tools/music/generate-lyrics.command.ts +17 -0
  43. package/commands/tools/music/generate-music.command.ts +16 -0
  44. package/commands/tools/music/get-music-tool-config.command.ts +10 -0
  45. package/commands/tools/music/index.ts +11 -0
  46. package/commands/tools/music/retry-music-job.command.ts +14 -0
  47. package/commands/tools/music/set-reaction-to-music-job.command.ts +20 -0
  48. package/commands/tools/music/update-music-job-title.command.ts +19 -0
  49. package/constants/errors/errors.ts +91 -3
  50. package/constants/index.ts +1 -0
  51. package/constants/tool-music/enums/index.ts +5 -0
  52. package/constants/tool-music/enums/music-pricing-rule-type.enum.ts +3 -0
  53. package/constants/tool-music/enums/music-strategy.enum.ts +3 -0
  54. package/constants/tool-music/enums/music-vocal-gender.enum.ts +4 -0
  55. package/constants/tool-music/enums/suno-mode-type.enum.ts +6 -0
  56. package/constants/tool-music/enums/suno-model-type.enum.ts +6 -0
  57. package/constants/tool-music/index.ts +1 -0
  58. package/models/tools/index.ts +1 -0
  59. package/models/tools/music/index.ts +4 -0
  60. package/models/tools/music/music-config.schema.ts +6 -0
  61. package/models/tools/music/music-job.schema.ts +43 -0
  62. package/models/tools/music/music-model.schema.ts +33 -0
  63. package/models/tools/music/music-track.schema.ts +19 -0
  64. package/models/user-to-subscription.schema.ts +1 -0
  65. package/package.json +1 -1
@@ -51,3 +51,4 @@ export * from './image-editor';
51
51
  export * from './daily-streak';
52
52
  export * from './cabinet';
53
53
  export * from './webmaster';
54
+ export * from './music';
@@ -0,0 +1,16 @@
1
+ export const MUSIC_CONTROLLER_PRIVATE = 'private/tools/music' as const;
2
+ export const MUSIC_CONTROLLER_PUBLIC = 'public/tools/music' as const;
3
+
4
+ export const MUSIC_ROUTES = {
5
+ CONFIG: 'config',
6
+ EXECUTE: 'execute',
7
+ GENERATE_LYRICS: 'lyrics',
8
+ CONVERT_TO_WAV: 'convert-to-wav',
9
+ GET_JOBS: 'jobs',
10
+ GET_JOB: (uuid: string) => `jobs/${uuid}`,
11
+ UPDATE: (uuid: string) => `jobs/${uuid}`,
12
+ SET_REACTION: (uuid: string) => `jobs/${uuid}/reaction`,
13
+ DELETE: (uuid: string) => `jobs/${uuid}`,
14
+ DELETE_ALL: 'jobs',
15
+ RETRY: (uuid: string) => `jobs/${uuid}/retry`,
16
+ } as const;
@@ -67,3 +67,4 @@ __exportStar(require("./image-editor"), exports);
67
67
  __exportStar(require("./daily-streak"), exports);
68
68
  __exportStar(require("./cabinet"), exports);
69
69
  __exportStar(require("./webmaster"), exports);
70
+ __exportStar(require("./music"), exports);
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MUSIC_ROUTES = exports.MUSIC_CONTROLLER_PUBLIC = exports.MUSIC_CONTROLLER_PRIVATE = void 0;
4
+ exports.MUSIC_CONTROLLER_PRIVATE = 'private/tools/music';
5
+ exports.MUSIC_CONTROLLER_PUBLIC = 'public/tools/music';
6
+ exports.MUSIC_ROUTES = {
7
+ CONFIG: 'config',
8
+ EXECUTE: 'execute',
9
+ GENERATE_LYRICS: 'lyrics',
10
+ CONVERT_TO_WAV: 'convert-to-wav',
11
+ GET_JOBS: 'jobs',
12
+ GET_JOB: (uuid) => `jobs/${uuid}`,
13
+ UPDATE: (uuid) => `jobs/${uuid}`,
14
+ SET_REACTION: (uuid) => `jobs/${uuid}/reaction`,
15
+ DELETE: (uuid) => `jobs/${uuid}`,
16
+ DELETE_ALL: 'jobs',
17
+ RETRY: (uuid) => `jobs/${uuid}/retry`,
18
+ };
@@ -16,6 +16,8 @@ var GetUserStatisticsByMonthCommand;
16
16
  total_writers: zod_1.z.number(),
17
17
  total_writer_actions: zod_1.z.number(),
18
18
  }),
19
+ total_video_edits: zod_1.z.number(),
20
+ total_musics: zod_1.z.number(),
19
21
  });
20
22
  GetUserStatisticsByMonthCommand.ResponseSchema = zod_1.z.object({
21
23
  data: zod_1.z.array(GetUserStatisticsByMonthCommand.UserStatisticsByMonthResponseSchema),
@@ -23,3 +23,4 @@ __exportStar(require("./video"), exports);
23
23
  __exportStar(require("./writer"), exports);
24
24
  __exportStar(require("./image-editor"), exports);
25
25
  __exportStar(require("./video-editor"), exports);
26
+ __exportStar(require("./music"), exports);
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConvertToWavCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ var ConvertToWavCommand;
6
+ (function (ConvertToWavCommand) {
7
+ ConvertToWavCommand.RequestSchema = zod_1.z.object({
8
+ taskId: zod_1.z.string(),
9
+ audioId: zod_1.z.string(),
10
+ });
11
+ ConvertToWavCommand.ResponseSchema = zod_1.z.object({
12
+ data: zod_1.z.object({
13
+ url: zod_1.z.string().url(),
14
+ }),
15
+ });
16
+ })(ConvertToWavCommand || (exports.ConvertToWavCommand = ConvertToWavCommand = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteAllMusicJobsCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ var DeleteAllMusicJobsCommand;
6
+ (function (DeleteAllMusicJobsCommand) {
7
+ DeleteAllMusicJobsCommand.ResponseSchema = zod_1.z.void();
8
+ })(DeleteAllMusicJobsCommand || (exports.DeleteAllMusicJobsCommand = DeleteAllMusicJobsCommand = {}));
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteMusicJobByUUIDCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ var DeleteMusicJobByUUIDCommand;
6
+ (function (DeleteMusicJobByUUIDCommand) {
7
+ DeleteMusicJobByUUIDCommand.RequestParamsSchema = zod_1.z.object({
8
+ uuid: zod_1.z.string().uuid(),
9
+ });
10
+ DeleteMusicJobByUUIDCommand.ResponseSchema = zod_1.z.void();
11
+ })(DeleteMusicJobByUUIDCommand || (exports.DeleteMusicJobByUUIDCommand = DeleteMusicJobByUUIDCommand = {}));
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FindMusicJobByUUIDCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const models_1 = require("../../../models");
6
+ var FindMusicJobByUUIDCommand;
7
+ (function (FindMusicJobByUUIDCommand) {
8
+ FindMusicJobByUUIDCommand.RequestParamsSchema = models_1.ToolJobSchema.pick({
9
+ uuid: true,
10
+ });
11
+ FindMusicJobByUUIDCommand.ResponseSchema = zod_1.z.object({
12
+ data: models_1.MusicJobSchema,
13
+ });
14
+ })(FindMusicJobByUUIDCommand || (exports.FindMusicJobByUUIDCommand = FindMusicJobByUUIDCommand = {}));
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FindMusicJobsCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const models_1 = require("../../../models");
6
+ var FindMusicJobsCommand;
7
+ (function (FindMusicJobsCommand) {
8
+ FindMusicJobsCommand.RequestQuerySchema = zod_1.z.object({
9
+ limit: zod_1.z.coerce.number().min(1).optional(),
10
+ offset: zod_1.z.coerce.number().min(0).default(0).optional(),
11
+ title: zod_1.z.string().optional(),
12
+ });
13
+ FindMusicJobsCommand.ResponseSchema = zod_1.z.object({
14
+ data: zod_1.z.array(models_1.MusicJobSchema),
15
+ totalPages: zod_1.z.number(),
16
+ page: zod_1.z.number(),
17
+ });
18
+ })(FindMusicJobsCommand || (exports.FindMusicJobsCommand = FindMusicJobsCommand = {}));
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenerateLyricsCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ var GenerateLyricsCommand;
6
+ (function (GenerateLyricsCommand) {
7
+ GenerateLyricsCommand.RequestSchema = zod_1.z.object({
8
+ prompt: zod_1.z.string(),
9
+ });
10
+ GenerateLyricsCommand.ResponseSchema = zod_1.z.object({
11
+ data: zod_1.z.object({
12
+ title: zod_1.z.string(),
13
+ lyrics: zod_1.z.string(),
14
+ }),
15
+ });
16
+ })(GenerateLyricsCommand || (exports.GenerateLyricsCommand = GenerateLyricsCommand = {}));
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const models_1 = require("../../../models");
6
+ var MusicCommand;
7
+ (function (MusicCommand) {
8
+ MusicCommand.RequestSchema = zod_1.z.object({
9
+ modelId: zod_1.z.string().uuid(),
10
+ params: models_1.MusicJobParamsSchema,
11
+ });
12
+ MusicCommand.ResponseSchema = zod_1.z.object({
13
+ data: models_1.ToolJobSchema,
14
+ });
15
+ })(MusicCommand || (exports.MusicCommand = MusicCommand = {}));
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetMusicToolConfigCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const models_1 = require("../../../models");
6
+ var GetMusicToolConfigCommand;
7
+ (function (GetMusicToolConfigCommand) {
8
+ GetMusicToolConfigCommand.ResponseSchema = zod_1.z.object({
9
+ data: models_1.MusicConfigSchema,
10
+ });
11
+ })(GetMusicToolConfigCommand || (exports.GetMusicToolConfigCommand = GetMusicToolConfigCommand = {}));
@@ -0,0 +1,27 @@
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-all-music-jobs.command"), exports);
18
+ __exportStar(require("./delete-music-job-by-uuid.command"), exports);
19
+ __exportStar(require("./find-music-job-by-uuid.command"), exports);
20
+ __exportStar(require("./find-music-jobs.command"), exports);
21
+ __exportStar(require("./get-music-tool-config.command"), exports);
22
+ __exportStar(require("./retry-music-job.command"), exports);
23
+ __exportStar(require("./set-reaction-to-music-job.command"), exports);
24
+ __exportStar(require("./generate-music.command"), exports);
25
+ __exportStar(require("./update-music-job-title.command"), exports);
26
+ __exportStar(require("./convert-to-wav.command"), exports);
27
+ __exportStar(require("./generate-lyrics.command"), exports);
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RetryMusicJobCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const models_1 = require("../../../models");
6
+ var RetryMusicJobCommand;
7
+ (function (RetryMusicJobCommand) {
8
+ RetryMusicJobCommand.RequestParamsSchema = zod_1.z.object({
9
+ uuid: zod_1.z.string().uuid(),
10
+ });
11
+ RetryMusicJobCommand.ResponseSchema = zod_1.z.object({
12
+ data: models_1.MusicJobSchema,
13
+ });
14
+ })(RetryMusicJobCommand || (exports.RetryMusicJobCommand = RetryMusicJobCommand = {}));
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetReactionToMusicJobCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const models_1 = require("../../../models");
6
+ const constants_1 = require("../../../constants");
7
+ var SetReactionToMusicJobCommand;
8
+ (function (SetReactionToMusicJobCommand) {
9
+ SetReactionToMusicJobCommand.RequestSchema = zod_1.z.object({
10
+ reaction: zod_1.z.nativeEnum(constants_1.USER_REACTION).nullable(),
11
+ });
12
+ SetReactionToMusicJobCommand.RequestParamsSchema = zod_1.z.object({
13
+ uuid: zod_1.z.string().uuid(),
14
+ });
15
+ SetReactionToMusicJobCommand.ResponseSchema = zod_1.z.object({
16
+ data: models_1.MusicJobSchema,
17
+ });
18
+ })(SetReactionToMusicJobCommand || (exports.SetReactionToMusicJobCommand = SetReactionToMusicJobCommand = {}));
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateMusicJobTitleCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const models_1 = require("../../../models");
6
+ var UpdateMusicJobTitleCommand;
7
+ (function (UpdateMusicJobTitleCommand) {
8
+ UpdateMusicJobTitleCommand.RequestSchema = zod_1.z.object({
9
+ title: zod_1.z.string().min(1).max(40).trim(),
10
+ });
11
+ UpdateMusicJobTitleCommand.RequestParamsSchema = zod_1.z.object({
12
+ uuid: zod_1.z.string().uuid(),
13
+ });
14
+ UpdateMusicJobTitleCommand.ResponseSchema = zod_1.z.object({
15
+ data: models_1.MusicJobSchema,
16
+ });
17
+ })(UpdateMusicJobTitleCommand || (exports.UpdateMusicJobTitleCommand = UpdateMusicJobTitleCommand = {}));
@@ -2176,18 +2176,106 @@ exports.ERRORS = {
2176
2176
  message: 'Произошла ошибка при установке реакции на документ',
2177
2177
  httpCode: 500,
2178
2178
  },
2179
- WRITER_MODEL_NOT_FOUND: {
2179
+ MUSIC_CONFIG_ERROR: {
2180
2180
  code: 'A446',
2181
+ message: 'Произошла ошибка при получении конфигурации инструмента для генерации музыки',
2182
+ httpCode: 500,
2183
+ },
2184
+ MUSIC_SEND_REQUEST_ERROR: {
2185
+ code: 'A447',
2186
+ message: 'Произошла ошибка при отправке запроса на генерацию музыки',
2187
+ httpCode: 500,
2188
+ },
2189
+ MUSIC_FIND_JOBS_ERROR: {
2190
+ code: 'A448',
2191
+ message: 'Произошла ошибка при получении списка заданий на генерацию музыки',
2192
+ httpCode: 500,
2193
+ },
2194
+ MUSIC_FIND_JOB_ERROR: {
2195
+ code: 'A449',
2196
+ message: 'Произошла ошибка при получении задания на генерацию музыки',
2197
+ httpCode: 500,
2198
+ },
2199
+ MUSIC_RETRY_JOB_ERROR: {
2200
+ code: 'A450',
2201
+ message: 'Произошла ошибка при повторном запросе на генерацию музыки',
2202
+ httpCode: 500,
2203
+ },
2204
+ MUSIC_SET_REACTION_ERROR: {
2205
+ code: 'A451',
2206
+ message: 'Произошла ошибка при установке оценки задания на генерацию музыки',
2207
+ httpCode: 500,
2208
+ },
2209
+ MUSIC_UPDATE_TITLE_ERROR: {
2210
+ code: 'A452',
2211
+ message: 'Произошла ошибка при обновлении названия задания на генерацию музыки',
2212
+ httpCode: 500,
2213
+ },
2214
+ MUSIC_DELETE_JOB_ERROR: {
2215
+ code: 'A453',
2216
+ message: 'Произошла ошибка при удалении задания на генерацию музыки',
2217
+ httpCode: 500,
2218
+ },
2219
+ MUSIC_DELETE_ALL_JOBS_ERROR: {
2220
+ code: 'A454',
2221
+ message: 'Произошла ошибка при удалении всех заданий на генерацию музыки',
2222
+ httpCode: 500,
2223
+ },
2224
+ MUSIC_MODEL_NOT_FOUND: {
2225
+ code: 'A455',
2226
+ message: 'Не удалось найти указанную модель для генерации музыки',
2227
+ httpCode: 400,
2228
+ },
2229
+ MUSIC_MODEL_INACTIVE: {
2230
+ code: 'A456',
2231
+ message: 'Модель для генерации музыки неактивна',
2232
+ httpCode: 400,
2233
+ },
2234
+ MUSIC_MODEL_NOT_AVAILABLE: {
2235
+ code: 'A457',
2236
+ message: 'Модель для генерации музыки недоступна для данного пользователя',
2237
+ httpCode: 403,
2238
+ },
2239
+ MUSIC_MAX_SYMBOLS_EXCEEDED: {
2240
+ code: 'A458',
2241
+ message: 'Превышена максимальная количество символов',
2242
+ },
2243
+ MUSIC_INVALID_VOCAL: {
2244
+ code: 'A459',
2245
+ message: 'Выбран неверный голос для вокала',
2246
+ },
2247
+ MUSIC_JOB_DELETE_ERROR: {
2248
+ code: 'A460',
2249
+ message: 'Произошла ошибка при удалении сообщения',
2250
+ httpCode: 500,
2251
+ },
2252
+ MUSIC_RETRY_REQUEST_ERROR: {
2253
+ code: 'A461',
2254
+ message: 'Произошла ошибка при повторном запросе на генерацию музыки',
2255
+ httpCode: 500,
2256
+ },
2257
+ MUSIC_LYRICS_GENERATION_ERROR: {
2258
+ code: 'A462',
2259
+ message: 'Произошла ошибка при запросе на генерацию текста песни',
2260
+ httpCode: 500,
2261
+ },
2262
+ MUSIC_CONVERT_TO_WAV_ERROR: {
2263
+ code: 'A463',
2264
+ message: 'Произошла ошибка при запросе на конвертацию mp3 в wav',
2265
+ httpCode: 500,
2266
+ },
2267
+ WRITER_MODEL_NOT_FOUND: {
2268
+ code: 'A464',
2181
2269
  message: 'Не удалось найти указанную модель для Writer',
2182
2270
  httpCode: 400,
2183
2271
  },
2184
2272
  WRITER_MODEL_INACTIVE: {
2185
- code: 'A447',
2273
+ code: 'A465',
2186
2274
  message: 'Модель Writer архивирована и недоступна для пользования',
2187
2275
  httpCode: 403,
2188
2276
  },
2189
2277
  WRITER_MODEL_ACCESS_DENIED: {
2190
- code: 'A448',
2278
+ code: 'A466',
2191
2279
  message: 'У вас нет доступа к этой модели Writer',
2192
2280
  httpCode: 403,
2193
2281
  },
@@ -55,3 +55,4 @@ __exportStar(require("./daily-streak"), exports);
55
55
  __exportStar(require("./cabinet"), exports);
56
56
  __exportStar(require("./webmaster"), exports);
57
57
  __exportStar(require("./webmaster-balance"), exports);
58
+ __exportStar(require("./tool-music"), exports);
@@ -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("./suno-model-type.enum"), exports);
18
+ __exportStar(require("./music-strategy.enum"), exports);
19
+ __exportStar(require("./music-vocal-gender.enum"), exports);
20
+ __exportStar(require("./music-pricing-rule-type.enum"), exports);
21
+ __exportStar(require("./suno-mode-type.enum"), exports);
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MUSIC_PRICING_RULE_TYPE = void 0;
4
+ var MUSIC_PRICING_RULE_TYPE;
5
+ (function (MUSIC_PRICING_RULE_TYPE) {
6
+ MUSIC_PRICING_RULE_TYPE["FLAT"] = "flat";
7
+ })(MUSIC_PRICING_RULE_TYPE || (exports.MUSIC_PRICING_RULE_TYPE = MUSIC_PRICING_RULE_TYPE = {}));
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MUSIC_GENERATION_STRATEGY = void 0;
4
+ var MUSIC_GENERATION_STRATEGY;
5
+ (function (MUSIC_GENERATION_STRATEGY) {
6
+ MUSIC_GENERATION_STRATEGY["SUNO_POLLING"] = "SUNO_POLLING";
7
+ })(MUSIC_GENERATION_STRATEGY || (exports.MUSIC_GENERATION_STRATEGY = MUSIC_GENERATION_STRATEGY = {}));
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MUSIC_VOCAL_GENDER = void 0;
4
+ var MUSIC_VOCAL_GENDER;
5
+ (function (MUSIC_VOCAL_GENDER) {
6
+ MUSIC_VOCAL_GENDER["MALE"] = "m";
7
+ MUSIC_VOCAL_GENDER["FEMALE"] = "f";
8
+ })(MUSIC_VOCAL_GENDER || (exports.MUSIC_VOCAL_GENDER = MUSIC_VOCAL_GENDER = {}));
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUNO_MODE_TYPE = void 0;
4
+ var SUNO_MODE_TYPE;
5
+ (function (SUNO_MODE_TYPE) {
6
+ SUNO_MODE_TYPE["SIMPLE"] = "simple";
7
+ SUNO_MODE_TYPE["SIMPLE_INSTRUMENTAL"] = "simple_instrumental";
8
+ SUNO_MODE_TYPE["CUSTOM"] = "custom";
9
+ SUNO_MODE_TYPE["CUSTOM_INSTRUMENTAL"] = "custom_instrumental";
10
+ })(SUNO_MODE_TYPE || (exports.SUNO_MODE_TYPE = SUNO_MODE_TYPE = {}));
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUNO_MODEL_TYPE = void 0;
4
+ var SUNO_MODEL_TYPE;
5
+ (function (SUNO_MODEL_TYPE) {
6
+ SUNO_MODEL_TYPE["V4"] = "V4";
7
+ SUNO_MODEL_TYPE["V4_5"] = "V4_5";
8
+ SUNO_MODEL_TYPE["V4_5PLUS"] = "V4_5PLUS";
9
+ SUNO_MODEL_TYPE["V5"] = "V5";
10
+ })(SUNO_MODEL_TYPE || (exports.SUNO_MODEL_TYPE = SUNO_MODEL_TYPE = {}));
@@ -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("./enums"), exports);
@@ -22,3 +22,4 @@ __exportStar(require("./video"), exports);
22
22
  __exportStar(require("./writer"), exports);
23
23
  __exportStar(require("./image-editor"), exports);
24
24
  __exportStar(require("./video-editor"), exports);
25
+ __exportStar(require("./music"), exports);
@@ -0,0 +1,20 @@
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("./music-config.schema"), exports);
18
+ __exportStar(require("./music-job.schema"), exports);
19
+ __exportStar(require("./music-model.schema"), exports);
20
+ __exportStar(require("./music-track.schema"), exports);
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicConfigSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const music_model_schema_1 = require("./music-model.schema");
6
+ exports.MusicConfigSchema = zod_1.z.object({
7
+ models: zod_1.z.array(music_model_schema_1.MusicModelSchema),
8
+ });
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicJobSchema = exports.MusicJobParamsSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const tool_job_schema_1 = require("../../tool-job.schema");
6
+ const constants_1 = require("../../../constants");
7
+ const music_track_schema_1 = require("./music-track.schema");
8
+ exports.MusicJobParamsSchema = zod_1.z.discriminatedUnion('mode', [
9
+ zod_1.z.object({
10
+ mode: zod_1.z.literal(constants_1.SUNO_MODE_TYPE.SIMPLE),
11
+ prompt: zod_1.z.string().min(1).max(450),
12
+ style: zod_1.z.string(),
13
+ vocalGender: zod_1.z.nativeEnum(constants_1.MUSIC_VOCAL_GENDER),
14
+ }),
15
+ zod_1.z.object({
16
+ mode: zod_1.z.literal(constants_1.SUNO_MODE_TYPE.SIMPLE_INSTRUMENTAL),
17
+ prompt: zod_1.z.string().min(1).max(450),
18
+ style: zod_1.z.string(),
19
+ }),
20
+ zod_1.z.object({
21
+ mode: zod_1.z.literal(constants_1.SUNO_MODE_TYPE.CUSTOM),
22
+ prompt: zod_1.z.string().min(1).max(5000),
23
+ title: zod_1.z.string().min(1).max(80),
24
+ style: zod_1.z.string().min(1).max(1000),
25
+ vocalGender: zod_1.z.nativeEnum(constants_1.MUSIC_VOCAL_GENDER),
26
+ }),
27
+ zod_1.z.object({
28
+ mode: zod_1.z.literal(constants_1.SUNO_MODE_TYPE.CUSTOM_INSTRUMENTAL),
29
+ title: zod_1.z.string().min(1).max(80),
30
+ style: zod_1.z.string().min(1).max(1000),
31
+ }),
32
+ ]);
33
+ exports.MusicJobSchema = tool_job_schema_1.ToolJobSchema.extend({
34
+ title: zod_1.z.string(),
35
+ prompt: zod_1.z.string(),
36
+ reaction: zod_1.z.nativeEnum(constants_1.USER_REACTION).nullable(),
37
+ tracks: zod_1.z.array(music_track_schema_1.MusicTrackSchema),
38
+ params: exports.MusicJobParamsSchema,
39
+ modelId: zod_1.z.string(),
40
+ });
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicModelSchema = exports.MusicModelParamsSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const icon_variants_schema_1 = require("../../icon-variants.schema");
6
+ const unlocked_by_subscription_schema_1 = require("../../unlocked-by-subscription.schema");
7
+ const constants_1 = require("../../../constants");
8
+ exports.MusicModelParamsSchema = zod_1.z.object({
9
+ vocalGender: zod_1.z.object({
10
+ options: zod_1.z.array(zod_1.z.nativeEnum(constants_1.MUSIC_VOCAL_GENDER)),
11
+ }),
12
+ styles: zod_1.z.object({
13
+ maxStyles: zod_1.z.number(),
14
+ options: zod_1.z.array(zod_1.z.object({
15
+ title: zod_1.z.string(),
16
+ style: zod_1.z.string(),
17
+ })),
18
+ }),
19
+ });
20
+ exports.MusicModelSchema = zod_1.z.object({
21
+ uuid: zod_1.z.string(),
22
+ title: zod_1.z.string(),
23
+ description: zod_1.z.string(),
24
+ pricePerTrack: zod_1.z.number(),
25
+ order: zod_1.z.number(),
26
+ icons: icon_variants_schema_1.IconVariantsSchema,
27
+ maxPromptLength: zod_1.z.number(),
28
+ maxLyricsLength: zod_1.z.number(),
29
+ params: exports.MusicModelParamsSchema,
30
+ unlockedBy: unlocked_by_subscription_schema_1.UnlockedBySchema.nullable(),
31
+ canUse: zod_1.z.boolean(),
32
+ });
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MusicTrackSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.MusicTrackSchema = zod_1.z.object({
6
+ uuid: zod_1.z.string(),
7
+ title: zod_1.z.string(),
8
+ audioId: zod_1.z.string(),
9
+ audioUrl: zod_1.z.string(),
10
+ coverUrl: zod_1.z.string(),
11
+ tags: zod_1.z.string(),
12
+ duration: zod_1.z.number(),
13
+ genJobId: zod_1.z.string().nullable().optional(),
14
+ editorJobId: zod_1.z.string().nullable().optional(),
15
+ createdAt: zod_1.z.date(),
16
+ updatedAt: zod_1.z.date(),
17
+ });
@@ -16,6 +16,7 @@ exports.UserToSubscriptionSchema = zod_1.z.object({
16
16
  marks: zod_1.z.array(zod_1.z.string()),
17
17
  intervalEndDate: zod_1.z.date().nullable(),
18
18
  carriedOverTokenBalance: zod_1.z.number(),
19
+ initCarriedOverTokenBalance: zod_1.z.number(),
19
20
  createdAt: zod_1.z.date(),
20
21
  updatedAt: zod_1.z.date(),
21
22
  });
@@ -13,6 +13,8 @@ export namespace GetUserStatisticsByMonthCommand {
13
13
  total_writers: z.number(),
14
14
  total_writer_actions: z.number(),
15
15
  }),
16
+ total_video_edits: z.number(),
17
+ total_musics: z.number(),
16
18
  });
17
19
 
18
20
  export const ResponseSchema = z.object({
@@ -7,3 +7,4 @@ export * from './video';
7
7
  export * from './writer';
8
8
  export * from './image-editor';
9
9
  export * from './video-editor';
10
+ export * from './music';
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export namespace ConvertToWavCommand {
3
+ export const RequestSchema = z.object({
4
+ taskId: z.string(),
5
+ audioId: z.string(),
6
+ });
7
+
8
+ export type Request = z.infer<typeof RequestSchema>;
9
+
10
+ export const ResponseSchema = z.object({
11
+ data: z.object({
12
+ url: z.string().url(),
13
+ }),
14
+ });
15
+
16
+ export type Response = z.infer<typeof ResponseSchema>;
17
+ }
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+
3
+ export namespace DeleteAllMusicJobsCommand {
4
+ export const ResponseSchema = z.void();
5
+ export type Response = z.infer<typeof ResponseSchema>;
6
+ }
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+
3
+ export namespace DeleteMusicJobByUUIDCommand {
4
+ export const RequestParamsSchema = z.object({
5
+ uuid: z.string().uuid(),
6
+ });
7
+ export type RequestParams = z.infer<typeof RequestParamsSchema>;
8
+
9
+ export const ResponseSchema = z.void();
10
+ export type Response = z.infer<typeof ResponseSchema>;
11
+ }
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { MusicJobSchema, ToolJobSchema } from '../../../models';
3
+
4
+ export namespace FindMusicJobByUUIDCommand {
5
+ export const RequestParamsSchema = ToolJobSchema.pick({
6
+ uuid: true,
7
+ });
8
+
9
+ export type Request = z.infer<typeof RequestParamsSchema>;
10
+
11
+ export const ResponseSchema = z.object({
12
+ data: MusicJobSchema,
13
+ });
14
+
15
+ export type Response = z.infer<typeof ResponseSchema>;
16
+ }
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import { MusicJobSchema } from '../../../models';
3
+
4
+ export namespace FindMusicJobsCommand {
5
+ export const RequestQuerySchema = z.object({
6
+ limit: z.coerce.number().min(1).optional(),
7
+ offset: z.coerce.number().min(0).default(0).optional(),
8
+ title: z.string().optional(),
9
+ });
10
+ export type RequestQuery = z.infer<typeof RequestQuerySchema>;
11
+
12
+ export const ResponseSchema = z.object({
13
+ data: z.array(MusicJobSchema),
14
+ totalPages: z.number(),
15
+ page: z.number(),
16
+ });
17
+ export type Response = z.infer<typeof ResponseSchema>;
18
+ }
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export namespace GenerateLyricsCommand {
3
+ export const RequestSchema = z.object({
4
+ prompt: z.string(),
5
+ });
6
+
7
+ export type Request = z.infer<typeof RequestSchema>;
8
+
9
+ export const ResponseSchema = z.object({
10
+ data: z.object({
11
+ title: z.string(),
12
+ lyrics: z.string(),
13
+ }),
14
+ });
15
+
16
+ export type Response = z.infer<typeof ResponseSchema>;
17
+ }
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { ToolJobSchema, MusicJobParamsSchema } from '../../../models';
3
+ export namespace MusicCommand {
4
+ export const RequestSchema = z.object({
5
+ modelId: z.string().uuid(),
6
+ params: MusicJobParamsSchema,
7
+ });
8
+
9
+ export type Request = z.infer<typeof RequestSchema>;
10
+
11
+ export const ResponseSchema = z.object({
12
+ data: ToolJobSchema,
13
+ });
14
+
15
+ export type Response = z.infer<typeof ResponseSchema>;
16
+ }
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ import { MusicConfigSchema } from '../../../models';
3
+
4
+ export namespace GetMusicToolConfigCommand {
5
+ export const ResponseSchema = z.object({
6
+ data: MusicConfigSchema,
7
+ });
8
+
9
+ export type Response = z.infer<typeof ResponseSchema>;
10
+ }
@@ -0,0 +1,11 @@
1
+ export * from './delete-all-music-jobs.command';
2
+ export * from './delete-music-job-by-uuid.command';
3
+ export * from './find-music-job-by-uuid.command';
4
+ export * from './find-music-jobs.command';
5
+ export * from './get-music-tool-config.command';
6
+ export * from './retry-music-job.command';
7
+ export * from './set-reaction-to-music-job.command';
8
+ export * from './generate-music.command';
9
+ export * from './update-music-job-title.command';
10
+ export * from './convert-to-wav.command';
11
+ export * from './generate-lyrics.command';
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import { MusicJobSchema } from '../../../models';
3
+
4
+ export namespace RetryMusicJobCommand {
5
+ export const RequestParamsSchema = z.object({
6
+ uuid: z.string().uuid(),
7
+ });
8
+ export type RequestParams = z.infer<typeof RequestParamsSchema>;
9
+
10
+ export const ResponseSchema = z.object({
11
+ data: MusicJobSchema,
12
+ });
13
+ export type Response = z.infer<typeof ResponseSchema>;
14
+ }
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ import { MusicJobSchema } from '../../../models';
3
+ import { USER_REACTION } from '../../../constants';
4
+
5
+ export namespace SetReactionToMusicJobCommand {
6
+ export const RequestSchema = z.object({
7
+ reaction: z.nativeEnum(USER_REACTION).nullable(),
8
+ });
9
+ export type Request = z.infer<typeof RequestSchema>;
10
+
11
+ export const RequestParamsSchema = z.object({
12
+ uuid: z.string().uuid(),
13
+ });
14
+ export type RequestParams = z.infer<typeof RequestParamsSchema>;
15
+
16
+ export const ResponseSchema = z.object({
17
+ data: MusicJobSchema,
18
+ });
19
+ export type Response = z.infer<typeof ResponseSchema>;
20
+ }
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+ import { MusicJobSchema } from '../../../models';
3
+
4
+ export namespace UpdateMusicJobTitleCommand {
5
+ export const RequestSchema = z.object({
6
+ title: z.string().min(1).max(40).trim(),
7
+ });
8
+ export type Request = z.infer<typeof RequestSchema>;
9
+
10
+ export const RequestParamsSchema = z.object({
11
+ uuid: z.string().uuid(),
12
+ });
13
+ export type RequestParams = z.infer<typeof RequestParamsSchema>;
14
+
15
+ export const ResponseSchema = z.object({
16
+ data: MusicJobSchema,
17
+ });
18
+ export type Response = z.infer<typeof ResponseSchema>;
19
+ }
@@ -2184,18 +2184,106 @@ export const ERRORS = {
2184
2184
  message: 'Произошла ошибка при установке реакции на документ',
2185
2185
  httpCode: 500,
2186
2186
  },
2187
- WRITER_MODEL_NOT_FOUND: {
2187
+ MUSIC_CONFIG_ERROR: {
2188
2188
  code: 'A446',
2189
+ message: 'Произошла ошибка при получении конфигурации инструмента для генерации музыки',
2190
+ httpCode: 500,
2191
+ },
2192
+ MUSIC_SEND_REQUEST_ERROR: {
2193
+ code: 'A447',
2194
+ message: 'Произошла ошибка при отправке запроса на генерацию музыки',
2195
+ httpCode: 500,
2196
+ },
2197
+ MUSIC_FIND_JOBS_ERROR: {
2198
+ code: 'A448',
2199
+ message: 'Произошла ошибка при получении списка заданий на генерацию музыки',
2200
+ httpCode: 500,
2201
+ },
2202
+ MUSIC_FIND_JOB_ERROR: {
2203
+ code: 'A449',
2204
+ message: 'Произошла ошибка при получении задания на генерацию музыки',
2205
+ httpCode: 500,
2206
+ },
2207
+ MUSIC_RETRY_JOB_ERROR: {
2208
+ code: 'A450',
2209
+ message: 'Произошла ошибка при повторном запросе на генерацию музыки',
2210
+ httpCode: 500,
2211
+ },
2212
+ MUSIC_SET_REACTION_ERROR: {
2213
+ code: 'A451',
2214
+ message: 'Произошла ошибка при установке оценки задания на генерацию музыки',
2215
+ httpCode: 500,
2216
+ },
2217
+ MUSIC_UPDATE_TITLE_ERROR: {
2218
+ code: 'A452',
2219
+ message: 'Произошла ошибка при обновлении названия задания на генерацию музыки',
2220
+ httpCode: 500,
2221
+ },
2222
+ MUSIC_DELETE_JOB_ERROR: {
2223
+ code: 'A453',
2224
+ message: 'Произошла ошибка при удалении задания на генерацию музыки',
2225
+ httpCode: 500,
2226
+ },
2227
+ MUSIC_DELETE_ALL_JOBS_ERROR: {
2228
+ code: 'A454',
2229
+ message: 'Произошла ошибка при удалении всех заданий на генерацию музыки',
2230
+ httpCode: 500,
2231
+ },
2232
+ MUSIC_MODEL_NOT_FOUND: {
2233
+ code: 'A455',
2234
+ message: 'Не удалось найти указанную модель для генерации музыки',
2235
+ httpCode: 400,
2236
+ },
2237
+ MUSIC_MODEL_INACTIVE: {
2238
+ code: 'A456',
2239
+ message: 'Модель для генерации музыки неактивна',
2240
+ httpCode: 400,
2241
+ },
2242
+ MUSIC_MODEL_NOT_AVAILABLE: {
2243
+ code: 'A457',
2244
+ message: 'Модель для генерации музыки недоступна для данного пользователя',
2245
+ httpCode: 403,
2246
+ },
2247
+ MUSIC_MAX_SYMBOLS_EXCEEDED: {
2248
+ code: 'A458',
2249
+ message: 'Превышена максимальная количество символов',
2250
+ },
2251
+ MUSIC_INVALID_VOCAL: {
2252
+ code: 'A459',
2253
+ message: 'Выбран неверный голос для вокала',
2254
+ },
2255
+ MUSIC_JOB_DELETE_ERROR: {
2256
+ code: 'A460',
2257
+ message: 'Произошла ошибка при удалении сообщения',
2258
+ httpCode: 500,
2259
+ },
2260
+ MUSIC_RETRY_REQUEST_ERROR: {
2261
+ code: 'A461',
2262
+ message: 'Произошла ошибка при повторном запросе на генерацию музыки',
2263
+ httpCode: 500,
2264
+ },
2265
+ MUSIC_LYRICS_GENERATION_ERROR: {
2266
+ code: 'A462',
2267
+ message: 'Произошла ошибка при запросе на генерацию текста песни',
2268
+ httpCode: 500,
2269
+ },
2270
+ MUSIC_CONVERT_TO_WAV_ERROR: {
2271
+ code: 'A463',
2272
+ message: 'Произошла ошибка при запросе на конвертацию mp3 в wav',
2273
+ httpCode: 500,
2274
+ },
2275
+ WRITER_MODEL_NOT_FOUND: {
2276
+ code: 'A464',
2189
2277
  message: 'Не удалось найти указанную модель для Writer',
2190
2278
  httpCode: 400,
2191
2279
  },
2192
2280
  WRITER_MODEL_INACTIVE: {
2193
- code: 'A447',
2281
+ code: 'A465',
2194
2282
  message: 'Модель Writer архивирована и недоступна для пользования',
2195
2283
  httpCode: 403,
2196
2284
  },
2197
2285
  WRITER_MODEL_ACCESS_DENIED: {
2198
- code: 'A448',
2286
+ code: 'A466',
2199
2287
  message: 'У вас нет доступа к этой модели Writer',
2200
2288
  httpCode: 403,
2201
2289
  },
@@ -39,3 +39,4 @@ export * from './daily-streak';
39
39
  export * from './cabinet';
40
40
  export * from './webmaster';
41
41
  export * from './webmaster-balance';
42
+ export * from './tool-music';
@@ -0,0 +1,5 @@
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';
@@ -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
+ }
@@ -0,0 +1,6 @@
1
+ export enum SUNO_MODE_TYPE {
2
+ SIMPLE = 'simple',
3
+ SIMPLE_INSTRUMENTAL = 'simple_instrumental',
4
+ CUSTOM = 'custom',
5
+ CUSTOM_INSTRUMENTAL = 'custom_instrumental',
6
+ }
@@ -0,0 +1,6 @@
1
+ export enum SUNO_MODEL_TYPE {
2
+ V4 = 'V4',
3
+ V4_5 = 'V4_5',
4
+ V4_5PLUS = 'V4_5PLUS',
5
+ V5 = 'V5',
6
+ }
@@ -0,0 +1 @@
1
+ export * from './enums';
@@ -6,3 +6,4 @@ export * from './video';
6
6
  export * from './writer';
7
7
  export * from './image-editor';
8
8
  export * from './video-editor';
9
+ export * from './music';
@@ -0,0 +1,4 @@
1
+ export * from './music-config.schema';
2
+ export * from './music-job.schema';
3
+ export * from './music-model.schema';
4
+ export * from './music-track.schema';
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ import { MusicModelSchema } from './music-model.schema';
3
+
4
+ export const MusicConfigSchema = z.object({
5
+ models: z.array(MusicModelSchema),
6
+ });
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ import { ToolJobSchema } from '../../tool-job.schema';
3
+ import { MUSIC_VOCAL_GENDER, SUNO_MODE_TYPE, USER_REACTION } from '../../../constants';
4
+ import { MusicTrackSchema } from './music-track.schema';
5
+
6
+ export const MusicJobParamsSchema = z.discriminatedUnion('mode', [
7
+ z.object({
8
+ mode: z.literal(SUNO_MODE_TYPE.SIMPLE),
9
+ prompt: z.string().min(1).max(450),
10
+ style: z.string(),
11
+ vocalGender: z.nativeEnum(MUSIC_VOCAL_GENDER),
12
+ }),
13
+ z.object({
14
+ mode: z.literal(SUNO_MODE_TYPE.SIMPLE_INSTRUMENTAL),
15
+ prompt: z.string().min(1).max(450),
16
+ style: z.string(),
17
+ }),
18
+ z.object({
19
+ mode: z.literal(SUNO_MODE_TYPE.CUSTOM),
20
+ prompt: z.string().min(1).max(5000),
21
+ title: z.string().min(1).max(80),
22
+ style: z.string().min(1).max(1000),
23
+ vocalGender: z.nativeEnum(MUSIC_VOCAL_GENDER),
24
+ }),
25
+ z.object({
26
+ mode: z.literal(SUNO_MODE_TYPE.CUSTOM_INSTRUMENTAL),
27
+ title: z.string().min(1).max(80),
28
+ style: z.string().min(1).max(1000),
29
+ }),
30
+ ]);
31
+
32
+ export type MusicJobParams = z.infer<typeof MusicJobParamsSchema>;
33
+
34
+ export const MusicJobSchema = ToolJobSchema.extend({
35
+ title: z.string(),
36
+ prompt: z.string(),
37
+ reaction: z.nativeEnum(USER_REACTION).nullable(),
38
+ tracks: z.array(MusicTrackSchema),
39
+ params: MusicJobParamsSchema,
40
+ modelId: z.string(),
41
+ });
42
+
43
+ export type MusicJob = z.infer<typeof MusicJobSchema>;
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ import { IconVariantsSchema } from '../../icon-variants.schema';
3
+ import { UnlockedBySchema } from '../../unlocked-by-subscription.schema';
4
+ import { MUSIC_VOCAL_GENDER } from '../../../constants';
5
+
6
+ export const MusicModelParamsSchema = z.object({
7
+ vocalGender: z.object({
8
+ options: z.array(z.nativeEnum(MUSIC_VOCAL_GENDER)),
9
+ }),
10
+ styles: z.object({
11
+ maxStyles: z.number(),
12
+ options: z.array(
13
+ z.object({
14
+ title: z.string(),
15
+ style: z.string(),
16
+ }),
17
+ ),
18
+ }),
19
+ });
20
+
21
+ export const MusicModelSchema = z.object({
22
+ uuid: z.string(),
23
+ title: z.string(),
24
+ description: z.string(),
25
+ pricePerTrack: z.number(),
26
+ order: z.number(),
27
+ icons: IconVariantsSchema,
28
+ maxPromptLength: z.number(),
29
+ maxLyricsLength: z.number(),
30
+ params: MusicModelParamsSchema,
31
+ unlockedBy: UnlockedBySchema.nullable(),
32
+ canUse: z.boolean(),
33
+ });
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+
3
+ export const MusicTrackSchema = z.object({
4
+ uuid: z.string(),
5
+ title: z.string(),
6
+ audioId: z.string(),
7
+ audioUrl: z.string(),
8
+ coverUrl: z.string(),
9
+ tags: z.string(),
10
+ duration: z.number(),
11
+
12
+ genJobId: z.string().nullable().optional(),
13
+ editorJobId: z.string().nullable().optional(),
14
+
15
+ createdAt: z.date(),
16
+ updatedAt: z.date(),
17
+ });
18
+
19
+ export type MusicTrack = z.infer<typeof MusicTrackSchema>;
@@ -14,6 +14,7 @@ export const UserToSubscriptionSchema = z.object({
14
14
  marks: z.array(z.string()),
15
15
  intervalEndDate: z.date().nullable(),
16
16
  carriedOverTokenBalance: z.number(),
17
+ initCarriedOverTokenBalance: z.number(),
17
18
  createdAt: z.date(),
18
19
  updatedAt: z.date(),
19
20
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpleschool/gptbot",
3
- "version": "0.7.70",
3
+ "version": "0.7.72",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",