@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.
Files changed (189) hide show
  1. package/api/controllers/http/canvas-template.ts +2 -0
  2. package/api/controllers/http/canvas-text-generation.ts +7 -0
  3. package/api/controllers/http/canvas.ts +2 -0
  4. package/api/controllers/http/index.ts +3 -0
  5. package/api/controllers/http/marketplace-card.ts +1 -0
  6. package/api/controllers/http/palette.ts +6 -0
  7. package/api/controllers/http/update-post.ts +15 -0
  8. package/api/routes.ts +29 -0
  9. package/build/api/controllers/http/canvas-template.js +2 -0
  10. package/build/api/controllers/http/canvas-text-generation.js +9 -0
  11. package/build/api/controllers/http/canvas.js +2 -0
  12. package/build/api/controllers/http/index.js +3 -0
  13. package/build/api/controllers/http/marketplace-card.js +1 -0
  14. package/build/api/controllers/http/palette.js +8 -0
  15. package/build/api/controllers/http/update-post.js +16 -0
  16. package/build/api/routes.js +23 -0
  17. package/build/commands/{canvas → ai-studio/canvas}/create-canvas.command.js +1 -1
  18. package/build/commands/{canvas → ai-studio/canvas}/delete-canvas.command.js +1 -1
  19. package/build/commands/ai-studio/canvas/execute-graph-by-node.command.js +17 -0
  20. package/build/commands/{canvas → ai-studio/canvas}/find-canvas-by-uuid-with-relations.query.js +1 -1
  21. package/build/commands/{canvas → ai-studio/canvas}/find-canvas-by-uuid.query.js +1 -1
  22. package/build/commands/{canvas → ai-studio/canvas}/find-canvases-by-user.query.js +2 -2
  23. package/build/commands/ai-studio/canvas/get-price.query.js +29 -0
  24. package/build/commands/{canvas → ai-studio/canvas}/index.js +2 -0
  25. package/build/commands/{canvas → ai-studio/canvas}/run-canvas.command.js +1 -7
  26. package/build/commands/{canvas → ai-studio/canvas}/save-canvas.command.js +10 -5
  27. package/build/commands/{canvas → ai-studio/canvas}/update-canvas.command.js +1 -1
  28. package/build/commands/{canvas-edge → ai-studio/canvas-edge}/create-canvas-edge.command.js +4 -3
  29. package/build/commands/{canvas-edge → ai-studio/canvas-edge}/find-canvas-edge-by-source-and-target.query.js +1 -1
  30. package/build/commands/{canvas-edge → ai-studio/canvas-edge}/find-canvas-edges-by-canvas.query.js +1 -1
  31. package/build/commands/ai-studio/canvas-node/count-canvas-nodes-by-canvas.query.js +16 -0
  32. package/build/commands/{canvas-node → ai-studio/canvas-node}/create-canvas-node.command.js +8 -4
  33. package/build/commands/{canvas-node → ai-studio/canvas-node}/delete-canvas-node.command.js +2 -2
  34. package/build/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-node-by-uuid.query.js +2 -2
  35. package/build/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-node-definitions-with-configs.query.js +1 -1
  36. package/build/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-nodes-by-canvas.query.js +1 -1
  37. package/build/commands/{canvas-node → ai-studio/canvas-node}/index.js +1 -0
  38. package/build/commands/{canvas-node → ai-studio/canvas-node}/update-canvas-node.command.js +13 -5
  39. package/build/commands/ai-studio/canvas-template/create-canvas-from-generated-template.command.js +44 -0
  40. package/build/commands/{canvas-template → ai-studio/canvas-template}/create-canvas-from-template.command.js +1 -1
  41. package/build/commands/{canvas-template → ai-studio/canvas-template}/create-canvas-template.command.js +3 -2
  42. package/build/commands/{canvas-template → ai-studio/canvas-template}/delete-canvas-template.command.js +3 -2
  43. package/build/commands/{canvas-template → ai-studio/canvas-template}/find-canvas-template-by-uuid.query.js +1 -1
  44. package/build/commands/{canvas-template → ai-studio/canvas-template}/find-canvas-templates.query.js +5 -1
  45. package/build/commands/ai-studio/canvas-template/generate-canvas-template-by-prompt.command.js +14 -0
  46. package/build/commands/{canvas-template → ai-studio/canvas-template}/index.js +3 -1
  47. package/build/commands/{canvas-template → ai-studio/canvas-template}/update-canvas-template.command.js +3 -2
  48. package/build/{constants/canvas → commands/ai-studio/canvas-tool}/index.js +2 -1
  49. package/build/commands/ai-studio/canvas-tool/palette/generate-palette.command.js +20 -0
  50. package/build/commands/ai-studio/canvas-tool/palette/get-palette-price.command.js +17 -0
  51. package/build/{constants/canvas/enums → commands/ai-studio/canvas-tool/palette}/index.js +2 -1
  52. package/build/commands/ai-studio/canvas-tool/text-gen/generate-text.command.js +17 -0
  53. package/build/commands/ai-studio/canvas-tool/text-gen/get-text-generation-config.command.js +13 -0
  54. package/build/commands/ai-studio/canvas-tool/text-gen/get-text-generation-price.command.js +18 -0
  55. package/build/commands/ai-studio/canvas-tool/text-gen/index.js +19 -0
  56. package/build/commands/ai-studio/index.js +21 -0
  57. package/build/commands/blog/create-post.command.js +4 -11
  58. package/build/commands/category/create-category.command.js +6 -8
  59. package/build/commands/course/create-course.command.js +5 -9
  60. package/build/commands/index.js +6 -4
  61. package/build/commands/page/create-page.command.js +8 -10
  62. package/build/commands/prompt/create-prompt.command.js +2 -6
  63. package/build/commands/prompt-category/create-prompt-category.command.js +3 -7
  64. package/build/commands/prompt-topic/create-prompt-topic.command.js +3 -9
  65. package/build/commands/question/create-question.command.js +2 -6
  66. package/build/commands/tools/diagrams/get-diagrams-price.command.js +1 -1
  67. package/build/commands/tools/marketplace-card/execute-marketplace-card.command.js +1 -0
  68. package/build/commands/tools/marketplace-card/generate-marketplace-card-description.command.js +14 -0
  69. package/build/commands/tools/marketplace-card/index.js +1 -0
  70. package/build/commands/update-post/create-update-post-translation.command.js +20 -0
  71. package/build/commands/update-post/create-update-post.command.js +14 -0
  72. package/build/commands/update-post/find-all-update-posts.command.js +11 -0
  73. package/build/commands/update-post/find-update-post.command.js +17 -0
  74. package/build/commands/update-post/get-all-update-post-translations.query.js +14 -0
  75. package/build/commands/update-post/get-latest-update-posts.command.js +11 -0
  76. package/build/commands/update-post/index.js +24 -0
  77. package/build/commands/update-post/update-update-post-translation.command.js +20 -0
  78. package/build/commands/update-post/update-update-post.command.js +17 -0
  79. package/build/commands/user/send-telegram-notification.command.js +1 -6
  80. package/build/constants/ai-model/enums/ai-model-strategy.enum.js +1 -0
  81. package/build/constants/canvas-edge/enums/input-output-type.enum.js +2 -0
  82. package/build/constants/canvas-node/enums/canvas-node-type.enum.js +1 -0
  83. package/build/constants/index.js +0 -1
  84. package/build/constants/tool-video/enums/index.js +2 -0
  85. package/build/constants/tool-video/enums/video-publish-moderation-status.enum.js +9 -0
  86. package/build/models/canvas-edge.schema.js +2 -1
  87. package/build/models/canvas-node-definition.schema.js +12 -2
  88. package/build/models/canvas-node.schema.js +202 -80
  89. package/build/models/canvas-template.schema.js +26 -6
  90. package/build/models/canvas.schema.js +0 -2
  91. package/build/models/index.js +2 -0
  92. package/build/models/post.schema.js +1 -1
  93. package/build/models/tools/marketplace-card/index.js +1 -0
  94. package/build/models/tools/marketplace-card/marketplace-card-description-generation.schema.js +15 -0
  95. package/build/models/tools/video/video-job.schema.js +1 -0
  96. package/build/models/update-post-translation.schema.js +15 -0
  97. package/build/models/update-post.schema.js +13 -0
  98. package/commands/{canvas → ai-studio/canvas}/create-canvas.command.ts +1 -1
  99. package/commands/{canvas → ai-studio/canvas}/delete-canvas.command.ts +1 -1
  100. package/commands/ai-studio/canvas/execute-graph-by-node.command.ts +20 -0
  101. package/commands/{canvas → ai-studio/canvas}/find-canvas-by-uuid-with-relations.query.ts +1 -1
  102. package/commands/{canvas → ai-studio/canvas}/find-canvas-by-uuid.query.ts +1 -1
  103. package/commands/{canvas → ai-studio/canvas}/find-canvases-by-user.query.ts +2 -2
  104. package/commands/ai-studio/canvas/get-price.query.ts +37 -0
  105. package/commands/{canvas → ai-studio/canvas}/index.ts +2 -0
  106. package/commands/{canvas → ai-studio/canvas}/run-canvas.command.ts +1 -13
  107. package/commands/{canvas → ai-studio/canvas}/save-canvas.command.ts +15 -10
  108. package/commands/{canvas → ai-studio/canvas}/update-canvas.command.ts +1 -1
  109. package/commands/{canvas-edge → ai-studio/canvas-edge}/create-canvas-edge.command.ts +4 -3
  110. package/commands/{canvas-edge → ai-studio/canvas-edge}/find-canvas-edge-by-source-and-target.query.ts +1 -1
  111. package/commands/{canvas-edge → ai-studio/canvas-edge}/find-canvas-edges-by-canvas.query.ts +1 -1
  112. package/commands/ai-studio/canvas-node/count-canvas-nodes-by-canvas.query.ts +20 -0
  113. package/commands/ai-studio/canvas-node/create-canvas-node.command.ts +33 -0
  114. package/commands/{canvas-node → ai-studio/canvas-node}/delete-canvas-node.command.ts +2 -2
  115. package/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-node-by-uuid.query.ts +2 -2
  116. package/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-node-definitions-with-configs.query.ts +1 -1
  117. package/commands/{canvas-node → ai-studio/canvas-node}/find-canvas-nodes-by-canvas.query.ts +1 -1
  118. package/commands/{canvas-node → ai-studio/canvas-node}/index.ts +1 -0
  119. package/commands/ai-studio/canvas-node/update-canvas-node.command.ts +40 -0
  120. package/commands/ai-studio/canvas-template/create-canvas-from-generated-template.command.ts +57 -0
  121. package/commands/{canvas-template → ai-studio/canvas-template}/create-canvas-from-template.command.ts +1 -1
  122. package/commands/{canvas-template → ai-studio/canvas-template}/create-canvas-template.command.ts +7 -2
  123. package/commands/{canvas-template → ai-studio/canvas-template}/delete-canvas-template.command.ts +3 -2
  124. package/commands/{canvas-template → ai-studio/canvas-template}/find-canvas-template-by-uuid.query.ts +1 -1
  125. package/commands/{canvas-template → ai-studio/canvas-template}/find-canvas-templates.query.ts +5 -1
  126. package/commands/ai-studio/canvas-template/generate-canvas-template-by-prompt.command.ts +16 -0
  127. package/commands/{canvas-template → ai-studio/canvas-template}/index.ts +3 -1
  128. package/commands/{canvas-template → ai-studio/canvas-template}/update-canvas-template.command.ts +7 -2
  129. package/commands/ai-studio/canvas-tool/index.ts +2 -0
  130. package/commands/ai-studio/canvas-tool/palette/generate-palette.command.ts +23 -0
  131. package/commands/ai-studio/canvas-tool/palette/get-palette-price.command.ts +17 -0
  132. package/commands/ai-studio/canvas-tool/palette/index.ts +2 -0
  133. package/commands/ai-studio/canvas-tool/text-gen/generate-text.command.ts +17 -0
  134. package/commands/ai-studio/canvas-tool/text-gen/get-text-generation-config.command.ts +13 -0
  135. package/commands/ai-studio/canvas-tool/text-gen/get-text-generation-price.command.ts +18 -0
  136. package/commands/ai-studio/canvas-tool/text-gen/index.ts +3 -0
  137. package/commands/ai-studio/index.ts +5 -0
  138. package/commands/blog/create-post.command.ts +4 -11
  139. package/commands/category/create-category.command.ts +6 -8
  140. package/commands/course/create-course.command.ts +5 -9
  141. package/commands/index.ts +6 -5
  142. package/commands/page/create-page.command.ts +8 -10
  143. package/commands/prompt/create-prompt.command.ts +2 -6
  144. package/commands/prompt-category/create-prompt-category.command.ts +3 -7
  145. package/commands/prompt-topic/create-prompt-topic.command.ts +3 -9
  146. package/commands/question/create-question.command.ts +2 -6
  147. package/commands/tools/diagrams/get-diagrams-price.command.ts +1 -1
  148. package/commands/tools/marketplace-card/execute-marketplace-card.command.ts +1 -0
  149. package/commands/tools/marketplace-card/generate-marketplace-card-description.command.ts +16 -0
  150. package/commands/tools/marketplace-card/index.ts +1 -0
  151. package/commands/update-post/create-update-post-translation.command.ts +25 -0
  152. package/commands/update-post/create-update-post.command.ts +16 -0
  153. package/commands/update-post/find-all-update-posts.command.ts +10 -0
  154. package/commands/update-post/find-update-post.command.ts +22 -0
  155. package/commands/update-post/get-all-update-post-translations.query.ts +16 -0
  156. package/commands/update-post/get-latest-update-posts.command.ts +10 -0
  157. package/commands/update-post/index.ts +8 -0
  158. package/commands/update-post/update-update-post-translation.command.ts +25 -0
  159. package/commands/update-post/update-update-post.command.ts +22 -0
  160. package/commands/user/send-telegram-notification.command.ts +1 -8
  161. package/constants/ai-model/enums/ai-model-strategy.enum.ts +1 -0
  162. package/constants/canvas-edge/enums/input-output-type.enum.ts +2 -0
  163. package/constants/canvas-node/enums/canvas-node-type.enum.ts +1 -0
  164. package/constants/index.ts +0 -1
  165. package/constants/tool-video/enums/index.ts +2 -0
  166. package/constants/tool-video/enums/video-publish-moderation-status.enum.ts +5 -0
  167. package/models/canvas-edge.schema.ts +2 -1
  168. package/models/canvas-node-definition.schema.ts +15 -1
  169. package/models/canvas-node.schema.ts +253 -102
  170. package/models/canvas-template.schema.ts +34 -10
  171. package/models/canvas.schema.ts +0 -2
  172. package/models/index.ts +2 -0
  173. package/models/post.schema.ts +1 -1
  174. package/models/tools/marketplace-card/index.ts +1 -0
  175. package/models/tools/marketplace-card/marketplace-card-description-generation.schema.ts +17 -0
  176. package/models/tools/video/video-job.schema.ts +2 -1
  177. package/models/update-post-translation.schema.ts +13 -0
  178. package/models/update-post.schema.ts +11 -0
  179. package/package.json +1 -1
  180. package/build/constants/canvas/enums/canvas-status.enum.js +0 -9
  181. package/commands/canvas-node/create-canvas-node.command.ts +0 -25
  182. package/commands/canvas-node/update-canvas-node.command.ts +0 -26
  183. package/constants/canvas/enums/canvas-status.enum.ts +0 -5
  184. package/constants/canvas/enums/index.ts +0 -1
  185. package/constants/canvas/index.ts +0 -1
  186. /package/build/commands/{canvas-edge → ai-studio/canvas-edge}/delete-canvas-edge.command.js +0 -0
  187. /package/build/commands/{canvas-edge → ai-studio/canvas-edge}/index.js +0 -0
  188. /package/commands/{canvas-edge → ai-studio/canvas-edge}/delete-canvas-edge.command.ts +0 -0
  189. /package/commands/{canvas-edge → ai-studio/canvas-edge}/index.ts +0 -0
