@flowdrop/flowdrop 1.3.0 → 1.5.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/README.md +68 -24
- package/dist/adapters/WorkflowAdapter.js +2 -22
- package/dist/adapters/agentspec/autoLayout.d.ts +51 -5
- package/dist/adapters/agentspec/autoLayout.js +120 -23
- package/dist/chat/commandClassifier.d.ts +19 -0
- package/dist/chat/commandClassifier.js +30 -0
- package/dist/chat/index.d.ts +27 -0
- package/dist/chat/index.js +32 -0
- package/dist/chat/responseParser.d.ts +21 -0
- package/dist/chat/responseParser.js +87 -0
- package/dist/commands/batch.d.ts +18 -0
- package/dist/commands/batch.js +56 -0
- package/dist/commands/executor.d.ts +37 -0
- package/dist/commands/executor.js +1044 -0
- package/dist/commands/index.d.ts +14 -0
- package/dist/commands/index.js +17 -0
- package/dist/commands/parser.d.ts +16 -0
- package/dist/commands/parser.js +278 -0
- package/dist/commands/positioner.d.ts +19 -0
- package/dist/commands/positioner.js +33 -0
- package/dist/commands/storeIntegration.svelte.d.ts +16 -0
- package/dist/commands/storeIntegration.svelte.js +67 -0
- package/dist/commands/types.d.ts +343 -0
- package/dist/commands/types.js +45 -0
- package/dist/components/App.svelte +431 -17
- package/dist/components/App.svelte.d.ts +10 -0
- package/dist/components/CanvasBanner.stories.svelte +6 -2
- package/dist/components/CanvasController.svelte +38 -0
- package/dist/components/CanvasController.svelte.d.ts +32 -0
- package/dist/components/ConfigMappingRow.svelte +130 -0
- package/dist/components/ConfigMappingRow.svelte.d.ts +8 -0
- package/dist/components/ConfigPanel.svelte +56 -7
- package/dist/components/ConfigPanel.svelte.d.ts +2 -0
- package/dist/components/FlowDropEdge.svelte +8 -57
- package/dist/components/Logo.svelte +14 -14
- package/dist/components/LogsSidebar.svelte +5 -5
- package/dist/components/Navbar.svelte +58 -10
- package/dist/components/Navbar.svelte.d.ts +7 -0
- package/dist/components/NodeSidebar.svelte +238 -362
- package/dist/components/NodeSwapPicker.svelte +537 -0
- package/dist/components/NodeSwapPicker.svelte.d.ts +16 -0
- package/dist/components/PortMappingRow.svelte +209 -0
- package/dist/components/PortMappingRow.svelte.d.ts +12 -0
- package/dist/components/SwapMappingEditor.svelte +550 -0
- package/dist/components/SwapMappingEditor.svelte.d.ts +12 -0
- package/dist/components/WorkflowEditor.svelte +99 -4
- package/dist/components/WorkflowEditor.svelte.d.ts +8 -0
- package/dist/components/chat/AIChatPanel.svelte +658 -0
- package/dist/components/chat/AIChatPanel.svelte.d.ts +13 -0
- package/dist/components/chat/CommandPreview.svelte +184 -0
- package/dist/components/chat/CommandPreview.svelte.d.ts +9 -0
- package/dist/components/console/CommandConsole.stories.svelte +93 -0
- package/dist/components/console/CommandConsole.stories.svelte.d.ts +27 -0
- package/dist/components/console/CommandConsole.svelte +259 -0
- package/dist/components/console/CommandConsole.svelte.d.ts +11 -0
- package/dist/components/console/ConsoleAutocomplete.svelte +139 -0
- package/dist/components/console/ConsoleAutocomplete.svelte.d.ts +21 -0
- package/dist/components/console/ConsoleInput.svelte +712 -0
- package/dist/components/console/ConsoleInput.svelte.d.ts +16 -0
- package/dist/components/console/ConsoleOutput.svelte +121 -0
- package/dist/components/console/ConsoleOutput.svelte.d.ts +11 -0
- package/dist/components/console/formatters.d.ts +26 -0
- package/dist/components/console/formatters.js +118 -0
- package/dist/components/interrupt/index.d.ts +1 -0
- package/dist/components/interrupt/index.js +1 -0
- package/dist/components/nodes/SimpleNode.stories.svelte +64 -0
- package/dist/components/nodes/SimpleNode.svelte +27 -11
- package/dist/components/nodes/SquareNode.stories.svelte +45 -0
- package/dist/components/nodes/SquareNode.svelte +27 -11
- package/dist/components/nodes/WorkflowNode.stories.svelte +63 -0
- package/dist/config/endpoints.d.ts +8 -0
- package/dist/config/endpoints.js +5 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.js +9 -0
- package/dist/editor/index.d.ts +3 -1
- package/dist/editor/index.js +4 -2
- package/dist/helpers/proximityConnect.js +8 -1
- package/dist/helpers/workflowEditorHelper.d.ts +3 -53
- package/dist/helpers/workflowEditorHelper.js +13 -228
- package/dist/playground/index.d.ts +1 -1
- package/dist/playground/index.js +1 -1
- package/dist/schemas/v1/workflow.schema.json +107 -22
- package/dist/services/chatService.d.ts +65 -0
- package/dist/services/chatService.js +131 -0
- package/dist/services/historyService.d.ts +6 -4
- package/dist/services/historyService.js +21 -6
- package/dist/skins/slate.js +16 -0
- package/dist/stores/interruptStore.svelte.js +6 -1
- package/dist/stores/playgroundStore.svelte.d.ts +1 -1
- package/dist/stores/playgroundStore.svelte.js +11 -2
- package/dist/stores/portCoordinateStore.svelte.d.ts +4 -0
- package/dist/stores/portCoordinateStore.svelte.js +20 -26
- package/dist/stores/workflowStore.svelte.d.ts +31 -2
- package/dist/stores/workflowStore.svelte.js +84 -64
- package/dist/stories/EdgeDecorator.svelte +4 -4
- package/dist/styles/base.css +48 -0
- package/dist/svelte-app.d.ts +7 -1
- package/dist/svelte-app.js +4 -1
- package/dist/types/chat.d.ts +63 -0
- package/dist/types/chat.js +9 -0
- package/dist/types/events.d.ts +28 -2
- package/dist/types/events.js +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/settings.d.ts +6 -0
- package/dist/types/settings.js +3 -0
- package/dist/utils/edgeStyling.d.ts +42 -0
- package/dist/utils/edgeStyling.js +176 -0
- package/dist/utils/nodeIds.d.ts +31 -0
- package/dist/utils/nodeIds.js +42 -0
- package/dist/utils/nodeSwap.d.ts +221 -0
- package/dist/utils/nodeSwap.js +686 -0
- package/package.json +6 -1
- package/dist/helpers/nodeLayoutHelper.d.ts +0 -14
- package/dist/helpers/nodeLayoutHelper.js +0 -19
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
WorkflowEdge,
|
|
29
29
|
} from "../types/index.js";
|
|
30
30
|
import CanvasBanner from "./CanvasBanner.svelte";
|
|
31
|
+
import CanvasController from "./CanvasController.svelte";
|
|
31
32
|
import FlowDropZone from "./FlowDropZone.svelte";
|
|
32
33
|
import EdgeRefresher from "./EdgeRefresher.svelte";
|
|
33
34
|
import { tick, untrack } from "svelte";
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
import { logger } from "../utils/logger.js";
|
|
66
67
|
import { validateWorkflowData } from "../utils/validation.js";
|
|
67
68
|
import { createEditorStateMachine } from "../stores/editorStateMachine.svelte.js";
|
|
69
|
+
import Icon from "@iconify/svelte";
|
|
68
70
|
|
|
69
71
|
interface Props {
|
|
70
72
|
nodes?: NodeMetadata[];
|
|
@@ -84,6 +86,9 @@
|
|
|
84
86
|
>;
|
|
85
87
|
// Pipeline ID for fetching node execution info from jobs
|
|
86
88
|
pipelineId?: string;
|
|
89
|
+
// Console toggle
|
|
90
|
+
consoleOpen?: boolean;
|
|
91
|
+
onToggleConsole?: () => void;
|
|
87
92
|
}
|
|
88
93
|
|
|
89
94
|
let props: Props = $props();
|
|
@@ -595,11 +600,13 @@
|
|
|
595
600
|
});
|
|
596
601
|
|
|
597
602
|
/**
|
|
598
|
-
*
|
|
603
|
+
* Cached cycle check — skips DFS during drag/connect via FSM suppressEffect guard.
|
|
604
|
+
* $derived deduplicates the boolean result so the template only re-renders on change.
|
|
599
605
|
*/
|
|
600
|
-
|
|
606
|
+
let hasCycles = $derived.by(() => {
|
|
607
|
+
if (machine.permissions.suppressEffect) return false;
|
|
601
608
|
return WorkflowOperationsHelper.checkWorkflowCycles(flowNodes, flowEdges);
|
|
602
|
-
}
|
|
609
|
+
});
|
|
603
610
|
|
|
604
611
|
/**
|
|
605
612
|
* Handle drop event and add new node to canvas
|
|
@@ -688,6 +695,9 @@
|
|
|
688
695
|
*/
|
|
689
696
|
let nodeIdToRefresh = $state<string | null>(null);
|
|
690
697
|
|
|
698
|
+
// Canvas viewport controller ref (rendered inside SvelteFlowProvider)
|
|
699
|
+
let canvasControllerRef: CanvasController | undefined = $state();
|
|
700
|
+
|
|
691
701
|
/**
|
|
692
702
|
* Update a node's data in the local editor state.
|
|
693
703
|
* Called by App.svelte AFTER it has already updated the global store via
|
|
@@ -733,6 +743,32 @@
|
|
|
733
743
|
nodeIdToRefresh = nodeId;
|
|
734
744
|
}
|
|
735
745
|
|
|
746
|
+
// Canvas viewport methods (forwarded to CanvasController inside SvelteFlowProvider)
|
|
747
|
+
|
|
748
|
+
export function canvasFitView(): void {
|
|
749
|
+
canvasControllerRef?.canvasFitView();
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
export function canvasZoomIn(): void {
|
|
753
|
+
canvasControllerRef?.canvasZoomIn();
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
export function canvasZoomOut(): void {
|
|
757
|
+
canvasControllerRef?.canvasZoomOut();
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
export function canvasZoomTo(level: number): void {
|
|
761
|
+
canvasControllerRef?.canvasZoomTo(level);
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
export function canvasPanTo(x: number, y: number): void {
|
|
765
|
+
canvasControllerRef?.canvasPanTo(x, y);
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
export function canvasResetView(): void {
|
|
769
|
+
canvasControllerRef?.canvasResetView();
|
|
770
|
+
}
|
|
771
|
+
|
|
736
772
|
/**
|
|
737
773
|
* Callback when edge refresh is complete
|
|
738
774
|
*/
|
|
@@ -785,6 +821,9 @@
|
|
|
785
821
|
<svelte:window onkeydown={handleKeydown} />
|
|
786
822
|
|
|
787
823
|
<SvelteFlowProvider>
|
|
824
|
+
<!-- Canvas viewport controller - provides fitView, zoom, pan methods -->
|
|
825
|
+
<CanvasController bind:this={canvasControllerRef} />
|
|
826
|
+
|
|
788
827
|
<!-- EdgeRefresher component - handles updateNodeInternals calls -->
|
|
789
828
|
<EdgeRefresher
|
|
790
829
|
{nodeIdToRefresh}
|
|
@@ -838,6 +877,18 @@
|
|
|
838
877
|
fitView={getEditorSettings().fitViewOnLoad}
|
|
839
878
|
>
|
|
840
879
|
<Controls />
|
|
880
|
+
{#if !props.readOnly && !props.lockWorkflow && props.onToggleConsole}
|
|
881
|
+
<button
|
|
882
|
+
class="flowdrop-console-toggle"
|
|
883
|
+
class:flowdrop-console-toggle--active={props.consoleOpen}
|
|
884
|
+
onclick={props.onToggleConsole}
|
|
885
|
+
aria-label="Command Console (`)"
|
|
886
|
+
title="Command Console (`)"
|
|
887
|
+
type="button"
|
|
888
|
+
>
|
|
889
|
+
<Icon icon="heroicons:command-line" width="18" height="18" />
|
|
890
|
+
</button>
|
|
891
|
+
{/if}
|
|
841
892
|
<!-- Always render Background for consistent bg color in dark/light mode -->
|
|
842
893
|
<Background
|
|
843
894
|
gap={getEditorSettings().gridSize}
|
|
@@ -894,7 +945,7 @@
|
|
|
894
945
|
>{flowEdges.length} connections</span
|
|
895
946
|
>
|
|
896
947
|
|
|
897
|
-
{#if
|
|
948
|
+
{#if hasCycles}
|
|
898
949
|
<span class="flowdrop-text--xs flowdrop-text--gray">•</span>
|
|
899
950
|
<span
|
|
900
951
|
class="flowdrop-text--xs flowdrop-font--medium flowdrop-text--error"
|
|
@@ -964,6 +1015,50 @@
|
|
|
964
1015
|
justify-content: space-between;
|
|
965
1016
|
}
|
|
966
1017
|
|
|
1018
|
+
.flowdrop-console-toggle {
|
|
1019
|
+
position: absolute;
|
|
1020
|
+
bottom: 140px;
|
|
1021
|
+
left: 12px;
|
|
1022
|
+
z-index: 5;
|
|
1023
|
+
display: flex;
|
|
1024
|
+
align-items: center;
|
|
1025
|
+
justify-content: center;
|
|
1026
|
+
width: 2rem;
|
|
1027
|
+
height: 2rem;
|
|
1028
|
+
border: 1px solid var(--fd-border);
|
|
1029
|
+
border-radius: var(--fd-radius-md);
|
|
1030
|
+
background-color: var(--fd-background);
|
|
1031
|
+
color: var(--fd-muted-foreground);
|
|
1032
|
+
cursor: pointer;
|
|
1033
|
+
box-shadow: var(--fd-shadow-sm);
|
|
1034
|
+
transition:
|
|
1035
|
+
color var(--fd-transition-fast),
|
|
1036
|
+
background-color var(--fd-transition-fast),
|
|
1037
|
+
box-shadow var(--fd-transition-fast);
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
.flowdrop-console-toggle:hover {
|
|
1041
|
+
color: var(--fd-foreground);
|
|
1042
|
+
background-color: var(--fd-subtle);
|
|
1043
|
+
box-shadow: var(--fd-shadow-md);
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
.flowdrop-console-toggle:focus {
|
|
1047
|
+
outline: none;
|
|
1048
|
+
box-shadow: 0 0 0 2px var(--fd-ring);
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
.flowdrop-console-toggle--active {
|
|
1052
|
+
color: var(--fd-primary);
|
|
1053
|
+
background-color: var(--fd-primary-muted);
|
|
1054
|
+
border-color: var(--fd-primary);
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
.flowdrop-console-toggle--active:hover {
|
|
1058
|
+
color: var(--fd-primary);
|
|
1059
|
+
background-color: var(--fd-primary-muted);
|
|
1060
|
+
}
|
|
1061
|
+
|
|
967
1062
|
:global(.flowdrop-workflow-editor .svelte-flow__node:hover) {
|
|
968
1063
|
transform: translateY(-2px);
|
|
969
1064
|
}
|
|
@@ -14,10 +14,18 @@ interface Props {
|
|
|
14
14
|
readOnly?: boolean;
|
|
15
15
|
nodeStatuses?: Record<string, "pending" | "running" | "completed" | "error">;
|
|
16
16
|
pipelineId?: string;
|
|
17
|
+
consoleOpen?: boolean;
|
|
18
|
+
onToggleConsole?: () => void;
|
|
17
19
|
}
|
|
18
20
|
declare const WorkflowEditor: import("svelte").Component<Props, {
|
|
19
21
|
updateNodeData: (nodeId: string, dataUpdates: Partial<WorkflowNodeType["data"]>) => void;
|
|
20
22
|
refreshEdgePositions: (nodeId: string) => Promise<void>;
|
|
23
|
+
canvasFitView: () => void;
|
|
24
|
+
canvasZoomIn: () => void;
|
|
25
|
+
canvasZoomOut: () => void;
|
|
26
|
+
canvasZoomTo: (level: number) => void;
|
|
27
|
+
canvasPanTo: (x: number, y: number) => void;
|
|
28
|
+
canvasResetView: () => void;
|
|
21
29
|
}, "">;
|
|
22
30
|
type WorkflowEditor = ReturnType<typeof WorkflowEditor>;
|
|
23
31
|
export default WorkflowEditor;
|