@purpleschool/gptbot 0.12.98-stage-2 → 0.12.98
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 +2 -0
- package/api/controllers/http/canvas-text-generation.ts +7 -0
- package/api/controllers/http/canvas.ts +2 -0
- package/api/controllers/http/index.ts +3 -0
- package/api/controllers/http/marketplace-card.ts +1 -0
- package/api/controllers/http/palette.ts +6 -0
- package/api/controllers/http/update-post.ts +15 -0
- package/api/routes.ts +29 -0
- package/build/api/controllers/http/canvas-template.js +2 -0
- package/build/api/controllers/http/canvas-text-generation.js +9 -0
- package/build/api/controllers/http/canvas.js +2 -0
- package/build/api/controllers/http/index.js +3 -0
- package/build/api/controllers/http/marketplace-card.js +1 -0
- package/build/api/controllers/http/palette.js +8 -0
- package/build/api/controllers/http/update-post.js +16 -0
- package/build/api/routes.js +23 -0
- package/build/commands/{canvas → ai-studio/canvas}/create-canvas.command.js +1 -1
- package/build/commands/{canvas → ai-studio/canvas}/delete-canvas.command.js +1 -1
- package/build/commands/ai-studio/canvas/execute-graph-by-node.command.js +17 -0
- package/build/commands/{canvas → ai-studio/canvas}/find-canvas-by-uuid-with-relations.query.js +1 -1
- package/build/commands/{canvas → ai-studio/canvas}/find-canvas-by-uuid.query.js +1 -1
- package/build/commands/{canvas → ai-studio/canvas}/find-canvases-by-user.query.js +2 -2
- package/build/commands/ai-studio/canvas/get-price.query.js +29 -0
- package/build/commands/{canvas → ai-studio/canvas}/index.js +2 -0
- package/build/commands/{canvas → ai-studio/canvas}/run-canvas.command.js +1 -7
- package/build/commands/{canvas → ai-studio/canvas}/save-canvas.command.js +10 -5
- package/build/commands/{canvas → ai-studio/canvas}/update-canvas.command.js +1 -1
- package/build/commands/{canvas-edge → ai-studio/canvas-edge}/create-canvas-edge.command.js +4 -3
- package/build/commands/{canvas-edge → ai-studio/canvas-edge}/find-canvas-edge-by-source-and-target.query.js +1 -1
- package/build/commands/{canvas-edge → ai-studio/canvas-edge}/find-canvas-edges-by-canvas.query.js +1 -1
- package/build/commands/ai-studio/canvas-node/count-canvas-nodes-by-canvas.query.js +16 -0
- package/build/commands/{canvas-node → ai-studio/canvas-node}/create-canvas-node.command.js +8 -4
- package/build/commands/{canvas-node → ai-studio/canvas-node}/delete-canvas-node.command.js +2 -2
- package/build/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-node-by-uuid.query.js +2 -2
- package/build/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-node-definitions-with-configs.query.js +1 -1
- package/build/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-nodes-by-canvas.query.js +1 -1
- package/build/commands/{canvas-node → ai-studio/canvas-node}/index.js +1 -0
- package/build/commands/{canvas-node → ai-studio/canvas-node}/update-canvas-node.command.js +13 -5
- package/build/commands/ai-studio/canvas-template/create-canvas-from-generated-template.command.js +44 -0
- package/build/commands/{canvas-template → ai-studio/canvas-template}/create-canvas-from-template.command.js +1 -1
- package/build/commands/{canvas-template → ai-studio/canvas-template}/create-canvas-template.command.js +3 -2
- package/build/commands/{canvas-template → ai-studio/canvas-template}/delete-canvas-template.command.js +3 -2
- package/build/commands/{canvas-template → ai-studio/canvas-template}/find-canvas-template-by-uuid.query.js +1 -1
- package/build/commands/{canvas-template → ai-studio/canvas-template}/find-canvas-templates.query.js +5 -1
- package/build/commands/ai-studio/canvas-template/generate-canvas-template-by-prompt.command.js +14 -0
- package/build/commands/{canvas-template → ai-studio/canvas-template}/index.js +3 -1
- package/build/commands/{canvas-template → ai-studio/canvas-template}/update-canvas-template.command.js +3 -2
- package/build/{constants/canvas → commands/ai-studio/canvas-tool}/index.js +2 -1
- package/build/commands/ai-studio/canvas-tool/palette/generate-palette.command.js +20 -0
- package/build/commands/ai-studio/canvas-tool/palette/get-palette-price.command.js +17 -0
- package/build/{constants/canvas/enums → commands/ai-studio/canvas-tool/palette}/index.js +2 -1
- package/build/commands/ai-studio/canvas-tool/text-gen/generate-text.command.js +17 -0
- package/build/commands/ai-studio/canvas-tool/text-gen/get-text-generation-config.command.js +13 -0
- package/build/commands/ai-studio/canvas-tool/text-gen/get-text-generation-price.command.js +18 -0
- package/build/commands/ai-studio/canvas-tool/text-gen/index.js +19 -0
- package/build/commands/ai-studio/index.js +21 -0
- package/build/commands/blog/create-post.command.js +4 -11
- package/build/commands/category/create-category.command.js +6 -8
- package/build/commands/course/create-course.command.js +5 -9
- package/build/commands/index.js +6 -4
- package/build/commands/page/create-page.command.js +8 -10
- package/build/commands/prompt/create-prompt.command.js +2 -6
- package/build/commands/prompt-category/create-prompt-category.command.js +3 -7
- package/build/commands/prompt-topic/create-prompt-topic.command.js +3 -9
- package/build/commands/question/create-question.command.js +2 -6
- package/build/commands/tools/diagrams/get-diagrams-price.command.js +1 -1
- package/build/commands/tools/marketplace-card/execute-marketplace-card.command.js +1 -0
- package/build/commands/tools/marketplace-card/generate-marketplace-card-description.command.js +14 -0
- package/build/commands/tools/marketplace-card/index.js +1 -0
- package/build/commands/update-post/create-update-post-translation.command.js +20 -0
- package/build/commands/update-post/create-update-post.command.js +14 -0
- package/build/commands/update-post/find-all-update-posts.command.js +11 -0
- package/build/commands/update-post/find-update-post.command.js +17 -0
- package/build/commands/update-post/get-all-update-post-translations.query.js +14 -0
- package/build/commands/update-post/get-latest-update-posts.command.js +11 -0
- package/build/commands/update-post/index.js +24 -0
- package/build/commands/update-post/update-update-post-translation.command.js +20 -0
- package/build/commands/update-post/update-update-post.command.js +17 -0
- package/build/commands/user/send-telegram-notification.command.js +1 -6
- package/build/constants/ai-model/enums/ai-model-strategy.enum.js +1 -0
- package/build/constants/canvas-edge/enums/input-output-type.enum.js +2 -0
- package/build/constants/canvas-node/enums/canvas-node-type.enum.js +1 -0
- package/build/constants/index.js +0 -1
- package/build/constants/tool-video/enums/index.js +2 -0
- package/build/constants/tool-video/enums/video-publish-moderation-status.enum.js +9 -0
- package/build/models/canvas-edge.schema.js +2 -1
- package/build/models/canvas-node-definition.schema.js +12 -2
- package/build/models/canvas-node.schema.js +202 -80
- package/build/models/canvas-template.schema.js +26 -6
- package/build/models/canvas.schema.js +0 -2
- package/build/models/index.js +2 -0
- package/build/models/post.schema.js +1 -1
- package/build/models/tools/marketplace-card/index.js +1 -0
- package/build/models/tools/marketplace-card/marketplace-card-description-generation.schema.js +15 -0
- package/build/models/tools/video/video-job.schema.js +1 -0
- package/build/models/update-post-translation.schema.js +15 -0
- package/build/models/update-post.schema.js +13 -0
- package/commands/{canvas → ai-studio/canvas}/create-canvas.command.ts +1 -1
- package/commands/{canvas → ai-studio/canvas}/delete-canvas.command.ts +1 -1
- package/commands/ai-studio/canvas/execute-graph-by-node.command.ts +20 -0
- package/commands/{canvas → ai-studio/canvas}/find-canvas-by-uuid-with-relations.query.ts +1 -1
- package/commands/{canvas → ai-studio/canvas}/find-canvas-by-uuid.query.ts +1 -1
- package/commands/{canvas → ai-studio/canvas}/find-canvases-by-user.query.ts +2 -2
- package/commands/ai-studio/canvas/get-price.query.ts +37 -0
- package/commands/{canvas → ai-studio/canvas}/index.ts +2 -0
- package/commands/{canvas → ai-studio/canvas}/run-canvas.command.ts +1 -13
- package/commands/{canvas → ai-studio/canvas}/save-canvas.command.ts +15 -10
- package/commands/{canvas → ai-studio/canvas}/update-canvas.command.ts +1 -1
- package/commands/{canvas-edge → ai-studio/canvas-edge}/create-canvas-edge.command.ts +4 -3
- package/commands/{canvas-edge → ai-studio/canvas-edge}/find-canvas-edge-by-source-and-target.query.ts +1 -1
- package/commands/{canvas-edge → ai-studio/canvas-edge}/find-canvas-edges-by-canvas.query.ts +1 -1
- package/commands/ai-studio/canvas-node/count-canvas-nodes-by-canvas.query.ts +20 -0
- package/commands/ai-studio/canvas-node/create-canvas-node.command.ts +33 -0
- package/commands/{canvas-node → ai-studio/canvas-node}/delete-canvas-node.command.ts +2 -2
- package/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-node-by-uuid.query.ts +2 -2
- package/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-node-definitions-with-configs.query.ts +1 -1
- package/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-nodes-by-canvas.query.ts +1 -1
- package/commands/{canvas-node → ai-studio/canvas-node}/index.ts +1 -0
- package/commands/ai-studio/canvas-node/update-canvas-node.command.ts +40 -0
- package/commands/ai-studio/canvas-template/create-canvas-from-generated-template.command.ts +57 -0
- package/commands/{canvas-template → ai-studio/canvas-template}/create-canvas-from-template.command.ts +1 -1
- package/commands/{canvas-template → ai-studio/canvas-template}/create-canvas-template.command.ts +7 -2
- package/commands/{canvas-template → ai-studio/canvas-template}/delete-canvas-template.command.ts +3 -2
- package/commands/{canvas-template → ai-studio/canvas-template}/find-canvas-template-by-uuid.query.ts +1 -1
- package/commands/{canvas-template → ai-studio/canvas-template}/find-canvas-templates.query.ts +5 -1
- package/commands/ai-studio/canvas-template/generate-canvas-template-by-prompt.command.ts +16 -0
- package/commands/{canvas-template → ai-studio/canvas-template}/index.ts +3 -1
- package/commands/{canvas-template → ai-studio/canvas-template}/update-canvas-template.command.ts +7 -2
- package/commands/ai-studio/canvas-tool/index.ts +2 -0
- package/commands/ai-studio/canvas-tool/palette/generate-palette.command.ts +23 -0
- package/commands/ai-studio/canvas-tool/palette/get-palette-price.command.ts +17 -0
- package/commands/ai-studio/canvas-tool/palette/index.ts +2 -0
- package/commands/ai-studio/canvas-tool/text-gen/generate-text.command.ts +17 -0
- package/commands/ai-studio/canvas-tool/text-gen/get-text-generation-config.command.ts +13 -0
- package/commands/ai-studio/canvas-tool/text-gen/get-text-generation-price.command.ts +18 -0
- package/commands/ai-studio/canvas-tool/text-gen/index.ts +3 -0
- package/commands/ai-studio/index.ts +5 -0
- package/commands/blog/create-post.command.ts +4 -11
- package/commands/category/create-category.command.ts +6 -8
- package/commands/course/create-course.command.ts +5 -9
- package/commands/index.ts +6 -5
- package/commands/page/create-page.command.ts +8 -10
- package/commands/prompt/create-prompt.command.ts +2 -6
- package/commands/prompt-category/create-prompt-category.command.ts +3 -7
- package/commands/prompt-topic/create-prompt-topic.command.ts +3 -9
- package/commands/question/create-question.command.ts +2 -6
- package/commands/tools/diagrams/get-diagrams-price.command.ts +1 -1
- package/commands/tools/marketplace-card/execute-marketplace-card.command.ts +1 -0
- package/commands/tools/marketplace-card/generate-marketplace-card-description.command.ts +16 -0
- package/commands/tools/marketplace-card/index.ts +1 -0
- package/commands/update-post/create-update-post-translation.command.ts +25 -0
- package/commands/update-post/create-update-post.command.ts +16 -0
- package/commands/update-post/find-all-update-posts.command.ts +10 -0
- package/commands/update-post/find-update-post.command.ts +22 -0
- package/commands/update-post/get-all-update-post-translations.query.ts +16 -0
- package/commands/update-post/get-latest-update-posts.command.ts +10 -0
- package/commands/update-post/index.ts +8 -0
- package/commands/update-post/update-update-post-translation.command.ts +25 -0
- package/commands/update-post/update-update-post.command.ts +22 -0
- package/commands/user/send-telegram-notification.command.ts +1 -8
- package/constants/ai-model/enums/ai-model-strategy.enum.ts +1 -0
- package/constants/canvas-edge/enums/input-output-type.enum.ts +2 -0
- package/constants/canvas-node/enums/canvas-node-type.enum.ts +1 -0
- package/constants/index.ts +0 -1
- package/constants/tool-video/enums/index.ts +2 -0
- package/constants/tool-video/enums/video-publish-moderation-status.enum.ts +5 -0
- package/models/canvas-edge.schema.ts +2 -1
- package/models/canvas-node-definition.schema.ts +15 -1
- package/models/canvas-node.schema.ts +253 -102
- package/models/canvas-template.schema.ts +34 -10
- package/models/canvas.schema.ts +0 -2
- package/models/index.ts +2 -0
- package/models/post.schema.ts +1 -1
- package/models/tools/marketplace-card/index.ts +1 -0
- package/models/tools/marketplace-card/marketplace-card-description-generation.schema.ts +17 -0
- package/models/tools/video/video-job.schema.ts +2 -1
- package/models/update-post-translation.schema.ts +13 -0
- package/models/update-post.schema.ts +11 -0
- package/package.json +1 -1
- package/build/constants/canvas/enums/canvas-status.enum.js +0 -9
- package/commands/canvas-node/create-canvas-node.command.ts +0 -25
- package/commands/canvas-node/update-canvas-node.command.ts +0 -26
- package/constants/canvas/enums/canvas-status.enum.ts +0 -5
- package/constants/canvas/enums/index.ts +0 -1
- package/constants/canvas/index.ts +0 -1
- /package/build/commands/{canvas-edge → ai-studio/canvas-edge}/delete-canvas-edge.command.js +0 -0
- /package/build/commands/{canvas-edge → ai-studio/canvas-edge}/index.js +0 -0
- /package/commands/{canvas-edge → ai-studio/canvas-edge}/delete-canvas-edge.command.ts +0 -0
- /package/commands/{canvas-edge → ai-studio/canvas-edge}/index.ts +0 -0
|
@@ -4,7 +4,8 @@ import { INPUT_OUTPUT_TYPE } from '../constants';
|
|
|
4
4
|
export const CanvasEdgeSchema = z.object({
|
|
5
5
|
sourceId: z.string().uuid(),
|
|
6
6
|
targetId: z.string().uuid(),
|
|
7
|
-
|
|
7
|
+
sourceHandle: z.nativeEnum(INPUT_OUTPUT_TYPE),
|
|
8
|
+
targetHandle: z.nativeEnum(INPUT_OUTPUT_TYPE),
|
|
8
9
|
createdAt: z.date(),
|
|
9
10
|
updatedAt: z.date(),
|
|
10
11
|
});
|
|
@@ -10,6 +10,8 @@ import {
|
|
|
10
10
|
VideoEditorConfigSchema,
|
|
11
11
|
VideoConfigSchema,
|
|
12
12
|
} from './tools';
|
|
13
|
+
import { AiModelWithUnlockedBySchema } from './ai-model.schema';
|
|
14
|
+
import { AiVendorSchema } from './ai-vendor.schema';
|
|
13
15
|
|
|
14
16
|
const createCanvasNodeDefinitionNoConfigSchema = (nodeType: CANVAS_NODE_TYPE) =>
|
|
15
17
|
z.object({
|
|
@@ -18,7 +20,19 @@ const createCanvasNodeDefinitionNoConfigSchema = (nodeType: CANVAS_NODE_TYPE) =>
|
|
|
18
20
|
config: z.null(),
|
|
19
21
|
});
|
|
20
22
|
|
|
23
|
+
export const CanvasTextGenerationConfigSchema = z.array(
|
|
24
|
+
AiVendorSchema.extend({
|
|
25
|
+
models: z.array(AiModelWithUnlockedBySchema),
|
|
26
|
+
}),
|
|
27
|
+
);
|
|
28
|
+
export type CanvasTextGenerationConfig = z.infer<typeof CanvasTextGenerationConfigSchema>;
|
|
29
|
+
|
|
21
30
|
export const CanvasNodeDefinitionToolConfigSchema = z.discriminatedUnion('nodeType', [
|
|
31
|
+
z.object({
|
|
32
|
+
nodeType: z.literal(CANVAS_NODE_TYPE.textGen),
|
|
33
|
+
toolType: z.null(),
|
|
34
|
+
config: CanvasTextGenerationConfigSchema,
|
|
35
|
+
}),
|
|
22
36
|
z.object({
|
|
23
37
|
nodeType: z.literal(CANVAS_NODE_TYPE.imageGen),
|
|
24
38
|
toolType: z.literal(TOOL_CONTENT_TYPE.IMAGE_GENERATION),
|
|
@@ -54,7 +68,6 @@ export const CanvasNodeDefinitionToolConfigSchema = z.discriminatedUnion('nodeTy
|
|
|
54
68
|
toolType: z.literal(TOOL_CONTENT_TYPE.HTML_PAGE_BUILDER),
|
|
55
69
|
config: HtmlPageBuilderConfigSchema,
|
|
56
70
|
}),
|
|
57
|
-
createCanvasNodeDefinitionNoConfigSchema(CANVAS_NODE_TYPE.textGen),
|
|
58
71
|
createCanvasNodeDefinitionNoConfigSchema(CANVAS_NODE_TYPE.textBlock),
|
|
59
72
|
createCanvasNodeDefinitionNoConfigSchema(CANVAS_NODE_TYPE.imageBlock),
|
|
60
73
|
createCanvasNodeDefinitionNoConfigSchema(CANVAS_NODE_TYPE.videoBlock),
|
|
@@ -64,6 +77,7 @@ export const CanvasNodeDefinitionToolConfigSchema = z.discriminatedUnion('nodeTy
|
|
|
64
77
|
createCanvasNodeDefinitionNoConfigSchema(CANVAS_NODE_TYPE.motionControl),
|
|
65
78
|
createCanvasNodeDefinitionNoConfigSchema(CANVAS_NODE_TYPE.varGen),
|
|
66
79
|
createCanvasNodeDefinitionNoConfigSchema(CANVAS_NODE_TYPE.varBlock),
|
|
80
|
+
createCanvasNodeDefinitionNoConfigSchema(CANVAS_NODE_TYPE.audioBlock),
|
|
67
81
|
]);
|
|
68
82
|
export type CanvasNodeDefinitionToolConfig = z.infer<typeof CanvasNodeDefinitionToolConfigSchema>;
|
|
69
83
|
|
|
@@ -4,6 +4,13 @@ import { CANVAS_NODE_TYPE, NODE_RUN_STATUS } from '../constants';
|
|
|
4
4
|
const strictObject = <T extends z.ZodRawShape>(shape: T): z.ZodObject<T, 'strict'> =>
|
|
5
5
|
z.object(shape).strict();
|
|
6
6
|
|
|
7
|
+
export const CanvasFileRefSchema = strictObject({
|
|
8
|
+
fileId: z.string().uuid(),
|
|
9
|
+
url: z.string().url(),
|
|
10
|
+
text: z.string().nullable(),
|
|
11
|
+
});
|
|
12
|
+
export type CanvasFileRef = z.infer<typeof CanvasFileRefSchema>;
|
|
13
|
+
|
|
7
14
|
export const CanvasNodePositionSchema = z.object({
|
|
8
15
|
topLeft: z.object({
|
|
9
16
|
x: z.number(),
|
|
@@ -16,15 +23,18 @@ export const CanvasNodePositionSchema = z.object({
|
|
|
16
23
|
});
|
|
17
24
|
export type CanvasNodePosition = z.infer<typeof CanvasNodePositionSchema>;
|
|
18
25
|
|
|
26
|
+
// PARAMS SHEMA
|
|
19
27
|
export const TextGenParamsSchema = strictObject({
|
|
20
28
|
prompt: z.string(),
|
|
21
|
-
|
|
29
|
+
modelId: z.string(),
|
|
30
|
+
modelName: z.string(),
|
|
22
31
|
});
|
|
23
32
|
export type TextGenParams = z.infer<typeof TextGenParamsSchema>;
|
|
24
33
|
|
|
25
34
|
export const ImageGenParamsSchema = strictObject({
|
|
26
35
|
prompt: z.string(),
|
|
27
|
-
|
|
36
|
+
modelId: z.string(),
|
|
37
|
+
modelName: z.string(),
|
|
28
38
|
aspectRatio: z.string(),
|
|
29
39
|
resolution: z.string().optional(),
|
|
30
40
|
});
|
|
@@ -32,8 +42,9 @@ export type ImageGenParams = z.infer<typeof ImageGenParamsSchema>;
|
|
|
32
42
|
|
|
33
43
|
export const VideoGenParamsSchema = strictObject({
|
|
34
44
|
prompt: z.string(),
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
modelId: z.string(),
|
|
46
|
+
modelName: z.string(),
|
|
47
|
+
duration: z.string(),
|
|
37
48
|
aspectRatio: z.string().optional(),
|
|
38
49
|
resolution: z.string().optional(),
|
|
39
50
|
});
|
|
@@ -43,7 +54,8 @@ export const AudioGenParamsSchema = z.discriminatedUnion('mode', [
|
|
|
43
54
|
strictObject({
|
|
44
55
|
mode: z.literal('tts'),
|
|
45
56
|
prompt: z.string(),
|
|
46
|
-
|
|
57
|
+
modelId: z.string(),
|
|
58
|
+
modelName: z.string(),
|
|
47
59
|
voice: z.string(),
|
|
48
60
|
stability: z.number(),
|
|
49
61
|
similarityBoost: z.number(),
|
|
@@ -51,14 +63,14 @@ export const AudioGenParamsSchema = z.discriminatedUnion('mode', [
|
|
|
51
63
|
strictObject({
|
|
52
64
|
mode: z.literal('stt'),
|
|
53
65
|
prompt: z.string(),
|
|
54
|
-
|
|
55
|
-
|
|
66
|
+
modelId: z.string(),
|
|
67
|
+
modelName: z.string(),
|
|
56
68
|
}),
|
|
57
69
|
]);
|
|
58
70
|
export type AudioGenParams = z.infer<typeof AudioGenParamsSchema>;
|
|
59
71
|
|
|
60
72
|
export const ColorPaletteParamsSchema = strictObject({
|
|
61
|
-
prompt: z.string(),
|
|
73
|
+
prompt: z.string().optional(),
|
|
62
74
|
});
|
|
63
75
|
export type ColorPaletteParams = z.infer<typeof ColorPaletteParamsSchema>;
|
|
64
76
|
|
|
@@ -73,71 +85,39 @@ export type MotionControlParams = z.infer<typeof MotionControlParamsSchema>;
|
|
|
73
85
|
|
|
74
86
|
export const VarGenParamsSchema = strictObject({
|
|
75
87
|
prompt: z.string(),
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
strictObject({
|
|
79
|
-
key: z.string(),
|
|
80
|
-
description: z.string(),
|
|
81
|
-
}),
|
|
82
|
-
),
|
|
88
|
+
modelId: z.string(),
|
|
89
|
+
modelName: z.string(),
|
|
83
90
|
});
|
|
84
91
|
export type VarGenParams = z.infer<typeof VarGenParamsSchema>;
|
|
85
92
|
|
|
86
93
|
export const HtmlGenParamsSchema = strictObject({
|
|
87
94
|
prompt: z.string(),
|
|
88
|
-
|
|
95
|
+
modelId: z.string(),
|
|
96
|
+
modelName: z.string(),
|
|
89
97
|
});
|
|
90
98
|
export type HtmlGenParams = z.infer<typeof HtmlGenParamsSchema>;
|
|
91
99
|
|
|
92
|
-
export const
|
|
93
|
-
|
|
94
|
-
});
|
|
95
|
-
export type TextBlockParams = z.infer<typeof TextBlockParamsSchema>;
|
|
96
|
-
|
|
97
|
-
export const ImageBlockParamsSchema = strictObject({
|
|
98
|
-
url: z.string(),
|
|
99
|
-
});
|
|
100
|
-
export type ImageBlockParams = z.infer<typeof ImageBlockParamsSchema>;
|
|
101
|
-
|
|
102
|
-
export const VideoBlockParamsSchema = strictObject({
|
|
103
|
-
url: z.string(),
|
|
104
|
-
});
|
|
105
|
-
export type VideoBlockParams = z.infer<typeof VideoBlockParamsSchema>;
|
|
106
|
-
|
|
107
|
-
export const FileBlockParamsSchema = strictObject({
|
|
108
|
-
filename: z.string(),
|
|
109
|
-
content: z.string(),
|
|
110
|
-
});
|
|
111
|
-
export type FileBlockParams = z.infer<typeof FileBlockParamsSchema>;
|
|
112
|
-
|
|
113
|
-
export const NoteParamsSchema = strictObject({
|
|
114
|
-
content: z.string(),
|
|
115
|
-
});
|
|
116
|
-
export type NoteParams = z.infer<typeof NoteParamsSchema>;
|
|
117
|
-
|
|
118
|
-
export const VarBlockParamsSchema = strictObject({
|
|
119
|
-
name: z.string(),
|
|
120
|
-
value: z.string(),
|
|
121
|
-
});
|
|
122
|
-
export type VarBlockParams = z.infer<typeof VarBlockParamsSchema>;
|
|
100
|
+
export const NoParamsSchema = z.null();
|
|
101
|
+
export type NoParams = z.infer<typeof NoParamsSchema>;
|
|
123
102
|
|
|
103
|
+
// OUTPUT SHEMA
|
|
124
104
|
export const TextGenOutputSchema = strictObject({
|
|
125
105
|
result: z.string(),
|
|
126
106
|
});
|
|
127
107
|
export type TextGenOutput = z.infer<typeof TextGenOutputSchema>;
|
|
128
108
|
|
|
129
109
|
export const ImageGenOutputSchema = strictObject({
|
|
130
|
-
|
|
110
|
+
images: z.array(CanvasFileRefSchema).min(1),
|
|
131
111
|
});
|
|
132
112
|
export type ImageGenOutput = z.infer<typeof ImageGenOutputSchema>;
|
|
133
113
|
|
|
134
114
|
export const VideoGenOutputSchema = strictObject({
|
|
135
|
-
|
|
115
|
+
video: CanvasFileRefSchema,
|
|
136
116
|
});
|
|
137
117
|
export type VideoGenOutput = z.infer<typeof VideoGenOutputSchema>;
|
|
138
118
|
|
|
139
119
|
export const AudioGenTTSOutputSchema = strictObject({
|
|
140
|
-
|
|
120
|
+
audio: CanvasFileRefSchema,
|
|
141
121
|
});
|
|
142
122
|
export type AudioGenTTSOutput = z.infer<typeof AudioGenTTSOutputSchema>;
|
|
143
123
|
|
|
@@ -147,14 +127,7 @@ export const AudioGenSTTOutputSchema = strictObject({
|
|
|
147
127
|
export type AudioGenSTTOutput = z.infer<typeof AudioGenSTTOutputSchema>;
|
|
148
128
|
|
|
149
129
|
export const ColorPaletteOutputSchema = strictObject({
|
|
150
|
-
|
|
151
|
-
colors: z.array(
|
|
152
|
-
strictObject({
|
|
153
|
-
hex: z.string(),
|
|
154
|
-
name: z.string(),
|
|
155
|
-
usage: z.string(),
|
|
156
|
-
}),
|
|
157
|
-
),
|
|
130
|
+
colors: z.array(z.string().regex(/^#[0-9A-Fa-f]{6}$/)).max(7),
|
|
158
131
|
});
|
|
159
132
|
export type ColorPaletteOutput = z.infer<typeof ColorPaletteOutputSchema>;
|
|
160
133
|
|
|
@@ -169,27 +142,46 @@ export const VarGenOutputSchema = strictObject({
|
|
|
169
142
|
export type VarGenOutput = z.infer<typeof VarGenOutputSchema>;
|
|
170
143
|
|
|
171
144
|
export const HtmlGenOutputSchema = strictObject({
|
|
145
|
+
sessionId: z.string(),
|
|
172
146
|
html: z.string(),
|
|
173
147
|
});
|
|
174
148
|
export type HtmlGenOutput = z.infer<typeof HtmlGenOutputSchema>;
|
|
175
149
|
|
|
176
|
-
export const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
150
|
+
export const TextBlockOutputSchema = strictObject({
|
|
151
|
+
text: z.string(),
|
|
152
|
+
});
|
|
153
|
+
export type TextBlockOutput = z.infer<typeof TextBlockOutputSchema>;
|
|
154
|
+
|
|
155
|
+
export const ImageBlockOutputSchema = strictObject({
|
|
156
|
+
image: CanvasFileRefSchema,
|
|
157
|
+
});
|
|
158
|
+
export type ImageBlockOutput = z.infer<typeof ImageBlockOutputSchema>;
|
|
159
|
+
|
|
160
|
+
export const VideoBlockOutputSchema = strictObject({
|
|
161
|
+
video: CanvasFileRefSchema,
|
|
162
|
+
});
|
|
163
|
+
export type VideoBlockOutput = z.infer<typeof VideoBlockOutputSchema>;
|
|
164
|
+
|
|
165
|
+
export const FileBlockOutputSchema = strictObject({
|
|
166
|
+
file: CanvasFileRefSchema,
|
|
167
|
+
});
|
|
168
|
+
export type FileBlockOutput = z.infer<typeof FileBlockOutputSchema>;
|
|
169
|
+
|
|
170
|
+
export const NoteOutputSchema = strictObject({
|
|
171
|
+
content: z.string(),
|
|
172
|
+
});
|
|
173
|
+
export type NoteOutput = z.infer<typeof NoteOutputSchema>;
|
|
174
|
+
|
|
175
|
+
export const VarBlockOutputSchema = strictObject({
|
|
176
|
+
name: z.string(),
|
|
177
|
+
value: z.string(),
|
|
178
|
+
});
|
|
179
|
+
export type VarBlockOutput = z.infer<typeof VarBlockOutputSchema>;
|
|
180
|
+
|
|
181
|
+
export const AudioBlockOutputSchema = strictObject({
|
|
182
|
+
audio: CanvasFileRefSchema.nullable().optional(),
|
|
183
|
+
});
|
|
184
|
+
export type AudioBlockOutput = z.infer<typeof AudioBlockOutputSchema>;
|
|
193
185
|
|
|
194
186
|
export const CanvasNodeParamsSchemaByType = {
|
|
195
187
|
[CANVAS_NODE_TYPE.textGen]: TextGenParamsSchema,
|
|
@@ -199,30 +191,39 @@ export const CanvasNodeParamsSchemaByType = {
|
|
|
199
191
|
[CANVAS_NODE_TYPE.videoEdit]: VideoGenParamsSchema,
|
|
200
192
|
[CANVAS_NODE_TYPE.ttsGen]: AudioGenParamsSchema,
|
|
201
193
|
[CANVAS_NODE_TYPE.sttGen]: AudioGenParamsSchema,
|
|
202
|
-
[CANVAS_NODE_TYPE.textBlock]:
|
|
203
|
-
[CANVAS_NODE_TYPE.imageBlock]:
|
|
204
|
-
[CANVAS_NODE_TYPE.videoBlock]:
|
|
205
|
-
[CANVAS_NODE_TYPE.fileBlock]:
|
|
206
|
-
[CANVAS_NODE_TYPE.note]:
|
|
194
|
+
[CANVAS_NODE_TYPE.textBlock]: NoParamsSchema,
|
|
195
|
+
[CANVAS_NODE_TYPE.imageBlock]: NoParamsSchema,
|
|
196
|
+
[CANVAS_NODE_TYPE.videoBlock]: NoParamsSchema,
|
|
197
|
+
[CANVAS_NODE_TYPE.fileBlock]: NoParamsSchema,
|
|
198
|
+
[CANVAS_NODE_TYPE.note]: NoParamsSchema,
|
|
207
199
|
[CANVAS_NODE_TYPE.colorPalette]: ColorPaletteParamsSchema,
|
|
208
200
|
[CANVAS_NODE_TYPE.motionControl]: MotionControlParamsSchema,
|
|
209
201
|
[CANVAS_NODE_TYPE.varGen]: VarGenParamsSchema,
|
|
210
|
-
[CANVAS_NODE_TYPE.varBlock]:
|
|
202
|
+
[CANVAS_NODE_TYPE.varBlock]: NoParamsSchema,
|
|
211
203
|
[CANVAS_NODE_TYPE.htmlGen]: HtmlGenParamsSchema,
|
|
204
|
+
[CANVAS_NODE_TYPE.audioBlock]: NoParamsSchema,
|
|
212
205
|
} as const;
|
|
213
206
|
|
|
214
|
-
export const
|
|
215
|
-
TextGenOutputSchema,
|
|
216
|
-
ImageGenOutputSchema,
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
]
|
|
225
|
-
|
|
207
|
+
export const CanvasNodeOutputSchemaByType = {
|
|
208
|
+
[CANVAS_NODE_TYPE.textGen]: TextGenOutputSchema,
|
|
209
|
+
[CANVAS_NODE_TYPE.imageGen]: ImageGenOutputSchema,
|
|
210
|
+
[CANVAS_NODE_TYPE.imageEdit]: ImageGenOutputSchema,
|
|
211
|
+
[CANVAS_NODE_TYPE.videoGen]: VideoGenOutputSchema,
|
|
212
|
+
[CANVAS_NODE_TYPE.videoEdit]: VideoGenOutputSchema,
|
|
213
|
+
[CANVAS_NODE_TYPE.ttsGen]: AudioGenTTSOutputSchema,
|
|
214
|
+
[CANVAS_NODE_TYPE.sttGen]: AudioGenSTTOutputSchema,
|
|
215
|
+
[CANVAS_NODE_TYPE.textBlock]: TextBlockOutputSchema,
|
|
216
|
+
[CANVAS_NODE_TYPE.imageBlock]: ImageBlockOutputSchema,
|
|
217
|
+
[CANVAS_NODE_TYPE.videoBlock]: VideoBlockOutputSchema,
|
|
218
|
+
[CANVAS_NODE_TYPE.fileBlock]: FileBlockOutputSchema,
|
|
219
|
+
[CANVAS_NODE_TYPE.note]: NoteOutputSchema,
|
|
220
|
+
[CANVAS_NODE_TYPE.colorPalette]: ColorPaletteOutputSchema,
|
|
221
|
+
[CANVAS_NODE_TYPE.motionControl]: MotionControlOutputSchema,
|
|
222
|
+
[CANVAS_NODE_TYPE.varGen]: VarGenOutputSchema,
|
|
223
|
+
[CANVAS_NODE_TYPE.varBlock]: VarBlockOutputSchema,
|
|
224
|
+
[CANVAS_NODE_TYPE.htmlGen]: HtmlGenOutputSchema,
|
|
225
|
+
[CANVAS_NODE_TYPE.audioBlock]: AudioBlockOutputSchema,
|
|
226
|
+
} as const;
|
|
226
227
|
|
|
227
228
|
export const CanvasNodeErrorSchema = z.object({
|
|
228
229
|
code: z.string(),
|
|
@@ -240,17 +241,19 @@ export type CanvasNodeParamsByType = {
|
|
|
240
241
|
[CANVAS_NODE_TYPE.videoEdit]: VideoGenParams;
|
|
241
242
|
[CANVAS_NODE_TYPE.ttsGen]: AudioGenParams;
|
|
242
243
|
[CANVAS_NODE_TYPE.sttGen]: AudioGenParams;
|
|
243
|
-
[CANVAS_NODE_TYPE.textBlock]:
|
|
244
|
-
[CANVAS_NODE_TYPE.imageBlock]:
|
|
245
|
-
[CANVAS_NODE_TYPE.videoBlock]:
|
|
246
|
-
[CANVAS_NODE_TYPE.fileBlock]:
|
|
247
|
-
[CANVAS_NODE_TYPE.note]:
|
|
244
|
+
[CANVAS_NODE_TYPE.textBlock]: NoParams;
|
|
245
|
+
[CANVAS_NODE_TYPE.imageBlock]: NoParams;
|
|
246
|
+
[CANVAS_NODE_TYPE.videoBlock]: NoParams;
|
|
247
|
+
[CANVAS_NODE_TYPE.fileBlock]: NoParams;
|
|
248
|
+
[CANVAS_NODE_TYPE.note]: NoParams;
|
|
248
249
|
[CANVAS_NODE_TYPE.colorPalette]: ColorPaletteParams;
|
|
249
250
|
[CANVAS_NODE_TYPE.motionControl]: MotionControlParams;
|
|
250
251
|
[CANVAS_NODE_TYPE.varGen]: VarGenParams;
|
|
251
|
-
[CANVAS_NODE_TYPE.varBlock]:
|
|
252
|
+
[CANVAS_NODE_TYPE.varBlock]: NoParams;
|
|
252
253
|
[CANVAS_NODE_TYPE.htmlGen]: HtmlGenParams;
|
|
254
|
+
[CANVAS_NODE_TYPE.audioBlock]: NoParams;
|
|
253
255
|
};
|
|
256
|
+
export type CanvasNodeParams = CanvasNodeParamsByType[keyof CanvasNodeParamsByType];
|
|
254
257
|
|
|
255
258
|
export type CanvasNodeOutputByType = {
|
|
256
259
|
[CANVAS_NODE_TYPE.textGen]: TextGenOutput;
|
|
@@ -260,22 +263,170 @@ export type CanvasNodeOutputByType = {
|
|
|
260
263
|
[CANVAS_NODE_TYPE.videoEdit]: VideoGenOutput;
|
|
261
264
|
[CANVAS_NODE_TYPE.ttsGen]: AudioGenTTSOutput;
|
|
262
265
|
[CANVAS_NODE_TYPE.sttGen]: AudioGenSTTOutput;
|
|
266
|
+
[CANVAS_NODE_TYPE.textBlock]: TextBlockOutput;
|
|
267
|
+
[CANVAS_NODE_TYPE.imageBlock]: ImageBlockOutput;
|
|
268
|
+
[CANVAS_NODE_TYPE.videoBlock]: VideoBlockOutput;
|
|
269
|
+
[CANVAS_NODE_TYPE.fileBlock]: FileBlockOutput;
|
|
270
|
+
[CANVAS_NODE_TYPE.note]: NoteOutput;
|
|
263
271
|
[CANVAS_NODE_TYPE.colorPalette]: ColorPaletteOutput;
|
|
264
272
|
[CANVAS_NODE_TYPE.motionControl]: MotionControlOutput;
|
|
265
273
|
[CANVAS_NODE_TYPE.varGen]: VarGenOutput;
|
|
274
|
+
[CANVAS_NODE_TYPE.varBlock]: VarBlockOutput;
|
|
266
275
|
[CANVAS_NODE_TYPE.htmlGen]: HtmlGenOutput;
|
|
276
|
+
[CANVAS_NODE_TYPE.audioBlock]: AudioBlockOutput;
|
|
277
|
+
};
|
|
278
|
+
export type CanvasNodeOutput = CanvasNodeOutputByType[keyof CanvasNodeOutputByType];
|
|
279
|
+
|
|
280
|
+
export const validateCanvasNodeParamsByType = (
|
|
281
|
+
nodeDefinitionId: CANVAS_NODE_TYPE,
|
|
282
|
+
params: unknown,
|
|
283
|
+
ctx: z.RefinementCtx,
|
|
284
|
+
): void => {
|
|
285
|
+
if (params === null || params === undefined) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
const schema = CanvasNodeParamsSchemaByType[nodeDefinitionId];
|
|
290
|
+
const result = schema.safeParse(params);
|
|
291
|
+
if (result.success) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
for (const issue of result.error.issues) {
|
|
296
|
+
ctx.addIssue({
|
|
297
|
+
...issue,
|
|
298
|
+
path: ['params', ...issue.path],
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
export const validateCanvasNodeOutputByType = (
|
|
304
|
+
nodeDefinitionId: CANVAS_NODE_TYPE,
|
|
305
|
+
output: unknown,
|
|
306
|
+
ctx: z.RefinementCtx,
|
|
307
|
+
): void => {
|
|
308
|
+
if (output === null || output === undefined) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
const schema = CanvasNodeOutputSchemaByType[nodeDefinitionId];
|
|
313
|
+
const result = schema.safeParse(output);
|
|
314
|
+
if (result.success) {
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
for (const issue of result.error.issues) {
|
|
319
|
+
ctx.addIssue({
|
|
320
|
+
...issue,
|
|
321
|
+
path: ['output', ...issue.path],
|
|
322
|
+
});
|
|
323
|
+
}
|
|
267
324
|
};
|
|
268
325
|
|
|
269
|
-
export const
|
|
326
|
+
export const CanvasNodeBaseSchema = z.object({
|
|
270
327
|
uuid: z.string().uuid(),
|
|
271
328
|
canvasId: z.string().uuid(),
|
|
272
329
|
nodeDefinitionId: z.nativeEnum(CANVAS_NODE_TYPE),
|
|
273
330
|
position: CanvasNodePositionSchema,
|
|
274
331
|
status: z.nativeEnum(NODE_RUN_STATUS),
|
|
275
332
|
toolJobId: z.string().uuid().nullable(),
|
|
276
|
-
params:
|
|
277
|
-
output:
|
|
333
|
+
params: z.unknown().nullable(),
|
|
334
|
+
output: z.unknown().nullable(),
|
|
278
335
|
error: CanvasNodeErrorSchema.nullable(),
|
|
279
336
|
createdAt: z.date(),
|
|
280
337
|
updatedAt: z.date(),
|
|
281
338
|
});
|
|
339
|
+
|
|
340
|
+
export const CanvasNodeSchema = z.discriminatedUnion('nodeDefinitionId', [
|
|
341
|
+
CanvasNodeBaseSchema.extend({
|
|
342
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.textGen),
|
|
343
|
+
params: TextGenParamsSchema.nullable(),
|
|
344
|
+
output: TextGenOutputSchema.nullable(),
|
|
345
|
+
}),
|
|
346
|
+
CanvasNodeBaseSchema.extend({
|
|
347
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.imageGen),
|
|
348
|
+
params: ImageGenParamsSchema.nullable(),
|
|
349
|
+
output: ImageGenOutputSchema.nullable(),
|
|
350
|
+
}),
|
|
351
|
+
CanvasNodeBaseSchema.extend({
|
|
352
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.imageEdit),
|
|
353
|
+
params: ImageGenParamsSchema.nullable(),
|
|
354
|
+
output: ImageGenOutputSchema.nullable(),
|
|
355
|
+
}),
|
|
356
|
+
CanvasNodeBaseSchema.extend({
|
|
357
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.videoGen),
|
|
358
|
+
params: VideoGenParamsSchema.nullable(),
|
|
359
|
+
output: VideoGenOutputSchema.nullable(),
|
|
360
|
+
}),
|
|
361
|
+
CanvasNodeBaseSchema.extend({
|
|
362
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.videoEdit),
|
|
363
|
+
params: VideoGenParamsSchema.nullable(),
|
|
364
|
+
output: VideoGenOutputSchema.nullable(),
|
|
365
|
+
}),
|
|
366
|
+
CanvasNodeBaseSchema.extend({
|
|
367
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.ttsGen),
|
|
368
|
+
params: AudioGenParamsSchema.nullable(),
|
|
369
|
+
output: AudioGenTTSOutputSchema.nullable(),
|
|
370
|
+
}),
|
|
371
|
+
CanvasNodeBaseSchema.extend({
|
|
372
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.sttGen),
|
|
373
|
+
params: AudioGenParamsSchema.nullable(),
|
|
374
|
+
output: AudioGenSTTOutputSchema.nullable(),
|
|
375
|
+
}),
|
|
376
|
+
CanvasNodeBaseSchema.extend({
|
|
377
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.textBlock),
|
|
378
|
+
params: NoParamsSchema,
|
|
379
|
+
output: TextBlockOutputSchema.nullable(),
|
|
380
|
+
}),
|
|
381
|
+
CanvasNodeBaseSchema.extend({
|
|
382
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.imageBlock),
|
|
383
|
+
params: NoParamsSchema,
|
|
384
|
+
output: ImageBlockOutputSchema.nullable(),
|
|
385
|
+
}),
|
|
386
|
+
CanvasNodeBaseSchema.extend({
|
|
387
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.videoBlock),
|
|
388
|
+
params: NoParamsSchema,
|
|
389
|
+
output: VideoBlockOutputSchema.nullable(),
|
|
390
|
+
}),
|
|
391
|
+
CanvasNodeBaseSchema.extend({
|
|
392
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.fileBlock),
|
|
393
|
+
params: NoParamsSchema,
|
|
394
|
+
output: FileBlockOutputSchema.nullable(),
|
|
395
|
+
}),
|
|
396
|
+
CanvasNodeBaseSchema.extend({
|
|
397
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.note),
|
|
398
|
+
params: NoParamsSchema,
|
|
399
|
+
output: NoteOutputSchema.nullable(),
|
|
400
|
+
}),
|
|
401
|
+
CanvasNodeBaseSchema.extend({
|
|
402
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.colorPalette),
|
|
403
|
+
params: ColorPaletteParamsSchema.nullable(),
|
|
404
|
+
output: ColorPaletteOutputSchema.nullable(),
|
|
405
|
+
}),
|
|
406
|
+
CanvasNodeBaseSchema.extend({
|
|
407
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.motionControl),
|
|
408
|
+
params: MotionControlParamsSchema.nullable(),
|
|
409
|
+
output: MotionControlOutputSchema.nullable(),
|
|
410
|
+
}),
|
|
411
|
+
CanvasNodeBaseSchema.extend({
|
|
412
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.varGen),
|
|
413
|
+
params: VarGenParamsSchema.nullable(),
|
|
414
|
+
output: VarGenOutputSchema.nullable(),
|
|
415
|
+
}),
|
|
416
|
+
CanvasNodeBaseSchema.extend({
|
|
417
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.varBlock),
|
|
418
|
+
params: NoParamsSchema,
|
|
419
|
+
output: VarBlockOutputSchema.nullable(),
|
|
420
|
+
}),
|
|
421
|
+
CanvasNodeBaseSchema.extend({
|
|
422
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.htmlGen),
|
|
423
|
+
params: HtmlGenParamsSchema.nullable(),
|
|
424
|
+
output: HtmlGenOutputSchema.nullable(),
|
|
425
|
+
}),
|
|
426
|
+
CanvasNodeBaseSchema.extend({
|
|
427
|
+
nodeDefinitionId: z.literal(CANVAS_NODE_TYPE.audioBlock),
|
|
428
|
+
params: NoParamsSchema,
|
|
429
|
+
output: AudioBlockOutputSchema.nullable(),
|
|
430
|
+
}),
|
|
431
|
+
]);
|
|
432
|
+
export type CanvasNode = z.infer<typeof CanvasNodeSchema>;
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { INPUT_OUTPUT_TYPE, CANVAS_NODE_TYPE } from '../constants';
|
|
3
|
-
import {
|
|
3
|
+
import { CanvasNodePositionSchema, validateCanvasNodeParamsByType } from './canvas-node.schema';
|
|
4
4
|
|
|
5
|
-
const CanvasTemplateGraphNodeSchema = z
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
const CanvasTemplateGraphNodeSchema = z
|
|
6
|
+
.object({
|
|
7
|
+
uuid: z.string().trim().min(1),
|
|
8
|
+
nodeDefinitionId: z.nativeEnum(CANVAS_NODE_TYPE),
|
|
9
|
+
position: CanvasNodePositionSchema,
|
|
10
|
+
params: z.unknown().nullable().optional(),
|
|
11
|
+
})
|
|
12
|
+
.superRefine((node, ctx) => {
|
|
13
|
+
validateCanvasNodeParamsByType(node.nodeDefinitionId, node.params, ctx);
|
|
14
|
+
});
|
|
11
15
|
|
|
12
16
|
const CanvasTemplateGraphEdgeSchema = z.object({
|
|
13
17
|
sourceId: z.string().trim().min(1),
|
|
14
18
|
targetId: z.string().trim().min(1),
|
|
15
|
-
|
|
19
|
+
sourceHandle: z.nativeEnum(INPUT_OUTPUT_TYPE),
|
|
20
|
+
targetHandle: z.nativeEnum(INPUT_OUTPUT_TYPE),
|
|
16
21
|
});
|
|
17
22
|
|
|
18
23
|
export const CanvasTemplateGraphSchema = z
|
|
@@ -55,14 +60,33 @@ export const CanvasTemplateGraphSchema = z
|
|
|
55
60
|
|
|
56
61
|
export type CanvasTemplateGraph = z.infer<typeof CanvasTemplateGraphSchema>;
|
|
57
62
|
|
|
63
|
+
export const CanvasTemplateTagSchema = z.object({
|
|
64
|
+
icons: z.object({
|
|
65
|
+
svg: z.string(),
|
|
66
|
+
png: z.string(),
|
|
67
|
+
}),
|
|
68
|
+
alias: z.string().trim().min(1),
|
|
69
|
+
title: z.string().trim().min(1),
|
|
70
|
+
});
|
|
71
|
+
export type CanvasTemplateTag = z.infer<typeof CanvasTemplateTagSchema>;
|
|
72
|
+
|
|
58
73
|
export const CanvasTemplateSchema = z.object({
|
|
59
74
|
uuid: z.string().uuid(),
|
|
60
75
|
name: z.string(),
|
|
61
76
|
description: z.string().nullable(),
|
|
62
|
-
|
|
77
|
+
isPopular: z.boolean(),
|
|
63
78
|
previewImageUrl: z.string().url().nullable(),
|
|
64
|
-
tags: z.array(
|
|
79
|
+
tags: z.array(CanvasTemplateTagSchema),
|
|
65
80
|
graph: CanvasTemplateGraphSchema,
|
|
66
81
|
createdAt: z.date(),
|
|
67
82
|
updatedAt: z.date(),
|
|
68
83
|
});
|
|
84
|
+
|
|
85
|
+
export const GeneratedCanvasTemplateSchema = z.object({
|
|
86
|
+
name: z.string().trim().min(1),
|
|
87
|
+
description: z.string().trim().min(1),
|
|
88
|
+
previewImageUrl: z.string().url().nullable(),
|
|
89
|
+
tags: z.array(CanvasTemplateTagSchema),
|
|
90
|
+
graph: CanvasTemplateGraphSchema,
|
|
91
|
+
});
|
|
92
|
+
export type GeneratedCanvasTemplate = z.infer<typeof GeneratedCanvasTemplateSchema>;
|
package/models/canvas.schema.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { CANVAS_STATUS } from '../constants';
|
|
3
2
|
|
|
4
3
|
export const CanvasSchema = z.object({
|
|
5
4
|
uuid: z.string().uuid(),
|
|
6
5
|
name: z.string(),
|
|
7
6
|
userId: z.string().uuid(),
|
|
8
|
-
status: z.nativeEnum(CANVAS_STATUS),
|
|
9
7
|
createdAt: z.date(),
|
|
10
8
|
updatedAt: z.date(),
|
|
11
9
|
});
|
package/models/index.ts
CHANGED
|
@@ -50,6 +50,8 @@ export * from './tool-group.schema';
|
|
|
50
50
|
export * from './tool.schema';
|
|
51
51
|
export * from './unlocked-by-subscription.schema';
|
|
52
52
|
export * from './unregistered-user.schema';
|
|
53
|
+
export * from './update-post.schema';
|
|
54
|
+
export * from './update-post-translation.schema';
|
|
53
55
|
export * from './user-task.schema';
|
|
54
56
|
export * from './user-to-product.schema';
|
|
55
57
|
export * from './user-to-subscription.schema';
|
package/models/post.schema.ts
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TOOL_JOB_STATUS } from '../../../constants';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
export const MarketplaceCardDescriptionGenerationSchema = z.object({
|
|
5
|
+
uuid: z.string().uuid(),
|
|
6
|
+
status: z.nativeEnum(TOOL_JOB_STATUS),
|
|
7
|
+
title: z.string().nullable(),
|
|
8
|
+
subtitle: z.string().nullable(),
|
|
9
|
+
advantages: z.array(z.string()),
|
|
10
|
+
tags: z.array(z.string()),
|
|
11
|
+
backgroundDescription: z.string().nullable(),
|
|
12
|
+
price: z.number(),
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export type MarketplaceCardDescriptionGeneration = z.infer<
|
|
16
|
+
typeof MarketplaceCardDescriptionGenerationSchema
|
|
17
|
+
>;
|