@purpleschool/gptbot 0.13.1-stage → 0.13.3-stage
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/api/controllers/http/canvas-template.ts +1 -0
- package/api/routes.ts +2 -1
- package/build/api/controllers/http/canvas-template.js +1 -0
- package/build/api/routes.js +2 -1
- package/build/commands/ai-studio/canvas-template/generate-canvas-template-by-prompt.command.js +5 -1
- package/build/commands/ai-studio/canvas-template/get-canvas-template-price.command.js +17 -0
- package/build/commands/ai-studio/canvas-template/index.js +1 -0
- package/build/commands/update-post/find-all-update-posts.command.js +6 -0
- package/build/models/canvas-node-definition.schema.js +8 -1
- package/commands/ai-studio/canvas-template/generate-canvas-template-by-prompt.command.ts +6 -2
- package/commands/ai-studio/canvas-template/get-canvas-template-price.command.ts +19 -0
- package/commands/ai-studio/canvas-template/index.ts +1 -0
- package/commands/update-post/find-all-update-posts.command.ts +9 -0
- package/helpers/image-generation/calculate-gpt-image-2-price-with-margin.helper.ts +14 -10
- package/models/canvas-node-definition.schema.ts +10 -0
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ export const CANVAS_TEMPLATE_ROUTES = {
|
|
|
5
5
|
CREATE_CANVAS: (uuid: string) => `${uuid}`,
|
|
6
6
|
CREATE_CANVAS_FROM_BODY: 'create-canvas',
|
|
7
7
|
GENERATE: 'generate',
|
|
8
|
+
PRICE: 'price',
|
|
8
9
|
GET_ALL: '',
|
|
9
10
|
FIND_BY_UUID: (uuid: string) => `${uuid}`,
|
|
10
11
|
UPDATE: (uuid: string) => `${uuid}`,
|
package/api/routes.ts
CHANGED
|
@@ -317,7 +317,7 @@ export const REST_API = {
|
|
|
317
317
|
`${ROOT}/${CONTROLLERS.UPDATE_POST_ADMIN_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.FIND_BY_UUID(uuid)}`,
|
|
318
318
|
GET_BY_SLUG: (slug: string) =>
|
|
319
319
|
`${ROOT}/${CONTROLLERS.UPDATE_POST_ADMIN_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.FIND_BY_SLUG(slug)}`,
|
|
320
|
-
GET_ALL: `${ROOT}/${CONTROLLERS.
|
|
320
|
+
GET_ALL: `${ROOT}/${CONTROLLERS.UPDATE_POST_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.FIND_ALL}`,
|
|
321
321
|
GET_ALL_TRANSLATIONS: (uuid: string) =>
|
|
322
322
|
`${ROOT}/${CONTROLLERS.UPDATE_POST_ADMIN_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.GET_ALL_TRANSLATIONS(uuid)}`,
|
|
323
323
|
CREATE_TRANSLATION: (uuid: string) =>
|
|
@@ -437,6 +437,7 @@ export const REST_API = {
|
|
|
437
437
|
|
|
438
438
|
CANVAS_TEMPLATE_PRIVATE: {
|
|
439
439
|
GENERATE: `${ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.GENERATE}`,
|
|
440
|
+
PRICE: `${ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.PRICE}`,
|
|
440
441
|
CREATE_CANVAS: (uuid: string) =>
|
|
441
442
|
`${ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.CREATE_CANVAS(uuid)}`,
|
|
442
443
|
FIND_BY_UUID: (uuid: string) =>
|
package/build/api/routes.js
CHANGED
|
@@ -276,7 +276,7 @@ exports.REST_API = {
|
|
|
276
276
|
PATCH: (uuid) => `${exports.ROOT}/${CONTROLLERS.UPDATE_POST_ADMIN_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.UPDATE(uuid)}`,
|
|
277
277
|
GET_BY_UUID: (uuid) => `${exports.ROOT}/${CONTROLLERS.UPDATE_POST_ADMIN_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.FIND_BY_UUID(uuid)}`,
|
|
278
278
|
GET_BY_SLUG: (slug) => `${exports.ROOT}/${CONTROLLERS.UPDATE_POST_ADMIN_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.FIND_BY_SLUG(slug)}`,
|
|
279
|
-
GET_ALL: `${exports.ROOT}/${CONTROLLERS.
|
|
279
|
+
GET_ALL: `${exports.ROOT}/${CONTROLLERS.UPDATE_POST_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.FIND_ALL}`,
|
|
280
280
|
GET_ALL_TRANSLATIONS: (uuid) => `${exports.ROOT}/${CONTROLLERS.UPDATE_POST_ADMIN_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.GET_ALL_TRANSLATIONS(uuid)}`,
|
|
281
281
|
CREATE_TRANSLATION: (uuid) => `${exports.ROOT}/${CONTROLLERS.UPDATE_POST_ADMIN_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.CREATE_TRANSLATION(uuid)}`,
|
|
282
282
|
UPDATE_TRANSLATION: (uuid, translationUuid) => `${exports.ROOT}/${CONTROLLERS.UPDATE_POST_ADMIN_CONTROLLER}/${CONTROLLERS.UPDATE_POST_ROUTES.UPDATE_TRANSLATION(uuid, translationUuid)}`,
|
|
@@ -360,6 +360,7 @@ exports.REST_API = {
|
|
|
360
360
|
},
|
|
361
361
|
CANVAS_TEMPLATE_PRIVATE: {
|
|
362
362
|
GENERATE: `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.GENERATE}`,
|
|
363
|
+
PRICE: `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.PRICE}`,
|
|
363
364
|
CREATE_CANVAS: (uuid) => `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.CREATE_CANVAS(uuid)}`,
|
|
364
365
|
FIND_BY_UUID: (uuid) => `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.FIND_BY_UUID(uuid)}`,
|
|
365
366
|
GET_ALL: `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.GET_ALL}`,
|
package/build/commands/ai-studio/canvas-template/generate-canvas-template-by-prompt.command.js
CHANGED
|
@@ -7,8 +7,12 @@ var GenerateCanvasTemplateByPromptCommand;
|
|
|
7
7
|
(function (GenerateCanvasTemplateByPromptCommand) {
|
|
8
8
|
GenerateCanvasTemplateByPromptCommand.RequestSchema = zod_1.z.object({
|
|
9
9
|
prompt: zod_1.z.string().trim().min(1),
|
|
10
|
+
canvasId: zod_1.z.string().uuid(),
|
|
10
11
|
});
|
|
11
12
|
GenerateCanvasTemplateByPromptCommand.ResponseSchema = zod_1.z.object({
|
|
12
|
-
data: models_1.
|
|
13
|
+
data: models_1.CanvasSchema.extend({
|
|
14
|
+
nodes: zod_1.z.array(models_1.CanvasNodeSchema),
|
|
15
|
+
edges: zod_1.z.array(models_1.CanvasEdgeSchema),
|
|
16
|
+
}),
|
|
13
17
|
});
|
|
14
18
|
})(GenerateCanvasTemplateByPromptCommand || (exports.GenerateCanvasTemplateByPromptCommand = GenerateCanvasTemplateByPromptCommand = {}));
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetCanvasTemplatePriceCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
var GetCanvasTemplatePriceCommand;
|
|
6
|
+
(function (GetCanvasTemplatePriceCommand) {
|
|
7
|
+
GetCanvasTemplatePriceCommand.RequestSchema = zod_1.z.object({
|
|
8
|
+
promptLength: zod_1.z.coerce.number().int().min(0),
|
|
9
|
+
});
|
|
10
|
+
GetCanvasTemplatePriceCommand.ResponseSchema = zod_1.z.object({
|
|
11
|
+
data: zod_1.z.object({
|
|
12
|
+
price: zod_1.z.number(),
|
|
13
|
+
charsUntilNextPriceIncrease: zod_1.z.number().nullable(),
|
|
14
|
+
charsUntilNextPriceDecrease: zod_1.z.number().nullable(),
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
})(GetCanvasTemplatePriceCommand || (exports.GetCanvasTemplatePriceCommand = GetCanvasTemplatePriceCommand = {}));
|
|
@@ -19,6 +19,7 @@ __exportStar(require("./create-canvas-from-generated-template.command"), exports
|
|
|
19
19
|
__exportStar(require("./create-canvas-template.command"), exports);
|
|
20
20
|
__exportStar(require("./delete-canvas-template.command"), exports);
|
|
21
21
|
__exportStar(require("./generate-canvas-template-by-prompt.command"), exports);
|
|
22
|
+
__exportStar(require("./get-canvas-template-price.command"), exports);
|
|
22
23
|
__exportStar(require("./find-canvas-template-by-uuid.query"), exports);
|
|
23
24
|
__exportStar(require("./find-canvas-templates.query"), exports);
|
|
24
25
|
__exportStar(require("./update-canvas-template.command"), exports);
|
|
@@ -5,7 +5,13 @@ const zod_1 = require("zod");
|
|
|
5
5
|
const models_1 = require("../../models");
|
|
6
6
|
var FindAllUpdatePostsCommand;
|
|
7
7
|
(function (FindAllUpdatePostsCommand) {
|
|
8
|
+
FindAllUpdatePostsCommand.RequestQuerySchema = zod_1.z.object({
|
|
9
|
+
limit: zod_1.z.coerce.number().int().positive().default(10),
|
|
10
|
+
offset: zod_1.z.coerce.number().int().min(0).default(0),
|
|
11
|
+
});
|
|
8
12
|
FindAllUpdatePostsCommand.ResponseSchema = zod_1.z.object({
|
|
9
13
|
data: zod_1.z.array(models_1.UpdatePostSchema),
|
|
14
|
+
page: zod_1.z.number(),
|
|
15
|
+
totalPages: zod_1.z.number(),
|
|
10
16
|
});
|
|
11
17
|
})(FindAllUpdatePostsCommand || (exports.FindAllUpdatePostsCommand = FindAllUpdatePostsCommand = {}));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CanvasNodeDefinitionsWithConfigsSchema = exports.CanvasNodeDefinitionWithConfigSchema = exports.CanvasNodeDefinitionSchema = exports.CanvasNodeDefinitionToolConfigSchema = exports.CanvasTextGenerationConfigSchema = void 0;
|
|
3
|
+
exports.CanvasNodeDefinitionsWithConfigsSchema = exports.CanvasNodeDefinitionWithConfigSchema = exports.CanvasNodeDefinitionSchema = exports.PortDescriptions = exports.CanvasNodeDefinitionToolConfigSchema = exports.CanvasTextGenerationConfigSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const constants_1 = require("../constants");
|
|
6
6
|
const icon_variants_schema_1 = require("./icon-variants.schema");
|
|
@@ -67,12 +67,19 @@ exports.CanvasNodeDefinitionToolConfigSchema = zod_1.z.discriminatedUnion('nodeT
|
|
|
67
67
|
createCanvasNodeDefinitionNoConfigSchema(constants_1.CANVAS_NODE_TYPE.varBlock),
|
|
68
68
|
createCanvasNodeDefinitionNoConfigSchema(constants_1.CANVAS_NODE_TYPE.audioBlock),
|
|
69
69
|
]);
|
|
70
|
+
exports.PortDescriptions = zod_1.z.object({
|
|
71
|
+
inputs: zod_1.z.record(zod_1.z.nativeEnum(constants_1.INPUT_OUTPUT_TYPE), zod_1.z.string()),
|
|
72
|
+
outputs: zod_1.z.record(zod_1.z.nativeEnum(constants_1.INPUT_OUTPUT_TYPE), zod_1.z.string()),
|
|
73
|
+
});
|
|
70
74
|
exports.CanvasNodeDefinitionSchema = zod_1.z.object({
|
|
71
75
|
type: zod_1.z.nativeEnum(constants_1.CANVAS_NODE_TYPE),
|
|
72
76
|
label: zod_1.z.string(),
|
|
77
|
+
description: zod_1.z.string(),
|
|
78
|
+
tags: zod_1.z.array(zod_1.z.string()),
|
|
73
79
|
icons: icon_variants_schema_1.IconVariantCanvasSchema,
|
|
74
80
|
inputPoints: zod_1.z.array(zod_1.z.nativeEnum(constants_1.INPUT_OUTPUT_TYPE)),
|
|
75
81
|
outputPoints: zod_1.z.array(zod_1.z.nativeEnum(constants_1.INPUT_OUTPUT_TYPE)),
|
|
82
|
+
portDescriptions: exports.PortDescriptions,
|
|
76
83
|
toolType: zod_1.z.nativeEnum(constants_1.TOOL_CONTENT_TYPE).nullable(),
|
|
77
84
|
createdAt: zod_1.z.date(),
|
|
78
85
|
updatedAt: zod_1.z.date(),
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { CanvasEdgeSchema, CanvasNodeSchema, CanvasSchema } from '../../../models';
|
|
3
3
|
|
|
4
4
|
export namespace GenerateCanvasTemplateByPromptCommand {
|
|
5
5
|
export const RequestSchema = z.object({
|
|
6
6
|
prompt: z.string().trim().min(1),
|
|
7
|
+
canvasId: z.string().uuid(),
|
|
7
8
|
});
|
|
8
9
|
|
|
9
10
|
export type Request = z.infer<typeof RequestSchema>;
|
|
10
11
|
|
|
11
12
|
export const ResponseSchema = z.object({
|
|
12
|
-
data:
|
|
13
|
+
data: CanvasSchema.extend({
|
|
14
|
+
nodes: z.array(CanvasNodeSchema),
|
|
15
|
+
edges: z.array(CanvasEdgeSchema),
|
|
16
|
+
}),
|
|
13
17
|
});
|
|
14
18
|
|
|
15
19
|
export type Response = z.infer<typeof ResponseSchema>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export namespace GetCanvasTemplatePriceCommand {
|
|
4
|
+
export const RequestSchema = z.object({
|
|
5
|
+
promptLength: z.coerce.number().int().min(0),
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
9
|
+
|
|
10
|
+
export const ResponseSchema = z.object({
|
|
11
|
+
data: z.object({
|
|
12
|
+
price: z.number(),
|
|
13
|
+
charsUntilNextPriceIncrease: z.number().nullable(),
|
|
14
|
+
charsUntilNextPriceDecrease: z.number().nullable(),
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
19
|
+
}
|
|
@@ -3,6 +3,7 @@ export * from './create-canvas-from-generated-template.command';
|
|
|
3
3
|
export * from './create-canvas-template.command';
|
|
4
4
|
export * from './delete-canvas-template.command';
|
|
5
5
|
export * from './generate-canvas-template-by-prompt.command';
|
|
6
|
+
export * from './get-canvas-template-price.command';
|
|
6
7
|
export * from './find-canvas-template-by-uuid.query';
|
|
7
8
|
export * from './find-canvas-templates.query';
|
|
8
9
|
export * from './update-canvas-template.command';
|
|
@@ -2,8 +2,17 @@ import { z } from 'zod';
|
|
|
2
2
|
import { UpdatePostSchema } from '../../models';
|
|
3
3
|
|
|
4
4
|
export namespace FindAllUpdatePostsCommand {
|
|
5
|
+
export const RequestQuerySchema = z.object({
|
|
6
|
+
limit: z.coerce.number().int().positive().default(10),
|
|
7
|
+
offset: z.coerce.number().int().min(0).default(0),
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export type RequestQuery = z.infer<typeof RequestQuerySchema>;
|
|
11
|
+
|
|
5
12
|
export const ResponseSchema = z.object({
|
|
6
13
|
data: z.array(UpdatePostSchema),
|
|
14
|
+
page: z.number(),
|
|
15
|
+
totalPages: z.number(),
|
|
7
16
|
});
|
|
8
17
|
|
|
9
18
|
export type Response = z.infer<typeof ResponseSchema>;
|
|
@@ -105,15 +105,19 @@ export function calculateGptImage2PriceInStarsFromTokens(params: {
|
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
export function calculateGptImage2PriceInStarsByTier(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
108
|
+
export function calculateGptImage2PriceInStarsByTier(
|
|
109
|
+
params: {
|
|
110
|
+
quality: GptImage2Quality;
|
|
111
|
+
aspectRatio: GptImage2AspectRatio;
|
|
112
|
+
resolutionTier: GptImage2ResolutionTier;
|
|
113
|
+
hasAttachedImage?: boolean;
|
|
114
|
+
outputPricePer1MUsd?: number;
|
|
115
|
+
targetMargin?: number;
|
|
116
|
+
starPriceUsd?: number;
|
|
117
|
+
},
|
|
118
|
+
rules: ImageModelPricingRules,
|
|
119
|
+
userHasActiveSubscriptionOrProduct: boolean,
|
|
120
|
+
): {
|
|
117
121
|
outputTokens: number;
|
|
118
122
|
costUsd: number;
|
|
119
123
|
sellUsd: number;
|
|
@@ -141,7 +145,7 @@ export function calculateGptImage2PriceInStarsByTier(params: {
|
|
|
141
145
|
finalSellStars += rule.value;
|
|
142
146
|
}
|
|
143
147
|
}
|
|
144
|
-
|
|
148
|
+
|
|
145
149
|
if (params.quality === 'low') {
|
|
146
150
|
finalSellStars += 2;
|
|
147
151
|
}
|
|
@@ -81,12 +81,22 @@ export const CanvasNodeDefinitionToolConfigSchema = z.discriminatedUnion('nodeTy
|
|
|
81
81
|
]);
|
|
82
82
|
export type CanvasNodeDefinitionToolConfig = z.infer<typeof CanvasNodeDefinitionToolConfigSchema>;
|
|
83
83
|
|
|
84
|
+
export const PortDescriptions = z.object({
|
|
85
|
+
inputs: z.record(z.nativeEnum(INPUT_OUTPUT_TYPE), z.string()),
|
|
86
|
+
outputs: z.record(z.nativeEnum(INPUT_OUTPUT_TYPE), z.string()),
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
export type PortDescriptionsType = z.infer<typeof PortDescriptions>;
|
|
90
|
+
|
|
84
91
|
export const CanvasNodeDefinitionSchema = z.object({
|
|
85
92
|
type: z.nativeEnum(CANVAS_NODE_TYPE),
|
|
86
93
|
label: z.string(),
|
|
94
|
+
description: z.string(),
|
|
95
|
+
tags: z.array(z.string()),
|
|
87
96
|
icons: IconVariantCanvasSchema,
|
|
88
97
|
inputPoints: z.array(z.nativeEnum(INPUT_OUTPUT_TYPE)),
|
|
89
98
|
outputPoints: z.array(z.nativeEnum(INPUT_OUTPUT_TYPE)),
|
|
99
|
+
portDescriptions: PortDescriptions,
|
|
90
100
|
toolType: z.nativeEnum(TOOL_CONTENT_TYPE).nullable(),
|
|
91
101
|
createdAt: z.date(),
|
|
92
102
|
updatedAt: z.date(),
|