@purpleschool/gptbot 0.9.18 → 0.9.19-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.
Files changed (35) hide show
  1. package/api/controllers/http/subscription.ts +1 -1
  2. package/api/routes.ts +1 -2
  3. package/build/api/controllers/http/subscription.js +1 -1
  4. package/build/api/routes.js +1 -2
  5. package/build/commands/cabinet/get-user-statistics-by-month.command.js +4 -1
  6. package/build/commands/chat/create-chat.command.js +0 -1
  7. package/build/commands/chat/get-last-active-chat-command.js +0 -1
  8. package/build/commands/message/create-text-message.command.js +1 -0
  9. package/build/commands/subscription/index.js +0 -1
  10. package/build/constants/ai-model/enums/ai-model-content-type.enum.js +5 -4
  11. package/build/constants/model/enums/unified-model-content-type.enum.js +0 -1
  12. package/build/constants/subscription/enums/subscription-feature-type.enum.js +2 -1
  13. package/build/models/ai-model.schema.js +1 -1
  14. package/build/models/chat.schema.js +1 -1
  15. package/build/models/message.schema.js +1 -0
  16. package/build/models/prompt.schema.js +0 -2
  17. package/build/models/subscription-feature.schema.js +11 -2
  18. package/commands/cabinet/get-user-statistics-by-month.command.ts +4 -2
  19. package/commands/chat/create-chat.command.ts +0 -1
  20. package/commands/chat/get-last-active-chat-command.ts +0 -1
  21. package/commands/message/create-text-message.command.ts +1 -0
  22. package/commands/subscription/index.ts +0 -1
  23. package/constants/ai-model/enums/ai-model-content-type.enum.ts +4 -7
  24. package/constants/cabinet/enums/index.ts +1 -1
  25. package/constants/cabinet/enums/statistics-metric-type.enum.ts +3 -3
  26. package/constants/model/enums/unified-model-content-type.enum.ts +0 -1
  27. package/constants/subscription/enums/subscription-feature-type.enum.ts +2 -1
  28. package/models/ai-model.schema.ts +2 -7
  29. package/models/chat.schema.ts +1 -1
  30. package/models/message.schema.ts +1 -0
  31. package/models/prompt.schema.ts +0 -2
  32. package/models/subscription-feature.schema.ts +12 -1
  33. package/package.json +1 -1
  34. package/build/commands/subscription/create-custom-subscription-plan.command.js +0 -24
  35. package/commands/subscription/create-custom-subscription-plan.command.ts +0 -26