@@ -0,0 +1,5 @@
1
+ export enum VIDEO_PUBLISH_MODERATION_STATUS {
2
+ NOT_CHECKED = 'NOT_CHECKED',
3
+ PASSED = 'PASSED',
4
+ FAILED = 'FAILED',
5
+ }
@@ -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
- handle: z.nativeEnum(INPUT_OUTPUT_TYPE),
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
- model: z.string(),
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
- model: z.string(),
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
- model: z.string(),
36
- duration: z.string().optional(),
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
- model: z.string(),
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
- model: z.string(),
55
- audioFileId: z.string().uuid(),
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
- model: z.string(),
77
- vars: z.array(
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
- model: z.string(),
95
+ modelId: z.string(),
96
+ modelName: z.string(),
89
97
  });
90
98
  export type HtmlGenParams = z.infer<typeof HtmlGenParamsSchema>;
91
99
 
92
- export const TextBlockParamsSchema = strictObject({
93
- content: z.string(),
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
- resultUrl: z.string(),
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
- resultUrl: z.string(),
115
+ video: CanvasFileRefSchema,
136
116
  });
137
117
  export type VideoGenOutput = z.infer<typeof VideoGenOutputSchema>;
138
118
 
139
119
  export const AudioGenTTSOutputSchema = strictObject({
140
- resultUrl: z.string(),
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
- paletteName: z.string(),
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 CanvasNodeParamsSchema = z.union([
177
- TextGenParamsSchema,
178
- ImageGenParamsSchema,
179
- VideoGenParamsSchema,
180
- AudioGenParamsSchema,
181
- ColorPaletteParamsSchema,
182
- MotionControlParamsSchema,
183
- VarGenParamsSchema,
184
- HtmlGenParamsSchema,
185
- TextBlockParamsSchema,
186
- ImageBlockParamsSchema,
187
- VideoBlockParamsSchema,
188
- FileBlockParamsSchema,
189
- NoteParamsSchema,
190
- VarBlockParamsSchema,
191
- ]);
192
- export type CanvasNodeParams = z.infer<typeof CanvasNodeParamsSchema>;
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]: TextBlockParamsSchema,
203
- [CANVAS_NODE_TYPE.imageBlock]: ImageBlockParamsSchema,
204
- [CANVAS_NODE_TYPE.videoBlock]: VideoBlockParamsSchema,
205
- [CANVAS_NODE_TYPE.fileBlock]: FileBlockParamsSchema,
206
- [CANVAS_NODE_TYPE.note]: NoteParamsSchema,
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]: VarBlockParamsSchema,
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 CanvasNodeOutputSchema = z.union([
215
- TextGenOutputSchema,
216
- ImageGenOutputSchema,
217
- VideoGenOutputSchema,
218
- AudioGenTTSOutputSchema,
219
- AudioGenSTTOutputSchema,
220
- ColorPaletteOutputSchema,
221
- MotionControlOutputSchema,
222
- VarGenOutputSchema,
223
- HtmlGenOutputSchema,
224
- ]);
225
- export type CanvasNodeOutput = z.infer<typeof CanvasNodeOutputSchema>;
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]: TextBlockParams;
244
- [CANVAS_NODE_TYPE.imageBlock]: ImageBlockParams;
245
- [CANVAS_NODE_TYPE.videoBlock]: VideoBlockParams;
246
- [CANVAS_NODE_TYPE.fileBlock]: FileBlockParams;
247
- [CANVAS_NODE_TYPE.note]: NoteParams;
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]: VarBlockParams;
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 CanvasNodeSchema = z.object({
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: CanvasNodeParamsSchema.nullable(),
277
- output: CanvasNodeOutputSchema.nullable(),
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 { CanvasNodeParamsSchema, CanvasNodePositionSchema } from './canvas-node.schema';
3
+ import { CanvasNodePositionSchema, validateCanvasNodeParamsByType } from './canvas-node.schema';
4
4
 
5
- const CanvasTemplateGraphNodeSchema = z.object({
6
- uuid: z.string().trim().min(1),
7
- nodeDefinitionId: z.nativeEnum(CANVAS_NODE_TYPE),
8
- position: CanvasNodePositionSchema,
9
- params: CanvasNodeParamsSchema.nullable().optional(),
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
- handle: z.nativeEnum(INPUT_OUTPUT_TYPE),
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
- userId: z.string().uuid().nullable(),
77
+ isPopular: z.boolean(),
63
78
  previewImageUrl: z.string().url().nullable(),
64
- tags: z.array(z.string()),
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>;
@@ -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';
@@ -5,7 +5,7 @@ export const PostSchema = z.object({
5
5
  uuid: z.string().uuid(),
6
6
  title: z.string(),
7
7
  alias: z.string(),
8
- image: z.string(),
8
+ image: z.nullable(z.string()),
9
9
  content: z.string(),
10
10
  author: z.string(),
11
11
  contentPreview: z.nullable(z.string()),
@@ -1,2 +1,3 @@
1
1
  export * from './marketplace-card-config.schema';
2
+ export * from './marketplace-card-description-generation.schema';
2
3
  export * from './marketplace-card-job.schema';
@@ -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
+ >;