Skip to content

Commit

Permalink
show error for invalid schema in extraction, text prompt, pdf parser (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
wintonzheng authored Feb 1, 2025
1 parent 0da1e38 commit fc7cc20
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { Node } from "@xyflow/react";
import { NodeBaseData } from "../types";
import { AppNode } from "..";

export type PDFParserNodeData = NodeBaseData & {
fileUrl: string;
Expand All @@ -15,3 +16,7 @@ export const pdfParserNodeDefaultData: PDFParserNodeData = {
continueOnFailure: false,
jsonSchema: "null",
} as const;

export function isPdfParserNode(node: AppNode): node is PDFParserNode {
return node.type === "pdfParser";
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { Node } from "@xyflow/react";
import { NodeBaseData } from "../types";
import { AppNode } from "..";

export type TextPromptNodeData = NodeBaseData & {
prompt: string;
Expand All @@ -17,3 +18,7 @@ export const textPromptNodeDefaultData: TextPromptNodeData = {
continueOnFailure: false,
parameterKeys: [],
} as const;

export function isTextPromptNode(node: AppNode): node is TextPromptNode {
return node.type === "textPrompt";
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,10 @@ import {
StartNodeData,
} from "./nodes/StartNode/types";
import { isTaskNode, taskNodeDefaultData } from "./nodes/TaskNode/types";
import { textPromptNodeDefaultData } from "./nodes/TextPromptNode/types";
import {
isTextPromptNode,
textPromptNodeDefaultData,
} from "./nodes/TextPromptNode/types";
import { NodeBaseData } from "./nodes/types";
import { uploadNodeDefaultData } from "./nodes/UploadNode/types";
import {
Expand All @@ -87,7 +90,10 @@ import { loginNodeDefaultData } from "./nodes/LoginNode/types";
import { isWaitNode, waitNodeDefaultData } from "./nodes/WaitNode/types";
import { fileDownloadNodeDefaultData } from "./nodes/FileDownloadNode/types";
import { ProxyLocation } from "@/api/types";
import { pdfParserNodeDefaultData } from "./nodes/PDFParserNode/types";
import {
isPdfParserNode,
pdfParserNodeDefaultData,
} from "./nodes/PDFParserNode/types";
import { taskv2NodeDefaultData } from "./nodes/Taskv2Node/types";
import { urlNodeDefaultData } from "./nodes/URLNode/types";

Expand Down Expand Up @@ -1898,6 +1904,29 @@ function getWorkflowErrors(nodes: Array<AppNode>): Array<string> {
if (node.data.dataExtractionGoal.length === 0) {
errors.push(`${node.data.label}: Data extraction goal is required.`);
}
try {
JSON.parse(node.data.dataSchema);
} catch {
errors.push(`${node.data.label}: Data schema is not valid JSON.`);
}
});

const textPromptNodes = nodes.filter(isTextPromptNode);
textPromptNodes.forEach((node) => {
try {
JSON.parse(node.data.jsonSchema);
} catch {
errors.push(`${node.data.label}: Data schema is not valid JSON.`);
}
});

const pdfParserNodes = nodes.filter(isPdfParserNode);
pdfParserNodes.forEach((node) => {
try {
JSON.parse(node.data.jsonSchema);
} catch {
errors.push(`${node.data.label}: Data schema is not valid JSON.`);
}
});

const waitNodes = nodes.filter(isWaitNode);
Expand Down

0 comments on commit fc7cc20

Please sign in to comment.