@@ -5,6 +5,7 @@ export const SUBSCRIPTION_PUBLIC_CONTROLLER = 'subscription/public' as const;
5
5
  export const SUBSCRIPTION_ROUTES = {
6
6
  FIND_BY_UUID: 'by/uuid',
7
7
  GET_ALL: 'all',
8
+ CUSTOM_ALL: 'custom/all',
8
9
  BUY: (uuid: string) => `${uuid}/buy`,
9
10
  FAST_BUY: 'fast/buy',
10
11
  GET_MY: 'my',
@@ -14,7 +15,6 @@ export const SUBSCRIPTION_ROUTES = {
14
15
  GET_AVAILABLE_DOWNGRADES: 'available-downgrades',
15
16
  UPGRADE: 'upgrade',
16
17
  DOWNGRADE: 'downgrade',
17
- CREATE_CUSTOM: 'custom',
18
18
  FREE: 'free',
19
19
  SUMMARY: 'summary',
20
20
  RECOVER_PAST_DUE: (uuid: string) => `${uuid}/recover-past-due`,
package/api/routes.ts CHANGED
@@ -151,12 +151,12 @@ export const REST_API = {
151
151
  },
152
152
  SUBSCRIPTION_PUBLIC: {
153
153
  GET: `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.GET_ALL}`,
154
+ CUSTOM_ALL: `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.CUSTOM_ALL}`,
154
155
  GET_BY_UUID: (uuid: string): string =>
155
156
  `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.FIND_BY_UUID}/${uuid}`,
156
157
  FAST_BUY: (uuid: string) =>
157
158
  `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.FAST_BUY}/${uuid}`,
158
159
  FREE: `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.FREE}`,
159
- CREATE_CUSTOM: `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.CREATE_CUSTOM}`,
160
160
  },
161
161
  SUBSCRIPTION_PRIVATE: {
162
162
  GET: `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.GET_ALL}`,
@@ -176,7 +176,6 @@ export const REST_API = {
176
176
  `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${uuid}/${CONTROLLERS.SUBSCRIPTION_ROUTES.DOWNGRADE}`,
177
177
  GET_AVAILABLE_UPGRADES: `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.GET_AVAILABLE_UPGRADES}`,
178
178
  GET_AVAILABLE_DOWNGRADES: `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.GET_AVAILABLE_DOWNGRADES}`,
179
- CREATE_CUSTOM: `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.CREATE_CUSTOM}`,
180
179
  SUMMARY: `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.SUMMARY}`,
181
180
  RECOVER_PAST_DUE: (uuid: string) =>
182
181
  `${ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.RECOVER_PAST_DUE(uuid)}`,
@@ -6,6 +6,7 @@ exports.SUBSCRIPTION_PUBLIC_CONTROLLER = 'subscription/public';
6
6
  exports.SUBSCRIPTION_ROUTES = {
7
7
  FIND_BY_UUID: 'by/uuid',
8
8
  GET_ALL: 'all',
9
+ CUSTOM_ALL: 'custom/all',
9
10
  BUY: (uuid) => `${uuid}/buy`,
10
11
  FAST_BUY: 'fast/buy',
11
12
  GET_MY: 'my',
@@ -15,7 +16,6 @@ exports.SUBSCRIPTION_ROUTES = {
15
16
  GET_AVAILABLE_DOWNGRADES: 'available-downgrades',
16
17
  UPGRADE: 'upgrade',
17
18
  DOWNGRADE: 'downgrade',
18
- CREATE_CUSTOM: 'custom',
19
19
  FREE: 'free',
20
20
  SUMMARY: 'summary',
21
21
  RECOVER_PAST_DUE: (uuid) => `${uuid}/recover-past-due`,
@@ -159,10 +159,10 @@ exports.REST_API = {
159
159
  },
160
160
  SUBSCRIPTION_PUBLIC: {
161
161
  GET: `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.GET_ALL}`,
162
+ CUSTOM_ALL: `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.CUSTOM_ALL}`,
162
163
  GET_BY_UUID: (uuid) => `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.FIND_BY_UUID}/${uuid}`,
163
164
  FAST_BUY: (uuid) => `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.FAST_BUY}/${uuid}`,
164
165
  FREE: `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.FREE}`,
165
- CREATE_CUSTOM: `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PUBLIC_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.CREATE_CUSTOM}`,
166
166
  },
167
167
  SUBSCRIPTION_PRIVATE: {
168
168
  GET: `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.GET_ALL}`,
@@ -177,7 +177,6 @@ exports.REST_API = {
177
177
  DOWNGRADE: (uuid) => `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${uuid}/${CONTROLLERS.SUBSCRIPTION_ROUTES.DOWNGRADE}`,
178
178
  GET_AVAILABLE_UPGRADES: `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.GET_AVAILABLE_UPGRADES}`,
179
179
  GET_AVAILABLE_DOWNGRADES: `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.GET_AVAILABLE_DOWNGRADES}`,
180
- CREATE_CUSTOM: `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.CREATE_CUSTOM}`,
181
180
  SUMMARY: `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.SUMMARY}`,
182
181
  RECOVER_PAST_DUE: (uuid) => `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.RECOVER_PAST_DUE(uuid)}`,
183
182
  REFUND: (uuid) => `${exports.ROOT}/${CONTROLLERS.SUBSCRIPTION_PRIVATE_CONTROLLER}/${CONTROLLERS.SUBSCRIPTION_ROUTES.REFUND(uuid)}`,
@@ -7,7 +7,10 @@ var GetUserStatisticsByMonthCommand;
7
7
  (function (GetUserStatisticsByMonthCommand) {
8
8
  GetUserStatisticsByMonthCommand.RequestSchema = zod_1.z.object({
9
9
  origin: zod_1.z.nativeEnum(constants_1.JOB_REQUEST_ORIGIN).default(constants_1.JOB_REQUEST_ORIGIN.API).optional(),
10
- metric: zod_1.z.nativeEnum(constants_1.STATISTICS_METRIC_TYPE).default(constants_1.STATISTICS_METRIC_TYPE.REQUESTS).optional(),
10
+ metric: zod_1.z
11
+ .nativeEnum(constants_1.STATISTICS_METRIC_TYPE)
12
+ .default(constants_1.STATISTICS_METRIC_TYPE.REQUESTS)
13
+ .optional(),
11
14
  });
12
15
  GetUserStatisticsByMonthCommand.UserStatisticsByMonthResponseSchema = zod_1.z.object({
13
16
  month: zod_1.z.string(),
@@ -6,7 +6,6 @@ const zod_1 = require("zod");
6
6
  var CreateChatCommand;
7
7
  (function (CreateChatCommand) {
8
8
  CreateChatCommand.RequestSchema = models_1.ChatSchema.pick({
9
- aIModelId: true,
10
9
  categoryId: true,
11
10
  }).extend({
12
11
  folderId: zod_1.z.string().uuid().optional(),
@@ -7,7 +7,6 @@ var GetLastActiveChatCommand;
7
7
  (function (GetLastActiveChatCommand) {
8
8
  GetLastActiveChatCommand.RequestQuerySchema = models_1.ChatSchema.pick({
9
9
  categoryId: true,
10
- aIModelId: true,
11
10
  });
12
11
  GetLastActiveChatCommand.Response = zod_1.z.object({
13
12
  data: models_1.ChatWithMessagesSchema,
@@ -10,6 +10,7 @@ var CreateTextMessageCommand;
10
10
  text: zod_1.z.string(),
11
11
  files: zod_1.z.array(zod_1.z.string().uuid()).optional().default([]),
12
12
  features: zod_1.z.array(zod_1.z.nativeEnum(constants_1.AI_MODEL_FEATURE)).optional().default([]),
13
+ aiModelId: zod_1.z.string().uuid(),
13
14
  });
14
15
  CreateTextMessageCommand.RequestParamSchema = models_1.ChatSchema.pick({
15
16
  uuid: true,
@@ -16,7 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./buy-subscription.command"), exports);
18
18
  __exportStar(require("./cancel-subscription.command"), exports);
19
- __exportStar(require("./create-custom-subscription-plan.command"), exports);
20
19
  __exportStar(require("./create-subscription.command"), exports);
21
20
  __exportStar(require("./delete-subscription.command"), exports);
22
21
  __exportStar(require("./find-subscription.command"), exports);
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AI_MODEL_CONTENT_TYPE = void 0;
4
- exports.AI_MODEL_CONTENT_TYPE = {
5
- TEXT: 'TEXT',
6
- IMAGE: 'IMAGE',
7
- };
4
+ var AI_MODEL_CONTENT_TYPE;
5
+ (function (AI_MODEL_CONTENT_TYPE) {
6
+ AI_MODEL_CONTENT_TYPE["TEXT"] = "TEXT";
7
+ AI_MODEL_CONTENT_TYPE["IMAGE"] = "IMAGE";
8
+ })(AI_MODEL_CONTENT_TYPE || (exports.AI_MODEL_CONTENT_TYPE = AI_MODEL_CONTENT_TYPE = {}));
@@ -5,7 +5,6 @@ var UNIFIED_MODEL_CONTENT_TYPE;
5
5
  (function (UNIFIED_MODEL_CONTENT_TYPE) {
6
6
  // AI Model types
7
7
  UNIFIED_MODEL_CONTENT_TYPE["TEXT"] = "TEXT";
8
- UNIFIED_MODEL_CONTENT_TYPE["IMAGE"] = "IMAGE";
9
8
  // Tool types
10
9
  UNIFIED_MODEL_CONTENT_TYPE["IMAGE_EDITOR"] = "IMAGE_EDITOR";
11
10
  UNIFIED_MODEL_CONTENT_TYPE["TEXT_TO_SPEECH"] = "TEXT_TO_SPEECH";
@@ -11,6 +11,7 @@ var SUBSCRIPTION_FEATURE_TYPE;
11
11
  SUBSCRIPTION_FEATURE_TYPE["ADVANCED_TOOLS_ACCESS"] = "advanced_tools_access";
12
12
  SUBSCRIPTION_FEATURE_TYPE["STT_MODEL_ACCESS"] = "stt_model_access";
13
13
  SUBSCRIPTION_FEATURE_TYPE["TTS_MODEL_ACCESS"] = "tts_model_access";
14
+ SUBSCRIPTION_FEATURE_TYPE["IMAGE_GENERATION_ACCESS"] = "image_generation_access";
14
15
  SUBSCRIPTION_FEATURE_TYPE["IMAGE_GENERATION_QUOTA"] = "image_generation_quota";
15
16
  SUBSCRIPTION_FEATURE_TYPE["TTS_QUOTA"] = "tts_quota";
16
17
  SUBSCRIPTION_FEATURE_TYPE["STT_QUOTA"] = "stt_quota";
@@ -33,7 +34,7 @@ var SUBSCRIPTION_FEATURE_KIND;
33
34
  (function (SUBSCRIPTION_FEATURE_KIND) {
34
35
  SUBSCRIPTION_FEATURE_KIND["TEXT"] = "text";
35
36
  SUBSCRIPTION_FEATURE_KIND["AI_MODEL"] = "ai_model";
36
- SUBSCRIPTION_FEATURE_KIND["IMAGE"] = "image";
37
+ SUBSCRIPTION_FEATURE_KIND["IMAGE_GENERATION"] = "image_generation";
37
38
  SUBSCRIPTION_FEATURE_KIND["TTS"] = "tts";
38
39
  SUBSCRIPTION_FEATURE_KIND["STT"] = "stt";
39
40
  SUBSCRIPTION_FEATURE_KIND["PRESENTATIONS"] = "presentations";
@@ -15,7 +15,7 @@ exports.AiModelSchema = zod_1.z.object({
15
15
  order: zod_1.z.number(),
16
16
  canUse: zod_1.z.optional(zod_1.z.boolean()),
17
17
  status: zod_1.z.nativeEnum(constants_1.AI_MODEL_STATUS),
18
- contentType: zod_1.z.enum(Object.values(constants_1.AI_MODEL_CONTENT_TYPE)),
18
+ contentType: zod_1.z.nativeEnum(constants_1.AI_MODEL_CONTENT_TYPE),
19
19
  features: zod_1.z.array(zod_1.z.nativeEnum(constants_1.AI_MODEL_FEATURE)),
20
20
  iconVariants: zod_1.z.object({
21
21
  light: zod_1.z.object({
@@ -8,7 +8,7 @@ exports.ChatSchema = zod_1.z.object({
8
8
  userId: zod_1.z.nullable(zod_1.z.string().uuid()),
9
9
  unregisteredUserId: zod_1.z.nullable(zod_1.z.string().uuid()),
10
10
  categoryId: zod_1.z.string().uuid(),
11
- aIModelId: zod_1.z.string().uuid(),
11
+ aIModelId: zod_1.z.string().uuid().nullable(),
12
12
  title: zod_1.z.string(),
13
13
  chatStatus: zod_1.z.enum(Object.values(constants_1.CHAT_STATUS_ENUM)),
14
14
  folderId: zod_1.z.string().nullable(),
@@ -9,6 +9,7 @@ exports.MessageSchema = zod_1.z.object({
9
9
  text: zod_1.z.string().max(10000),
10
10
  chatId: zod_1.z.nullable(zod_1.z.string().uuid()),
11
11
  role: zod_1.z.string(),
12
+ aiModelId: zod_1.z.string().nullable(),
12
13
  tokenUsage: zod_1.z.number(),
13
14
  userReaction: zod_1.z.nativeEnum(constants_1.USER_REACTION).nullable(),
14
15
  files: zod_1.z.array(file_schema_1.FileSchema),
@@ -2,11 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PromptSchema = void 0;
4
4
  const zod_1 = require("zod");
5
- const constants_1 = require("../constants");
6
5
  exports.PromptSchema = zod_1.z.object({
7
6
  uuid: zod_1.z.string().uuid(),
8
7
  content: zod_1.z.string(),
9
- type: zod_1.z.nativeEnum(constants_1.AI_MODEL_CONTENT_TYPE),
10
8
  topicId: zod_1.z.string().uuid().nullable(),
11
9
  title: zod_1.z.string().nullable(),
12
10
  createdAt: zod_1.z.date(),
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubscriptionFeatureSchema = exports.InteriorDesignModelAccessFeatureSchema = exports.InteriorDesignQuotaFeatureSchema = exports.ImageEditorModelAccessFeatureSchema = exports.ImageEditorQuotaFeatureSchema = exports.WriterModelAccessFeatureSchema = exports.WriterQuotaFeatureSchema = exports.MusicModelAccessFeatureSchema = exports.MusicQuotaFeatureSchema = exports.PresentationQuotaFeatureSchema = exports.VideoModelAccessFeatureSchema = exports.VideoQuotaFeatureSchema = exports.STTQuotaFeatureSchema = exports.STTModelAccessFeatureSchema = exports.TTSQuotaFeatureSchema = exports.ImageGenerationQuotaFeatureSchema = exports.TtsModelAccessFeatureSchema = exports.AdvancedToolsAccessFeatureSchema = exports.WebSearchFeatureSchema = exports.ExtendedContextFeatureSchema = exports.MaxInputLengthFeatureSchema = exports.RequestsQuotaFeatureSchema = exports.AiModelAccessFeatureSchema = exports.CarryoverBalanceFeatureSchema = exports.TokensFeatureSchema = exports.SubscriptionFeatureBaseSchema = void 0;
3
+ exports.SubscriptionFeatureSchema = exports.InteriorDesignModelAccessFeatureSchema = exports.InteriorDesignQuotaFeatureSchema = exports.ImageEditorModelAccessFeatureSchema = exports.ImageEditorQuotaFeatureSchema = exports.WriterModelAccessFeatureSchema = exports.WriterQuotaFeatureSchema = exports.MusicModelAccessFeatureSchema = exports.MusicQuotaFeatureSchema = exports.PresentationQuotaFeatureSchema = exports.VideoModelAccessFeatureSchema = exports.VideoQuotaFeatureSchema = exports.STTQuotaFeatureSchema = exports.STTModelAccessFeatureSchema = exports.TTSQuotaFeatureSchema = exports.ImageGenerationQuotaFeatureSchema = exports.TtsModelAccessFeatureSchema = exports.AdvancedToolsAccessFeatureSchema = exports.WebSearchFeatureSchema = exports.ExtendedContextFeatureSchema = exports.MaxInputLengthFeatureSchema = exports.RequestsQuotaFeatureSchema = exports.ImageGenerationAccessFeatureSchema = exports.AiModelAccessFeatureSchema = exports.CarryoverBalanceFeatureSchema = exports.TokensFeatureSchema = exports.SubscriptionFeatureBaseSchema = void 0;
4
4
  const constants_1 = require("../constants");
5
5
  const zod_1 = require("zod");
6
6
  exports.SubscriptionFeatureBaseSchema = zod_1.z.object({
@@ -40,6 +40,14 @@ exports.AiModelAccessFeatureSchema = exports.SubscriptionFeatureBaseSchema.exten
40
40
  isAvailable: zod_1.z.boolean(),
41
41
  maxInputLength: zod_1.z.number(),
42
42
  });
43
+ exports.ImageGenerationAccessFeatureSchema = exports.SubscriptionFeatureBaseSchema.extend({
44
+ type: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_TYPE.IMAGE_GENERATION_ACCESS),
45
+ kind: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_KIND.IMAGE_GENERATION),
46
+ order: zod_1.z.number(),
47
+ modelId: zod_1.z.string(),
48
+ isAvailable: zod_1.z.boolean(),
49
+ maxInputLength: zod_1.z.number(),
50
+ });
43
51
  exports.RequestsQuotaFeatureSchema = exports.SubscriptionFeatureBaseSchema.extend({
44
52
  type: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_TYPE.TEXT_GENERATION_QUOTA),
45
53
  kind: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_KIND.TEXT),
@@ -74,7 +82,7 @@ exports.TtsModelAccessFeatureSchema = exports.SubscriptionFeatureBaseSchema.exte
74
82
  modelId: zod_1.z.string(),
75
83
  });
76
84
  exports.ImageGenerationQuotaFeatureSchema = exports.SubscriptionFeatureBaseSchema.extend({
77
- kind: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_KIND.IMAGE),
85
+ kind: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_KIND.IMAGE_GENERATION),
78
86
  type: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_TYPE.IMAGE_GENERATION_QUOTA),
79
87
  value: zod_1.z.number(),
80
88
  });
@@ -179,4 +187,5 @@ exports.SubscriptionFeatureSchema = zod_1.z.union([
179
187
  exports.ImageEditorModelAccessFeatureSchema,
180
188
  exports.InteriorDesignQuotaFeatureSchema,
181
189
  exports.InteriorDesignModelAccessFeatureSchema,
190
+ exports.ImageGenerationAccessFeatureSchema,
182
191
  ]);
@@ -2,10 +2,12 @@ import { z } from 'zod';
2
2
  import { JOB_REQUEST_ORIGIN, STATISTICS_METRIC_TYPE } from '../../constants';
3
3
 
4
4
  export namespace GetUserStatisticsByMonthCommand {
5
-
6
5
  export const RequestSchema = z.object({
7
6
  origin: z.nativeEnum(JOB_REQUEST_ORIGIN).default(JOB_REQUEST_ORIGIN.API).optional(),
8
- metric: z.nativeEnum(STATISTICS_METRIC_TYPE).default(STATISTICS_METRIC_TYPE.REQUESTS).optional(),
7
+ metric: z
8
+ .nativeEnum(STATISTICS_METRIC_TYPE)
9
+ .default(STATISTICS_METRIC_TYPE.REQUESTS)
10
+ .optional(),
9
11
  });
10
12
 
11
13
  export type Request = z.infer<typeof RequestSchema>;
@@ -3,7 +3,6 @@ import { z } from 'zod';
3
3
 
4
4
  export namespace CreateChatCommand {
5
5
  export const RequestSchema = ChatSchema.pick({
6
- aIModelId: true,
7
6
  categoryId: true,
8
7
  }).extend({
9
8
  folderId: z.string().uuid().optional(),
@@ -4,7 +4,6 @@ import { z } from 'zod';
4
4
  export namespace GetLastActiveChatCommand {
5
5
  export const RequestQuerySchema = ChatSchema.pick({
6
6
  categoryId: true,
7
- aIModelId: true,
8
7
  });
9
8
 
10
9
  export const Response = z.object({
@@ -7,6 +7,7 @@ export namespace CreateTextMessageCommand {
7
7
  text: z.string(),
8
8
  files: z.array(z.string().uuid()).optional().default([]),
9
9
  features: z.array(z.nativeEnum(AI_MODEL_FEATURE)).optional().default([]),
10
+ aiModelId: z.string().uuid(),
10
11
  });
11
12
 
12
13
  export const RequestParamSchema = ChatSchema.pick({
@@ -1,6 +1,5 @@
1
1
  export * from './buy-subscription.command';
2
2
  export * from './cancel-subscription.command';
3
- export * from './create-custom-subscription-plan.command';
4
3
  export * from './create-subscription.command';
5
4
  export * from './delete-subscription.command';
6
5
  export * from './find-subscription.command';
@@ -1,7 +1,4 @@
1
- export const AI_MODEL_CONTENT_TYPE = {
2
- TEXT: 'TEXT',
3
- IMAGE: 'IMAGE',
4
- } as const;
5
-
6
- export type TAIModelContentTypeEnum =
7
- (typeof AI_MODEL_CONTENT_TYPE)[keyof typeof AI_MODEL_CONTENT_TYPE];
1
+ export enum AI_MODEL_CONTENT_TYPE {
2
+ TEXT = 'TEXT',
3
+ IMAGE = 'IMAGE',
4
+ }
@@ -1,2 +1,2 @@
1
1
  export * from './group-by.enum';
2
- export * from './statistics-metric-type.enum';
2
+ export * from './statistics-metric-type.enum';
@@ -1,4 +1,4 @@
1
1
  export enum STATISTICS_METRIC_TYPE {
2
- REQUESTS = 'requests',
3
- TOKENS = 'tokens',
4
- }
2
+ REQUESTS = 'requests',
3
+ TOKENS = 'tokens',
4
+ }
@@ -1,7 +1,6 @@
1
1
  export enum UNIFIED_MODEL_CONTENT_TYPE {
2
2
  // AI Model types
3
3
  TEXT = 'TEXT',
4
- IMAGE = 'IMAGE',
5
4
  // Tool types
6
5
  IMAGE_EDITOR = 'IMAGE_EDITOR',
7
6
  TEXT_TO_SPEECH = 'TEXT_TO_SPEECH',
@@ -7,6 +7,7 @@ export enum SUBSCRIPTION_FEATURE_TYPE {
7
7
  ADVANCED_TOOLS_ACCESS = 'advanced_tools_access',
8
8
  STT_MODEL_ACCESS = 'stt_model_access',
9
9
  TTS_MODEL_ACCESS = 'tts_model_access',
10
+ IMAGE_GENERATION_ACCESS = 'image_generation_access',
10
11
  IMAGE_GENERATION_QUOTA = 'image_generation_quota',
11
12
  TTS_QUOTA = 'tts_quota',
12
13
  STT_QUOTA = 'stt_quota',
@@ -29,7 +30,7 @@ export enum SUBSCRIPTION_FEATURE_TYPE {
29
30
  export enum SUBSCRIPTION_FEATURE_KIND {
30
31
  TEXT = 'text',
31
32
  AI_MODEL = 'ai_model',
32
- IMAGE = 'image',
33
+ IMAGE_GENERATION = 'image_generation',
33
34
  TTS = 'tts',
34
35
  STT = 'stt',
35
36
  PRESENTATIONS = 'presentations',
@@ -1,10 +1,5 @@
1
1
  import { z } from 'zod';
2
- import {
3
- AI_MODEL_CONTENT_TYPE,
4
- AI_MODEL_FEATURE,
5
- AI_MODEL_STATUS,
6
- TAIModelContentTypeEnum,
7
- } from '../constants';
2
+ import { AI_MODEL_CONTENT_TYPE, AI_MODEL_FEATURE, AI_MODEL_STATUS } from '../constants';
8
3
  import { AiModelConfigSchema } from './ai-model-config.schema';
9
4
 
10
5
  export const AiModelSchema = z.object({
@@ -18,7 +13,7 @@ export const AiModelSchema = z.object({
18
13
  order: z.number(),
19
14
  canUse: z.optional(z.boolean()),
20
15
  status: z.nativeEnum(AI_MODEL_STATUS),
21
- contentType: z.enum(Object.values(AI_MODEL_CONTENT_TYPE) as [TAIModelContentTypeEnum]),
16
+ contentType: z.nativeEnum(AI_MODEL_CONTENT_TYPE),
22
17
  features: z.array(z.nativeEnum(AI_MODEL_FEATURE)),
23
18
  iconVariants: z.object({
24
19
  light: z.object({
@@ -6,7 +6,7 @@ export const ChatSchema = z.object({
6
6
  userId: z.nullable(z.string().uuid()),
7
7
  unregisteredUserId: z.nullable(z.string().uuid()),
8
8
  categoryId: z.string().uuid(),
9
- aIModelId: z.string().uuid(),
9
+ aIModelId: z.string().uuid().nullable(),
10
10
  title: z.string(),
11
11
  chatStatus: z.enum(Object.values(CHAT_STATUS_ENUM) as [TChatStatusEnum]),
12
12
  folderId: z.string().nullable(),
@@ -7,6 +7,7 @@ export const MessageSchema = z.object({
7
7
  text: z.string().max(10000),
8
8
  chatId: z.nullable(z.string().uuid()),
9
9
  role: z.string(),
10
+ aiModelId: z.string().nullable(),
10
11
  tokenUsage: z.number(),
11
12
  userReaction: z.nativeEnum(USER_REACTION).nullable(),
12
13
  files: z.array(FileSchema),
@@ -1,10 +1,8 @@
1
1
  import { z } from 'zod';
2
- import { AI_MODEL_CONTENT_TYPE } from '../constants';
3
2
 
4
3
  export const PromptSchema = z.object({
5
4
  uuid: z.string().uuid(),
6
5
  content: z.string(),
7
- type: z.nativeEnum(AI_MODEL_CONTENT_TYPE),
8
6
  topicId: z.string().uuid().nullable(),
9
7
  title: z.string().nullable(),
10
8
 
@@ -51,6 +51,16 @@ export const AiModelAccessFeatureSchema = SubscriptionFeatureBaseSchema.extend({
51
51
  });
52
52
  export type AiModelAccessFeature = z.infer<typeof AiModelAccessFeatureSchema>;
53
53
 
54
+ export const ImageGenerationAccessFeatureSchema = SubscriptionFeatureBaseSchema.extend({
55
+ type: z.literal(SUBSCRIPTION_FEATURE_TYPE.IMAGE_GENERATION_ACCESS),
56
+ kind: z.literal(SUBSCRIPTION_FEATURE_KIND.IMAGE_GENERATION),
57
+ order: z.number(),
58
+ modelId: z.string(),
59
+ isAvailable: z.boolean(),
60
+ maxInputLength: z.number(),
61
+ });
62
+ export type ImageGenerationAccessFeature = z.infer<typeof ImageGenerationAccessFeatureSchema>;
63
+
54
64
  export const RequestsQuotaFeatureSchema = SubscriptionFeatureBaseSchema.extend({
55
65
  type: z.literal(SUBSCRIPTION_FEATURE_TYPE.TEXT_GENERATION_QUOTA),
56
66
  kind: z.literal(SUBSCRIPTION_FEATURE_KIND.TEXT),
@@ -97,7 +107,7 @@ export const TtsModelAccessFeatureSchema = SubscriptionFeatureBaseSchema.extend(
97
107
  export type TtsModelAccessFeature = z.infer<typeof TtsModelAccessFeatureSchema>;
98
108
 
99
109
  export const ImageGenerationQuotaFeatureSchema = SubscriptionFeatureBaseSchema.extend({
100
- kind: z.literal(SUBSCRIPTION_FEATURE_KIND.IMAGE),
110
+ kind: z.literal(SUBSCRIPTION_FEATURE_KIND.IMAGE_GENERATION),
101
111
  type: z.literal(SUBSCRIPTION_FEATURE_TYPE.IMAGE_GENERATION_QUOTA),
102
112
  value: z.number(),
103
113
  });
@@ -234,6 +244,7 @@ export const SubscriptionFeatureSchema = z.union([
234
244
  ImageEditorModelAccessFeatureSchema,
235
245
  InteriorDesignQuotaFeatureSchema,
236
246
  InteriorDesignModelAccessFeatureSchema,
247
+ ImageGenerationAccessFeatureSchema,
237
248
  ]);
238
249
 
239
250
  export type SubscriptionFeature = z.infer<typeof SubscriptionFeatureSchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpleschool/gptbot",
3
- "version": "0.9.18",
3
+ "version": "0.9.19-stage-2",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CreateCustomSubscriptionPlanCommand = void 0;
4
- const zod_1 = require("zod");
5
- const models_1 = require("../../models");
6
- var CreateCustomSubscriptionPlanCommand;
7
- (function (CreateCustomSubscriptionPlanCommand) {
8
- CreateCustomSubscriptionPlanCommand.RequestSchema = zod_1.z.object({
9
- tokens: zod_1.z
10
- .number()
11
- .refine((val) => val % 500 === 0, {
12
- message: 'tokens must be a multiple of 500',
13
- })
14
- .refine((val) => val > 1000, {
15
- message: 'tokens must be greater than 1000',
16
- })
17
- .refine((val) => val <= 10000, {
18
- message: 'tokens must be equal or less than 10000',
19
- }),
20
- });
21
- CreateCustomSubscriptionPlanCommand.ResponseSchema = zod_1.z.object({
22
- data: zod_1.z.array(models_1.SubscriptionSchema),
23
- });
24
- })(CreateCustomSubscriptionPlanCommand || (exports.CreateCustomSubscriptionPlanCommand = CreateCustomSubscriptionPlanCommand = {}));
@@ -1,26 +0,0 @@
1
- import { z } from 'zod';
2
- import { SubscriptionSchema } from '../../models';
3
-
4
- export namespace CreateCustomSubscriptionPlanCommand {
5
- export const RequestSchema = z.object({
6
- tokens: z
7
- .number()
8
- .refine((val) => val % 500 === 0, {
9
- message: 'tokens must be a multiple of 500',
10
- })
11
- .refine((val) => val > 1000, {
12
- message: 'tokens must be greater than 1000',
13
- })
14
- .refine((val) => val <= 10000, {
15
- message: 'tokens must be equal or less than 10000',
16
- }),
17
- });
18
-
19
- export type Request = z.infer<typeof RequestSchema>;
20
-
21
- export const ResponseSchema = z.object({
22
- data: z.array(SubscriptionSchema),
23
- });
24
-
25
- export type Response = z.infer<typeof ResponseSchema>;
26
- }