@purpleschool/gptbot-tools 0.0.59 → 0.0.61
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.
- package/build/common/errors/errors.js +165 -0
- package/build/index.js +3 -0
- package/build/music/commands/convert-to-wav.command.js +15 -0
- package/build/music/commands/delete-all-music-jobs.command.js +13 -0
- package/build/music/commands/delete-music-job-by-uuid.command.js +14 -0
- package/build/music/commands/generate-lyrics.command.js +18 -0
- package/build/music/commands/generate-music.command.js +18 -0
- package/build/music/commands/index.js +24 -0
- package/build/music/commands/retry-music-job.command.js +16 -0
- package/build/music/commands/set-reaction-to-music-job.command.js +17 -0
- package/build/music/commands/update-music-job-title.command.js +16 -0
- package/build/music/enums/index.js +22 -0
- package/build/music/enums/music-action-type.enum.js +7 -0
- package/build/music/enums/music-pricing-rule-type.enum.js +7 -0
- package/build/music/enums/music-strategy.enum.js +7 -0
- package/build/music/enums/music-vocal-gender.enum.js +8 -0
- package/build/music/enums/suno-mode-type.enum.js +10 -0
- package/build/music/enums/suno-model-type.enum.js +10 -0
- package/build/music/index.js +22 -0
- package/build/music/models/index.js +20 -0
- package/build/music/models/music-config.schema.js +8 -0
- package/build/music/models/music-job.schema.js +54 -0
- package/build/music/models/music-model.schema.js +35 -0
- package/build/music/models/music-track.schema.js +17 -0
- package/build/music/queries/find-music-job-by-id.query.js +10 -0
- package/build/music/queries/find-music-jobs.query.js +28 -0
- package/build/music/queries/get-music-config.query.js +9 -0
- package/build/music/queries/index.js +19 -0
- package/build/music/routes/index.js +17 -0
- package/build/music/routes/music.amqp.routes.js +16 -0
- package/build/music/utils/calculate-music-generation-price.util.js +7 -0
- package/build/music/utils/index.js +17 -0
- package/build/tools/enums/tool-type.enum.js +2 -0
- package/build/writer/commands/create-writer-document.command.js +0 -1
- package/build/writer/commands/generate-document-contents.command.js +1 -0
- package/build/writer/models/writer-document.schema.js +1 -1
- package/common/errors/errors.ts +167 -0
- package/index.ts +3 -0
- package/music/commands/convert-to-wav.command.ts +15 -0
- package/music/commands/delete-all-music-jobs.command.ts +13 -0
- package/music/commands/delete-music-job-by-uuid.command.ts +14 -0
- package/music/commands/generate-lyrics.command.ts +20 -0
- package/music/commands/generate-music.command.ts +18 -0
- package/music/commands/index.ts +8 -0
- package/music/commands/retry-music-job.command.ts +16 -0
- package/music/commands/set-reaction-to-music-job.command.ts +17 -0
- package/music/commands/update-music-job-title.command.ts +16 -0
- package/music/enums/index.ts +6 -0
- package/music/enums/music-action-type.enum.ts +3 -0
- package/music/enums/music-pricing-rule-type.enum.ts +3 -0
- package/music/enums/music-strategy.enum.ts +3 -0
- package/music/enums/music-vocal-gender.enum.ts +4 -0
- package/music/enums/suno-mode-type.enum.ts +6 -0
- package/music/enums/suno-model-type.enum.ts +6 -0
- package/music/index.ts +6 -0
- package/music/models/index.ts +4 -0
- package/music/models/music-config.schema.ts +8 -0
- package/music/models/music-job.schema.ts +57 -0
- package/music/models/music-model.schema.ts +40 -0
- package/music/models/music-track.schema.ts +19 -0
- package/music/queries/find-music-job-by-id.query.ts +11 -0
- package/music/queries/find-music-jobs.query.ts +33 -0
- package/music/queries/get-music-config.query.ts +8 -0
- package/music/queries/index.ts +3 -0
- package/music/routes/index.ts +1 -0
- package/music/routes/music.amqp.routes.ts +13 -0
- package/music/utils/calculate-music-generation-price.util.ts +5 -0
- package/music/utils/index.ts +1 -0
- package/package.json +1 -1
- package/tools/enums/tool-type.enum.ts +2 -0
- package/writer/commands/create-writer-document.command.ts +0 -1
- package/writer/commands/generate-document-contents.command.ts +1 -0
- package/writer/models/writer-document.schema.ts +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetMusicConfigQuery = void 0;
|
|
4
|
+
const command_response_schema_1 = require("../../common/models/command-response.schema");
|
|
5
|
+
const models_1 = require("../models");
|
|
6
|
+
var GetMusicConfigQuery;
|
|
7
|
+
(function (GetMusicConfigQuery) {
|
|
8
|
+
GetMusicConfigQuery.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(models_1.MusicConfigSchema);
|
|
9
|
+
})(GetMusicConfigQuery || (exports.GetMusicConfigQuery = GetMusicConfigQuery = {}));
|
|
@@ -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-music-job-by-id.query"), exports);
|
|
18
|
+
__exportStar(require("./find-music-jobs.query"), exports);
|
|
19
|
+
__exportStar(require("./get-music-config.query"), exports);
|
|
@@ -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("./music.amqp.routes"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MUSIC_AMQP_ROUTES = void 0;
|
|
4
|
+
exports.MUSIC_AMQP_ROUTES = {
|
|
5
|
+
EXECUTE: 'tools.music.execute.rpc',
|
|
6
|
+
GENERATE_LYRICS: 'tools.music.generate-lyrics.rpc',
|
|
7
|
+
CONVERT_TO_WAV: 'tools.music.convert-to-wav.rpc',
|
|
8
|
+
CONFIG: 'tools.music.config.rpc',
|
|
9
|
+
GET_JOB: 'tools.music.jobs.get.rpc',
|
|
10
|
+
LIST_JOBS: 'tools.music.jobs.list.rpc',
|
|
11
|
+
SET_REACTION: 'tools.music.jobs.set-reaction.rpc',
|
|
12
|
+
UPDATE_TITLE: 'tools.music.jobs.update-title.rpc',
|
|
13
|
+
SOFT_DELETE: 'tools.music.jobs.soft-delete.rpc',
|
|
14
|
+
SOFT_DELETE_ALL: 'tools.music.jobs.soft-delete-all.rpc',
|
|
15
|
+
RETRY: 'tools.music.jobs.retry.rpc',
|
|
16
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateMusicGenerationPrice = calculateMusicGenerationPrice;
|
|
4
|
+
function calculateMusicGenerationPrice({ pricePerTrack }) {
|
|
5
|
+
const base = pricePerTrack;
|
|
6
|
+
return Math.ceil(base);
|
|
7
|
+
}
|
|
@@ -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("./calculate-music-generation-price.util"), exports);
|
|
@@ -12,4 +12,6 @@ var TOOL_TYPE;
|
|
|
12
12
|
TOOL_TYPE["PARAPHRASE"] = "PARAPHRASE";
|
|
13
13
|
TOOL_TYPE["WRITER_ACTION"] = "WRITER_ACTION";
|
|
14
14
|
TOOL_TYPE["VIDEO_EDITOR"] = "VIDEO_EDITOR";
|
|
15
|
+
TOOL_TYPE["MUSIC"] = "MUSIC";
|
|
16
|
+
TOOL_TYPE["MUSIC_ACTION"] = "MUSIC_ACTION";
|
|
15
17
|
})(TOOL_TYPE || (exports.TOOL_TYPE = TOOL_TYPE = {}));
|
|
@@ -12,7 +12,6 @@ var CreateWriterDocumentCommand;
|
|
|
12
12
|
prompt: zod_1.z.string(),
|
|
13
13
|
numPages: zod_1.z.number(),
|
|
14
14
|
documentTypeId: zod_1.z.string().uuid(),
|
|
15
|
-
modelId: zod_1.z.string().uuid(),
|
|
16
15
|
});
|
|
17
16
|
CreateWriterDocumentCommand.ResponseSchema = (0, common_1.ICommandResponseSchema)(models_1.WriterDocumentSchema);
|
|
18
17
|
})(CreateWriterDocumentCommand || (exports.CreateWriterDocumentCommand = CreateWriterDocumentCommand = {}));
|
|
@@ -11,6 +11,7 @@ var GenerateWriterDocumentContentsCommand;
|
|
|
11
11
|
userId: zod_1.z.string().uuid().nullable().optional(),
|
|
12
12
|
unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
|
|
13
13
|
userBalance: zod_1.z.number(),
|
|
14
|
+
modelId: zod_1.z.string(),
|
|
14
15
|
});
|
|
15
16
|
GenerateWriterDocumentContentsCommand.ResponseSchema = (0, common_1.ICommandResponseSchema)(models_1.WriterDocumentSchema);
|
|
16
17
|
})(GenerateWriterDocumentContentsCommand || (exports.GenerateWriterDocumentContentsCommand = GenerateWriterDocumentContentsCommand = {}));
|
|
@@ -16,7 +16,7 @@ exports.WriterDocumentSchema = zod_1.z.object({
|
|
|
16
16
|
finalMd: zod_1.z.string().nullable(),
|
|
17
17
|
userId: zod_1.z.string().nullable(),
|
|
18
18
|
unregisteredUserId: zod_1.z.string().nullable(),
|
|
19
|
-
modelId: zod_1.z.string(),
|
|
19
|
+
modelId: zod_1.z.string().nullable(),
|
|
20
20
|
reaction: zod_1.z.nativeEnum(common_1.USER_REACTION).nullable(),
|
|
21
21
|
pages: zod_1.z.number(),
|
|
22
22
|
isDeleted: zod_1.z.boolean(),
|
package/common/errors/errors.ts
CHANGED
|
@@ -877,4 +877,171 @@ export const ERRORS = {
|
|
|
877
877
|
httpCode: 500,
|
|
878
878
|
},
|
|
879
879
|
},
|
|
880
|
+
MUSIC_EDITOR: {
|
|
881
|
+
AI_ERROR: {
|
|
882
|
+
code: 'MUSIC_EDITOR.AI_ERROR',
|
|
883
|
+
message: 'Произошла ошибка во время запроса к ИИ',
|
|
884
|
+
httpCode: 500,
|
|
885
|
+
},
|
|
886
|
+
INSUFFICIENT_BALANCE: {
|
|
887
|
+
code: 'MUSIC_EDITOR.INSUFFICIENT_BALANCE',
|
|
888
|
+
message: 'У пользователя недостаточно средств',
|
|
889
|
+
httpCode: 400,
|
|
890
|
+
},
|
|
891
|
+
DELETE_ERROR: {
|
|
892
|
+
code: 'MUSIC_EDITOR.DELETE_ERROR',
|
|
893
|
+
message: 'Произошла ошибка при удалении',
|
|
894
|
+
httpCode: 500,
|
|
895
|
+
},
|
|
896
|
+
MAX_PROMPT_LENGTH_EXCEEDED: {
|
|
897
|
+
code: 'MUSIC_EDITOR.MAX_PROMPT_LENGTH_EXCEEDED',
|
|
898
|
+
message: 'Превышена максимальная длина запроса',
|
|
899
|
+
httpCode: 400,
|
|
900
|
+
},
|
|
901
|
+
MAX_DURATION_EXCEEDED: {
|
|
902
|
+
code: 'MUSIC_EDITOR.MAX_DURATION_EXCEEDED',
|
|
903
|
+
message: 'Превышена максимальная длительность музыки',
|
|
904
|
+
httpCode: 400,
|
|
905
|
+
},
|
|
906
|
+
},
|
|
907
|
+
MUSIC_EDITOR_JOB: {
|
|
908
|
+
SAVE_ERROR: {
|
|
909
|
+
code: 'MUSIC_EDITOR_JOB.SAVE_ERROR',
|
|
910
|
+
message: 'Произошла ошибка при сохранении задания на редактирование музыки',
|
|
911
|
+
httpCode: 500,
|
|
912
|
+
},
|
|
913
|
+
FIND_ERROR: {
|
|
914
|
+
code: 'MUSIC_EDITOR_JOB.FIND_ERROR',
|
|
915
|
+
message: 'Произошла ошибка при поиске задания на редактирование музыки',
|
|
916
|
+
httpCode: 500,
|
|
917
|
+
},
|
|
918
|
+
NOT_FOUND: {
|
|
919
|
+
code: 'MUSIC_EDITOR_JOB.NOT_FOUND',
|
|
920
|
+
message: 'Задание на редактирование музыки не найдено',
|
|
921
|
+
httpCode: 404,
|
|
922
|
+
},
|
|
923
|
+
NOT_AN_OWNER: {
|
|
924
|
+
code: 'MUSIC_EDITOR_JOB.NOT_AN_OWNER',
|
|
925
|
+
message: 'Пользователь не является владельцем задания на редактирование музыки',
|
|
926
|
+
httpCode: 403,
|
|
927
|
+
},
|
|
928
|
+
NOT_IN_FAILED_STATE_TO_RETRY: {
|
|
929
|
+
code: 'MUSIC_EDITOR_JOB.NOT_IN_FAILED_STATE_TO_RETRY',
|
|
930
|
+
message:
|
|
931
|
+
'Задание на редактирование музыки не в состоянии "failed". Невозможно повторить',
|
|
932
|
+
httpCode: 400,
|
|
933
|
+
},
|
|
934
|
+
DELETE_ERROR: {
|
|
935
|
+
code: 'MUSIC_EDITOR_JOB.DELETE_ERROR',
|
|
936
|
+
message: 'Произошла ошибка при удалении задания на редактирование музыки',
|
|
937
|
+
httpCode: 500,
|
|
938
|
+
},
|
|
939
|
+
},
|
|
940
|
+
MUSIC: {
|
|
941
|
+
AI_ERROR: {
|
|
942
|
+
code: 'MUSIC.AI_ERROR',
|
|
943
|
+
message: 'Произошла ошибка во время запроса к ИИ',
|
|
944
|
+
httpCode: 500,
|
|
945
|
+
},
|
|
946
|
+
INSUFFICIENT_BALANCE: {
|
|
947
|
+
code: 'MUSIC.INSUFFICIENT_BALANCE',
|
|
948
|
+
message: 'У пользователя недостаточно средств',
|
|
949
|
+
httpCode: 400,
|
|
950
|
+
},
|
|
951
|
+
INVALID_PARAMS: {
|
|
952
|
+
code: 'MUSIC.INVALID_PARAMS',
|
|
953
|
+
message: 'Некорректные параметры музыки',
|
|
954
|
+
httpCode: 400,
|
|
955
|
+
},
|
|
956
|
+
DELETE_ERROR: {
|
|
957
|
+
code: 'MUSIC.DELETE_ERROR',
|
|
958
|
+
message: 'Произошла ошибка при удалении генерации музыки',
|
|
959
|
+
httpCode: 500,
|
|
960
|
+
},
|
|
961
|
+
INVALID_GENDER: {
|
|
962
|
+
code: 'MUSIC.INVALID_GENDER',
|
|
963
|
+
message: 'Некорректный выбор голоса вокала',
|
|
964
|
+
httpCode: 400,
|
|
965
|
+
},
|
|
966
|
+
MAX_PROMPT_LENGTH_EXCEEDED: {
|
|
967
|
+
code: 'MUSIC.MAX_PROMPT_LENGTH_EXCEEDED',
|
|
968
|
+
message: 'Превышена максимальная длина запроса',
|
|
969
|
+
httpCode: 400,
|
|
970
|
+
},
|
|
971
|
+
SUNO_CONTENT_POLICY: {
|
|
972
|
+
code: 'MUSIC.SUNO_CONTENT_POLICY',
|
|
973
|
+
message:
|
|
974
|
+
'Запрос на создание музыки был отклонен, т.к. он не соответствует требованиям политики безопасности Suno.',
|
|
975
|
+
httpCode: 400,
|
|
976
|
+
},
|
|
977
|
+
GENERATE_LYRICS_ERROR: {
|
|
978
|
+
code: 'MUSIC.GENERATE_LYRICS_ERROR',
|
|
979
|
+
message: 'Произошла ошибка при генерации текста музыки',
|
|
980
|
+
httpCode: 500,
|
|
981
|
+
},
|
|
982
|
+
CONVERT_TO_WAV_ERROR: {
|
|
983
|
+
code: 'MUSIC.CONVERT_TO_WAV_ERROR',
|
|
984
|
+
message: 'Произошла ошибка при конвертации mp3 в wav',
|
|
985
|
+
httpCode: 500,
|
|
986
|
+
},
|
|
987
|
+
POLL_TIMEOUT: {
|
|
988
|
+
code: 'MUSIC.POLL_TIMEOUT',
|
|
989
|
+
message: 'Превышено время ожидания генерации музыки',
|
|
990
|
+
httpCode: 500,
|
|
991
|
+
},
|
|
992
|
+
},
|
|
993
|
+
MUSIC_MODEL: {
|
|
994
|
+
SAVE_ERROR: {
|
|
995
|
+
code: 'MUSIC_MODEL.SAVE_ERROR',
|
|
996
|
+
message: 'Произошла ошибка при сохранении модели для генерации музыки',
|
|
997
|
+
httpCode: 500,
|
|
998
|
+
},
|
|
999
|
+
FIND_ERROR: {
|
|
1000
|
+
code: 'MUSIC_MODEL.FIND_ERROR',
|
|
1001
|
+
message: 'Произошла ошибка при поиске модели для генерации музыки',
|
|
1002
|
+
httpCode: 500,
|
|
1003
|
+
},
|
|
1004
|
+
NOT_FOUND: {
|
|
1005
|
+
code: 'MUSIC_MODEL.NOT_FOUND',
|
|
1006
|
+
message: 'Модель для генерации музыки не найдена',
|
|
1007
|
+
httpCode: 404,
|
|
1008
|
+
},
|
|
1009
|
+
MODEL_ARCHIVED: {
|
|
1010
|
+
code: 'MUSIC_MODEL.MODEL_ARCHIVED',
|
|
1011
|
+
message: 'Модель для генерации музыки архивирована',
|
|
1012
|
+
httpCode: 400,
|
|
1013
|
+
},
|
|
1014
|
+
},
|
|
1015
|
+
MUSIC_JOB: {
|
|
1016
|
+
SAVE_ERROR: {
|
|
1017
|
+
code: 'MUSIC_JOB.SAVE_ERROR',
|
|
1018
|
+
message: 'Произошла ошибка при сохранении задания на генерацию музыки',
|
|
1019
|
+
httpCode: 500,
|
|
1020
|
+
},
|
|
1021
|
+
FIND_ERROR: {
|
|
1022
|
+
code: 'MUSIC_JOB.FIND_ERROR',
|
|
1023
|
+
message: 'Произошла ошибка при поиске задания на генерацию музыки',
|
|
1024
|
+
httpCode: 500,
|
|
1025
|
+
},
|
|
1026
|
+
NOT_FOUND: {
|
|
1027
|
+
code: 'MUSIC_JOB.NOT_FOUND',
|
|
1028
|
+
message: 'Задание на генерацию музыки не найдено',
|
|
1029
|
+
httpCode: 404,
|
|
1030
|
+
},
|
|
1031
|
+
NOT_AN_OWNER: {
|
|
1032
|
+
code: 'MUSIC_JOB.NOT_AN_OWNER',
|
|
1033
|
+
message: 'Пользователь не является владельцем задания на генерацию музыки',
|
|
1034
|
+
httpCode: 403,
|
|
1035
|
+
},
|
|
1036
|
+
NOT_IN_FAILED_STATE_TO_RETRY: {
|
|
1037
|
+
code: 'MUSIC_JOB.NOT_IN_FAILED_STATE_TO_RETRY',
|
|
1038
|
+
message: 'Задание на генерацию музыки не в состоянии "failed". Невозможно повторить',
|
|
1039
|
+
httpCode: 400,
|
|
1040
|
+
},
|
|
1041
|
+
DELETE_ERROR: {
|
|
1042
|
+
code: 'MUSIC_JOB.DELETE_ERROR',
|
|
1043
|
+
message: 'Произошла ошибка при удалении задания на генерацию музыки',
|
|
1044
|
+
httpCode: 500,
|
|
1045
|
+
},
|
|
1046
|
+
},
|
|
880
1047
|
} as const;
|
package/index.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from './video';
|
|
|
8
8
|
export * from './writer';
|
|
9
9
|
export * from './image-editor';
|
|
10
10
|
export * from './video-editor';
|
|
11
|
+
export * from './music';
|
|
11
12
|
|
|
12
13
|
import * as common from './common';
|
|
13
14
|
import * as paraphrase from './paraphrase';
|
|
@@ -20,6 +21,7 @@ import * as video from './video';
|
|
|
20
21
|
import * as writer from './writer';
|
|
21
22
|
import * as imageEditor from './image-editor';
|
|
22
23
|
import * as videoEditor from './video-editor';
|
|
24
|
+
import * as music from './music';
|
|
23
25
|
|
|
24
26
|
export namespace ToolService {
|
|
25
27
|
export import Common = common;
|
|
@@ -33,4 +35,5 @@ export namespace ToolService {
|
|
|
33
35
|
export import Writer = writer;
|
|
34
36
|
export import ImageEditor = imageEditor;
|
|
35
37
|
export import VideoEditor = videoEditor;
|
|
38
|
+
export import Music = music;
|
|
36
39
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
|
|
4
|
+
export namespace ConvertToWavCommand {
|
|
5
|
+
export const RequestSchema = z.object({
|
|
6
|
+
userId: z.string().uuid().nullable().optional(),
|
|
7
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
8
|
+
taskId: z.string(),
|
|
9
|
+
audioId: z.string(),
|
|
10
|
+
});
|
|
11
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
12
|
+
|
|
13
|
+
export const ResponseSchema = ICommandResponseSchema(z.object({ url: z.string().url() }));
|
|
14
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
|
|
4
|
+
export namespace DeleteAllMusicJobsCommand {
|
|
5
|
+
export const RequestSchema = z.object({
|
|
6
|
+
userId: z.string().uuid().nullable().optional(),
|
|
7
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
8
|
+
});
|
|
9
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
10
|
+
|
|
11
|
+
export const ResponseSchema = ICommandResponseSchema(z.boolean());
|
|
12
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
|
|
4
|
+
export namespace DeleteMusicJobByUuidCommand {
|
|
5
|
+
export const RequestSchema = z.object({
|
|
6
|
+
userId: z.string().uuid().nullable().optional(),
|
|
7
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
8
|
+
uuid: z.string(),
|
|
9
|
+
});
|
|
10
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
11
|
+
|
|
12
|
+
export const ResponseSchema = ICommandResponseSchema(z.boolean());
|
|
13
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
|
|
4
|
+
export namespace GenerateLyricsCommand {
|
|
5
|
+
export const RequestSchema = z.object({
|
|
6
|
+
userId: z.string().uuid().nullable().optional(),
|
|
7
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
8
|
+
userBalance: z.number(),
|
|
9
|
+
prompt: z.string(),
|
|
10
|
+
});
|
|
11
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
12
|
+
|
|
13
|
+
export const ResponseSchema = ICommandResponseSchema(
|
|
14
|
+
z.object({
|
|
15
|
+
title: z.string(),
|
|
16
|
+
lyrics: z.string(),
|
|
17
|
+
}),
|
|
18
|
+
);
|
|
19
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicJobSchema } from '../models/music-job.schema';
|
|
4
|
+
import { MusicJobParamsSchema } from '../models';
|
|
5
|
+
|
|
6
|
+
export namespace GenerateMusicCommand {
|
|
7
|
+
export const RequestSchema = z.object({
|
|
8
|
+
userId: z.string().uuid().nullable().optional(),
|
|
9
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
10
|
+
userBalance: z.number(),
|
|
11
|
+
modelId: z.string(),
|
|
12
|
+
params: MusicJobParamsSchema,
|
|
13
|
+
});
|
|
14
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
15
|
+
|
|
16
|
+
export const ResponseSchema = ICommandResponseSchema(MusicJobSchema);
|
|
17
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './delete-music-job-by-uuid.command';
|
|
2
|
+
export * from './delete-all-music-jobs.command';
|
|
3
|
+
export * from './retry-music-job.command';
|
|
4
|
+
export * from './set-reaction-to-music-job.command';
|
|
5
|
+
export * from './generate-music.command';
|
|
6
|
+
export * from './update-music-job-title.command';
|
|
7
|
+
export * from './convert-to-wav.command';
|
|
8
|
+
export * from './generate-lyrics.command';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicJobSchema } from '../models/music-job.schema';
|
|
4
|
+
|
|
5
|
+
export namespace RetryMusicJobCommand {
|
|
6
|
+
export const RequestSchema = z.object({
|
|
7
|
+
uuid: z.string().uuid(),
|
|
8
|
+
userBalance: z.number(),
|
|
9
|
+
userId: z.string().uuid().nullable().optional(),
|
|
10
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
11
|
+
});
|
|
12
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
13
|
+
|
|
14
|
+
export const ResponseSchema = ICommandResponseSchema(MusicJobSchema);
|
|
15
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicJobSchema } from '../models/music-job.schema';
|
|
4
|
+
import { USER_REACTION } from '../../common';
|
|
5
|
+
|
|
6
|
+
export namespace SetReactionToMusicJobCommand {
|
|
7
|
+
export const RequestSchema = z.object({
|
|
8
|
+
userId: z.string().uuid().nullable().optional(),
|
|
9
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
10
|
+
uuid: z.string(),
|
|
11
|
+
reaction: z.nativeEnum(USER_REACTION).nullable(),
|
|
12
|
+
});
|
|
13
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
14
|
+
|
|
15
|
+
export const ResponseSchema = ICommandResponseSchema(MusicJobSchema);
|
|
16
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicJobSchema } from '../models/music-job.schema';
|
|
4
|
+
|
|
5
|
+
export namespace UpdateMusicJobTitleCommand {
|
|
6
|
+
export const RequestSchema = z.object({
|
|
7
|
+
uuid: z.string().uuid(),
|
|
8
|
+
userId: z.string().uuid().nullable().optional(),
|
|
9
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
10
|
+
title: z.string().min(1).max(40),
|
|
11
|
+
});
|
|
12
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
13
|
+
|
|
14
|
+
export const ResponseSchema = ICommandResponseSchema(MusicJobSchema);
|
|
15
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
16
|
+
}
|
package/music/index.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { JOB_STATUS } from '../../tools';
|
|
3
|
+
import { USER_REACTION } from '../../common';
|
|
4
|
+
import { MUSIC_VOCAL_GENDER } from '../enums';
|
|
5
|
+
import { MusicTrackSchema } from './music-track.schema';
|
|
6
|
+
import { SUNO_MODE_TYPE } from '../enums/suno-mode-type.enum';
|
|
7
|
+
|
|
8
|
+
export const MusicJobParamsSchema = z.discriminatedUnion('mode', [
|
|
9
|
+
z.object({
|
|
10
|
+
mode: z.literal(SUNO_MODE_TYPE.SIMPLE),
|
|
11
|
+
prompt: z.string().min(1).max(450),
|
|
12
|
+
style: z.string(),
|
|
13
|
+
vocalGender: z.nativeEnum(MUSIC_VOCAL_GENDER),
|
|
14
|
+
}),
|
|
15
|
+
z.object({
|
|
16
|
+
mode: z.literal(SUNO_MODE_TYPE.SIMPLE_INSTRUMENTAL),
|
|
17
|
+
prompt: z.string().min(1).max(450),
|
|
18
|
+
style: z.string(),
|
|
19
|
+
}),
|
|
20
|
+
z.object({
|
|
21
|
+
mode: z.literal(SUNO_MODE_TYPE.CUSTOM),
|
|
22
|
+
prompt: z.string().min(1).max(5000),
|
|
23
|
+
title: z.string().min(1).max(80),
|
|
24
|
+
style: z.string().min(1).max(1000),
|
|
25
|
+
vocalGender: z.nativeEnum(MUSIC_VOCAL_GENDER),
|
|
26
|
+
}),
|
|
27
|
+
z.object({
|
|
28
|
+
mode: z.literal(SUNO_MODE_TYPE.CUSTOM_INSTRUMENTAL),
|
|
29
|
+
title: z.string().min(1).max(80),
|
|
30
|
+
style: z.string().min(1).max(1000),
|
|
31
|
+
}),
|
|
32
|
+
]);
|
|
33
|
+
|
|
34
|
+
export type MusicJobParams = z.infer<typeof MusicJobParamsSchema>;
|
|
35
|
+
|
|
36
|
+
export const MusicJobSchema = z.object({
|
|
37
|
+
uuid: z.string(),
|
|
38
|
+
prompt: z.string(),
|
|
39
|
+
reaction: z.nativeEnum(USER_REACTION).nullable(),
|
|
40
|
+
externalId: z.string().nullable(),
|
|
41
|
+
title: z.string(),
|
|
42
|
+
status: z.nativeEnum(JOB_STATUS),
|
|
43
|
+
error: z.string().nullable(),
|
|
44
|
+
modelId: z.string(),
|
|
45
|
+
price: z.number(),
|
|
46
|
+
params: MusicJobParamsSchema,
|
|
47
|
+
tracks: z.array(MusicTrackSchema),
|
|
48
|
+
attempts: z.array(z.any()),
|
|
49
|
+
userId: z.string().nullable().optional(),
|
|
50
|
+
unregisteredUserId: z.string().nullable().optional(),
|
|
51
|
+
isDeleted: z.boolean(),
|
|
52
|
+
createdAt: z.date(),
|
|
53
|
+
completedAt: z.date().nullable().optional(),
|
|
54
|
+
updatedAt: z.date(),
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
export type MusicJob = z.infer<typeof MusicJobSchema>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { TOOL_MODEL_STATUS, IconVariantsSchema } from '../../common';
|
|
3
|
+
import { MUSIC_GENERATION_STRATEGY, MUSIC_VOCAL_GENDER } from '../enums';
|
|
4
|
+
import { SUNO_MODEL_TYPE } from '../enums';
|
|
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 type MusicModelParams = z.infer<typeof MusicModelParamsSchema>;
|
|
22
|
+
|
|
23
|
+
export const MusicModelSchema = z.object({
|
|
24
|
+
uuid: z.string(),
|
|
25
|
+
title: z.string(),
|
|
26
|
+
description: z.string(),
|
|
27
|
+
aiModel: z.nativeEnum(SUNO_MODEL_TYPE),
|
|
28
|
+
pricePerTrack: z.number(),
|
|
29
|
+
order: z.number(),
|
|
30
|
+
status: z.nativeEnum(TOOL_MODEL_STATUS),
|
|
31
|
+
icons: IconVariantsSchema,
|
|
32
|
+
strategy: z.nativeEnum(MUSIC_GENERATION_STRATEGY),
|
|
33
|
+
maxPromptLength: z.number(),
|
|
34
|
+
maxLyricsLength: z.number(),
|
|
35
|
+
params: MusicModelParamsSchema,
|
|
36
|
+
createdAt: z.date(),
|
|
37
|
+
updatedAt: z.date(),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
export type MusicModel = z.infer<typeof MusicModelSchema>;
|