@@ -151,7 +151,7 @@ export const SmartHintList = ({
{instillCredential
? supportInstillCredit
- ? "This configuration supports Instill Credit, You can use Instill Credit by input ${secrets." +
+ ? "This configuration supports Instill Credit, You can use Instill Credit by input ${secret." +
InstillCredit.key +
"}."
: "This configuration didn't support Instill Credit, please reference your own secret"
diff --git a/packages/toolkit/src/lib/use-instill-form/components/smart-hint/TextArea.tsx b/packages/toolkit/src/lib/use-instill-form/components/smart-hint/TextArea.tsx
index a3bd93f76..a8f18d9e7 100644
--- a/packages/toolkit/src/lib/use-instill-form/components/smart-hint/TextArea.tsx
+++ b/packages/toolkit/src/lib/use-instill-form/components/smart-hint/TextArea.tsx
@@ -240,8 +240,8 @@ export const TextArea = ({
supportInstillCredit && instillCredential
? `${title} supports Instill Credit. You can use Instill Credit by input ` +
"${" +
- `secrets.${InstillCredit.key}` +
- "}. You can still bring your own key by input ${secrets.your_secret}"
+ `secret.${InstillCredit.key}` +
+ "}. You can still bring your own key by input ${secret.your_secret}"
: shortDescription ?? null
}
/>
diff --git a/packages/toolkit/src/lib/use-instill-form/components/smart-hint/TextField.tsx b/packages/toolkit/src/lib/use-instill-form/components/smart-hint/TextField.tsx
index d93bca708..7ec523102 100644
--- a/packages/toolkit/src/lib/use-instill-form/components/smart-hint/TextField.tsx
+++ b/packages/toolkit/src/lib/use-instill-form/components/smart-hint/TextField.tsx
@@ -252,8 +252,8 @@ export const TextField = ({
supportInstillCredit && instillCredential
? `${title} supports Instill Credit. You can use Instill Credit by input ` +
"${" +
- `secrets.${InstillCredit.key}` +
- "}. You can still bring your own key by input ${secrets.your_secret}"
+ `secret.${InstillCredit.key}` +
+ "}. You can still bring your own key by input ${secret.your_secret}"
: shortDescription ?? null
}
/>
diff --git a/packages/toolkit/src/lib/use-instill-form/components/smart-hint/onInputChange.tsx b/packages/toolkit/src/lib/use-instill-form/components/smart-hint/onInputChange.tsx
index dfce3fdbd..908e00693 100644
--- a/packages/toolkit/src/lib/use-instill-form/components/smart-hint/onInputChange.tsx
+++ b/packages/toolkit/src/lib/use-instill-form/components/smart-hint/onInputChange.tsx
@@ -83,7 +83,7 @@ export function onInputChange({
if (supportInstillCredit && updateIsUsingInstillCredit) {
if (
event.target.value.trim().replace("${", "").replace("}", "") !==
- `secrets.${InstillCredit.key}`
+ `secret.${InstillCredit.key}`
) {
updateIsUsingInstillCredit(false);
} else {
diff --git a/packages/toolkit/src/lib/use-instill-form/components/smart-hint/useFilteredHints.tsx b/packages/toolkit/src/lib/use-instill-form/components/smart-hint/useFilteredHints.tsx
index 6ae911905..0a870a01b 100644
--- a/packages/toolkit/src/lib/use-instill-form/components/smart-hint/useFilteredHints.tsx
+++ b/packages/toolkit/src/lib/use-instill-form/components/smart-hint/useFilteredHints.tsx
@@ -44,7 +44,7 @@ export function useFilteredHints({
if (instillSecret && secrets) {
allHints = secrets.map((secret) => ({
key: secret.id,
- path: `secrets.${secret.id}`,
+ path: `secret.${secret.id}`,
instillFormat: "string",
type: "string",
properties: [],
@@ -56,7 +56,7 @@ export function useFilteredHints({
...allHints,
{
key: "instillCredit",
- path: `secrets.${InstillCredit.key}`,
+ path: `secret.${InstillCredit.key}`,
instillFormat: "string",
type: "string",
isInstillCreditHint: true,
diff --git a/packages/toolkit/src/lib/use-instill-form/pick/pickPipelineTriggerRequestFormFields.tsx b/packages/toolkit/src/lib/use-instill-form/pick/pickPipelineTriggerRequestFormFields.tsx
index bdb3d6b8c..3d391d2d2 100644
--- a/packages/toolkit/src/lib/use-instill-form/pick/pickPipelineTriggerRequestFormFields.tsx
+++ b/packages/toolkit/src/lib/use-instill-form/pick/pickPipelineTriggerRequestFormFields.tsx
@@ -2,7 +2,7 @@ import { UseFormReturn } from "react-hook-form";
import { Nullable } from "../../type";
import { TriggerRequestFormFields } from "../components";
import { FieldMode, StartOperatorFreeFormFieldItem } from "../types";
-import { PipelineTriggerRequestFields } from "../../vdp-sdk";
+import { PipelineVariableFieldMap } from "../../vdp-sdk";
export type PickPipelineTriggerRequestFormFieldsProps = {
mode: FieldMode;
@@ -15,7 +15,7 @@ export type PickPipelineTriggerRequestFormFieldsProps = {
disabledFields?: boolean;
disabledFieldControls?: boolean;
disabledReferenceHint?: boolean;
- fields: Nullable;
+ fields: Nullable;
};
export function pickPipelineTriggerRequestFormFields({
@@ -37,12 +37,12 @@ export function pickPipelineTriggerRequestFormFields({
// is we want to sort the fields by the order of `instillUIOrder` property.
for (const [key, value] of Object.entries(fields)) {
- switch (value.instill_format) {
+ switch (value.instillFormat) {
case "string":
- if (value.instill_ui_multiline) {
+ if (value.instillUiMultiline) {
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
} else {
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -88,7 +88,7 @@ export function pickPipelineTriggerRequestFormFields({
case "array:string": {
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -112,7 +112,7 @@ export function pickPipelineTriggerRequestFormFields({
case "boolean":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -135,7 +135,7 @@ export function pickPipelineTriggerRequestFormFields({
case "number":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -158,7 +158,7 @@ export function pickPipelineTriggerRequestFormFields({
case "array:number":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -181,7 +181,7 @@ export function pickPipelineTriggerRequestFormFields({
case "audio/*":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -204,7 +204,7 @@ export function pickPipelineTriggerRequestFormFields({
case "array:audio/*":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -227,7 +227,7 @@ export function pickPipelineTriggerRequestFormFields({
case "image/*":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -250,7 +250,7 @@ export function pickPipelineTriggerRequestFormFields({
case "array:image/*":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -274,7 +274,7 @@ export function pickPipelineTriggerRequestFormFields({
case "video/*":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -297,7 +297,7 @@ export function pickPipelineTriggerRequestFormFields({
case "array:video/*":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -320,7 +320,7 @@ export function pickPipelineTriggerRequestFormFields({
case "*/*":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -343,7 +343,7 @@ export function pickPipelineTriggerRequestFormFields({
case "array:*/*":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
@@ -366,7 +366,7 @@ export function pickPipelineTriggerRequestFormFields({
case "semi-structured/json":
items.push({
key,
- instillUIOrder: value.instill_ui_order,
+ instillUIOrder: value.instillUiOrder,
component: (
),
});
diff --git a/packages/toolkit/src/lib/use-instill-form/transform/transformPipelineTriggerRequestFieldsToSuperRefineRules.ts b/packages/toolkit/src/lib/use-instill-form/transform/transformPipelineTriggerRequestFieldsToSuperRefineRules.ts
index 2f889eb6f..3abbe1b83 100644
--- a/packages/toolkit/src/lib/use-instill-form/transform/transformPipelineTriggerRequestFieldsToSuperRefineRules.ts
+++ b/packages/toolkit/src/lib/use-instill-form/transform/transformPipelineTriggerRequestFieldsToSuperRefineRules.ts
@@ -1,15 +1,15 @@
import { Nullable, SuperRefineRule } from "../../type";
-import { PipelineTriggerRequestFields } from "../../vdp-sdk";
+import { PipelineVariableFieldMap } from "../../vdp-sdk";
export function transformPipelineTriggerRequestFieldsToSuperRefineRules(
- fields: Nullable
+ fields: Nullable
) {
const rules: SuperRefineRule[] = [];
if (!fields) return rules;
for (const [key, value] of Object.entries(fields)) {
- switch (value.instill_format) {
+ switch (value.instillFormat) {
case "string":
rules.push({
key,
diff --git a/packages/toolkit/src/lib/use-instill-form/transform/transformPipelineTriggerRequestFieldsToZod.ts b/packages/toolkit/src/lib/use-instill-form/transform/transformPipelineTriggerRequestFieldsToZod.ts
index 3550ad3aa..5da11f880 100644
--- a/packages/toolkit/src/lib/use-instill-form/transform/transformPipelineTriggerRequestFieldsToZod.ts
+++ b/packages/toolkit/src/lib/use-instill-form/transform/transformPipelineTriggerRequestFieldsToZod.ts
@@ -2,17 +2,17 @@
import * as z from "zod";
import { Nullable } from "../../type";
-import { PipelineTriggerRequestFields } from "../../vdp-sdk";
+import { PipelineVariableFieldMap } from "../../vdp-sdk";
export function transformPipelineTriggerRequestFieldsToZod(
- fields: Nullable
+ fields: Nullable
) {
let zodSchema: z.ZodObject = z.object({});
if (!fields) return zodSchema;
for (const [key, value] of Object.entries(fields)) {
- switch (value.instill_format) {
+ switch (value.instillFormat) {
case "string":
zodSchema = zodSchema.setKey(key, z.string().nullable().optional());
break;
diff --git a/packages/toolkit/src/lib/use-smart-hint/output-reference-hint/pickOutputReferenceHintsFromComponent.tsx b/packages/toolkit/src/lib/use-smart-hint/output-reference-hint/pickOutputReferenceHintsFromComponent.tsx
index 29cfe7999..cbe3211ac 100644
--- a/packages/toolkit/src/lib/use-smart-hint/output-reference-hint/pickOutputReferenceHintsFromComponent.tsx
+++ b/packages/toolkit/src/lib/use-smart-hint/output-reference-hint/pickOutputReferenceHintsFromComponent.tsx
@@ -1,94 +1,68 @@
-import { getConnectorInputOutputSchema } from "../../../view";
+import { getGeneralComponentInOutputSchema } from "../../../view";
import {
- isConnectorComponent,
- isIteratorComponent,
- isOperatorComponent,
+ isPipelineGeneralComponent,
+ isPipelineIteratorComponent,
} from "../../../view/pipeline-builder/lib/checkComponentType";
-import { getOperatorInputOutputSchema } from "../../../view/pipeline-builder/lib/getOperatorInputOutputSchema";
import { transformInstillJSONSchemaToFormTree } from "../../use-instill-form/transform";
import { PipelineComponent } from "../../vdp-sdk";
import { transformFormTreeToSmartHints } from "../transformFormTreeToSmartHints";
import { SmartHint } from "../types";
export function pickOutputReferenceHintsFromComponent({
+ componentID,
component,
task,
consoleComposedIteratorSchema,
}: {
+ componentID: string;
component: PipelineComponent;
task?: string;
consoleComposedIteratorSchema?: boolean;
}) {
let outputReferenceHints: SmartHint[] = [];
- if (isConnectorComponent(component)) {
- const { outputSchema } = getConnectorInputOutputSchema(component, task);
-
- if (outputSchema) {
- const outputFormTree = transformInstillJSONSchemaToFormTree(outputSchema);
- const hints = transformFormTreeToSmartHints(outputFormTree, component.id);
-
- outputReferenceHints = [...outputReferenceHints, ...hints];
- }
- }
-
- if (isOperatorComponent(component)) {
- const { outputSchema } = getOperatorInputOutputSchema(component, task);
-
- if (outputSchema) {
- const outputFormTree = transformInstillJSONSchemaToFormTree(outputSchema);
- const hints = transformFormTreeToSmartHints(outputFormTree, component.id);
-
- outputReferenceHints = [...outputReferenceHints, ...hints];
- }
- }
-
- if (isIteratorComponent(component)) {
+ if (isPipelineIteratorComponent(component)) {
let iteratorHints: SmartHint[] = [];
if (consoleComposedIteratorSchema) {
- Object.entries(component.iterator_component.output_elements).forEach(
- ([key, value]) => {
- const referencePathArray = value
- .replace("${", "")
- .replace("}", "")
- .split(".");
-
- const componentKey = referencePathArray[0];
- const targetComponent = component.iterator_component.components.find(
- (e) => e.id === componentKey
+ Object.entries(component.outputElements).forEach(([key, value]) => {
+ const referencePathArray = value
+ .replace("${", "")
+ .replace("}", "")
+ .split(".");
+
+ const componentKey = referencePathArray[0];
+ const targetComponent = component.component[componentKey];
+
+ if (targetComponent) {
+ const componentHints = pickOutputReferenceHintsFromComponent({
+ component: targetComponent,
+ componentID: componentKey,
+ });
+
+ const targetHint = componentHints.find(
+ (hint) => hint.path === value.replace("${", "").replace("}", "")
);
- if (targetComponent) {
- const componentHints = pickOutputReferenceHintsFromComponent({
- component: targetComponent,
- });
-
- const targetHint = componentHints.find(
- (hint) => hint.path === value.replace("${", "").replace("}", "")
- );
-
- if (targetHint) {
- iteratorHints.push(targetHint);
- }
+ if (targetHint) {
+ iteratorHints.push(targetHint);
+ }
- // Deal with user directly reference the whole output of specific component in
- // the iterator
- if (value === "${" + targetComponent.id + ".output" + "}") {
- iteratorHints.push({
- path: `${component.id}.output.${key}`,
- key,
- instillFormat: "null",
- type: "array",
- properties: componentHints,
- });
- }
+ // Deal with user directly reference the whole output of specific component in
+ // the iterator
+ if (value === "${" + componentKey + ".output" + "}") {
+ iteratorHints.push({
+ path: `${componentKey}.output.${key}`,
+ key,
+ instillFormat: "null",
+ type: "array",
+ properties: componentHints,
+ });
}
}
- );
+ });
} else {
- const outputSchema =
- component.iterator_component.data_specification?.output;
+ const outputSchema = component.data_specification?.output;
if (outputSchema) {
const outputFormTree =
@@ -96,7 +70,7 @@ export function pickOutputReferenceHintsFromComponent({
iteratorHints = transformFormTreeToSmartHints(
outputFormTree,
- component.id
+ componentID
);
}
}
@@ -104,5 +78,16 @@ export function pickOutputReferenceHintsFromComponent({
outputReferenceHints = [...outputReferenceHints, ...iteratorHints];
}
+ if (isPipelineGeneralComponent(component)) {
+ const { outputSchema } = getGeneralComponentInOutputSchema(component, task);
+
+ if (outputSchema) {
+ const outputFormTree = transformInstillJSONSchemaToFormTree(outputSchema);
+ const hints = transformFormTreeToSmartHints(outputFormTree, componentID);
+
+ outputReferenceHints = [...outputReferenceHints, ...hints];
+ }
+ }
+
return outputReferenceHints;
}
diff --git a/packages/toolkit/src/lib/use-smart-hint/output-reference-hint/useOutputReferenceHintsFields.tsx b/packages/toolkit/src/lib/use-smart-hint/output-reference-hint/useOutputReferenceHintsFields.tsx
index 5a13ab42b..581c8d2a5 100644
--- a/packages/toolkit/src/lib/use-smart-hint/output-reference-hint/useOutputReferenceHintsFields.tsx
+++ b/packages/toolkit/src/lib/use-smart-hint/output-reference-hint/useOutputReferenceHintsFields.tsx
@@ -7,9 +7,11 @@ import { pickOutputReferenceHintsFromComponent } from "./pickOutputReferenceHint
import { pickFieldsFromOutputReferenceHints } from "./pickFieldsFromOutputReferenceHints";
export function useOutputReferenceHintFields({
+ componentID,
component,
task,
}: {
+ componentID: string;
component: Nullable;
task?: string;
}) {
@@ -19,6 +21,7 @@ export function useOutputReferenceHintFields({
}
const hints = pickOutputReferenceHintsFromComponent({
+ componentID,
component,
task,
});
diff --git a/packages/toolkit/src/lib/use-smart-hint/pickSmartHintsFromNodes.ts b/packages/toolkit/src/lib/use-smart-hint/pickSmartHintsFromNodes.ts
index ad11fd9f0..8b664a94a 100644
--- a/packages/toolkit/src/lib/use-smart-hint/pickSmartHintsFromNodes.ts
+++ b/packages/toolkit/src/lib/use-smart-hint/pickSmartHintsFromNodes.ts
@@ -2,22 +2,20 @@ import { Node } from "reactflow";
import {
IteratorNodeData,
NodeData,
- getConnectorInputOutputSchema,
- isConnectorNode,
- isIteratorNode,
- isOperatorNode,
- isTriggerNode,
+ getGeneralComponentInOutputSchema,
} from "../../view";
-import {
- isConnectorComponent,
- isOperatorComponent,
-} from "../../view/pipeline-builder/lib/checkComponentType";
+
import { SmartHint } from "./types";
import { transformInstillJSONSchemaToFormTree } from "../use-instill-form/transform";
import { transformFormTreeToSmartHints } from "./transformFormTreeToSmartHints";
import { transformPipelineTriggerRequestFieldsToSmartHints } from "./transformPipelineTriggerRequestFieldsToSmartHints";
-import { getOperatorInputOutputSchema } from "../../view/pipeline-builder/lib/getOperatorInputOutputSchema";
import { PipelineIteratorComponent } from "../vdp-sdk";
+import {
+ isGeneralNode,
+ isIteratorNode,
+ isTriggerNode,
+} from "../../view/pipeline-builder/lib/checkNodeType";
+import { isPipelineGeneralComponent } from "../../view/pipeline-builder/lib/checkComponentType";
export function pickSmartHintsFromNodes({
nodes,
@@ -50,36 +48,8 @@ export function pickSmartHintsFromNodes({
continue;
}
- if (isConnectorNode(node)) {
- const { outputSchema } = getConnectorInputOutputSchema(node.data);
-
- if (outputSchema) {
- const outputFormTree =
- transformInstillJSONSchemaToFormTree(outputSchema);
-
- const hints = transformFormTreeToSmartHints(outputFormTree, node.id);
-
- smartHints = [...smartHints, ...hints];
- }
-
- if (!isEditingIterator) {
- smartHints = [
- ...smartHints,
- {
- path: `${node.id}.output`,
- key: "output",
- instillFormat: "semi-structured/json",
- type: "object",
- properties: [],
- },
- ];
- }
-
- continue;
- }
-
- if (isOperatorNode(node)) {
- const { outputSchema } = getOperatorInputOutputSchema(node.data);
+ if (isGeneralNode(node)) {
+ const { outputSchema } = getGeneralComponentInOutputSchema(node.data);
if (outputSchema) {
const outputFormTree =
@@ -112,90 +82,59 @@ export function pickSmartHintsFromNodes({
// The data_specification.output may not be ready due to user haven't
// save the changes.
- // The current solution is treating the iterator.output_elements as
+ // The current solution is treating the iterator.outputElements as
// the source of truth instead of its data_specification.output
/*
- * output_elements = {
+ * outputElements = {
* result_0: "${connector_1.output.result}",
* }
*/
const consoleGeneratedHints: SmartHint[] = [];
- Object.entries(node.data.iterator_component.output_elements).forEach(
- ([key, value]) => {
- const componentKey = value
- .replace("${", "")
- .replace("}", "")
- .split(".")[0];
-
- // Get target component's type
- const component = (
- node.data as PipelineIteratorComponent
- ).iterator_component.components.find(
- (component) => component.id === componentKey
- );
-
- if (component) {
- if (isConnectorComponent(component)) {
- const { outputSchema } = getConnectorInputOutputSchema(component);
- if (outputSchema) {
- const outputFormTree =
- transformInstillJSONSchemaToFormTree(outputSchema);
- const hints = transformFormTreeToSmartHints(
- outputFormTree,
- component.id
- );
-
- const targetHint = hints.find(
- (hint) =>
- hint.path === value.replace("${", "").replace("}", "")
- );
-
- if (targetHint) {
- // Iterator exposed output format will be similar to
- // iterator_0.output.result_0
- consoleGeneratedHints.push({
- key,
- path: `${node.id}.output.${key}`,
- instillFormat: targetHint.instillFormat,
- type: targetHint.type,
- description: targetHint.description,
- });
- }
- }
- }
+ Object.entries(node.data.outputElements).forEach(([key, value]) => {
+ const componentKey = value
+ .replace("${", "")
+ .replace("}", "")
+ .split(".")[0];
+
+ // Get target component's type
+ const component = (node.data as PipelineIteratorComponent).component[
+ componentKey
+ ];
- if (isOperatorComponent(component)) {
- const { outputSchema } = getOperatorInputOutputSchema(component);
- if (outputSchema) {
- const outputFormTree =
- transformInstillJSONSchemaToFormTree(outputSchema);
- const hints = transformFormTreeToSmartHints(
- outputFormTree,
- component.id
- );
-
- const targetHint = hints.find(
- (hint) =>
- hint.path === value.replace("${", "").replace("}", "")
- );
-
- if (targetHint) {
- consoleGeneratedHints.push({
- key,
- path: `${node.id}.output.${key}`,
- instillFormat: targetHint.instillFormat,
- type: targetHint.type,
- description: targetHint.description,
- });
- }
+ if (component) {
+ if (isPipelineGeneralComponent(component)) {
+ const { outputSchema } =
+ getGeneralComponentInOutputSchema(component);
+ if (outputSchema) {
+ const outputFormTree =
+ transformInstillJSONSchemaToFormTree(outputSchema);
+ const hints = transformFormTreeToSmartHints(
+ outputFormTree,
+ componentKey
+ );
+
+ const targetHint = hints.find(
+ (hint) => hint.path === value.replace("${", "").replace("}", "")
+ );
+
+ if (targetHint) {
+ // Iterator exposed output format will be similar to
+ // iterator_0.output.result_0
+ consoleGeneratedHints.push({
+ key,
+ path: `${node.id}.output.${key}`,
+ instillFormat: targetHint.instillFormat,
+ type: targetHint.type,
+ description: targetHint.description,
+ });
}
}
}
}
- );
+ });
smartHints = [...smartHints, ...consoleGeneratedHints];
@@ -217,16 +156,14 @@ export function pickSmartHintsFromNodes({
// Add the iterator element into the hints
if (isEditingIterator && includeEditorElement && editingIteratorID) {
const targetIteratorNode = tempSavedNodesForEditingIteratorFlow?.find(
- (node) => node.data.id === editingIteratorID && isIteratorNode(node)
+ (node) => node.id === editingIteratorID && isIteratorNode(node)
) as Node | undefined;
if (targetIteratorNode) {
const targetHints = smartHints.find(
(hint) =>
hint.path ===
- targetIteratorNode.data.iterator_component.input
- .replace("${", "")
- .replace("}", "")
+ targetIteratorNode.data.input.replace("${", "").replace("}", "")
);
if (targetHints) {
diff --git a/packages/toolkit/src/lib/use-smart-hint/transformPipelineTriggerRequestFieldsToSmartHints.test.ts b/packages/toolkit/src/lib/use-smart-hint/transformPipelineTriggerRequestFieldsToSmartHints.test.ts
index e40a6eef1..ed9678259 100644
--- a/packages/toolkit/src/lib/use-smart-hint/transformPipelineTriggerRequestFieldsToSmartHints.test.ts
+++ b/packages/toolkit/src/lib/use-smart-hint/transformPipelineTriggerRequestFieldsToSmartHints.test.ts
@@ -1,15 +1,15 @@
import { test, expect } from "vitest";
-import { PipelineTriggerRequestFields } from "../vdp-sdk";
import { transformPipelineTriggerRequestFieldsToSmartHints } from "./transformPipelineTriggerRequestFieldsToSmartHints";
+import { PipelineVariableFieldMap } from "../vdp-sdk";
-test("should transform pipeline trigger request fields to smart hints", () => {
- const fields: PipelineTriggerRequestFields = {
+test("should transform pipeline variables to smart hints", () => {
+ const fields: PipelineVariableFieldMap = {
text: {
- instill_format: "string",
+ instillFormat: "string",
title: "Foo",
},
audio: {
- instill_format: "audio/*",
+ instillFormat: "audio/*",
title: "Audio",
},
};
@@ -38,13 +38,13 @@ test("should transform start operator metadata to smart hints with empty metadat
});
test("should transform array metadata to smart hints", () => {
- const fields: PipelineTriggerRequestFields = {
+ const fields: PipelineVariableFieldMap = {
text: {
- instill_format: "array:string",
+ instillFormat: "array:string",
title: "Text",
},
images: {
- instill_format: "array:image/*",
+ instillFormat: "array:image/*",
title: "Images",
},
};
diff --git a/packages/toolkit/src/lib/use-smart-hint/transformPipelineTriggerRequestFieldsToSmartHints.ts b/packages/toolkit/src/lib/use-smart-hint/transformPipelineTriggerRequestFieldsToSmartHints.ts
index aab181b03..f1c79f6a0 100644
--- a/packages/toolkit/src/lib/use-smart-hint/transformPipelineTriggerRequestFieldsToSmartHints.ts
+++ b/packages/toolkit/src/lib/use-smart-hint/transformPipelineTriggerRequestFieldsToSmartHints.ts
@@ -1,15 +1,15 @@
-import { PipelineTriggerRequestFields } from "../vdp-sdk";
+import { PipelineVariableFieldMap } from "../vdp-sdk";
import { SmartHint } from "./types";
export function transformPipelineTriggerRequestFieldsToSmartHints(
- fields: PipelineTriggerRequestFields
+ fields: PipelineVariableFieldMap
): SmartHint[] {
const hints: SmartHint[] = [];
for (const [key, value] of Object.entries(fields)) {
hints.push({
path: `trigger.${key}`,
key: key,
- instillFormat: value.instill_format ?? "null",
+ instillFormat: value.instillFormat ?? "null",
type: "null",
});
}
diff --git a/packages/toolkit/src/lib/vdp-sdk/helper/checkIsDefinition.ts b/packages/toolkit/src/lib/vdp-sdk/helper/checkIsDefinition.ts
new file mode 100644
index 000000000..d74557b07
--- /dev/null
+++ b/packages/toolkit/src/lib/vdp-sdk/helper/checkIsDefinition.ts
@@ -0,0 +1,20 @@
+import { ConnectorDefinition } from "../connector";
+import { IteratorDefinition, OperatorDefinition } from "../pipeline";
+
+export function isConnectorDefinition(
+ definition: IteratorDefinition | ConnectorDefinition | OperatorDefinition
+): definition is ConnectorDefinition {
+ return "type" in definition;
+}
+
+export function isIteratorDefinition(
+ definition: IteratorDefinition | ConnectorDefinition | OperatorDefinition
+): definition is IteratorDefinition {
+ return definition.id === "iterator";
+}
+
+export function isOperatorDefinition(
+ definition: IteratorDefinition | ConnectorDefinition | OperatorDefinition
+): definition is OperatorDefinition {
+ return definition.name.startsWith("operator-definitions");
+}
diff --git a/packages/toolkit/src/lib/vdp-sdk/helper/index.ts b/packages/toolkit/src/lib/vdp-sdk/helper/index.ts
index cea67abff..2e503a210 100644
--- a/packages/toolkit/src/lib/vdp-sdk/helper/index.ts
+++ b/packages/toolkit/src/lib/vdp-sdk/helper/index.ts
@@ -1,3 +1,4 @@
+export * from "./checkIsDefinition";
export { createInstillAxiosClient } from "./createInstillAxiosClient";
export { getQueryString } from "./getQueryString";
export { getInstillApiErrorMessage } from "./getInstillApiErrorMessage";
diff --git a/packages/toolkit/src/lib/vdp-sdk/index.ts b/packages/toolkit/src/lib/vdp-sdk/index.ts
index 804cb203f..c79a54701 100644
--- a/packages/toolkit/src/lib/vdp-sdk/index.ts
+++ b/packages/toolkit/src/lib/vdp-sdk/index.ts
@@ -8,3 +8,5 @@ export * from "./operation";
export * from "./organization";
export * from "./pipeline";
export * from "./types";
+
+export * from "./helper";
diff --git a/packages/toolkit/src/lib/vdp-sdk/pipeline/types.ts b/packages/toolkit/src/lib/vdp-sdk/pipeline/types.ts
index 26a8fbc5f..ffc4a0a66 100644
--- a/packages/toolkit/src/lib/vdp-sdk/pipeline/types.ts
+++ b/packages/toolkit/src/lib/vdp-sdk/pipeline/types.ts
@@ -21,48 +21,31 @@ export type PipelineReleaseState =
| "STATE_ERROR"
| "STATE_DELETED";
-export type PipelineTrigger =
- | TriggerByRequest
- | GeneralRecord
- | Record;
-
export type PipelineRecipe = {
version: string;
- components: PipelineComponent[];
- trigger: PipelineTrigger;
+ component?: PipelineComponentMap;
+ variable?: PipelineVariableFieldMap;
+ output?: PipelineOutputFieldMap;
};
-export type PipelineTriggerRequestField = {
+export type PipelineVariableField = {
title: string;
description?: string;
- instill_format: string;
- instill_ui_order?: number;
- instill_ui_multiline?: boolean;
+ instillFormat: string;
+ instillUiOrder?: number;
+ instillUiMultiline?: boolean;
};
-export type PipelineTriggerRequestFields = Record<
- string,
- PipelineTriggerRequestField
->;
+export type PipelineVariableFieldMap = Record;
-export type PipelineTriggerResponseField = {
+export type PipelineOutputField = {
title: string;
description?: string;
value: string;
- instill_ui_order?: number;
+ instillUiOrder?: number;
};
-export type PipelineTriggerResponseFields = Record<
- string,
- PipelineTriggerResponseField
->;
-
-export type TriggerByRequest = {
- trigger_by_request: {
- request_fields?: PipelineTriggerRequestFields;
- response_fields?: PipelineTriggerResponseFields;
- };
-};
+export type PipelineOutputFieldMap = Record;
export type PipelineReleaseWatchState = {
state: PipelineReleaseState;
@@ -167,47 +150,32 @@ export type PipelineTriggerMetadata = {
traces: Record;
};
-export type PipelineConnectorComponent = {
- id: string;
+export type ComponentBasicFields = {
metadata?: GeneralRecord;
- connector_component: {
- definition_name: string;
- definition?: Nullable;
- task: string;
- input: GeneralRecord;
- condition: Nullable;
- connection: GeneralRecord;
- };
+ type: string;
};
-export type PipelineOperatorComponent = {
- id: string;
- metadata?: GeneralRecord;
- operator_component: {
- definition_name: string;
- definition?: Nullable;
- task: string;
- input: GeneralRecord;
- condition: Nullable;
- };
-};
+export type PipelineGeneralComponent = {
+ definition?: Nullable;
+ task: string;
+ input: GeneralRecord;
+ condition: Nullable;
+ connection: Nullable;
+} & ComponentBasicFields;
export type PipelineIteratorComponent = {
- id: string;
- metadata?: GeneralRecord;
- iterator_component: {
- input: string;
- output_elements: Record;
- components: PipelineComponent[];
- condition: Nullable;
- data_specification: Nullable;
- };
-};
+ input: string;
+ outputElements: Record;
+ component: PipelineComponentMap;
+ condition: Nullable;
+ data_specification: Nullable;
+} & ComponentBasicFields;
+
+export type PipelineComponentMap = Record;
export type PipelineComponent =
- | PipelineConnectorComponent
- | PipelineOperatorComponent
- | PipelineIteratorComponent;
+ | PipelineIteratorComponent
+ | PipelineGeneralComponent;
export type StartOperatorInputType =
| "audio/*"
diff --git a/packages/toolkit/src/view/pipeline-builder/components/BackToLatestVersionTopBar.tsx b/packages/toolkit/src/view/pipeline-builder/components/BackToLatestVersionTopBar.tsx
index f0c7fa365..963999610 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/BackToLatestVersionTopBar.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/BackToLatestVersionTopBar.tsx
@@ -71,7 +71,7 @@ export const BackToLatestVersionTopBar = () => {
if (
checkIsValidPosition({
- components: pipeline.data.recipe.components,
+ component: pipeline.data.recipe.component ?? null,
metadata: pipeline.data.metadata ?? null,
})
) {
diff --git a/packages/toolkit/src/view/pipeline-builder/components/BottomBar.tsx b/packages/toolkit/src/view/pipeline-builder/components/BottomBar.tsx
index b644d4d2e..c4f876124 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/BottomBar.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/BottomBar.tsx
@@ -108,7 +108,7 @@ export const BottomBar = () => {
if (
checkIsValidPosition({
- components: pipeline.data.recipe.components,
+ component: pipeline.data.recipe.component ?? null,
metadata: pipeline.data.metadata ?? null,
})
) {
@@ -156,7 +156,7 @@ export const BottomBar = () => {
if (
checkIsValidPosition({
- components: release.recipe.components,
+ component: release.recipe.component ?? null,
metadata: release.metadata ?? null,
})
) {
diff --git a/packages/toolkit/src/view/pipeline-builder/components/ComponentOutputReferenceHints.tsx b/packages/toolkit/src/view/pipeline-builder/components/ComponentOutputReferenceHints.tsx
index 2ea17c20e..671eb9a7b 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/ComponentOutputReferenceHints.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/ComponentOutputReferenceHints.tsx
@@ -4,16 +4,15 @@ import { Icons, ScrollArea } from "@instill-ai/design-system";
import { PipelineComponent, useOutputReferenceHintFields } from "../../../lib";
export const ComponentOutputReferenceHints = ({
+ componentID,
component,
task,
}: {
+ componentID: string;
component: PipelineComponent;
task?: string;
}) => {
- const fields = useOutputReferenceHintFields({
- component,
- task,
- });
+ const fields = useOutputReferenceHintFields({ componentID, component, task });
return (
diff --git a/packages/toolkit/src/view/pipeline-builder/components/PipelineBuilderCanvas.tsx b/packages/toolkit/src/view/pipeline-builder/components/PipelineBuilderCanvas.tsx
index 2e0196969..883fcbc8f 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/PipelineBuilderCanvas.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/PipelineBuilderCanvas.tsx
@@ -15,12 +15,11 @@ import {
useShallow,
} from "../../../lib";
import {
- ConnectorNode,
EmptyNode,
IteratorNode,
- OperatorNode,
ResponseNode,
TriggerNode,
+ GeneralNode,
} from "./nodes";
import { CustomEdge } from "./CustomEdge";
import { isResponseNode, isTriggerNode } from "../lib";
@@ -42,11 +41,10 @@ const selector = (store: InstillStore) => ({
const nodeTypes = {
triggerNode: TriggerNode,
- connectorNode: ConnectorNode,
emptyNode: EmptyNode,
responseNode: ResponseNode,
- operatorNode: OperatorNode,
iteratorNode: IteratorNode,
+ generalNode: GeneralNode,
};
const edgeTypes = {
diff --git a/packages/toolkit/src/view/pipeline-builder/components/PipelineToolkitDialog.tsx b/packages/toolkit/src/view/pipeline-builder/components/PipelineToolkitDialog.tsx
index 25814546f..b1279a43a 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/PipelineToolkitDialog.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/PipelineToolkitDialog.tsx
@@ -5,7 +5,7 @@ import { Dialog, Icons, ScrollArea, Tabs } from "@instill-ai/design-system";
import { CodeBlock } from "../../../components";
import { InstillStore, useInstillStore, useShallow } from "../../../lib";
import { composeCompleteNodesUnderEditingIteratorMode } from "../lib/composeCompleteNodesUnderEditingIteratorMode";
-import { constructPipelineRecipeFromNodes } from "../lib";
+import { composePipelineRecipeFromNodes } from "../lib";
export type PipelineToolkitDialogProps = {
snippet: string;
@@ -47,11 +47,7 @@ export const PipelineToolkitDialog = (props: PipelineToolkitDialogProps) => {
});
}
- return JSON.stringify(
- constructPipelineRecipeFromNodes(targetNodes),
- null,
- 2
- );
+ return JSON.stringify(composePipelineRecipeFromNodes(targetNodes), null, 2);
}, [
nodes,
isEditingIterator,
diff --git a/packages/toolkit/src/view/pipeline-builder/components/ReadOnlyPipelineBuilder.tsx b/packages/toolkit/src/view/pipeline-builder/components/ReadOnlyPipelineBuilder.tsx
index d011dc973..ceb042259 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/ReadOnlyPipelineBuilder.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/ReadOnlyPipelineBuilder.tsx
@@ -22,10 +22,9 @@ import {
} from "../../../lib";
import { composeEdgesFromNodes, createGraphLayout } from "../lib";
import {
- ConnectorNode,
EmptyNode,
+ GeneralNode,
IteratorNode,
- OperatorNode,
ResponseNode,
TriggerNode,
} from "./nodes";
@@ -42,11 +41,10 @@ const selector = (store: InstillStore) => ({
const nodeTypes = {
triggerNode: TriggerNode,
- connectorNode: ConnectorNode,
emptyNode: EmptyNode,
responseNode: ResponseNode,
- operatorNode: OperatorNode,
iteratorNode: IteratorNode,
+ generalNode: GeneralNode,
};
const edgeTypes = {
@@ -79,7 +77,7 @@ export const ReadOnlyPipelineBuilder = ({
React.useEffect(() => {
if (!recipe || !metadata) return;
- const nodes = createNodesFromPipelineRecipe(recipe);
+ const nodes = createNodesFromPipelineRecipe(recipe, { metadata });
const edges = composeEdgesFromNodes(nodes);
createGraphLayout(nodes, edges)
diff --git a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/IteratorEditor.tsx b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/IteratorEditor.tsx
index 7d0960440..fe82c028f 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/IteratorEditor.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/IteratorEditor.tsx
@@ -13,11 +13,11 @@ import {
import { SelectComponentDialog } from "..";
import {
composeEdgesFromNodes,
- composePipelineMetadataFromNodes,
+ composePipelineMetadataMapFromNodes,
isIteratorNode,
isResponseNode,
isTriggerNode,
- useConstructNodeFromDefinition,
+ useAddNodeWithDefinition,
} from "../../lib";
import { ReactFlowInstance } from "reactflow";
import { PipelineBuilderCanvas } from "../PipelineBuilderCanvas";
@@ -39,7 +39,7 @@ const selector = (store: InstillStore) => ({
export type InOutputOption = {
path: string;
- instill_format: string;
+ instillFormat: string;
description?: string;
};
@@ -65,7 +65,7 @@ export const IteratorEditor = ({
updateTempSavedNodesForEditingIteratorFlow,
} = useInstillStore(useShallow(selector));
- const constructNode = useConstructNodeFromDefinition({ reactFlowInstance });
+ const addNode = useAddNodeWithDefinition({ reactFlowInstance });
return (
@@ -74,10 +74,7 @@ export const IteratorEditor = ({
onClick={() => {
const newNodes = tempSavedNodesForEditingIteratorFlow.map(
(node) => {
- if (
- node.data.id === editingIteratorID &&
- isIteratorNode(node)
- ) {
+ if (node.id === editingIteratorID && isIteratorNode(node)) {
const components = nodes
.filter(
(node) => !isTriggerNode(node) || !isResponseNode(node)
@@ -88,11 +85,8 @@ export const IteratorEditor = ({
...node,
data: {
...node.data,
- iterator_component: {
- ...node.data.iterator_component,
- components,
- },
- metadata: composePipelineMetadataFromNodes(nodes),
+ components,
+ metadata: composePipelineMetadataMapFromNodes(nodes),
},
};
}
@@ -148,7 +142,7 @@ export const IteratorEditor = ({
open={selectDefinitionDialogIsOpen}
onOpenChange={setSelectDefinitionDialogIsOpen}
onSelect={(definition) => {
- constructNode(definition);
+ addNode(definition);
setSelectDefinitionDialogIsOpen(false);
}}
disabledTrigger={true}
diff --git a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-input/IterateElementHint.tsx b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-input/IterateElementHint.tsx
index 81ca1c719..fc1c23ff2 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-input/IterateElementHint.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-input/IterateElementHint.tsx
@@ -13,11 +13,11 @@ export const IterateElmentHint = ({
selectedInputOption: Nullable;
}) => {
const humanReadableInstillFormat = React.useMemo(() => {
- if (!selectedInputOption || !selectedInputOption?.instill_format) {
+ if (!selectedInputOption || !selectedInputOption?.instillFormat) {
return null;
}
return transformInstillFormatToHumanReadableFormat(
- selectedInputOption.instill_format
+ selectedInputOption.instillFormat
);
}, [selectedInputOption]);
diff --git a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-input/IteratorInput.tsx b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-input/IteratorInput.tsx
index fa19d530f..7df869cd1 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-input/IteratorInput.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-input/IteratorInput.tsx
@@ -53,7 +53,7 @@ export const IteratorInput = ({ className }: { className?: string }) => {
)
.map((hint) => ({
path: hint.path,
- instill_format: hint.instillFormat,
+ instillFormat: hint.instillFormat,
description: hint.description,
}));
}, [tempSavedNodesForEditingIteratorFlow]);
@@ -61,15 +61,13 @@ export const IteratorInput = ({ className }: { className?: string }) => {
React.useEffect(() => {
if (editingIteratorID && tempSavedNodesForEditingIteratorFlow) {
const targetIteratorNode = tempSavedNodesForEditingIteratorFlow.find(
- (node) => node.data.id === editingIteratorID && isIteratorNode(node)
+ (node) => node.id === editingIteratorID && isIteratorNode(node)
) as Node | undefined;
const inputOption = availableInputOptions.find(
(option) =>
option.path ===
- targetIteratorNode?.data.iterator_component.input
- .replace("${", "")
- .replace("}", "")
+ targetIteratorNode?.data.input.replace("${", "").replace("}", "")
);
if (inputOption) {
@@ -102,18 +100,12 @@ export const IteratorInput = ({ className }: { className?: string }) => {
updatePipelineRecipeIsDirty(() => true);
updateTempSavedNodesForEditingIteratorFlow((nodes) =>
nodes.map((node) => {
- if (
- node.data.id === editingIteratorID &&
- isIteratorNode(node)
- ) {
+ if (node.id === editingIteratorID && isIteratorNode(node)) {
return {
...node,
data: {
...node.data,
- iterator_component: {
- ...node.data.iterator_component,
- input: "${" + option.path + "}",
- },
+ input: "${" + option.path + "}",
},
};
}
diff --git a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/AddOutputButton.tsx b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/AddOutputButton.tsx
index 892314613..b80830a32 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/AddOutputButton.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/AddOutputButton.tsx
@@ -31,31 +31,28 @@ export const AddOutputButton = ({
onClick={() => {
let newOutputElements = {};
- if (targetIteratorNode?.data.iterator_component.output_elements) {
+ if (targetIteratorNode?.data.outputElements) {
const currentIndexArray = Object.keys(
- targetIteratorNode?.data.iterator_component.output_elements
+ targetIteratorNode?.data.outputElements
)
.map((key) => key.replace("result_", ""))
.map(Number)
.sort((a, b) => b - a);
newOutputElements = {
- ...targetIteratorNode?.data.iterator_component.output_elements,
+ ...targetIteratorNode?.data.outputElements,
[`result_${currentIndexArray[0] === 0 ? 1 : currentIndexArray[0] + 1}`]:
"",
};
}
updateTempSavedNodesForEditingIteratorFlow((nodes) =>
nodes.map((node) => {
- if (node.data.id === editingIteratorID && isIteratorNode(node)) {
+ if (node.id === editingIteratorID && isIteratorNode(node)) {
return {
...node,
data: {
...node.data,
- iterator_component: {
- ...node.data.iterator_component,
- output_elements: newOutputElements,
- },
+ outputElements: newOutputElements,
},
};
}
diff --git a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/DeleteOutputButton.tsx b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/DeleteOutputButton.tsx
index a714c1974..da12aa8a9 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/DeleteOutputButton.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/DeleteOutputButton.tsx
@@ -25,18 +25,15 @@ export const DeleteOutputButton = ({ outputKey }: { outputKey: string }) => {
onClick={() => {
updateTempSavedNodesForEditingIteratorFlow((nodes) =>
nodes.map((node) => {
- if (node.data.id === editingIteratorID && isIteratorNode(node)) {
- delete node.data.iterator_component.output_elements[outputKey];
+ if (node.id === editingIteratorID && isIteratorNode(node)) {
+ delete node.data.outputElements[outputKey];
return {
...node,
data: {
...node.data,
- iterator_component: {
- ...node.data.iterator_component,
- output_elements: {
- ...node.data.iterator_component.output_elements,
- },
+ outputElements: {
+ ...node.data.outputElements,
},
},
};
diff --git a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/IteratorOutput.tsx b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/IteratorOutput.tsx
index e00cb669f..bcbd00616 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/IteratorOutput.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/IteratorOutput.tsx
@@ -21,7 +21,7 @@ export const IteratorOutput = () => {
const targetIteratorNode = React.useMemo(() => {
return tempSavedNodesForEditingIteratorFlow.find(
- (node) => node.data.id === editingIteratorID && isIteratorNode(node)
+ (node) => node.id === editingIteratorID && isIteratorNode(node)
) as Node | undefined;
}, [editingIteratorID, tempSavedNodesForEditingIteratorFlow]);
@@ -33,16 +33,16 @@ export const IteratorOutput = () => {
- {targetIteratorNode?.data.iterator_component.output_elements
- ? Object.entries(
- targetIteratorNode?.data.iterator_component.output_elements
- ).map(([key]) => (
-
- ))
+ {targetIteratorNode?.data.outputElements
+ ? Object.entries(targetIteratorNode?.data.outputElements).map(
+ ([key]) => (
+
+ )
+ )
: null}
diff --git a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputKeyField.tsx b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputKeyField.tsx
index 376d43a39..6a4a67a26 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputKeyField.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputKeyField.tsx
@@ -36,19 +36,16 @@ export const OutputKeyField = ({
timer.current = window.setTimeout(() => {
updateTempSavedNodesForEditingIteratorFlow((nodes) =>
nodes.map((node) => {
- if (node.data.id === editingIteratorID && isIteratorNode(node)) {
- delete node.data.iterator_component.output_elements[outputKey];
+ if (node.id === editingIteratorID && isIteratorNode(node)) {
+ delete node.data.outputElements[outputKey];
return {
...node,
data: {
...node.data,
- iterator_component: {
- ...node.data.iterator_component,
- output_elements: {
- ...node.data.iterator_component.output_elements,
- [keyInput]: outputValue,
- },
+ outputElements: {
+ ...node.data.outputElements,
+ [keyInput]: outputValue,
},
},
};
diff --git a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputValueInput.tsx b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputValueInput.tsx
index 961ba0f0c..a1a2dccaf 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputValueInput.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputValueInput.tsx
@@ -26,11 +26,11 @@ export const OutputValueInput = ({ outputKey }: { outputKey: string }) => {
const outputValue = React.useMemo(() => {
const iteratorNode = tempSavedNodesForEditingIteratorFlow.find(
- (node) => node.data.id === editingIteratorID && isIteratorNode(node)
+ (node) => node.id === editingIteratorID && isIteratorNode(node)
) as Node
| undefined;
if (iteratorNode) {
- return iteratorNode.data.iterator_component.output_elements[outputKey];
+ return iteratorNode.data.outputElements[outputKey];
}
}, [tempSavedNodesForEditingIteratorFlow, editingIteratorID, outputKey]);
@@ -42,17 +42,14 @@ export const OutputValueInput = ({ outputKey }: { outputKey: string }) => {
onChange={(e) => {
updateTempSavedNodesForEditingIteratorFlow((nodes) =>
nodes.map((node) => {
- if (node.data.id === editingIteratorID && isIteratorNode(node)) {
+ if (node.id === editingIteratorID && isIteratorNode(node)) {
return {
...node,
data: {
...node.data,
- iterator_component: {
- ...node.data.iterator_component,
- output_elements: {
- ...node.data.iterator_component.output_elements,
- [outputKey]: e.target.value,
- },
+ outputElements: {
+ ...node.data.outputElements,
+ [outputKey]: e.target.value,
},
},
};
diff --git a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputValueSelect.tsx b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputValueSelect.tsx
index 888789d08..79a19f1cf 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputValueSelect.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/iterator-editor/iterator-output/OutputValueSelect.tsx
@@ -44,22 +44,22 @@ export const OutputValueSelect = ({ outputKey }: { outputKey: string }) => {
return hints.map((hint) => ({
path: hint.path,
- instill_format: hint.instillFormat,
+ instillFormat: hint.instillFormat,
description: hint.description,
}));
}, [nodes]);
React.useEffect(() => {
const targetNodes = tempSavedNodesForEditingIteratorFlow.find(
- (node) => node.data.id === editingIteratorID && isIteratorNode(node)
+ (node) => node.id === editingIteratorID && isIteratorNode(node)
) as Node | undefined;
if (targetNodes) {
const outputOption = availableOutputOptions.find((option) => {
if (
- targetNodes?.data.iterator_component.output_elements[outputKey] &&
+ targetNodes?.data.outputElements[outputKey] &&
option.path ===
- targetNodes?.data.iterator_component.output_elements[outputKey]
+ targetNodes?.data.outputElements[outputKey]
.replace("${", "")
.replace("}", "")
) {
@@ -92,17 +92,14 @@ export const OutputValueSelect = ({ outputKey }: { outputKey: string }) => {
updatePipelineRecipeIsDirty(() => true);
updateTempSavedNodesForEditingIteratorFlow((nodes) =>
nodes.map((node) => {
- if (node.data.id === editingIteratorID && isIteratorNode(node)) {
+ if (node.id === editingIteratorID && isIteratorNode(node)) {
return {
...node,
data: {
...node.data,
- iterator_component: {
- ...node.data.iterator_component,
- output_elements: {
- ...node.data.iterator_component.output_elements,
- [outputKey]: "${" + `${option.path}` + "}",
- },
+ outputElements: {
+ ...node.data.outputElements,
+ [outputKey]: "${" + `${option.path}` + "}",
},
},
};
diff --git a/packages/toolkit/src/view/pipeline-builder/components/nodes/common/NodeIDEditor.tsx b/packages/toolkit/src/view/pipeline-builder/components/nodes/common/NodeIDEditor.tsx
index c1880e02f..9c2077eb2 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/nodes/common/NodeIDEditor.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/nodes/common/NodeIDEditor.tsx
@@ -13,9 +13,8 @@ import { zodResolver } from "@hookform/resolvers/zod";
import { InstillErrors } from "../../../../../constant";
import {
composeEdgesFromNodes,
- isConnectorNode,
+ isGeneralNode,
isIteratorNode,
- isOperatorNode,
} from "../../../lib";
import { validateInstillID } from "../../../../../server";
@@ -107,11 +106,7 @@ export const NodeIDEditor = ({ currentNodeID }: { currentNodeID: string }) => {
const newNodes = nodes.map((node) => {
if (node.id === currentNodeID) {
- if (
- isConnectorNode(node) ||
- isOperatorNode(node) ||
- isIteratorNode(node)
- ) {
+ if (isGeneralNode(node) || isIteratorNode(node)) {
return {
...node,
id: newID,
diff --git a/packages/toolkit/src/view/pipeline-builder/components/nodes/common/NodeWrapper.tsx b/packages/toolkit/src/view/pipeline-builder/components/nodes/common/NodeWrapper.tsx
index 136dd78f8..b447c383c 100644
--- a/packages/toolkit/src/view/pipeline-builder/components/nodes/common/NodeWrapper.tsx
+++ b/packages/toolkit/src/view/pipeline-builder/components/nodes/common/NodeWrapper.tsx
@@ -20,6 +20,7 @@ const selector = (store: InstillStore) => ({
});
export const NodeWrapper = ({
+ nodeID,
nodeData,
children,
noteIsOpen,
@@ -28,6 +29,7 @@ export const NodeWrapper = ({
disabledSourceHandler,
disabledTargetHandler,
}: {
+ nodeID: string;
nodeData: NodeData;
children: React.ReactNode;
noteIsOpen: boolean;
@@ -53,25 +55,25 @@ export const NodeWrapper = ({
const reactflowEdges = useEdges();
const hasTargetEdges = React.useMemo(() => {
if (edges.length === 0 && reactflowEdges.length !== 0) {
- return reactflowEdges.some((edge) => edge.target === nodeData.id);
+ return reactflowEdges.some((edge) => edge.target === nodeID);
}
- return edges.some((edge) => edge.target === nodeData.id);
- }, [edges, reactflowEdges, nodeData.id]);
+ return edges.some((edge) => edge.target === nodeID);
+ }, [edges, reactflowEdges, nodeID]);
const hasSourceEdges = React.useMemo(() => {
if (edges.length === 0 && reactflowEdges.length !== 0) {
- return reactflowEdges.some((edge) => edge.source === nodeData.id);
+ return reactflowEdges.some((edge) => edge.source === nodeID);
}
- return edges.some((edge) => edge.source === nodeData.id);
- }, [edges, nodeData.id, reactflowEdges]);
+ return edges.some((edge) => edge.source === nodeID);
+ }, [edges, nodeID, reactflowEdges]);
return (
{
- updateSelectedConnectorNodeId(() => nodeData.id);
+ updateSelectedConnectorNodeId(() => nodeID);
// We reorder the edges so that the selected edge is on top of the unselected edges
updateEdges((edges) => {
@@ -79,7 +81,7 @@ export const NodeWrapper = ({
const unSelectedEdges: Edge[] = [];
edges.forEach((edge) => {
- if (edge.source === nodeData.id || edge.target === nodeData.id) {
+ if (edge.source === nodeID || edge.target === nodeID) {
selectedEdges.push(edge);
} else {
unSelectedEdges.push(edge);
@@ -108,7 +110,7 @@ export const NodeWrapper = ({
timer.current = window.setTimeout(() => {
updateNodes((nodes) =>
nodes.map((node) => {
- if (node.id === nodeData.id) {
+ if (node.id === nodeID) {
node.data = {
...node.data,
note: e.target.value,
@@ -133,7 +135,7 @@ export const NodeWrapper = ({
"flex w-[var(--pipeline-builder-node-available-width)] flex-col rounded-sm border-2 border-semantic-bg-primary bg-semantic-bg-base-bg shadow-md hover:shadow-lg",
{
"outline outline-2 outline-offset-1 outline-semantic-accent-default":
- nodeData.id === selectedConnectorNodeId,
+ nodeID === selectedConnectorNodeId,
}
)}
>
@@ -142,7 +144,7 @@ export const NodeWrapper = ({
{renderBottomBarInformation ? (