@xyne/workflow-ui 0.1.3 → 0.3.0
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/dist/components/automations/AutomationCard.d.ts +8 -2
- package/dist/components/automations/AutomationCard.d.ts.map +1 -1
- package/dist/components/automations/AutomationCard.js +12 -2
- package/dist/components/automations/AutomationCard.js.map +1 -1
- package/dist/components/automations/AutomationListView.d.ts.map +1 -1
- package/dist/components/automations/AutomationListView.js +106 -7
- package/dist/components/automations/AutomationListView.js.map +1 -1
- package/dist/components/automations/CreateWorkflowDialog.d.ts +8 -2
- package/dist/components/automations/CreateWorkflowDialog.d.ts.map +1 -1
- package/dist/components/automations/CreateWorkflowDialog.js +26 -3
- package/dist/components/automations/CreateWorkflowDialog.js.map +1 -1
- package/dist/components/builder/v3/GroupContainer.d.ts +21 -0
- package/dist/components/builder/v3/GroupContainer.d.ts.map +1 -0
- package/dist/components/builder/v3/GroupContainer.js +65 -0
- package/dist/components/builder/v3/GroupContainer.js.map +1 -0
- package/dist/components/builder/v3/SidePanel.d.ts +7 -1
- package/dist/components/builder/v3/SidePanel.d.ts.map +1 -1
- package/dist/components/builder/v3/SidePanel.js +2 -2
- package/dist/components/builder/v3/SidePanel.js.map +1 -1
- package/dist/components/builder/v3/StepConfigPanel.d.ts +12 -2
- package/dist/components/builder/v3/StepConfigPanel.d.ts.map +1 -1
- package/dist/components/builder/v3/StepConfigPanel.js +18 -2
- package/dist/components/builder/v3/StepConfigPanel.js.map +1 -1
- package/dist/components/builder/v3/StepNode.d.ts +5 -1
- package/dist/components/builder/v3/StepNode.d.ts.map +1 -1
- package/dist/components/builder/v3/StepNode.js +3 -3
- package/dist/components/builder/v3/StepNode.js.map +1 -1
- package/dist/components/builder/v3/SummaryButton.d.ts +14 -0
- package/dist/components/builder/v3/SummaryButton.d.ts.map +1 -0
- package/dist/components/builder/v3/SummaryButton.js +15 -0
- package/dist/components/builder/v3/SummaryButton.js.map +1 -0
- package/dist/components/builder/v3/SummaryDialog.d.ts +14 -0
- package/dist/components/builder/v3/SummaryDialog.d.ts.map +1 -0
- package/dist/components/builder/v3/SummaryDialog.js +44 -0
- package/dist/components/builder/v3/SummaryDialog.js.map +1 -0
- package/dist/components/builder/v3/WorkflowBuilderV3.d.ts +5 -2
- package/dist/components/builder/v3/WorkflowBuilderV3.d.ts.map +1 -1
- package/dist/components/builder/v3/WorkflowBuilderV3.js +21 -5
- package/dist/components/builder/v3/WorkflowBuilderV3.js.map +1 -1
- package/dist/components/builder/v3/WorkflowCanvas.d.ts +5 -1
- package/dist/components/builder/v3/WorkflowCanvas.d.ts.map +1 -1
- package/dist/components/builder/v3/WorkflowCanvas.js +2 -2
- package/dist/components/builder/v3/WorkflowCanvas.js.map +1 -1
- package/dist/components/builder/v3/WorkflowTree.d.ts +9 -2
- package/dist/components/builder/v3/WorkflowTree.d.ts.map +1 -1
- package/dist/components/builder/v3/WorkflowTree.js +24 -7
- package/dist/components/builder/v3/WorkflowTree.js.map +1 -1
- package/dist/components/dashboard/WorkflowDashboard.d.ts +4 -2
- package/dist/components/dashboard/WorkflowDashboard.d.ts.map +1 -1
- package/dist/components/dashboard/WorkflowDashboard.js +2 -2
- package/dist/components/dashboard/WorkflowDashboard.js.map +1 -1
- package/dist/components/dashboard/WorkflowSummaryEditor.d.ts +11 -0
- package/dist/components/dashboard/WorkflowSummaryEditor.d.ts.map +1 -0
- package/dist/components/dashboard/WorkflowSummaryEditor.js +46 -0
- package/dist/components/dashboard/WorkflowSummaryEditor.js.map +1 -0
- package/dist/components/execution/ExecutionHeader.d.ts +9 -1
- package/dist/components/execution/ExecutionHeader.d.ts.map +1 -1
- package/dist/components/execution/ExecutionHeader.js +4 -2
- package/dist/components/execution/ExecutionHeader.js.map +1 -1
- package/dist/components/execution/ExecutionTree.d.ts +4 -2
- package/dist/components/execution/ExecutionTree.d.ts.map +1 -1
- package/dist/components/execution/ExecutionTree.js +18 -4
- package/dist/components/execution/ExecutionTree.js.map +1 -1
- package/dist/components/execution/ExecutionViewer.d.ts.map +1 -1
- package/dist/components/execution/ExecutionViewer.js +20 -3
- package/dist/components/execution/ExecutionViewer.js.map +1 -1
- package/dist/components/execution/SidePanelShell.d.ts +24 -0
- package/dist/components/execution/SidePanelShell.d.ts.map +1 -0
- package/dist/components/execution/SidePanelShell.js +46 -0
- package/dist/components/execution/SidePanelShell.js.map +1 -0
- package/dist/components/execution/StepDetailPanel.d.ts +8 -1
- package/dist/components/execution/StepDetailPanel.d.ts.map +1 -1
- package/dist/components/execution/StepDetailPanel.js +4 -32
- package/dist/components/execution/StepDetailPanel.js.map +1 -1
- package/dist/components/execution/SummaryPanel.d.ts +19 -0
- package/dist/components/execution/SummaryPanel.d.ts.map +1 -0
- package/dist/components/execution/SummaryPanel.js +13 -0
- package/dist/components/execution/SummaryPanel.js.map +1 -0
- package/dist/components/index.d.ts +10 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +5 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/shared/MarkdownView.d.ts +13 -0
- package/dist/components/shared/MarkdownView.d.ts.map +1 -0
- package/dist/components/shared/MarkdownView.js +30 -0
- package/dist/components/shared/MarkdownView.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-folder-list.d.ts +13 -0
- package/dist/hooks/use-folder-list.d.ts.map +1 -0
- package/dist/hooks/use-folder-list.js +48 -0
- package/dist/hooks/use-folder-list.js.map +1 -0
- package/dist/hooks/use-workflow-builder.d.ts +11 -1
- package/dist/hooks/use-workflow-builder.d.ts.map +1 -1
- package/dist/hooks/use-workflow-builder.js +49 -0
- package/dist/hooks/use-workflow-builder.js.map +1 -1
- package/dist/hooks/use-workflow-counts.d.ts +12 -0
- package/dist/hooks/use-workflow-counts.d.ts.map +1 -0
- package/dist/hooks/use-workflow-counts.js +35 -0
- package/dist/hooks/use-workflow-counts.js.map +1 -0
- package/dist/hooks/use-workflow-list.d.ts +10 -1
- package/dist/hooks/use-workflow-list.d.ts.map +1 -1
- package/dist/hooks/use-workflow-list.js +15 -3
- package/dist/hooks/use-workflow-list.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utils/group-layout.d.ts +33 -0
- package/dist/utils/group-layout.d.ts.map +1 -0
- package/dist/utils/group-layout.js +53 -0
- package/dist/utils/group-layout.js.map +1 -0
- package/package.json +5 -4
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import type { WorkflowStepConfig } from '@xyne/workflow-sdk/builder';
|
|
1
|
+
import type { WorkflowStepConfig, StepGroup } from '@xyne/workflow-sdk/builder';
|
|
2
2
|
import type { StepMeta } from '../../../hooks/use-step-metadata.js';
|
|
3
3
|
export interface WorkflowTreeProps {
|
|
4
4
|
steps: WorkflowStepConfig[];
|
|
5
5
|
stepMeta: Map<string, StepMeta>;
|
|
6
6
|
selectedStepId: string | null;
|
|
7
7
|
readOnly: boolean;
|
|
8
|
+
/** Documentation groups — threaded through to branch/loop sub-trees so nested steps can be grouped too. */
|
|
9
|
+
groups?: StepGroup[] | undefined;
|
|
10
|
+
/** Edit a group's title/description (inline, builder only). */
|
|
11
|
+
onUpdateGroup?: ((groupId: string, patch: {
|
|
12
|
+
title?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
}) => void) | undefined;
|
|
8
15
|
/** Show a trailing "+" connector after the last step (used inside branches/loops). */
|
|
9
16
|
showTrailingAdd?: boolean | undefined;
|
|
10
17
|
onStepClick: (stepId: string) => void;
|
|
@@ -18,5 +25,5 @@ export interface WorkflowTreeProps {
|
|
|
18
25
|
onAddBranch: (stepId: string, container: string, name: string) => void;
|
|
19
26
|
onRenameBranch: (stepId: string, container: string, oldName: string, newName: string) => void;
|
|
20
27
|
}
|
|
21
|
-
export declare function WorkflowTree({ steps, stepMeta, selectedStepId, readOnly, showTrailingAdd, onStepClick, onAddStep, onDeleteStep, onDuplicateStep, onToggleStepDisabled, onAddBranch, onRenameBranch, }: WorkflowTreeProps): import("react").JSX.Element;
|
|
28
|
+
export declare function WorkflowTree({ steps, stepMeta, selectedStepId, readOnly, groups, onUpdateGroup, showTrailingAdd, onStepClick, onAddStep, onDeleteStep, onDuplicateStep, onToggleStepDisabled, onAddBranch, onRenameBranch, }: WorkflowTreeProps): import("react").JSX.Element;
|
|
22
29
|
//# sourceMappingURL=WorkflowTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowTree.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/WorkflowTree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowTree.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/WorkflowTree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AASpE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,2GAA2G;IAC3G,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACzG,sFAAsF;IACtF,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5F,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/F;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,MAAM,EACN,aAAa,EACb,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,GACf,EAAE,iBAAiB,+BAoMnB"}
|
|
@@ -5,7 +5,9 @@ import { StepNode } from './StepNode.js';
|
|
|
5
5
|
import { Connector } from './Connector.js';
|
|
6
6
|
import { BranchContainer } from './BranchContainer.js';
|
|
7
7
|
import { LoopContainer } from './LoopContainer.js';
|
|
8
|
-
|
|
8
|
+
import { GroupContainer } from './GroupContainer.js';
|
|
9
|
+
import { layoutStepsWithGroups } from '../../../utils/group-layout.js';
|
|
10
|
+
export function WorkflowTree({ steps, stepMeta, selectedStepId, readOnly, groups, onUpdateGroup, showTrailingAdd, onStepClick, onAddStep, onDeleteStep, onDuplicateStep, onToggleStepDisabled, onAddBranch, onRenameBranch, }) {
|
|
9
11
|
/** Detect branches for a step using its config + configSchema from metadata */
|
|
10
12
|
const getBranches = useCallback((step) => {
|
|
11
13
|
const meta = stepMeta.get(step.type);
|
|
@@ -33,8 +35,10 @@ export function WorkflowTree({ steps, stepMeta, selectedStepId, readOnly, showTr
|
|
|
33
35
|
}
|
|
34
36
|
return undefined;
|
|
35
37
|
}, [stepMeta]);
|
|
36
|
-
/** Recursive render for a branch's steps
|
|
37
|
-
|
|
38
|
+
/** Recursive render for a branch's steps. `suppressTrailing` omits the trailing
|
|
39
|
+
* connector for the given step ids (used at group boundaries, where the
|
|
40
|
+
* connector is rendered outside the group box instead). */
|
|
41
|
+
const renderSteps = useCallback((branchSteps, suppressTrailing) => {
|
|
38
42
|
return branchSteps.map((step, i) => {
|
|
39
43
|
const meta = stepMeta.get(step.type);
|
|
40
44
|
const isSelected = selectedStepId === step.id;
|
|
@@ -47,9 +51,9 @@ export function WorkflowTree({ steps, stepMeta, selectedStepId, readOnly, showTr
|
|
|
47
51
|
// only `default` is still a fanout — render it as a single-lane fork.
|
|
48
52
|
const isLoop = meta?.branchModel === 'iterate';
|
|
49
53
|
const isLastStep = i === branchSteps.length - 1;
|
|
50
|
-
return (_jsxs("div", { className: "flex flex-col items-center", children: [_jsx(StepNode, { stepId: step.id, label: meta?.name ?? step.type, category: meta?.category, icon: meta?.icon, isSelected: isSelected, isDisabled: isDisabled, readOnly: readOnly, onClick: () => onStepClick(step.id), onDelete: () => onDeleteStep(step.id), onDuplicate: () => onDuplicateStep(step.id), onToggleDisabled: () => onToggleStepDisabled(step.id) }), hasBranches && (_jsxs(_Fragment, { children: [_jsx("div", { className: "h-4 w-px bg-slate-300" }), isLoop ? (
|
|
54
|
+
return (_jsxs("div", { className: "flex flex-col items-center", children: [_jsx(StepNode, { stepId: step.id, label: step.title || meta?.name || step.type, subLabel: step.title ? (meta?.name ?? step.type) : undefined, description: step.description, category: meta?.category, icon: meta?.icon, isSelected: isSelected, isDisabled: isDisabled, readOnly: readOnly, onClick: () => onStepClick(step.id), onDelete: () => onDeleteStep(step.id), onDuplicate: () => onDuplicateStep(step.id), onToggleDisabled: () => onToggleStepDisabled(step.id) }), hasBranches && (_jsxs(_Fragment, { children: [_jsx("div", { className: "h-4 w-px bg-slate-300" }), isLoop ? (
|
|
51
55
|
// LOOP semantics — iterating body
|
|
52
|
-
_jsx(LoopContainer, { category: meta?.category, bodySteps: branchEntries[0][1].steps, renderBody: (bodySteps) => (_jsx(WorkflowTree, { steps: bodySteps, stepMeta: stepMeta, selectedStepId: selectedStepId, readOnly: readOnly, showTrailingAdd: true, onStepClick: onStepClick, onAddStep: (afterId, inBranch) => onAddStep(afterId, inBranch ?? { stepId: step.id, branchKey: branchEntries[0][0] }), onDeleteStep: onDeleteStep, onDuplicateStep: onDuplicateStep, onToggleStepDisabled: onToggleStepDisabled, onAddBranch: onAddBranch, onRenameBranch: onRenameBranch })) })) : (
|
|
56
|
+
_jsx(LoopContainer, { category: meta?.category, bodySteps: branchEntries[0][1].steps, renderBody: (bodySteps) => (_jsx(WorkflowTree, { steps: bodySteps, stepMeta: stepMeta, selectedStepId: selectedStepId, readOnly: readOnly, groups: groups, onUpdateGroup: onUpdateGroup, showTrailingAdd: true, onStepClick: onStepClick, onAddStep: (afterId, inBranch) => onAddStep(afterId, inBranch ?? { stepId: step.id, branchKey: branchEntries[0][0] }), onDeleteStep: onDeleteStep, onDuplicateStep: onDuplicateStep, onToggleStepDisabled: onToggleStepDisabled, onAddBranch: onAddBranch, onRenameBranch: onRenameBranch })) })) : (
|
|
53
57
|
// Fanout — CONDITIONAL / SWITCH / PARALLEL — render lanes even if only one exists
|
|
54
58
|
_jsx(BranchContainer, { stepId: step.id, branches: branches, category: meta?.category, dynamicContainer: getDynamicContainer(step), readOnly: readOnly, onAddBranch: (name) => {
|
|
55
59
|
const container = getDynamicContainer(step);
|
|
@@ -59,12 +63,25 @@ export function WorkflowTree({ steps, stepMeta, selectedStepId, readOnly, showTr
|
|
|
59
63
|
const container = getDynamicContainer(step);
|
|
60
64
|
if (container)
|
|
61
65
|
onRenameBranch(step.id, container, oldName, newName);
|
|
62
|
-
}, renderBranch: (branchKey, branchSteps) => (_jsx(WorkflowTree, { steps: branchSteps, stepMeta: stepMeta, selectedStepId: selectedStepId, readOnly: readOnly, showTrailingAdd: true, onStepClick: onStepClick, onAddStep: (afterId, inBranch) => onAddStep(afterId, inBranch ?? { stepId: step.id, branchKey }), onDeleteStep: onDeleteStep, onDuplicateStep: onDuplicateStep, onToggleStepDisabled: onToggleStepDisabled, onAddBranch: onAddBranch, onRenameBranch: onRenameBranch })) }))] })), (!isLastStep || showTrailingAdd) && (_jsx(Connector, { showAddButton: !readOnly, onAdd: () => onAddStep(step.id) }))] }, step.id));
|
|
66
|
+
}, renderBranch: (branchKey, branchSteps) => (_jsx(WorkflowTree, { steps: branchSteps, stepMeta: stepMeta, selectedStepId: selectedStepId, readOnly: readOnly, groups: groups, onUpdateGroup: onUpdateGroup, showTrailingAdd: true, onStepClick: onStepClick, onAddStep: (afterId, inBranch) => onAddStep(afterId, inBranch ?? { stepId: step.id, branchKey }), onDeleteStep: onDeleteStep, onDuplicateStep: onDuplicateStep, onToggleStepDisabled: onToggleStepDisabled, onAddBranch: onAddBranch, onRenameBranch: onRenameBranch })) }))] })), (!isLastStep || showTrailingAdd) && !suppressTrailing?.has(step.id) && (_jsx(Connector, { showAddButton: !readOnly, onAdd: () => onAddStep(step.id) }))] }, step.id));
|
|
63
67
|
});
|
|
64
|
-
}, [stepMeta, selectedStepId, readOnly, getBranches, getDynamicContainer, onStepClick, onAddStep, onDeleteStep, onDuplicateStep, onToggleStepDisabled, onAddBranch, onRenameBranch]);
|
|
68
|
+
}, [stepMeta, selectedStepId, readOnly, groups, onUpdateGroup, getBranches, getDynamicContainer, onStepClick, onAddStep, onDeleteStep, onDuplicateStep, onToggleStepDisabled, onAddBranch, onRenameBranch]);
|
|
65
69
|
if (steps.length === 0) {
|
|
66
70
|
return (_jsxs("div", { className: "flex flex-col items-center py-2", children: [_jsx("div", { className: "text-[11px] text-slate-400 italic", children: "No steps" }), !readOnly && (_jsx("button", { onClick: (e) => { e.stopPropagation(); onAddStep(undefined); }, className: "mt-2 flex h-7 w-7 items-center justify-center rounded-full border-2 border-dashed border-slate-300 text-slate-400 hover:border-indigo-400 hover:text-indigo-500 hover:bg-indigo-50 transition-all", title: "Add step", children: _jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", children: [_jsx("path", { d: "M12 5v14" }), _jsx("path", { d: "M5 12h14" })] }) }))] }));
|
|
67
71
|
}
|
|
72
|
+
// Wrap contiguous runs of steps sharing a `groupId` in a GroupContainer. This
|
|
73
|
+
// runs at every level — `groups` is now threaded into branch/loop sub-trees,
|
|
74
|
+
// so each sub-tree independently wraps its own contiguous runs.
|
|
75
|
+
if (groups && groups.length > 0) {
|
|
76
|
+
return (_jsx(_Fragment, { children: layoutStepsWithGroups({
|
|
77
|
+
steps,
|
|
78
|
+
groups,
|
|
79
|
+
showTrailingAdd,
|
|
80
|
+
renderElements: (suppress) => renderSteps(steps, suppress),
|
|
81
|
+
renderGroup: (group, children, key) => (_jsx(GroupContainer, { title: group.title, description: group.description, editable: !readOnly && !!onUpdateGroup, onUpdate: onUpdateGroup ? (patch) => onUpdateGroup(group.id, patch) : undefined, children: children }, key)),
|
|
82
|
+
renderBoundaryConnector: (lastStepId, key) => (_jsx(Connector, { showAddButton: !readOnly, onAdd: () => onAddStep(lastStepId) }, key)),
|
|
83
|
+
}) }));
|
|
84
|
+
}
|
|
68
85
|
return _jsx(_Fragment, { children: renderSteps(steps) });
|
|
69
86
|
}
|
|
70
87
|
//# sourceMappingURL=WorkflowTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowTree.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/WorkflowTree.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowTree.js","sourceRoot":"","sources":["../../../../src/components/builder/v3/WorkflowTree.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAsBvE,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,MAAM,EACN,aAAa,EACb,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,GACI;IAElB,+EAA+E;IAC/E,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,IAAwB,EAAE,EAAE;QAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC/D,OAAO,wBAAwB,CAC7B,IAAI,CAAC,MAAiC,EACtC,IAAI,EAAE,YAAY,CACnB,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,0FAA0F;IAC1F,MAAM,mBAAmB,GAAG,WAAW,CAAC,CAAC,IAAwB,EAAE,EAAE;QACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,YAAY;YAAE,OAAO,SAAS,CAAC;QAC1C,MAAM,UAAU,GAAI,IAAI,CAAC,YAAwC,CAAC,YAAY,CAAwD,CAAC;QACvI,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,eAAe,GAAG,UAAU,CAAC,sBAAsB,CAAwC,CAAC;gBAClG,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;oBAC1C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAwC,CAAC;oBAC9E,IAAI,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ;wBAAE,OAAO,GAAG,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf;;gEAE4D;IAC5D,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,WAAiC,EAAE,gBAA8B,EAAE,EAAE;QACpG,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,cAAc,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,OAAO,CAAE,IAAI,CAAC,MAA8C,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/F,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7C,6EAA6E;YAC7E,2EAA2E;YAC3E,sEAAsE;YACtE,MAAM,MAAM,GAAG,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC;YAC/C,MAAM,UAAU,GAAG,CAAC,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAEhD,OAAO,CACL,eAAmB,SAAS,EAAC,4BAA4B,aAEvD,KAAC,QAAQ,IACP,MAAM,EAAE,IAAI,CAAC,EAAE,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,EAC5C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAC5D,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,EAAE,QAAQ,EACxB,IAAI,EAAE,IAAI,EAAE,IAAI,EAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EACrC,WAAW,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAC3C,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,GACrD,EAGD,WAAW,IAAI,CACd,8BACE,cAAK,SAAS,EAAC,uBAAuB,GAAG,EACxC,MAAM,CAAC,CAAC,CAAC;4BACR,kCAAkC;4BAClC,KAAC,aAAa,IACZ,QAAQ,EAAE,IAAI,EAAE,QAAQ,EACxB,SAAS,EAAE,aAAa,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EACrC,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CACzB,KAAC,YAAY,IACX,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,eAAe,QACf,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACtH,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,oBAAoB,EAAE,oBAAoB,EAC1C,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,GAC9B,CACH,GACD,CACH,CAAC,CAAC,CAAC;4BACF,kFAAkF;4BAClF,KAAC,eAAe,IACd,MAAM,EAAE,IAAI,CAAC,EAAE,EACf,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,IAAI,EAAE,QAAQ,EACxB,gBAAgB,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAC3C,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;oCACpB,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;oCAC5C,IAAI,SAAS;wCAAE,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gCACvD,CAAC,EACD,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;oCACnC,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;oCAC5C,IAAI,SAAS;wCAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gCACtE,CAAC,EACD,YAAY,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,CACxC,KAAC,YAAY,IACX,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,eAAe,QACf,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAChG,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,oBAAoB,EAAE,oBAAoB,EAC1C,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,GAC9B,CACH,GACD,CACH,IACA,CACJ,EAIA,CAAC,CAAC,UAAU,IAAI,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CACtE,KAAC,SAAS,IACR,aAAa,EAAE,CAAC,QAAQ,EACxB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAC/B,CACH,KA5FO,IAAI,CAAC,EAAE,CA6FX,CACP,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAE5M,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CACL,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cAAK,SAAS,EAAC,mCAAmC,yBAAe,EAChE,CAAC,QAAQ,IAAI,CACZ,iBACE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC9D,SAAS,EAAC,mMAAmM,EAC7M,KAAK,EAAC,UAAU,YAEhB,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,aACvH,eAAM,CAAC,EAAC,UAAU,GAAG,EAAA,eAAM,CAAC,EAAC,UAAU,GAAG,IACtC,GACC,CACV,IACG,CACP,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,gEAAgE;IAChE,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CACL,4BACG,qBAAqB,CAAC;gBACrB,KAAK;gBACL,MAAM;gBACN,eAAe;gBACf,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAC1D,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CACrC,KAAC,cAAc,IAEb,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,QAAQ,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC,aAAa,EACtC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,YAE9E,QAAQ,IANJ,GAAG,CAOO,CAClB;gBACD,uBAAuB,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAC5C,KAAC,SAAS,IAAW,aAAa,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAjE,GAAG,CAAkE,CACtF;aACF,CAAC,GACD,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,4BAAG,WAAW,CAAC,KAAK,CAAC,GAAI,CAAC;AACnC,CAAC"}
|
|
@@ -5,7 +5,9 @@ export interface WorkflowDashboardProps {
|
|
|
5
5
|
defaultView?: View | undefined;
|
|
6
6
|
workflowId?: string | undefined;
|
|
7
7
|
workflowConfig?: WorkflowConfig | undefined;
|
|
8
|
-
|
|
8
|
+
/** Initial workflow summary (record column). Edited in the builder, saved via onSave. */
|
|
9
|
+
summary?: string | null | undefined;
|
|
10
|
+
onSave?: ((config: WorkflowConfig, summary: string | null) => Promise<void>) | undefined;
|
|
9
11
|
onTestRun?: ((config: WorkflowConfig) => void) | undefined;
|
|
10
12
|
className?: string | undefined;
|
|
11
13
|
classNames?: {
|
|
@@ -14,6 +16,6 @@ export interface WorkflowDashboardProps {
|
|
|
14
16
|
content?: string | undefined;
|
|
15
17
|
} | undefined;
|
|
16
18
|
}
|
|
17
|
-
export declare function WorkflowDashboard({ defaultView, workflowId, workflowConfig, onSave, onTestRun, className, classNames, }: WorkflowDashboardProps): React.JSX.Element;
|
|
19
|
+
export declare function WorkflowDashboard({ defaultView, workflowId, workflowConfig, summary, onSave, onTestRun, className, classNames, }: WorkflowDashboardProps): React.JSX.Element;
|
|
18
20
|
export {};
|
|
19
21
|
//# sourceMappingURL=WorkflowDashboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowDashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQjE,KAAK,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowDashboard.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowDashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQjE,KAAK,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACzF,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,GAAG,SAAS,CAAC;CACf;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAuB,EACvB,UAAU,EACV,cAAc,EACd,OAAO,EACP,MAAM,EACN,SAAS,EACT,SAAS,EACT,UAAU,GACX,EAAE,sBAAsB,qBA0IxB"}
|
|
@@ -6,7 +6,7 @@ import { ExecutionViewer } from '../execution/ExecutionViewer.js';
|
|
|
6
6
|
import { TriggerFormModal } from './TriggerFormModal.js';
|
|
7
7
|
import { useWorkflowClient } from '../../hooks/use-workflow-client.js';
|
|
8
8
|
import { cn } from '../shared/cn.js';
|
|
9
|
-
export function WorkflowDashboard({ defaultView = 'builder', workflowId, workflowConfig, onSave, onTestRun, className, classNames, }) {
|
|
9
|
+
export function WorkflowDashboard({ defaultView = 'builder', workflowId, workflowConfig, summary, onSave, onTestRun, className, classNames, }) {
|
|
10
10
|
const client = useWorkflowClient();
|
|
11
11
|
const [activeView, setActiveView] = useState(defaultView);
|
|
12
12
|
const [selectedExecutionId, setSelectedExecutionId] = useState(null);
|
|
@@ -38,7 +38,7 @@ export function WorkflowDashboard({ defaultView = 'builder', workflowId, workflo
|
|
|
38
38
|
if (selectedExecutionId) {
|
|
39
39
|
return (_jsxs("div", { className: cn('flex h-full flex-col', classNames?.root, className), "data-workflow-ui": "", children: [_jsx("div", { className: "flex items-center border-b border-slate-200/80 bg-white px-4 py-2.5", children: _jsxs("button", { onClick: () => setSelectedExecutionId(null), className: "flex items-center gap-1.5 text-[13px] font-medium text-indigo-500 hover:text-indigo-700 transition-colors", children: [_jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "m15 18-6-6 6-6" }) }), "Back to ", activeView === 'runs' ? 'Runs' : 'Dashboard'] }) }), _jsx("div", { className: "flex-1 overflow-hidden", children: _jsx(ExecutionViewer, { executionId: selectedExecutionId, workflowConfig: workflowConfig }) })] }));
|
|
40
40
|
}
|
|
41
|
-
return (_jsxs("div", { className: cn('flex h-full flex-col', classNames?.root, className), "data-workflow-ui": "", children: [_jsxs("div", { className: cn('flex items-center gap-1 border-b border-slate-200/80 bg-white px-4', classNames?.tabs), children: [_jsx(TabButton, { icon: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { width: "7", height: "7", x: "3", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "3", y: "14", rx: "1" })] }), label: "Builder", active: activeView === 'builder', onClick: () => setActiveView('builder') }), _jsx(TabButton, { icon: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M12 20h9" }), _jsx("path", { d: "M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z" })] }), label: "Runs", active: activeView === 'runs', onClick: () => setActiveView('runs') }), workflowId && (_jsx("div", { className: "ml-auto", children: _jsxs("button", { onClick: handleRunClick, className: cn('flex items-center gap-1.5 rounded-md px-3 py-1.5 text-[13px] font-semibold transition-colors', 'bg-indigo-500 text-white hover:bg-indigo-600'), children: [_jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) }), "Run"] }) }))] }), _jsxs("div", { className: cn('flex-1 overflow-hidden', classNames?.content), children: [activeView === 'builder' && (_jsx(WorkflowBuilder, { initialConfig: workflowConfig, onSave: onSave, onTestRun: onTestRun })), activeView === 'runs' && (_jsx(RunsView, { workflowId: workflowId, onSelectExecution: setSelectedExecutionId }, runKey))] }), showTriggerForm && (triggerInputSchema || triggerAttachmentsConfig) && (_jsx(TriggerFormModal, { inputSchema: triggerInputSchema, attachmentsConfig: triggerAttachmentsConfig, onSubmit: handleRun, onClose: () => setShowTriggerForm(false) }))] }));
|
|
41
|
+
return (_jsxs("div", { className: cn('flex h-full flex-col', classNames?.root, className), "data-workflow-ui": "", children: [_jsxs("div", { className: cn('flex items-center gap-1 border-b border-slate-200/80 bg-white px-4', classNames?.tabs), children: [_jsx(TabButton, { icon: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { width: "7", height: "7", x: "3", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "3", y: "14", rx: "1" })] }), label: "Builder", active: activeView === 'builder', onClick: () => setActiveView('builder') }), _jsx(TabButton, { icon: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M12 20h9" }), _jsx("path", { d: "M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z" })] }), label: "Runs", active: activeView === 'runs', onClick: () => setActiveView('runs') }), workflowId && (_jsx("div", { className: "ml-auto", children: _jsxs("button", { onClick: handleRunClick, className: cn('flex items-center gap-1.5 rounded-md px-3 py-1.5 text-[13px] font-semibold transition-colors', 'bg-indigo-500 text-white hover:bg-indigo-600'), children: [_jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) }), "Run"] }) }))] }), _jsxs("div", { className: cn('flex-1 overflow-hidden', classNames?.content), children: [activeView === 'builder' && (_jsx(WorkflowBuilder, { initialConfig: workflowConfig, initialSummary: summary, onSave: onSave, onTestRun: onTestRun })), activeView === 'runs' && (_jsx(RunsView, { workflowId: workflowId, onSelectExecution: setSelectedExecutionId }, runKey))] }), showTriggerForm && (triggerInputSchema || triggerAttachmentsConfig) && (_jsx(TriggerFormModal, { inputSchema: triggerInputSchema, attachmentsConfig: triggerAttachmentsConfig, onSubmit: handleRun, onClose: () => setShowTriggerForm(false) }))] }));
|
|
42
42
|
}
|
|
43
43
|
function TabButton({ icon, label, active, onClick, }) {
|
|
44
44
|
return (_jsxs("button", { onClick: onClick, className: cn('flex items-center gap-2 px-3.5 py-3 text-[13px] font-semibold transition-all duration-100', active
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowDashboard.js","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowDashboard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,iBAAiB,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowDashboard.js","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowDashboard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface WorkflowSummaryEditorProps {
|
|
2
|
+
workflowId: string;
|
|
3
|
+
className?: string | undefined;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Edits the workflow-level summary/readme — a first-class record column,
|
|
7
|
+
* independent of the builder config. Reads via `workflows.get`, saves via
|
|
8
|
+
* `workflows.update({ summary })`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function WorkflowSummaryEditor({ workflowId, className }: WorkflowSummaryEditorProps): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=WorkflowSummaryEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowSummaryEditor.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowSummaryEditor.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,0BAA0B,+BAgE1F"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { useWorkflowClient } from '../../hooks/use-workflow-client.js';
|
|
4
|
+
import { cn } from '../shared/cn.js';
|
|
5
|
+
/**
|
|
6
|
+
* Edits the workflow-level summary/readme — a first-class record column,
|
|
7
|
+
* independent of the builder config. Reads via `workflows.get`, saves via
|
|
8
|
+
* `workflows.update({ summary })`.
|
|
9
|
+
*/
|
|
10
|
+
export function WorkflowSummaryEditor({ workflowId, className }) {
|
|
11
|
+
const client = useWorkflowClient();
|
|
12
|
+
const [summary, setSummary] = useState('');
|
|
13
|
+
const [loaded, setLoaded] = useState(false);
|
|
14
|
+
const [saving, setSaving] = useState(false);
|
|
15
|
+
const [savedAt, setSavedAt] = useState(false);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
let cancelled = false;
|
|
18
|
+
void (async () => {
|
|
19
|
+
try {
|
|
20
|
+
const wf = await client.workflows.get(workflowId);
|
|
21
|
+
if (!cancelled) {
|
|
22
|
+
setSummary(wf.summary ?? '');
|
|
23
|
+
setLoaded(true);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
if (!cancelled)
|
|
28
|
+
setLoaded(true);
|
|
29
|
+
}
|
|
30
|
+
})();
|
|
31
|
+
return () => { cancelled = true; };
|
|
32
|
+
}, [client, workflowId]);
|
|
33
|
+
const save = async () => {
|
|
34
|
+
setSaving(true);
|
|
35
|
+
setSavedAt(false);
|
|
36
|
+
try {
|
|
37
|
+
await client.workflows.update(workflowId, { summary });
|
|
38
|
+
setSavedAt(true);
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
setSaving(false);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
return (_jsxs("div", { className: cn('space-y-2', className), "data-testid": "workflow-summary-editor", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "text-[11px] font-bold uppercase tracking-widest text-slate-400", children: "Summary" }), _jsx("button", { type: "button", "data-testid": "summary-save", onClick: () => void save(), disabled: saving || !loaded, className: cn('rounded-md px-3 py-1 text-[12px] font-semibold text-white transition-colors', savedAt ? 'bg-emerald-500' : 'bg-indigo-500 hover:bg-indigo-600', (saving || !loaded) && 'opacity-50 cursor-not-allowed'), children: saving ? 'Saving…' : savedAt ? 'Saved' : 'Save summary' })] }), _jsx("textarea", { "data-testid": "summary-input", value: summary, onChange: (e) => { setSummary(e.target.value); setSavedAt(false); }, rows: 3, placeholder: "Describe what this workflow does\u2026", className: "w-full resize-y rounded-lg border border-slate-200 px-3 py-2 text-[13px] outline-none focus:border-indigo-400 focus:ring-2 focus:ring-indigo-100" })] }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=WorkflowSummaryEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowSummaryEditor.js","sourceRoot":"","sources":["../../../src/components/dashboard/WorkflowSummaryEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,16 @@ export interface ExecutionHeaderProps {
|
|
|
2
2
|
executionId: string;
|
|
3
3
|
status: string;
|
|
4
4
|
startedAt?: string | undefined;
|
|
5
|
+
/** Workflow display name. */
|
|
6
|
+
name?: string | undefined;
|
|
7
|
+
/** Whether a summary exists — controls visibility of the Summary toggle. */
|
|
8
|
+
hasSummary?: boolean | undefined;
|
|
9
|
+
/** Whether the summary side panel is currently open (toggle highlight). */
|
|
10
|
+
summaryOpen?: boolean | undefined;
|
|
11
|
+
/** Toggle the summary side panel. */
|
|
12
|
+
onToggleSummary?: (() => void) | undefined;
|
|
5
13
|
className?: string | undefined;
|
|
6
14
|
onCancel?: (() => void) | undefined;
|
|
7
15
|
}
|
|
8
|
-
export declare function ExecutionHeader({ executionId, status, startedAt, className, onCancel, }: ExecutionHeaderProps): import("react").JSX.Element;
|
|
16
|
+
export declare function ExecutionHeader({ executionId, status, startedAt, name, hasSummary, summaryOpen, onToggleSummary, className, onCancel, }: ExecutionHeaderProps): import("react").JSX.Element;
|
|
9
17
|
//# sourceMappingURL=ExecutionHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionHeader.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionHeader.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACrC;AAkBD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,MAAM,EACN,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE,oBAAoB,+
|
|
1
|
+
{"version":3,"file":"ExecutionHeader.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionHeader.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,qCAAqC;IACrC,eAAe,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACrC;AAkBD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,MAAM,EACN,SAAS,EACT,IAAI,EACJ,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,QAAQ,GACT,EAAE,oBAAoB,+BAsDtB"}
|
|
@@ -16,7 +16,9 @@ function mapStatus(s) {
|
|
|
16
16
|
default: return 'pending';
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
export function ExecutionHeader({ executionId, status, startedAt, className, onCancel, }) {
|
|
20
|
-
return (_jsxs("div", { className: cn('flex items-center gap-3 border-b border-[var(--wui-border)] bg-[var(--wui-bg)] px-4 py-2.5', className), children: [_jsx("span", { className: "font-mono text-xs text-[var(--wui-fg-muted)]", children: executionId }), _jsx(StatusBadge, { status: mapStatus(status) }), startedAt && (_jsxs("span", { className: "text-xs text-[var(--wui-fg-muted)]", children: ["Started ", startedAt] })), _jsx("div", { className: "flex-1" }),
|
|
19
|
+
export function ExecutionHeader({ executionId, status, startedAt, name, hasSummary, summaryOpen, onToggleSummary, className, onCancel, }) {
|
|
20
|
+
return (_jsxs("div", { className: cn('flex items-center gap-3 border-b border-[var(--wui-border)] bg-[var(--wui-bg)] px-4 py-2.5', className), children: [name && (_jsx("span", { className: "text-sm font-semibold text-[var(--wui-fg)]", "data-testid": "execution-name", children: name })), _jsx("span", { className: "font-mono text-xs text-[var(--wui-fg-muted)]", children: executionId }), _jsx(StatusBadge, { status: mapStatus(status) }), startedAt && (_jsxs("span", { className: "text-xs text-[var(--wui-fg-muted)]", children: ["Started ", startedAt] })), _jsx("div", { className: "flex-1" }), hasSummary && onToggleSummary && (_jsxs("button", { onClick: onToggleSummary, "data-testid": "summary-toggle", title: summaryOpen ? 'Hide summary' : 'Show summary', className: cn('flex items-center gap-1.5 rounded-[var(--wui-radius-sm)] border px-2.5 py-1 text-sm transition-colors', summaryOpen
|
|
21
|
+
? 'border-indigo-300 bg-indigo-50 text-indigo-700'
|
|
22
|
+
: 'border-[var(--wui-border)] text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg-subtle)]'), children: [_jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }), _jsx("path", { d: "M14 2v6h6" }), _jsx("path", { d: "M16 13H8" }), _jsx("path", { d: "M16 17H8" }), _jsx("path", { d: "M10 9H8" })] }), "Summary"] })), onCancel && (status === 'running' || status === 'RUNNING' || status === 'paused' || status === 'EXTERNAL_WAIT') && (_jsx("button", { onClick: onCancel, className: cn('rounded-[var(--wui-radius-sm)] border border-[var(--wui-status-failed)]/30 px-3 py-1 text-sm', 'text-[var(--wui-status-failed)] hover:bg-[var(--wui-status-failed)]/5'), children: "Cancel" }))] }));
|
|
21
23
|
}
|
|
22
24
|
//# sourceMappingURL=ExecutionHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionHeader.js","sourceRoot":"","sources":["../../../src/components/execution/ExecutionHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ExecutionHeader.js","sourceRoot":"","sources":["../../../src/components/execution/ExecutionHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAkBrC,SAAS,SAAS,CAAC,CAAS;IAC1B,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;QACjC,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;QACjC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;QACrC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;QACrC,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC/B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC/B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC/B,KAAK,eAAe,CAAC,CAAC,OAAO,QAAQ,CAAC;QACtC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;QACrC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;QACrC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,WAAW,EACX,MAAM,EACN,SAAS,EACT,IAAI,EACJ,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,QAAQ,GACa;IACrB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,SAAS,CACV,aAEA,IAAI,IAAI,CACP,eAAM,SAAS,EAAC,4CAA4C,iBAAa,gBAAgB,YAAE,IAAI,GAAQ,CACxG,EACD,eAAM,SAAS,EAAC,8CAA8C,YAAE,WAAW,GAAQ,EACnF,KAAC,WAAW,IAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAI,EAEzC,SAAS,IAAI,CACZ,gBAAM,SAAS,EAAC,oCAAoC,yBACzC,SAAS,IACb,CACR,EAED,cAAK,SAAS,EAAC,QAAQ,GAAG,EAEzB,UAAU,IAAI,eAAe,IAAI,CAChC,kBACE,OAAO,EAAE,eAAe,iBACZ,gBAAgB,EAC5B,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,EACpD,SAAS,EAAE,EAAE,CACX,uGAAuG,EACvG,WAAW;oBACT,CAAC,CAAC,gDAAgD;oBAClD,CAAC,CAAC,uFAAuF,CAC5F,aAED,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,aAC5I,eAAM,CAAC,EAAC,4DAA4D,GAAE,EAAA,eAAM,CAAC,EAAC,WAAW,GAAE,EAAA,eAAM,CAAC,EAAC,UAAU,GAAE,EAAA,eAAM,CAAC,EAAC,UAAU,GAAE,EAAA,eAAM,CAAC,EAAC,SAAS,GAAE,IAClJ,eAEC,CACV,EAEA,QAAQ,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,eAAe,CAAC,IAAI,CAClH,iBACE,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,EAAE,CACX,8FAA8F,EAC9F,uEAAuE,CACxE,uBAGM,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WorkflowStepConfig } from '@xyne/workflow-sdk/builder';
|
|
1
|
+
import type { WorkflowStepConfig, StepGroup } from '@xyne/workflow-sdk/builder';
|
|
2
2
|
import type { StepMeta } from '../../hooks/use-step-metadata.js';
|
|
3
3
|
import type { StepExecutionState } from '../../hooks/use-execution-viewer.js';
|
|
4
4
|
export interface ExecutionTreeProps {
|
|
@@ -7,6 +7,8 @@ export interface ExecutionTreeProps {
|
|
|
7
7
|
stepStates: Map<string, StepExecutionState>;
|
|
8
8
|
selectedStepId: string | null;
|
|
9
9
|
onStepClick: (stepId: string) => void;
|
|
10
|
+
/** Documentation groups — threaded through to branch/loop sub-trees so nested steps render their group boxes too. */
|
|
11
|
+
groups?: StepGroup[] | undefined;
|
|
10
12
|
}
|
|
11
|
-
export declare function ExecutionTree({ steps, stepMeta, stepStates, selectedStepId, onStepClick, }: ExecutionTreeProps): import("react").JSX.Element;
|
|
13
|
+
export declare function ExecutionTree({ steps, stepMeta, stepStates, selectedStepId, onStepClick, groups, }: ExecutionTreeProps): import("react").JSX.Element;
|
|
12
14
|
//# sourceMappingURL=ExecutionTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionTree.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionTree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ExecutionTree.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionTree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAuE9E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,qHAAqH;IACrH,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;CAClC;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,UAAU,EACV,cAAc,EACd,WAAW,EACX,MAAM,GACP,EAAE,kBAAkB,+BA8HpB"}
|
|
@@ -5,6 +5,8 @@ import { StepNode } from '../builder/v3/StepNode.js';
|
|
|
5
5
|
import { Connector } from '../builder/v3/Connector.js';
|
|
6
6
|
import { BranchContainer } from '../builder/v3/BranchContainer.js';
|
|
7
7
|
import { LoopContainer } from '../builder/v3/LoopContainer.js';
|
|
8
|
+
import { GroupContainer } from '../builder/v3/GroupContainer.js';
|
|
9
|
+
import { layoutStepsWithGroups } from '../../utils/group-layout.js';
|
|
8
10
|
import { cn } from '../shared/cn.js';
|
|
9
11
|
function StatusBadge({ status }) {
|
|
10
12
|
if (status === 'pending')
|
|
@@ -36,14 +38,14 @@ function StatusBadge({ status }) {
|
|
|
36
38
|
return null;
|
|
37
39
|
return (_jsx("span", { className: cn('absolute -bottom-1 -right-1 flex h-4 w-4 items-center justify-center rounded-full ring-2 ring-white', c.bg), children: c.icon }));
|
|
38
40
|
}
|
|
39
|
-
export function ExecutionTree({ steps, stepMeta, stepStates, selectedStepId, onStepClick, }) {
|
|
41
|
+
export function ExecutionTree({ steps, stepMeta, stepStates, selectedStepId, onStepClick, groups, }) {
|
|
40
42
|
const getBranches = useCallback((step) => {
|
|
41
43
|
const meta = stepMeta.get(step.type);
|
|
42
44
|
if (!step.config || typeof step.config !== 'object')
|
|
43
45
|
return {};
|
|
44
46
|
return detectBranchesFromConfig(step.config, meta?.configSchema);
|
|
45
47
|
}, [stepMeta]);
|
|
46
|
-
const renderSteps = useCallback((branchSteps) => {
|
|
48
|
+
const renderSteps = useCallback((branchSteps, suppressTrailing) => {
|
|
47
49
|
return branchSteps.map((step, i) => {
|
|
48
50
|
const meta = stepMeta.get(step.type);
|
|
49
51
|
const isSelected = selectedStepId === step.id;
|
|
@@ -54,12 +56,24 @@ export function ExecutionTree({ steps, stepMeta, stepStates, selectedStepId, onS
|
|
|
54
56
|
const hasBranches = branchEntries.length > 0;
|
|
55
57
|
const isLoop = meta?.branchModel === 'iterate';
|
|
56
58
|
const isLastStep = i === branchSteps.length - 1;
|
|
57
|
-
return (_jsxs("div", { className: "flex flex-col items-center", children: [_jsxs("div", { className: "relative", children: [_jsx(StepNode, { stepId: step.id, label: meta?.name ?? step.type, category: meta?.category, icon: meta?.icon, isSelected: isSelected, isDisabled: status === 'skipped', executionStatus: status, readOnly: true, onClick: () => onStepClick(step.id) }), _jsx("div", { className: "absolute left-3 top-3", children: _jsx("div", { className: "relative h-8 w-8", children: _jsx(StatusBadge, { status: status }) }) })] }), hasBranches && (_jsxs(_Fragment, { children: [_jsx("div", { className: "h-4 w-px bg-slate-300" }), isLoop ? (_jsx(LoopContainer, { category: meta?.category, bodySteps: branchEntries[0][1].steps, renderBody: (bodySteps) => (_jsx(ExecutionTree, { steps: bodySteps, stepMeta: stepMeta, stepStates: stepStates, selectedStepId: selectedStepId, onStepClick: onStepClick })) })) : (_jsx(BranchContainer, { stepId: step.id, branches: branches, category: meta?.category, readOnly: true, renderBranch: (_branchKey, branchSteps2) => (_jsx(ExecutionTree, { steps: branchSteps2, stepMeta: stepMeta, stepStates: stepStates, selectedStepId: selectedStepId, onStepClick: onStepClick })) }))] })), !isLastStep && _jsx(Connector, {})] }, step.id));
|
|
59
|
+
return (_jsxs("div", { className: "flex flex-col items-center", children: [_jsxs("div", { className: "relative", children: [_jsx(StepNode, { stepId: step.id, label: step.title || meta?.name || step.type, subLabel: step.title ? (meta?.name ?? step.type) : undefined, description: step.description, category: meta?.category, icon: meta?.icon, isSelected: isSelected, isDisabled: status === 'skipped', executionStatus: status, readOnly: true, onClick: () => onStepClick(step.id) }), _jsx("div", { className: "absolute left-3 top-3", children: _jsx("div", { className: "relative h-8 w-8", children: _jsx(StatusBadge, { status: status }) }) })] }), hasBranches && (_jsxs(_Fragment, { children: [_jsx("div", { className: "h-4 w-px bg-slate-300" }), isLoop ? (_jsx(LoopContainer, { category: meta?.category, bodySteps: branchEntries[0][1].steps, renderBody: (bodySteps) => (_jsx(ExecutionTree, { steps: bodySteps, stepMeta: stepMeta, stepStates: stepStates, selectedStepId: selectedStepId, onStepClick: onStepClick, groups: groups })) })) : (_jsx(BranchContainer, { stepId: step.id, branches: branches, category: meta?.category, readOnly: true, renderBranch: (_branchKey, branchSteps2) => (_jsx(ExecutionTree, { steps: branchSteps2, stepMeta: stepMeta, stepStates: stepStates, selectedStepId: selectedStepId, onStepClick: onStepClick, groups: groups })) }))] })), !isLastStep && !suppressTrailing?.has(step.id) && _jsx(Connector, {})] }, step.id));
|
|
58
60
|
});
|
|
59
|
-
}, [stepMeta, stepStates, selectedStepId, getBranches, onStepClick]);
|
|
61
|
+
}, [stepMeta, stepStates, selectedStepId, groups, getBranches, onStepClick]);
|
|
60
62
|
if (steps.length === 0) {
|
|
61
63
|
return (_jsx("div", { className: "flex flex-col items-center py-2", children: _jsx("div", { className: "text-[11px] text-slate-400 italic", children: "No steps" }) }));
|
|
62
64
|
}
|
|
65
|
+
// Wrap contiguous runs sharing a `groupId` in a GroupContainer (read-only) so
|
|
66
|
+
// a run looks structurally identical to the builder. `groups` is threaded into
|
|
67
|
+
// branch/loop sub-trees, so nested groups render at every level.
|
|
68
|
+
if (groups && groups.length > 0) {
|
|
69
|
+
return (_jsx(_Fragment, { children: layoutStepsWithGroups({
|
|
70
|
+
steps,
|
|
71
|
+
groups,
|
|
72
|
+
renderElements: (suppress) => renderSteps(steps, suppress),
|
|
73
|
+
renderGroup: (group, children, key) => (_jsx(GroupContainer, { title: group.title, description: group.description, children: children }, key)),
|
|
74
|
+
renderBoundaryConnector: (_lastStepId, key) => _jsx(Connector, {}, key),
|
|
75
|
+
}) }));
|
|
76
|
+
}
|
|
63
77
|
return _jsx(_Fragment, { children: renderSteps(steps) });
|
|
64
78
|
}
|
|
65
79
|
//# sourceMappingURL=ExecutionTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionTree.js","sourceRoot":"","sources":["../../../src/components/execution/ExecutionTree.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ExecutionTree.js","sourceRoot":"","sources":["../../../src/components/execution/ExecutionTree.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionViewer.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionViewer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ExecutionViewer.d.ts","sourceRoot":"","sources":["../../../src/components/execution/ExecutionViewer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,4BAA4B,CAAC;AAiBrF,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAClC,GAAG,SAAS,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACvD;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACjE;AAED,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,QAAQ,EACR,cAAc,GACf,EAAE,oBAAoB,+BAmUtB"}
|
|
@@ -8,6 +8,7 @@ import { TerminalNode } from '../builder/v3/TerminalNode.js';
|
|
|
8
8
|
import { ExecutionTree } from './ExecutionTree.js';
|
|
9
9
|
import { ExecutionHeader } from './ExecutionHeader.js';
|
|
10
10
|
import { StepDetailPanel } from './StepDetailPanel.js';
|
|
11
|
+
import { SummaryPanel } from './SummaryPanel.js';
|
|
11
12
|
import { RerunDialog } from './RerunDialog.js';
|
|
12
13
|
import { LoadingSpinner } from '../shared/LoadingSpinner.js';
|
|
13
14
|
import { cn } from '../shared/cn.js';
|
|
@@ -16,6 +17,10 @@ export function ExecutionViewer({ executionId, workflowConfig, className, classN
|
|
|
16
17
|
const viewer = useExecutionViewer({ executionId });
|
|
17
18
|
const [selectedStepId, setSelectedStepId] = useState(null);
|
|
18
19
|
const [rerunStepId, setRerunStepId] = useState(null);
|
|
20
|
+
// Summary side panel — open by default, dismissible, reopened from the header.
|
|
21
|
+
const [showSummary, setShowSummary] = useState(true);
|
|
22
|
+
// Shared width for the right-hand panel so a resize persists across step/summary swaps.
|
|
23
|
+
const [panelWidth, setPanelWidth] = useState(360);
|
|
19
24
|
const effectiveConfig = workflowConfig ?? viewer.execution?.config;
|
|
20
25
|
const emptyConfig = { trigger: { type: 'MANUAL', config: {} }, steps: [] };
|
|
21
26
|
const { stepMeta, triggerMeta } = useStepMetadata(effectiveConfig ?? emptyConfig);
|
|
@@ -171,7 +176,19 @@ export function ExecutionViewer({ executionId, workflowConfig, className, classN
|
|
|
171
176
|
const canRerun = viewer.status === 'completed' ||
|
|
172
177
|
viewer.status === 'failed' ||
|
|
173
178
|
viewer.status === 'cancelled';
|
|
174
|
-
|
|
179
|
+
const summary = viewer.execution?.summary ?? null;
|
|
180
|
+
const stepPanelOpen = !!selectedStepId && !!selectedStepState;
|
|
181
|
+
const summaryPanelOpen = !stepPanelOpen && showSummary && !!summary;
|
|
182
|
+
const handleToggleSummary = () => {
|
|
183
|
+
if (selectedStepId) {
|
|
184
|
+
setSelectedStepId(null);
|
|
185
|
+
setShowSummary(true);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
setShowSummary((s) => !s);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
return (_jsxs("div", { className: cn('flex h-full flex-col', classNames?.root, className), children: [_jsx(ExecutionHeader, { executionId: executionId, status: viewer.status, name: viewer.execution?.name, hasSummary: !!summary, summaryOpen: summaryPanelOpen, onToggleSummary: handleToggleSummary, className: classNames?.header, onCancel: onCancel ? () => onCancel(executionId) : undefined }), _jsxs("div", { className: "flex flex-1 overflow-hidden", children: [_jsx("div", { ref: canvasRef, className: cn('relative flex-1 overflow-auto cursor-grab select-none', classNames?.canvas), onPointerDown: handlePointerDown, onPointerMove: handlePointerMove, onPointerUp: handlePointerUp, onClick: (e) => {
|
|
175
192
|
if (e.target === e.currentTarget)
|
|
176
193
|
handleCanvasClick();
|
|
177
194
|
}, children: _jsx("div", { className: "min-h-full min-w-full p-12", style: {
|
|
@@ -180,14 +197,14 @@ export function ExecutionViewer({ executionId, workflowConfig, className, classN
|
|
|
180
197
|
}, onClick: (e) => {
|
|
181
198
|
if (e.target === e.currentTarget)
|
|
182
199
|
handleCanvasClick();
|
|
183
|
-
}, children: _jsxs("div", { className: "mx-auto flex flex-col items-center origin-top transition-transform duration-150", style: { transform: `scale(${zoom})` }, children: [_jsxs("div", { className: "relative", children: [_jsx(TriggerNode, { label: triggerInfo?.name ?? effectiveConfig.trigger.type, icon: triggerInfo?.icon, isSelected: isTriggerSelected, isConfigured: true, onClick: handleTriggerClick }), triggerCompleted && (_jsx("span", { className: "absolute -bottom-1 left-3 flex h-5 w-5 items-center justify-center rounded-full bg-emerald-500 ring-2 ring-white", children: _jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "3.5", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) }) }))] }), _jsx(Connector, {}), effectiveConfig.steps.length > 0 && (_jsxs(_Fragment, { children: [_jsx(ExecutionTree, { steps: effectiveConfig.steps, stepMeta: stepMeta, stepStates: viewer.stepStates, selectedStepId: selectedStepId, onStepClick: setSelectedStepId }), _jsx(Connector, {})] })), _jsx(TerminalNode, {})] }) }) }),
|
|
200
|
+
}, children: _jsxs("div", { className: "mx-auto flex flex-col items-center origin-top transition-transform duration-150", style: { transform: `scale(${zoom})` }, children: [_jsxs("div", { className: "relative", children: [_jsx(TriggerNode, { label: triggerInfo?.name ?? effectiveConfig.trigger.type, icon: triggerInfo?.icon, isSelected: isTriggerSelected, isConfigured: true, onClick: handleTriggerClick }), triggerCompleted && (_jsx("span", { className: "absolute -bottom-1 left-3 flex h-5 w-5 items-center justify-center rounded-full bg-emerald-500 ring-2 ring-white", children: _jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "3.5", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) }) }))] }), _jsx(Connector, {}), effectiveConfig.steps.length > 0 && (_jsxs(_Fragment, { children: [_jsx(ExecutionTree, { steps: effectiveConfig.steps, stepMeta: stepMeta, stepStates: viewer.stepStates, selectedStepId: selectedStepId, onStepClick: setSelectedStepId, groups: effectiveConfig.groups }), _jsx(Connector, {})] })), _jsx(TerminalNode, {})] }) }) }), stepPanelOpen ? (_jsx(StepDetailPanel, { stepState: selectedStepState, executionId: executionId, stepTitle: stepConfigMap.get(selectedStepId)?.title, stepDescription: stepConfigMap.get(selectedStepId)?.description, onClose: () => setSelectedStepId(null), onResumed: viewer.refetch, outputSchema: (() => {
|
|
184
201
|
const config = stepConfigMap.get(selectedStepId);
|
|
185
202
|
if (!config)
|
|
186
203
|
return undefined;
|
|
187
204
|
return stepMeta.get(config.type)?.outputSchema;
|
|
188
205
|
})(), onRerun: selectedStepId !== TRIGGER_ID && stepConfigMap.has(selectedStepId)
|
|
189
206
|
? (stepId) => setRerunStepId(stepId)
|
|
190
|
-
: undefined, canRerun: canRerun, className: classNames?.detailPanel }))] }), rerunStepId && (_jsx(RerunDialog, { executionId: executionId, fromStepId: rerunStepId, fromStepLabel: rerunStepLabel, originalInput: rerunOriginalInput, onClose: () => setRerunStepId(null), onSuccess: (newId) => {
|
|
207
|
+
: undefined, canRerun: canRerun, width: panelWidth, onWidthChange: setPanelWidth, className: classNames?.detailPanel })) : summaryPanelOpen ? (_jsx(SummaryPanel, { name: viewer.execution?.name, summary: summary, onClose: () => setShowSummary(false), width: panelWidth, onWidthChange: setPanelWidth, className: classNames?.detailPanel })) : null] }), rerunStepId && (_jsx(RerunDialog, { executionId: executionId, fromStepId: rerunStepId, fromStepLabel: rerunStepLabel, originalInput: rerunOriginalInput, onClose: () => setRerunStepId(null), onSuccess: (newId) => {
|
|
191
208
|
onRerunSuccess?.(newId);
|
|
192
209
|
} }))] }));
|
|
193
210
|
}
|