diff --git a/frontend/src/flow/AgentNode.tsx b/frontend/src/flow/AgentNode.tsx index b14d380..7df6b9e 100644 --- a/frontend/src/flow/AgentNode.tsx +++ b/frontend/src/flow/AgentNode.tsx @@ -13,6 +13,8 @@ const KIND_COLOR: Record = { sink: "hsl(var(--node-sink))", http: "hsl(var(--node-http))", script: "hsl(var(--node-script))", + transform: "hsl(280 75% 55%)", + loop: "hsl(190 85% 45%)", note: "hsl(45 90% 48%)", }; diff --git a/frontend/src/flow/Inspector.tsx b/frontend/src/flow/Inspector.tsx index 02335cb..31a874a 100644 --- a/frontend/src/flow/Inspector.tsx +++ b/frontend/src/flow/Inspector.tsx @@ -64,6 +64,21 @@ export function Inspector({ /> + {node.data.kind === "transform" && ( +
+ + Operation Preset Guide + +

+ {node.data.config?.operation === "pick_fields" && "Pick Fields: extracts listed properties (e.g. 'id, title, status') from input object."} + {node.data.config?.operation === "template_string" && "Template String: interpolates '{{state.val}}', '{{global.KEY}}', and '{{secret.KEY}}'."} + {node.data.config?.operation === "set_keys" && "Set Keys: assigns JSON key-value pairs directly onto execution state."} + {node.data.config?.operation === "flatten_object" && "Flatten Object: flattens nested JSON objects into top-level dot-notation keys."} + {(!node.data.config?.operation || node.data.config?.operation === "json_map") && "JSON Map: renames input object keys based on JSON mapping params."} +

+
+ )} + {meta.configFields.map((f) => (