@purpleschool/gptbot 0.14.9-stage-2 → 0.14.11
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-cron.ts +5 -0
- package/api/controllers/http/files.ts +1 -0
- package/api/controllers/http/index.ts +1 -0
- package/api/routes.ts +3 -0
- package/build/api/controllers/http/canvas-cron.js +7 -0
- package/build/api/controllers/http/files.js +1 -0
- package/build/api/controllers/http/index.js +1 -0
- package/build/api/routes.js +3 -0
- package/build/commands/agents/agent-dialog/send-agent-dialog-admin-reply.command.js +7 -2
- package/build/commands/ai-studio/canvas/index.js +1 -0
- package/build/commands/ai-studio/canvas/recover-stale-nodes.command.js +14 -0
- package/build/commands/b2b-compatible/anthropic-messages.command.js +1 -1
- package/build/commands/tools/tts/tts.command.js +5 -0
- package/build/constants/ai-model/enums/ai-model-tag.enum.js +7 -0
- package/build/constants/ai-model/enums/index.js +1 -0
- package/build/constants/subscription/free-subscription.constant.js +4 -4
- package/build/models/ai-model.schema.js +4 -0
- package/build/models/canvas-node.schema.js +1 -0
- package/build/models/tools/image-generation/image-generation-model.schema.js +2 -0
- package/build/models/tools/video/video-model.schema.js +2 -0
- package/commands/agents/agent-dialog/send-agent-dialog-admin-reply.command.ts +10 -5
- package/commands/ai-studio/canvas/index.ts +1 -0
- package/commands/ai-studio/canvas/recover-stale-nodes.command.ts +13 -0
- package/commands/b2b-compatible/anthropic-messages.command.ts +1 -1
- package/commands/tools/tts/tts.command.ts +6 -0
- package/constants/ai-model/enums/ai-model-tag.enum.ts +3 -0
- package/constants/ai-model/enums/index.ts +1 -0
- package/constants/subscription/free-subscription.constant.ts +4 -4
- package/models/ai-model.schema.ts +5 -1
- package/models/canvas-node.schema.ts +1 -0
- package/models/tools/image-generation/image-generation-model.schema.ts +2 -0
- package/models/tools/video/video-model.schema.ts +2 -0
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ export const FILE_PUBLIC_CONTROLLER = 'public/file' as const;
|
|
|
4
4
|
export const FILE_ROUTES = {
|
|
5
5
|
DELETE: (uuid: string) => `${uuid}`,
|
|
6
6
|
UPLOAD: 'upload',
|
|
7
|
+
UPLOAD_PUBLIC: 'upload-public',
|
|
7
8
|
UPLOAD_FILE: 'upload-file',
|
|
8
9
|
UPLOAD_IMAGE: 'upload-image',
|
|
9
10
|
CALCULATE_TEXT_FILE_COST: (uuid: string) => `cost/text/${uuid}`,
|
package/api/routes.ts
CHANGED
|
@@ -633,6 +633,9 @@ export const REST_API = {
|
|
|
633
633
|
DELETE: (uuid: string) =>
|
|
634
634
|
`${ROOT}/${CONTROLLERS.CANVAS_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_ROUTES.DELETE(uuid)}`,
|
|
635
635
|
},
|
|
636
|
+
CANVAS_CRON: {
|
|
637
|
+
RECOVER_STALE_NODES: `${ROOT}/${CONTROLLERS.CANVAS_CRON_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_CRON_ROUTES.RECOVER_STALE_NODES}`,
|
|
638
|
+
},
|
|
636
639
|
USER_TO_PRODUCT: {
|
|
637
640
|
FIND_BY_UUID: (uuid: string) =>
|
|
638
641
|
`${ROOT}/${CONTROLLERS.USER_TO_PRODUCT_CONTROLLER}/${CONTROLLERS.USER_TO_PRODUCT_ROUTES.FIND_BY_UUID(uuid)}`,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CANVAS_CRON_ROUTES = exports.CANVAS_CRON_PRIVATE_CONTROLLER = void 0;
|
|
4
|
+
exports.CANVAS_CRON_PRIVATE_CONTROLLER = 'private/canvas/cron';
|
|
5
|
+
exports.CANVAS_CRON_ROUTES = {
|
|
6
|
+
RECOVER_STALE_NODES: 'recover-stale-nodes',
|
|
7
|
+
};
|
|
@@ -6,6 +6,7 @@ exports.FILE_PUBLIC_CONTROLLER = 'public/file';
|
|
|
6
6
|
exports.FILE_ROUTES = {
|
|
7
7
|
DELETE: (uuid) => `${uuid}`,
|
|
8
8
|
UPLOAD: 'upload',
|
|
9
|
+
UPLOAD_PUBLIC: 'upload-public',
|
|
9
10
|
UPLOAD_FILE: 'upload-file',
|
|
10
11
|
UPLOAD_IMAGE: 'upload-image',
|
|
11
12
|
CALCULATE_TEXT_FILE_COST: (uuid) => `cost/text/${uuid}`,
|
|
@@ -22,6 +22,7 @@ __exportStar(require("./ai-vendor"), exports);
|
|
|
22
22
|
__exportStar(require("./auth"), exports);
|
|
23
23
|
__exportStar(require("./blog"), exports);
|
|
24
24
|
__exportStar(require("./canvas"), exports);
|
|
25
|
+
__exportStar(require("./canvas-cron"), exports);
|
|
25
26
|
__exportStar(require("./canvas-node-definition"), exports);
|
|
26
27
|
__exportStar(require("./canvas-node"), exports);
|
|
27
28
|
__exportStar(require("./canvas-edge"), exports);
|
package/build/api/routes.js
CHANGED
|
@@ -488,6 +488,9 @@ exports.REST_API = {
|
|
|
488
488
|
UPDATE: (uuid) => `${exports.ROOT}/${CONTROLLERS.CANVAS_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_ROUTES.UPDATE(uuid)}`,
|
|
489
489
|
DELETE: (uuid) => `${exports.ROOT}/${CONTROLLERS.CANVAS_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_ROUTES.DELETE(uuid)}`,
|
|
490
490
|
},
|
|
491
|
+
CANVAS_CRON: {
|
|
492
|
+
RECOVER_STALE_NODES: `${exports.ROOT}/${CONTROLLERS.CANVAS_CRON_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_CRON_ROUTES.RECOVER_STALE_NODES}`,
|
|
493
|
+
},
|
|
491
494
|
USER_TO_PRODUCT: {
|
|
492
495
|
FIND_BY_UUID: (uuid) => `${exports.ROOT}/${CONTROLLERS.USER_TO_PRODUCT_CONTROLLER}/${CONTROLLERS.USER_TO_PRODUCT_ROUTES.FIND_BY_UUID(uuid)}`,
|
|
493
496
|
UPDATE: (uuid) => `${exports.ROOT}/${CONTROLLERS.USER_TO_PRODUCT_CONTROLLER}/${CONTROLLERS.USER_TO_PRODUCT_ROUTES.UPDATE(uuid)}`,
|
|
@@ -8,10 +8,15 @@ var SendAgentDialogAdminReplyCommand;
|
|
|
8
8
|
dialogId: zod_1.z.string().uuid(),
|
|
9
9
|
});
|
|
10
10
|
SendAgentDialogAdminReplyCommand.RequestQuerySchema = zod_1.z.object({});
|
|
11
|
-
SendAgentDialogAdminReplyCommand.RequestBodySchema = zod_1.z
|
|
11
|
+
SendAgentDialogAdminReplyCommand.RequestBodySchema = zod_1.z
|
|
12
|
+
.object({
|
|
12
13
|
text: zod_1.z.string().optional(),
|
|
13
14
|
images: zod_1.z.array(zod_1.z.string()).default([]),
|
|
14
|
-
|
|
15
|
+
fileIds: zod_1.z.array(zod_1.z.string().uuid()).default([]),
|
|
16
|
+
})
|
|
17
|
+
.refine((data) => data.text || data.images.length > 0 || data.fileIds.length > 0, {
|
|
18
|
+
message: 'Message must contain text, images, or files',
|
|
19
|
+
path: ['text'],
|
|
15
20
|
});
|
|
16
21
|
SendAgentDialogAdminReplyCommand.ResponseSchema = zod_1.z.object({
|
|
17
22
|
data: zod_1.z.object({
|
|
@@ -24,3 +24,4 @@ __exportStar(require("./save-canvas.command"), exports);
|
|
|
24
24
|
__exportStar(require("./update-canvas.command"), exports);
|
|
25
25
|
__exportStar(require("./execute-graph-by-node.command"), exports);
|
|
26
26
|
__exportStar(require("./get-price.query"), exports);
|
|
27
|
+
__exportStar(require("./recover-stale-nodes.command"), exports);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RecoverStaleNodesCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
var RecoverStaleNodesCommand;
|
|
6
|
+
(function (RecoverStaleNodesCommand) {
|
|
7
|
+
RecoverStaleNodesCommand.RequestSchema = zod_1.z
|
|
8
|
+
.object({
|
|
9
|
+
staleMinutes: zod_1.z.number().int().positive().default(5),
|
|
10
|
+
maxStaleMinutes: zod_1.z.number().int().positive().default(60),
|
|
11
|
+
limit: zod_1.z.number().int().positive().default(50),
|
|
12
|
+
})
|
|
13
|
+
.default({});
|
|
14
|
+
})(RecoverStaleNodesCommand || (exports.RecoverStaleNodesCommand = RecoverStaleNodesCommand = {}));
|
|
@@ -118,7 +118,7 @@ var AnthropicMessagesCommand;
|
|
|
118
118
|
AnthropicMessagesCommand.BodySchema = zod_1.z
|
|
119
119
|
.object({
|
|
120
120
|
model: zod_1.z.string(),
|
|
121
|
-
max_tokens: zod_1.z.number().int().positive(),
|
|
121
|
+
max_tokens: zod_1.z.number().int().positive().optional(),
|
|
122
122
|
messages: zod_1.z.array(exports.AnthropicMessageSchema).min(1),
|
|
123
123
|
system: zod_1.z.union([zod_1.z.string(), zod_1.z.array(exports.AnthropicSystemContentBlockSchema)]).optional(),
|
|
124
124
|
stream: zod_1.z.boolean().optional(),
|
|
@@ -3,6 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TTSCommand = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const models_1 = require("../../../models");
|
|
6
|
+
const TTSReferenceSchema = zod_1.z.object({
|
|
7
|
+
audioUrl: zod_1.z.string().url(),
|
|
8
|
+
text: zod_1.z.string(),
|
|
9
|
+
});
|
|
6
10
|
var TTSCommand;
|
|
7
11
|
(function (TTSCommand) {
|
|
8
12
|
TTSCommand.RequestSchema = zod_1.z.object({
|
|
@@ -19,6 +23,7 @@ var TTSCommand;
|
|
|
19
23
|
})
|
|
20
24
|
.optional()
|
|
21
25
|
.default({}),
|
|
26
|
+
references: zod_1.z.array(TTSReferenceSchema).optional().default([]),
|
|
22
27
|
});
|
|
23
28
|
TTSCommand.ResponseSchema = zod_1.z.object({
|
|
24
29
|
data: models_1.ToolJobSchema,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AI_MODEL_TAG = void 0;
|
|
4
|
+
var AI_MODEL_TAG;
|
|
5
|
+
(function (AI_MODEL_TAG) {
|
|
6
|
+
AI_MODEL_TAG["RECOMMENDED"] = "recommended";
|
|
7
|
+
})(AI_MODEL_TAG || (exports.AI_MODEL_TAG = AI_MODEL_TAG = {}));
|
|
@@ -18,3 +18,4 @@ __exportStar(require("./ai-model-config-selector-type.enum"), exports);
|
|
|
18
18
|
__exportStar(require("./ai-model-feature.enum"), exports);
|
|
19
19
|
__exportStar(require("./ai-model-status.enum"), exports);
|
|
20
20
|
__exportStar(require("./ai-model-strategy.enum"), exports);
|
|
21
|
+
__exportStar(require("./ai-model-tag.enum"), exports);
|
|
@@ -16,12 +16,12 @@ exports.FREE_SUBSCRIPTION_DATA = {
|
|
|
16
16
|
plan: enums_1.SUBSCRIPTION_PLAN.mock,
|
|
17
17
|
icons: {
|
|
18
18
|
light: {
|
|
19
|
-
svg: 'https://rugpt.
|
|
20
|
-
png: 'https://rugpt.
|
|
19
|
+
svg: 'https://rugpt.storage.rugpt.io/images/images/81b60ce5-b687-43ff-85dd-e4e47c8e81e9.svg',
|
|
20
|
+
png: 'https://rugpt.storage.rugpt.io/images/images/e1bb1acd-a387-4596-8fd5-0159f692ff11.png',
|
|
21
21
|
},
|
|
22
22
|
dark: {
|
|
23
|
-
svg: 'https://rugpt.
|
|
24
|
-
png: 'https://rugpt.
|
|
23
|
+
svg: 'https://rugpt.storage.rugpt.io/images/images/ac095d48-a66b-4862-82c7-eb120b5bd467.svg',
|
|
24
|
+
png: 'https://rugpt.storage.rugpt.io/images/images/e2208949-a73a-4137-b5bd-760599a70691.png',
|
|
25
25
|
},
|
|
26
26
|
},
|
|
27
27
|
interval: '',
|
|
@@ -13,6 +13,8 @@ exports.AiModelSchema = zod_1.z.object({
|
|
|
13
13
|
tokenMultiplicator: zod_1.z.number(),
|
|
14
14
|
freeTokenMultiplicator: zod_1.z.number(),
|
|
15
15
|
order: zod_1.z.number(),
|
|
16
|
+
tags: zod_1.z.array(zod_1.z.nativeEnum(constants_1.AI_MODEL_TAG)),
|
|
17
|
+
hint: zod_1.z.string().nullable(),
|
|
16
18
|
canUse: zod_1.z.optional(zod_1.z.boolean()),
|
|
17
19
|
status: zod_1.z.nativeEnum(constants_1.AI_MODEL_STATUS),
|
|
18
20
|
features: zod_1.z.array(zod_1.z.nativeEnum(constants_1.AI_MODEL_FEATURE)),
|
|
@@ -33,6 +35,8 @@ exports.AiModelSchema = zod_1.z.object({
|
|
|
33
35
|
updatedAt: zod_1.z.date(),
|
|
34
36
|
});
|
|
35
37
|
exports.CreateAiModelSchema = exports.AiModelSchema.extend({
|
|
38
|
+
tags: zod_1.z.array(zod_1.z.nativeEnum(constants_1.AI_MODEL_TAG)).default([]),
|
|
39
|
+
hint: zod_1.z.string().nullable().default(null),
|
|
36
40
|
model: zod_1.z.string(),
|
|
37
41
|
maxInputTokens: zod_1.z.number(),
|
|
38
42
|
});
|
|
@@ -212,6 +212,7 @@ exports.CanvasNodeBaseSchema = zod_1.z.object({
|
|
|
212
212
|
status: zod_1.z.nativeEnum(constants_1.NODE_RUN_STATUS),
|
|
213
213
|
toolJobId: zod_1.z.string().uuid().nullable(),
|
|
214
214
|
params: zod_1.z.unknown().nullable(),
|
|
215
|
+
isParamsChanged: zod_1.z.boolean().optional(),
|
|
215
216
|
output: zod_1.z.unknown().nullable(),
|
|
216
217
|
error: exports.CanvasNodeErrorSchema.nullable(),
|
|
217
218
|
createdAt: zod_1.z.date(),
|
|
@@ -31,6 +31,8 @@ exports.ImageGenerationModelSchema = zod_1.z.object({
|
|
|
31
31
|
uuid: zod_1.z.string().uuid(),
|
|
32
32
|
title: zod_1.z.string(),
|
|
33
33
|
description: zod_1.z.string(),
|
|
34
|
+
tags: zod_1.z.array(zod_1.z.string()),
|
|
35
|
+
hint: zod_1.z.string().nullable(),
|
|
34
36
|
order: zod_1.z.number(),
|
|
35
37
|
status: zod_1.z.string(),
|
|
36
38
|
price: zod_1.z.number(),
|
|
@@ -75,6 +75,8 @@ exports.VideoModelSchema = zod_1.z.object({
|
|
|
75
75
|
uuid: zod_1.z.string(),
|
|
76
76
|
title: zod_1.z.string(),
|
|
77
77
|
description: zod_1.z.string(),
|
|
78
|
+
tags: zod_1.z.array(zod_1.z.string()),
|
|
79
|
+
hint: zod_1.z.string().nullable(),
|
|
78
80
|
pricePerSecond: zod_1.z.number(),
|
|
79
81
|
order: zod_1.z.number(),
|
|
80
82
|
isNew: zod_1.z.boolean(),
|
|
@@ -9,11 +9,16 @@ export namespace SendAgentDialogAdminReplyCommand {
|
|
|
9
9
|
export const RequestQuerySchema = z.object({});
|
|
10
10
|
export type RequestQuery = z.infer<typeof RequestQuerySchema>;
|
|
11
11
|
|
|
12
|
-
export const RequestBodySchema = z
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
export const RequestBodySchema = z
|
|
13
|
+
.object({
|
|
14
|
+
text: z.string().optional(),
|
|
15
|
+
images: z.array(z.string()).default([]),
|
|
16
|
+
fileIds: z.array(z.string().uuid()).default([]),
|
|
17
|
+
})
|
|
18
|
+
.refine((data) => data.text || data.images.length > 0 || data.fileIds.length > 0, {
|
|
19
|
+
message: 'Message must contain text, images, or files',
|
|
20
|
+
path: ['text'],
|
|
21
|
+
});
|
|
17
22
|
export type RequestBody = z.infer<typeof RequestBodySchema>;
|
|
18
23
|
|
|
19
24
|
export const ResponseSchema = z.object({
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export namespace RecoverStaleNodesCommand {
|
|
4
|
+
export const RequestSchema = z
|
|
5
|
+
.object({
|
|
6
|
+
staleMinutes: z.number().int().positive().default(5),
|
|
7
|
+
maxStaleMinutes: z.number().int().positive().default(60),
|
|
8
|
+
limit: z.number().int().positive().default(50),
|
|
9
|
+
})
|
|
10
|
+
.default({});
|
|
11
|
+
|
|
12
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
13
|
+
}
|
|
@@ -134,7 +134,7 @@ export namespace AnthropicMessagesCommand {
|
|
|
134
134
|
export const BodySchema = z
|
|
135
135
|
.object({
|
|
136
136
|
model: z.string(),
|
|
137
|
-
max_tokens: z.number().int().positive(),
|
|
137
|
+
max_tokens: z.number().int().positive().optional(),
|
|
138
138
|
messages: z.array(AnthropicMessageSchema).min(1),
|
|
139
139
|
system: z.union([z.string(), z.array(AnthropicSystemContentBlockSchema)]).optional(),
|
|
140
140
|
stream: z.boolean().optional(),
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { ToolJobSchema } from '../../../models';
|
|
3
3
|
|
|
4
|
+
const TTSReferenceSchema = z.object({
|
|
5
|
+
audioUrl: z.string().url(),
|
|
6
|
+
text: z.string(),
|
|
7
|
+
});
|
|
8
|
+
|
|
4
9
|
export namespace TTSCommand {
|
|
5
10
|
export const RequestSchema = z.object({
|
|
6
11
|
modelId: z.string().uuid(),
|
|
@@ -16,6 +21,7 @@ export namespace TTSCommand {
|
|
|
16
21
|
})
|
|
17
22
|
.optional()
|
|
18
23
|
.default({}),
|
|
24
|
+
references: z.array(TTSReferenceSchema).optional().default([]),
|
|
19
25
|
});
|
|
20
26
|
|
|
21
27
|
export type Request = z.infer<typeof RequestSchema>;
|
|
@@ -19,12 +19,12 @@ export const FREE_SUBSCRIPTION_DATA = {
|
|
|
19
19
|
plan: SUBSCRIPTION_PLAN.mock,
|
|
20
20
|
icons: {
|
|
21
21
|
light: {
|
|
22
|
-
svg: 'https://rugpt.
|
|
23
|
-
png: 'https://rugpt.
|
|
22
|
+
svg: 'https://rugpt.storage.rugpt.io/images/images/81b60ce5-b687-43ff-85dd-e4e47c8e81e9.svg',
|
|
23
|
+
png: 'https://rugpt.storage.rugpt.io/images/images/e1bb1acd-a387-4596-8fd5-0159f692ff11.png',
|
|
24
24
|
},
|
|
25
25
|
dark: {
|
|
26
|
-
svg: 'https://rugpt.
|
|
27
|
-
png: 'https://rugpt.
|
|
26
|
+
svg: 'https://rugpt.storage.rugpt.io/images/images/ac095d48-a66b-4862-82c7-eb120b5bd467.svg',
|
|
27
|
+
png: 'https://rugpt.storage.rugpt.io/images/images/e2208949-a73a-4137-b5bd-760599a70691.png',
|
|
28
28
|
},
|
|
29
29
|
},
|
|
30
30
|
interval: '',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { AI_MODEL_FEATURE, AI_MODEL_STATUS } from '../constants';
|
|
2
|
+
import { AI_MODEL_FEATURE, AI_MODEL_STATUS, AI_MODEL_TAG } from '../constants';
|
|
3
3
|
import { AiModelConfigSchema } from './ai-model-config.schema';
|
|
4
4
|
|
|
5
5
|
export const AiModelSchema = z.object({
|
|
@@ -11,6 +11,8 @@ export const AiModelSchema = z.object({
|
|
|
11
11
|
tokenMultiplicator: z.number(),
|
|
12
12
|
freeTokenMultiplicator: z.number(),
|
|
13
13
|
order: z.number(),
|
|
14
|
+
tags: z.array(z.nativeEnum(AI_MODEL_TAG)),
|
|
15
|
+
hint: z.string().nullable(),
|
|
14
16
|
canUse: z.optional(z.boolean()),
|
|
15
17
|
status: z.nativeEnum(AI_MODEL_STATUS),
|
|
16
18
|
features: z.array(z.nativeEnum(AI_MODEL_FEATURE)),
|
|
@@ -34,6 +36,8 @@ export const AiModelSchema = z.object({
|
|
|
34
36
|
export type AiModel = z.infer<typeof AiModelSchema>;
|
|
35
37
|
|
|
36
38
|
export const CreateAiModelSchema = AiModelSchema.extend({
|
|
39
|
+
tags: z.array(z.nativeEnum(AI_MODEL_TAG)).default([]),
|
|
40
|
+
hint: z.string().nullable().default(null),
|
|
37
41
|
model: z.string(),
|
|
38
42
|
maxInputTokens: z.number(),
|
|
39
43
|
});
|
|
@@ -332,6 +332,7 @@ export const CanvasNodeBaseSchema = z.object({
|
|
|
332
332
|
status: z.nativeEnum(NODE_RUN_STATUS),
|
|
333
333
|
toolJobId: z.string().uuid().nullable(),
|
|
334
334
|
params: z.unknown().nullable(),
|
|
335
|
+
isParamsChanged: z.boolean().optional(),
|
|
335
336
|
output: z.unknown().nullable(),
|
|
336
337
|
error: CanvasNodeErrorSchema.nullable(),
|
|
337
338
|
createdAt: z.date(),
|