@purpleschool/gptbot 0.8.70 → 0.8.71-stage-2
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/commands/chat/get-chats-config.command.js +1 -0
- package/build/commands/message/create-text-message.command.js +1 -1
- package/build/constants/errors/errors.js +98 -3
- package/build/constants/file/enums/file-usage-mode.enum.js +8 -0
- package/build/constants/file/enums/index.js +1 -0
- package/build/constants/index.js +1 -0
- package/build/constants/token-reservation/enums/index.js +17 -0
- package/build/constants/token-reservation/enums/token-reservation-status.enum.js +10 -0
- package/build/constants/token-reservation/index.js +17 -0
- package/build/constants/tool/enums/tool-type.enum.js +3 -0
- package/build/models/file-attachment.schema.js +18 -0
- package/build/models/index.js +1 -0
- package/commands/chat/get-chats-config.command.ts +1 -0
- package/commands/message/create-text-message.command.ts +2 -2
- package/constants/errors/errors.ts +98 -3
- package/constants/file/enums/file-usage-mode.enum.ts +4 -0
- package/constants/file/enums/index.ts +1 -0
- package/constants/index.ts +1 -0
- package/constants/token-reservation/enums/index.ts +1 -0
- package/constants/token-reservation/enums/token-reservation-status.enum.ts +6 -0
- package/constants/token-reservation/index.ts +1 -0
- package/constants/tool/enums/tool-type.enum.ts +3 -0
- package/models/file-attachment.schema.ts +24 -0
- package/models/index.ts +1 -0
- package/package.json +1 -1
|
@@ -8,6 +8,7 @@ var GetChatsConfigCommand;
|
|
|
8
8
|
data: zod_1.z.object({
|
|
9
9
|
maxFileAttachments: zod_1.z.number(),
|
|
10
10
|
imageAttachmentCost: zod_1.z.number(),
|
|
11
|
+
fileSearchAttachmentCost: zod_1.z.number(),
|
|
11
12
|
imagePollingInterval: zod_1.z.number(),
|
|
12
13
|
isWebSearchAvailable: zod_1.z.boolean(),
|
|
13
14
|
isAttachmentAvailable: zod_1.z.boolean(),
|
|
@@ -8,7 +8,7 @@ var CreateTextMessageCommand;
|
|
|
8
8
|
(function (CreateTextMessageCommand) {
|
|
9
9
|
CreateTextMessageCommand.RequestSchema = zod_1.z.object({
|
|
10
10
|
text: zod_1.z.string(),
|
|
11
|
-
files: zod_1.z.array(
|
|
11
|
+
files: zod_1.z.array(models_1.FileAttachmentSchema).optional().default([]),
|
|
12
12
|
features: zod_1.z.array(zod_1.z.nativeEnum(constants_1.AI_MODEL_FEATURE)).optional().default([]),
|
|
13
13
|
});
|
|
14
14
|
CreateTextMessageCommand.RequestParamSchema = models_1.ChatSchema.pick({
|
|
@@ -2637,19 +2637,114 @@ exports.ERRORS = {
|
|
|
2637
2637
|
message: 'Произошла ошибка при получении пользователя',
|
|
2638
2638
|
httpCode: 500,
|
|
2639
2639
|
},
|
|
2640
|
-
|
|
2640
|
+
FILE_CONTENT_EXCEEDS_CONTEXT_LIMIT: {
|
|
2641
2641
|
code: 'A538',
|
|
2642
|
+
message: 'Размер файла превышает лимит контекста модели',
|
|
2643
|
+
httpCode: 400,
|
|
2644
|
+
},
|
|
2645
|
+
IMAGE_GENERATION_MODEL_FIND_ERROR: {
|
|
2646
|
+
code: 'A539',
|
|
2642
2647
|
message: 'Произошла ошибка при получении модели для генерации изображений',
|
|
2643
2648
|
httpCode: 500,
|
|
2644
2649
|
},
|
|
2645
2650
|
COMMUNITY_POST_TRACK_INDEX_REQUIRED: {
|
|
2646
|
-
code: '
|
|
2651
|
+
code: 'A540',
|
|
2647
2652
|
message: 'Индекс трека обязателен для музыкального поста',
|
|
2648
2653
|
httpCode: 400,
|
|
2649
2654
|
},
|
|
2650
2655
|
COMMUNITY_POST_TRACK_INDEX_OUT_OF_RANGE: {
|
|
2651
|
-
code: '
|
|
2656
|
+
code: 'A541',
|
|
2652
2657
|
message: 'Индекс трека выходит за пределы допустимого диапазона',
|
|
2653
2658
|
httpCode: 400,
|
|
2654
2659
|
},
|
|
2660
|
+
TOKEN_RESERVATION_CREATE_ERROR: {
|
|
2661
|
+
code: 'A536',
|
|
2662
|
+
message: 'Произошла ошибка при создании записи об удержании токенов',
|
|
2663
|
+
httpCode: 500,
|
|
2664
|
+
},
|
|
2665
|
+
TOKEN_RESERVATION_NOT_FOUND: {
|
|
2666
|
+
code: 'A537',
|
|
2667
|
+
message: 'Запись об удержании токенов не найдена',
|
|
2668
|
+
httpCode: 404,
|
|
2669
|
+
},
|
|
2670
|
+
TOKEN_RESERVATION_COMMIT_ERROR: {
|
|
2671
|
+
code: 'A538',
|
|
2672
|
+
message: 'Произошла ошибка при подтверждении записи об удержании токенов',
|
|
2673
|
+
httpCode: 500,
|
|
2674
|
+
},
|
|
2675
|
+
TOKEN_RESERVATION_RELEASE_ERROR: {
|
|
2676
|
+
code: 'A539',
|
|
2677
|
+
message: 'Произошла ошибка при освобождении записи об удержании токенов',
|
|
2678
|
+
httpCode: 500,
|
|
2679
|
+
},
|
|
2680
|
+
TOKEN_RESERVATION_INSUFFICIENT_BALANCE: {
|
|
2681
|
+
code: 'A540',
|
|
2682
|
+
message: 'Недостаточно токенов для выполнения операции',
|
|
2683
|
+
httpCode: 400,
|
|
2684
|
+
},
|
|
2685
|
+
TOKEN_RESERVATION_INVALID_STATUS: {
|
|
2686
|
+
code: 'A541',
|
|
2687
|
+
message: 'Запись об удержании токенов находится в недопустимом статусе',
|
|
2688
|
+
httpCode: 400,
|
|
2689
|
+
},
|
|
2690
|
+
MUSIC_PRICE_ERROR: {
|
|
2691
|
+
code: 'A542',
|
|
2692
|
+
message: 'Произошла ошибка при получении цены для генерации музыки',
|
|
2693
|
+
httpCode: 500,
|
|
2694
|
+
},
|
|
2695
|
+
IMAGE_GENERATION_PRICE_ERROR: {
|
|
2696
|
+
code: 'A543',
|
|
2697
|
+
message: 'Произошла ошибка при получении цены для генерации изображения',
|
|
2698
|
+
httpCode: 500,
|
|
2699
|
+
},
|
|
2700
|
+
IMAGE_EDITOR_PRICE_ERROR: {
|
|
2701
|
+
code: 'A544',
|
|
2702
|
+
message: 'Произошла ошибка при получении цены для редактирования изображения',
|
|
2703
|
+
httpCode: 500,
|
|
2704
|
+
},
|
|
2705
|
+
STT_PRICE_ERROR: {
|
|
2706
|
+
code: 'A545',
|
|
2707
|
+
message: 'Произошла ошибка при получении цены для транскрибации аудио',
|
|
2708
|
+
httpCode: 500,
|
|
2709
|
+
},
|
|
2710
|
+
TTS_PRICE_ERROR: {
|
|
2711
|
+
code: 'A546',
|
|
2712
|
+
message: 'Произошла ошибка при получении цены для синтеза речи',
|
|
2713
|
+
httpCode: 500,
|
|
2714
|
+
},
|
|
2715
|
+
VIDEO_PRICE_ERROR: {
|
|
2716
|
+
code: 'A547',
|
|
2717
|
+
message: 'Произошла ошибка при получении цены для генерации видео',
|
|
2718
|
+
httpCode: 500,
|
|
2719
|
+
},
|
|
2720
|
+
VIDEO_EDITOR_PRICE_ERROR: {
|
|
2721
|
+
code: 'A548',
|
|
2722
|
+
message: 'Произошла ошибка при получении цены для редактирования видео',
|
|
2723
|
+
httpCode: 500,
|
|
2724
|
+
},
|
|
2725
|
+
PARAPHRASE_PRICE_ERROR: {
|
|
2726
|
+
code: 'A549',
|
|
2727
|
+
message: 'Произошла ошибка при получении цены для парафразирования',
|
|
2728
|
+
httpCode: 500,
|
|
2729
|
+
},
|
|
2730
|
+
PRESENTATION_SLIDES_GENERATION_PRICE_ERROR: {
|
|
2731
|
+
code: 'A550',
|
|
2732
|
+
message: 'Произошла ошибка при получении цены для генерации слайдов презентации',
|
|
2733
|
+
httpCode: 500,
|
|
2734
|
+
},
|
|
2735
|
+
WRITER_CONTENT_GENERATION_PRICE_ERROR: {
|
|
2736
|
+
code: 'A551',
|
|
2737
|
+
message: 'Произошла ошибка при получении цены для генерации текста',
|
|
2738
|
+
httpCode: 500,
|
|
2739
|
+
},
|
|
2740
|
+
COMMUNITY_POST_EXISTANCE_CHECK_ERROR: {
|
|
2741
|
+
code: 'A561',
|
|
2742
|
+
message: 'Произошла ошибка при проверке существования поста.',
|
|
2743
|
+
httpCode: 500,
|
|
2744
|
+
},
|
|
2745
|
+
COMMUNITY_POST_ALREADY_EXISTS_ERROR: {
|
|
2746
|
+
code: 'A562',
|
|
2747
|
+
message: 'Данная работа уже опубликована в сообществе.',
|
|
2748
|
+
httpCode: 400,
|
|
2749
|
+
},
|
|
2655
2750
|
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FILE_USAGE_MODE = void 0;
|
|
4
|
+
var FILE_USAGE_MODE;
|
|
5
|
+
(function (FILE_USAGE_MODE) {
|
|
6
|
+
FILE_USAGE_MODE["SEARCH"] = "search";
|
|
7
|
+
FILE_USAGE_MODE["CONTEXT"] = "context";
|
|
8
|
+
})(FILE_USAGE_MODE || (exports.FILE_USAGE_MODE = FILE_USAGE_MODE = {}));
|
package/build/constants/index.js
CHANGED
|
@@ -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("./token-reservation-status.enum"), exports);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TOKEN_RESERVATION_STATUS = void 0;
|
|
4
|
+
var TOKEN_RESERVATION_STATUS;
|
|
5
|
+
(function (TOKEN_RESERVATION_STATUS) {
|
|
6
|
+
TOKEN_RESERVATION_STATUS["PENDING"] = "pending";
|
|
7
|
+
TOKEN_RESERVATION_STATUS["COMMITTED"] = "committed";
|
|
8
|
+
TOKEN_RESERVATION_STATUS["RELEASED"] = "released";
|
|
9
|
+
TOKEN_RESERVATION_STATUS["EXPIRED"] = "expired";
|
|
10
|
+
})(TOKEN_RESERVATION_STATUS || (exports.TOKEN_RESERVATION_STATUS = TOKEN_RESERVATION_STATUS = {}));
|
|
@@ -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);
|
|
@@ -6,4 +6,7 @@ var TOOL_TYPE;
|
|
|
6
6
|
TOOL_TYPE["PARAPHRASE"] = "paraphrase";
|
|
7
7
|
TOOL_TYPE["TTS"] = "tts";
|
|
8
8
|
TOOL_TYPE["STT"] = "stt";
|
|
9
|
+
TOOL_TYPE["IMAGE_GENERATION"] = "image_generation";
|
|
10
|
+
TOOL_TYPE["IMAGE_EDITOR"] = "image_editor";
|
|
11
|
+
TOOL_TYPE["MUSIC"] = "music";
|
|
9
12
|
})(TOOL_TYPE || (exports.TOOL_TYPE = TOOL_TYPE = {}));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileAttachmentSchema = exports.ImageFileAttachmentSchema = exports.TextFileAttachmentSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
exports.TextFileAttachmentSchema = zod_1.z.object({
|
|
7
|
+
fileId: zod_1.z.string().uuid(),
|
|
8
|
+
type: zod_1.z.enum([constants_1.FILE_TYPE.TEXT, constants_1.FILE_TYPE.DOCUMENT]),
|
|
9
|
+
usageMode: zod_1.z.nativeEnum(constants_1.FILE_USAGE_MODE),
|
|
10
|
+
});
|
|
11
|
+
exports.ImageFileAttachmentSchema = zod_1.z.object({
|
|
12
|
+
fileId: zod_1.z.string().uuid(),
|
|
13
|
+
type: zod_1.z.literal(constants_1.FILE_TYPE.IMAGE),
|
|
14
|
+
});
|
|
15
|
+
exports.FileAttachmentSchema = zod_1.z.discriminatedUnion('type', [
|
|
16
|
+
exports.TextFileAttachmentSchema,
|
|
17
|
+
exports.ImageFileAttachmentSchema,
|
|
18
|
+
]);
|
package/build/models/index.js
CHANGED
|
@@ -28,6 +28,7 @@ __exportStar(require("./course.schema"), exports);
|
|
|
28
28
|
__exportStar(require("./date.schema"), exports);
|
|
29
29
|
__exportStar(require("./feedback.schema"), exports);
|
|
30
30
|
__exportStar(require("./file.schema"), exports);
|
|
31
|
+
__exportStar(require("./file-attachment.schema"), exports);
|
|
31
32
|
__exportStar(require("./key-value.schema"), exports);
|
|
32
33
|
__exportStar(require("./form-submission.schema"), exports);
|
|
33
34
|
__exportStar(require("./icon-variants.schema"), exports);
|
|
@@ -5,6 +5,7 @@ export namespace GetChatsConfigCommand {
|
|
|
5
5
|
data: z.object({
|
|
6
6
|
maxFileAttachments: z.number(),
|
|
7
7
|
imageAttachmentCost: z.number(),
|
|
8
|
+
fileSearchAttachmentCost: z.number(),
|
|
8
9
|
imagePollingInterval: z.number(),
|
|
9
10
|
isWebSearchAvailable: z.boolean(),
|
|
10
11
|
isAttachmentAvailable: z.boolean(),
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AI_MODEL_FEATURE } from '../../constants';
|
|
2
|
-
import { ChatSchema, MessageSchema } from '../../models';
|
|
2
|
+
import { ChatSchema, FileAttachmentSchema, MessageSchema } from '../../models';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
|
|
5
5
|
export namespace CreateTextMessageCommand {
|
|
6
6
|
export const RequestSchema = z.object({
|
|
7
7
|
text: z.string(),
|
|
8
|
-
files: z.array(
|
|
8
|
+
files: z.array(FileAttachmentSchema).optional().default([]),
|
|
9
9
|
features: z.array(z.nativeEnum(AI_MODEL_FEATURE)).optional().default([]),
|
|
10
10
|
});
|
|
11
11
|
|
|
@@ -2645,19 +2645,114 @@ export const ERRORS = {
|
|
|
2645
2645
|
message: 'Произошла ошибка при получении пользователя',
|
|
2646
2646
|
httpCode: 500,
|
|
2647
2647
|
},
|
|
2648
|
-
|
|
2648
|
+
FILE_CONTENT_EXCEEDS_CONTEXT_LIMIT: {
|
|
2649
2649
|
code: 'A538',
|
|
2650
|
+
message: 'Размер файла превышает лимит контекста модели',
|
|
2651
|
+
httpCode: 400,
|
|
2652
|
+
},
|
|
2653
|
+
IMAGE_GENERATION_MODEL_FIND_ERROR: {
|
|
2654
|
+
code: 'A539',
|
|
2650
2655
|
message: 'Произошла ошибка при получении модели для генерации изображений',
|
|
2651
2656
|
httpCode: 500,
|
|
2652
2657
|
},
|
|
2653
2658
|
COMMUNITY_POST_TRACK_INDEX_REQUIRED: {
|
|
2654
|
-
code: '
|
|
2659
|
+
code: 'A540',
|
|
2655
2660
|
message: 'Индекс трека обязателен для музыкального поста',
|
|
2656
2661
|
httpCode: 400,
|
|
2657
2662
|
},
|
|
2658
2663
|
COMMUNITY_POST_TRACK_INDEX_OUT_OF_RANGE: {
|
|
2659
|
-
code: '
|
|
2664
|
+
code: 'A541',
|
|
2660
2665
|
message: 'Индекс трека выходит за пределы допустимого диапазона',
|
|
2661
2666
|
httpCode: 400,
|
|
2662
2667
|
},
|
|
2668
|
+
TOKEN_RESERVATION_CREATE_ERROR: {
|
|
2669
|
+
code: 'A536',
|
|
2670
|
+
message: 'Произошла ошибка при создании записи об удержании токенов',
|
|
2671
|
+
httpCode: 500,
|
|
2672
|
+
},
|
|
2673
|
+
TOKEN_RESERVATION_NOT_FOUND: {
|
|
2674
|
+
code: 'A537',
|
|
2675
|
+
message: 'Запись об удержании токенов не найдена',
|
|
2676
|
+
httpCode: 404,
|
|
2677
|
+
},
|
|
2678
|
+
TOKEN_RESERVATION_COMMIT_ERROR: {
|
|
2679
|
+
code: 'A538',
|
|
2680
|
+
message: 'Произошла ошибка при подтверждении записи об удержании токенов',
|
|
2681
|
+
httpCode: 500,
|
|
2682
|
+
},
|
|
2683
|
+
TOKEN_RESERVATION_RELEASE_ERROR: {
|
|
2684
|
+
code: 'A539',
|
|
2685
|
+
message: 'Произошла ошибка при освобождении записи об удержании токенов',
|
|
2686
|
+
httpCode: 500,
|
|
2687
|
+
},
|
|
2688
|
+
TOKEN_RESERVATION_INSUFFICIENT_BALANCE: {
|
|
2689
|
+
code: 'A540',
|
|
2690
|
+
message: 'Недостаточно токенов для выполнения операции',
|
|
2691
|
+
httpCode: 400,
|
|
2692
|
+
},
|
|
2693
|
+
TOKEN_RESERVATION_INVALID_STATUS: {
|
|
2694
|
+
code: 'A541',
|
|
2695
|
+
message: 'Запись об удержании токенов находится в недопустимом статусе',
|
|
2696
|
+
httpCode: 400,
|
|
2697
|
+
},
|
|
2698
|
+
MUSIC_PRICE_ERROR: {
|
|
2699
|
+
code: 'A542',
|
|
2700
|
+
message: 'Произошла ошибка при получении цены для генерации музыки',
|
|
2701
|
+
httpCode: 500,
|
|
2702
|
+
},
|
|
2703
|
+
IMAGE_GENERATION_PRICE_ERROR: {
|
|
2704
|
+
code: 'A543',
|
|
2705
|
+
message: 'Произошла ошибка при получении цены для генерации изображения',
|
|
2706
|
+
httpCode: 500,
|
|
2707
|
+
},
|
|
2708
|
+
IMAGE_EDITOR_PRICE_ERROR: {
|
|
2709
|
+
code: 'A544',
|
|
2710
|
+
message: 'Произошла ошибка при получении цены для редактирования изображения',
|
|
2711
|
+
httpCode: 500,
|
|
2712
|
+
},
|
|
2713
|
+
STT_PRICE_ERROR: {
|
|
2714
|
+
code: 'A545',
|
|
2715
|
+
message: 'Произошла ошибка при получении цены для транскрибации аудио',
|
|
2716
|
+
httpCode: 500,
|
|
2717
|
+
},
|
|
2718
|
+
TTS_PRICE_ERROR: {
|
|
2719
|
+
code: 'A546',
|
|
2720
|
+
message: 'Произошла ошибка при получении цены для синтеза речи',
|
|
2721
|
+
httpCode: 500,
|
|
2722
|
+
},
|
|
2723
|
+
VIDEO_PRICE_ERROR: {
|
|
2724
|
+
code: 'A547',
|
|
2725
|
+
message: 'Произошла ошибка при получении цены для генерации видео',
|
|
2726
|
+
httpCode: 500,
|
|
2727
|
+
},
|
|
2728
|
+
VIDEO_EDITOR_PRICE_ERROR: {
|
|
2729
|
+
code: 'A548',
|
|
2730
|
+
message: 'Произошла ошибка при получении цены для редактирования видео',
|
|
2731
|
+
httpCode: 500,
|
|
2732
|
+
},
|
|
2733
|
+
PARAPHRASE_PRICE_ERROR: {
|
|
2734
|
+
code: 'A549',
|
|
2735
|
+
message: 'Произошла ошибка при получении цены для парафразирования',
|
|
2736
|
+
httpCode: 500,
|
|
2737
|
+
},
|
|
2738
|
+
PRESENTATION_SLIDES_GENERATION_PRICE_ERROR: {
|
|
2739
|
+
code: 'A550',
|
|
2740
|
+
message: 'Произошла ошибка при получении цены для генерации слайдов презентации',
|
|
2741
|
+
httpCode: 500,
|
|
2742
|
+
},
|
|
2743
|
+
WRITER_CONTENT_GENERATION_PRICE_ERROR: {
|
|
2744
|
+
code: 'A551',
|
|
2745
|
+
message: 'Произошла ошибка при получении цены для генерации текста',
|
|
2746
|
+
httpCode: 500,
|
|
2747
|
+
},
|
|
2748
|
+
COMMUNITY_POST_EXISTANCE_CHECK_ERROR: {
|
|
2749
|
+
code: 'A561',
|
|
2750
|
+
message: 'Произошла ошибка при проверке существования поста.',
|
|
2751
|
+
httpCode: 500,
|
|
2752
|
+
},
|
|
2753
|
+
COMMUNITY_POST_ALREADY_EXISTS_ERROR: {
|
|
2754
|
+
code: 'A562',
|
|
2755
|
+
message: 'Данная работа уже опубликована в сообществе.',
|
|
2756
|
+
httpCode: 400,
|
|
2757
|
+
},
|
|
2663
2758
|
};
|
package/constants/index.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './token-reservation-status.enum';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './enums';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { FILE_TYPE, FILE_USAGE_MODE } from '../constants';
|
|
3
|
+
|
|
4
|
+
export const TextFileAttachmentSchema = z.object({
|
|
5
|
+
fileId: z.string().uuid(),
|
|
6
|
+
type: z.enum([FILE_TYPE.TEXT, FILE_TYPE.DOCUMENT]),
|
|
7
|
+
usageMode: z.nativeEnum(FILE_USAGE_MODE),
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export type TextFileAttachment = z.infer<typeof TextFileAttachmentSchema>;
|
|
11
|
+
|
|
12
|
+
export const ImageFileAttachmentSchema = z.object({
|
|
13
|
+
fileId: z.string().uuid(),
|
|
14
|
+
type: z.literal(FILE_TYPE.IMAGE),
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export type ImageFileAttachment = z.infer<typeof ImageFileAttachmentSchema>;
|
|
18
|
+
|
|
19
|
+
export const FileAttachmentSchema = z.discriminatedUnion('type', [
|
|
20
|
+
TextFileAttachmentSchema,
|
|
21
|
+
ImageFileAttachmentSchema,
|
|
22
|
+
]);
|
|
23
|
+
|
|
24
|
+
export type FileAttachment = z.infer<typeof FileAttachmentSchema>;
|
package/models/index.ts
CHANGED
|
@@ -12,6 +12,7 @@ export * from './course.schema';
|
|
|
12
12
|
export * from './date.schema';
|
|
13
13
|
export * from './feedback.schema';
|
|
14
14
|
export * from './file.schema';
|
|
15
|
+
export * from './file-attachment.schema';
|
|
15
16
|
export * from './key-value.schema';
|
|
16
17
|
export * from './form-submission.schema';
|
|
17
18
|
export * from './icon-variants.schema';
|