) =>
+ setWf({
+ ...wf,
+ steps: wf.steps.map((r, i) => (i === idx && r.inline ? { ...r, inline: { ...r.inline, ...patch } } : r)),
+ });
+
const removeStep = (idx: number) => {
const remaining = resequence(wf.steps.filter((_, i) => i !== idx));
setWf({ ...wf, steps: remaining });
@@ -320,6 +375,26 @@ export default function WorkflowBuilder() {
Sync defaults
+
+
+
+
+
{
const lib = libById(ref.step_id);
const outs = upstreamOutputsFor(i);
- const script = ref.overrides?.script ?? lib?.script ?? "";
+ const script = ref.inline?.script ?? ref.overrides?.script ?? lib?.script ?? "";
const wfIdx = wf.steps.indexOf(ref);
const isSelected = selected === i;
return (
@@ -405,8 +480,10 @@ export default function WorkflowBuilder() {
{i + 1}
- {lib?.name ?? ref.step_id}
- {lib && }
+ {ref.inline?.name ?? lib?.name ?? ref.step_id}
+ {ref.inline && }
+ {lib && !ref.inline && }
+ {ref.inline && }
{script.slice(0, 200)}
@@ -439,27 +516,69 @@ export default function WorkflowBuilder() {
Step {selected + 1} · Inspector
- {selectedLib &&
}
-
{selectedLib?.name ?? selectedRef.step_id}
+ {selectedRef.inline &&
}
+ {selectedLib && !selectedRef.inline &&
}
+ {selectedRef.inline &&
}
+
{selectedRef.inline?.name ?? selectedLib?.name ?? selectedRef.step_id}
-
+ {selectedRef.inline ? (
+
+
+
+ updateInline(selectedIdxInWf, { name: e.target.value })}
+ />
+
+
+
+
+
+
+
+ ) : (
+
+ )}
{(selectedLib?.declared_inputs ?? []).length > 0 && (