windmill-components 1.379.4 → 1.382.3
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/package/base.d.ts +1 -1
- package/package/base.js +1 -1
- package/package/components/ArgInput.svelte +33 -3
- package/package/components/DisplayResult.svelte +17 -5
- package/package/components/EditorBar.svelte +48 -38
- package/package/components/EditorBar.svelte.d.ts +2 -0
- package/package/components/ErrorOrRecoveryHandler.svelte +3 -2
- package/package/components/FlowBuilder.svelte +18 -12
- package/package/components/FlowBuilder.svelte.d.ts +3 -2
- package/package/components/FlowGraphViewer.svelte +6 -5
- package/package/components/FlowJobResult.svelte +4 -2
- package/package/components/FlowJobResult.svelte.d.ts +2 -0
- package/package/components/FlowStatusViewer.svelte +7 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +29 -11
- package/package/components/FlowViewer.svelte +3 -1
- package/package/components/FlowViewer.svelte.d.ts +1 -0
- package/package/components/HighlightCode.svelte +2 -2
- package/package/components/ModulePreviewForm.svelte +1 -1
- package/package/components/ObjectResourceInput.svelte +7 -2
- package/package/components/ObjectResourceInput.svelte.d.ts +2 -0
- package/package/components/ResourcePicker.svelte +60 -48
- package/package/components/ScriptBuilder.svelte +42 -36
- package/package/components/ScriptBuilder.svelte.d.ts +2 -0
- package/package/components/ScriptEditor.svelte +3 -1
- package/package/components/ScriptEditor.svelte.d.ts +2 -0
- package/package/components/ScriptVersionHistory.svelte +63 -7
- package/package/components/apps/components/display/AppText.svelte +8 -3
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +3 -2
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +22 -5
- package/package/components/apps/components/display/table/AppAggridTable.svelte +14 -5
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +23 -8
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +5 -3
- package/package/components/apps/components/display/table/utils.js +8 -7
- package/package/components/apps/components/helpers/RunnableComponent.svelte +13 -1
- package/package/components/apps/components/helpers/eval.js +31 -25
- package/package/components/apps/components/inputs/AppSelect.svelte +45 -29
- package/package/components/apps/editor/AppEditorHeader.svelte +1 -0
- package/package/components/apps/editor/AppReportsDrawer.svelte +4 -3
- package/package/components/apps/editor/component/components.d.ts +7 -1
- package/package/components/apps/editor/component/components.js +6 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte +55 -45
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphHeader.svelte.d.ts +7 -9
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +66 -59
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +9 -11
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +213 -254
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/decisionTree/nodeHelpers.js +2 -6
- package/package/components/custom_ui.d.ts +35 -1
- package/package/components/details/DetailPageDetailPanel.svelte +9 -1
- package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
- package/package/components/details/DetailPageLayout.svelte +2 -0
- package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
- package/package/components/details/EmailTriggerPanel.svelte +128 -0
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +20 -0
- package/package/components/details/WebhooksPanel.svelte +10 -71
- package/package/components/flows/FlowHistory.svelte +1 -0
- package/package/components/flows/content/FlowInputs.svelte +0 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +8 -2
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +193 -66
- package/package/components/flows/content/FlowModuleHeader.svelte +1 -1
- package/package/components/flows/content/FlowModuleScript.svelte +33 -3
- package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +15 -0
- package/package/components/flows/content/FlowSettings.svelte +26 -15
- package/package/components/flows/flowExplorer.js +3 -0
- package/package/components/flows/flowInfers.js +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +39 -44
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -2
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +4 -3
- package/package/components/flows/map/InsertModuleButton.svelte +16 -9
- package/package/components/flows/map/MapItem.svelte +4 -98
- package/package/components/flows/map/MapItem.svelte.d.ts +0 -5
- package/package/components/flows/map/VirtualItem.svelte +6 -159
- package/package/components/flows/map/VirtualItem.svelte.d.ts +0 -15
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
- package/package/components/flows/types.d.ts +2 -0
- package/package/components/graph/FlowGraphV2.svelte +256 -0
- package/package/components/graph/{FlowGraph.svelte.d.ts → FlowGraphV2.svelte.d.ts} +8 -8
- package/package/components/graph/graphBuilder.d.ts +15 -0
- package/package/components/graph/graphBuilder.js +337 -0
- package/package/components/graph/index.d.ts +0 -1
- package/package/components/graph/index.js +0 -1
- package/package/components/graph/model.d.ts +4 -8
- package/package/components/graph/renderers/edges/BaseEdge.svelte +109 -0
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +35 -0
- package/package/components/graph/renderers/edges/DataflowEdge.svelte +37 -0
- package/package/components/graph/renderers/edges/DataflowEdge.svelte.d.ts +29 -0
- package/package/components/graph/renderers/edges/EmptyEdge.svelte +22 -0
- package/package/components/graph/renderers/edges/EmptyEdge.svelte.d.ts +23 -0
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +44 -0
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte.d.ts +29 -0
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +41 -0
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte.d.ts +29 -0
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +19 -0
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte.d.ts +24 -0
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +20 -0
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte.d.ts +25 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte +74 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +23 -0
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +71 -0
- package/package/components/graph/renderers/nodes/ModuleNode.svelte.d.ts +41 -0
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte +20 -0
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +27 -0
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte +21 -0
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte.d.ts +22 -0
- package/package/components/graph/renderers/nodes/ResultNode.svelte +24 -0
- package/package/components/graph/renderers/nodes/ResultNode.svelte.d.ts +22 -0
- package/package/components/graph/renderers/nodes/branchAllEndNode.svelte +19 -0
- package/package/components/graph/renderers/nodes/branchAllEndNode.svelte.d.ts +26 -0
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +19 -0
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte.d.ts +24 -0
- package/package/components/graph/renderers/utils.d.ts +8 -0
- package/package/components/graph/renderers/utils.js +26 -0
- package/package/components/graph/util.d.ts +1 -2
- package/package/components/graph/util.js +2 -8
- package/package/components/propertyPicker/PropPickerResult.svelte +6 -1
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte +15 -17
- package/package/components/sidebar/changelogs.js +5 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +3 -0
- package/package/gen/schemas.gen.js +3 -0
- package/package/gen/services.gen.d.ts +22 -3
- package/package/gen/services.gen.js +38 -2
- package/package/gen/types.gen.d.ts +69 -6
- package/package/hub.d.ts +11 -0
- package/package/hub.js +2 -0
- package/package/hubPaths.json +9 -0
- package/package/init_scripts/python_failure_module.d.ts +1 -1
- package/package/init_scripts/python_failure_module.js +4 -3
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +11 -9
- package/package.json +2 -1
- package/package/components/graph/FlowGraph.svelte +0 -614
- package/package/components/graph/svelvet/LICENSE +0 -21
- package/package/components/graph/svelvet/container/README.md +0 -7
- package/package/components/graph/svelvet/container/controllers/middleware.d.ts +0 -11
- package/package/components/graph/svelvet/container/controllers/middleware.js +0 -87
- package/package/components/graph/svelvet/container/models/index.d.ts +0 -0
- package/package/components/graph/svelvet/container/models/index.js +0 -1
- package/package/components/graph/svelvet/container/views/GraphView.svelte +0 -262
- package/package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +0 -26
- package/package/components/graph/svelvet/container/views/Svelvet.svelte +0 -121
- package/package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +0 -36
- package/package/components/graph/svelvet/customCss/controllers/getCss.d.ts +0 -2
- package/package/components/graph/svelvet/customCss/controllers/getCss.js +0 -46
- package/package/components/graph/svelvet/d3/controllers/d3.d.ts +0 -5
- package/package/components/graph/svelvet/d3/controllers/d3.js +0 -59
- package/package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +0 -4
- package/package/components/graph/svelvet/edges/controllers/anchorCbDev.js +0 -92
- package/package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +0 -57
- package/package/components/graph/svelvet/edges/controllers/anchorCbUser.js +0 -73
- package/package/components/graph/svelvet/edges/controllers/util.d.ts +0 -37
- package/package/components/graph/svelvet/edges/controllers/util.js +0 -71
- package/package/components/graph/svelvet/edges/models/Anchor.d.ts +0 -48
- package/package/components/graph/svelvet/edges/models/Anchor.js +0 -122
- package/package/components/graph/svelvet/edges/models/Edge.d.ts +0 -48
- package/package/components/graph/svelvet/edges/models/Edge.js +0 -109
- package/package/components/graph/svelvet/edges/types/types.d.ts +0 -18
- package/package/components/graph/svelvet/edges/types/types.js +0 -1
- package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +0 -104
- package/package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +0 -18
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +0 -42
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +0 -17
- package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +0 -151
- package/package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +0 -17
- package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +0 -157
- package/package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +0 -60
- package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +0 -8
- package/package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +0 -25
- package/package/components/graph/svelvet/edges/views/Edges/types.d.ts +0 -52
- package/package/components/graph/svelvet/edges/views/Edges/types.js +0 -1
- package/package/components/graph/svelvet/edges/views/Edges/utils.d.ts +0 -33
- package/package/components/graph/svelvet/edges/views/Edges/utils.js +0 -31
- package/package/components/graph/svelvet/nodes/controllers/util.d.ts +0 -9
- package/package/components/graph/svelvet/nodes/controllers/util.js +0 -13
- package/package/components/graph/svelvet/nodes/models/Node.d.ts +0 -74
- package/package/components/graph/svelvet/nodes/models/Node.js +0 -156
- package/package/components/graph/svelvet/nodes/views/Node.svelte +0 -84
- package/package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +0 -21
- package/package/components/graph/svelvet/store/controllers/storeApi.d.ts +0 -25
- package/package/components/graph/svelvet/store/controllers/storeApi.js +0 -91
- package/package/components/graph/svelvet/store/controllers/userApi.d.ts +0 -3
- package/package/components/graph/svelvet/store/controllers/userApi.js +0 -18
- package/package/components/graph/svelvet/store/controllers/util.d.ts +0 -24
- package/package/components/graph/svelvet/store/controllers/util.js +0 -148
- package/package/components/graph/svelvet/store/models/store.d.ts +0 -13
- package/package/components/graph/svelvet/store/models/store.js +0 -12
- package/package/components/graph/svelvet/store/types/types.d.ts +0 -127
- package/package/components/graph/svelvet/store/types/types.js +0 -1
- package/package/components/graph/svelvet/types/README.md +0 -3
- package/package/components/graph/svelvet/types/index.d.ts +0 -2
- package/package/components/graph/svelvet/types/index.js +0 -1
- package/package/components/graph/svelvet/types/types.d.ts +0 -50
- package/package/components/graph/svelvet/types/types.js +0 -18
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
<script>import
|
|
1
|
+
<script>import DiffEditor from '../../DiffEditor.svelte';
|
|
2
|
+
import HighlightCode from '../../HighlightCode.svelte';
|
|
2
3
|
import TimeAgo from '../../TimeAgo.svelte';
|
|
3
4
|
import { ScriptService } from '../../../gen';
|
|
4
|
-
import { getScriptByPath } from '../../../scripts';
|
|
5
|
+
import { getScriptByPath, scriptLangToEditorLang } from '../../../scripts';
|
|
5
6
|
import { workspaceStore } from '../../../stores';
|
|
6
7
|
export let path;
|
|
7
8
|
export let hash = undefined;
|
|
9
|
+
export let previousHash = undefined;
|
|
8
10
|
export let showDate = false;
|
|
9
11
|
export let showAllCode = true;
|
|
10
12
|
let code;
|
|
13
|
+
let previousCode;
|
|
11
14
|
let language;
|
|
12
15
|
let lock = undefined;
|
|
13
16
|
let date = undefined;
|
|
@@ -28,10 +31,24 @@ async function loadCode(path, hash) {
|
|
|
28
31
|
console.error(e);
|
|
29
32
|
}
|
|
30
33
|
}
|
|
34
|
+
async function loadPreviousCode(previousHash) {
|
|
35
|
+
try {
|
|
36
|
+
const previousScript = await ScriptService.getScriptByHash({
|
|
37
|
+
workspace: $workspaceStore,
|
|
38
|
+
hash: previousHash
|
|
39
|
+
});
|
|
40
|
+
previousCode = previousScript.content;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.error(e);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
31
46
|
$: path && loadCode(path, hash);
|
|
47
|
+
$: path && previousHash && loadPreviousCode(previousHash);
|
|
32
48
|
function toggleShowAll() {
|
|
33
49
|
showAllCode = !showAllCode;
|
|
34
50
|
}
|
|
51
|
+
export let showDiff = false;
|
|
35
52
|
</script>
|
|
36
53
|
|
|
37
54
|
<div class="flex flex-col flex-1 h-full overflow-auto p-2">
|
|
@@ -41,7 +58,20 @@ function toggleShowAll() {
|
|
|
41
58
|
{#if notFound}
|
|
42
59
|
<div class="text-red-400">script not found at {path} in workspace {$workspaceStore}</div>
|
|
43
60
|
{:else if showAllCode}
|
|
44
|
-
|
|
61
|
+
{#if showDiff}
|
|
62
|
+
{#key previousCode + code}
|
|
63
|
+
<DiffEditor
|
|
64
|
+
class="h-screen"
|
|
65
|
+
readOnly
|
|
66
|
+
automaticLayout
|
|
67
|
+
defaultLang={scriptLangToEditorLang(language)}
|
|
68
|
+
defaultOriginal={previousCode}
|
|
69
|
+
defaultModified={code}
|
|
70
|
+
/>
|
|
71
|
+
{/key}
|
|
72
|
+
{:else}
|
|
73
|
+
<HighlightCode {language} {code} />
|
|
74
|
+
{/if}
|
|
45
75
|
{:else}
|
|
46
76
|
<div class="code-container h-full">
|
|
47
77
|
<HighlightCode {language} code={code?.split('\n').slice(0, 10).join('\n')} />
|
|
@@ -3,8 +3,10 @@ declare const __propDef: {
|
|
|
3
3
|
props: {
|
|
4
4
|
path: string;
|
|
5
5
|
hash?: string | undefined;
|
|
6
|
+
previousHash?: string | undefined;
|
|
6
7
|
showDate?: boolean | undefined;
|
|
7
8
|
showAllCode?: boolean | undefined;
|
|
9
|
+
showDiff?: boolean | undefined;
|
|
8
10
|
};
|
|
9
11
|
events: {
|
|
10
12
|
[evt: string]: CustomEvent<any>;
|
|
@@ -106,6 +106,21 @@ let jsonView = false;
|
|
|
106
106
|
<SecondsInput disabled />
|
|
107
107
|
{/if}
|
|
108
108
|
</Label>
|
|
109
|
+
|
|
110
|
+
<Toggle
|
|
111
|
+
options={{
|
|
112
|
+
right: 'Continue on disapproval/timeout',
|
|
113
|
+
rightTooltip:
|
|
114
|
+
'Instead of failing the flow and bubbling up the error, continue to the next step which would allow to put a branchone right after to handle both cases separately. If any disapproval/timeout event is received, the resume payload will be similar to every error result in Winmdill, an object containing an `error` field which you can use to distinguish between approvals and disapproval/timeouts'
|
|
115
|
+
}}
|
|
116
|
+
checked={Boolean(flowModule.suspend?.continue_on_disapprove_timeout)}
|
|
117
|
+
disabled={!Boolean(flowModule.suspend)}
|
|
118
|
+
on:change={(e) => {
|
|
119
|
+
if (flowModule.suspend) {
|
|
120
|
+
flowModule.suspend.continue_on_disapprove_timeout = e.detail
|
|
121
|
+
}
|
|
122
|
+
}}
|
|
123
|
+
/>
|
|
109
124
|
</div>
|
|
110
125
|
{:else if suspendTabSelected === 'permissions'}
|
|
111
126
|
<div class="flex flex-col mt-4 gap-4">
|
|
@@ -23,7 +23,7 @@ import ErrorHandlerToggleButton from '../../details/ErrorHandlerToggleButton.sve
|
|
|
23
23
|
import WorkerTagPicker from '../../WorkerTagPicker.svelte';
|
|
24
24
|
import MetadataGen from '../../copilot/MetadataGen.svelte';
|
|
25
25
|
export let noEditor;
|
|
26
|
-
const { selectedId, flowStore, initialPath, previewArgs, pathStore, schedule } = getContext('FlowEditorContext');
|
|
26
|
+
const { selectedId, flowStore, initialPath, previewArgs, pathStore, schedule, customUi } = getContext('FlowEditorContext');
|
|
27
27
|
let hostname = BROWSER ? window.location.protocol + '//' + window.location.host : 'SSR';
|
|
28
28
|
$: url = `${hostname}/api/w/${$workspaceStore}/jobs/run/f/${$pathStore}`;
|
|
29
29
|
$: syncedUrl = `${hostname}/api/w/${$workspaceStore}/jobs/run_wait_result/f/${$pathStore}`;
|
|
@@ -42,22 +42,33 @@ let dirtyPath = false;
|
|
|
42
42
|
<div class="h-full flex-1">
|
|
43
43
|
<Tabs bind:selected={$selectedId}>
|
|
44
44
|
<Tab value="settings-metadata">Metadata</Tab>
|
|
45
|
-
{#if !noEditor}
|
|
45
|
+
{#if !noEditor && customUi?.settingsTabs?.schedule != false}
|
|
46
46
|
<Tab value="settings-schedule" active={$schedule.enabled}>Schedule</Tab>
|
|
47
47
|
{/if}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
{#if customUi?.settingsTabs?.sharedDiretory != false}
|
|
49
|
+
<Tab value="settings-same-worker" active={$flowStore.value.same_worker}>
|
|
50
|
+
Shared Directory
|
|
51
|
+
</Tab>
|
|
52
|
+
{/if}
|
|
53
|
+
{#if customUi?.settingsTabs?.earlyStop != false}
|
|
54
|
+
<Tab value="settings-early-stop" active={Boolean($flowStore.value.skip_expr)}>
|
|
55
|
+
Early Stop
|
|
56
|
+
</Tab>
|
|
57
|
+
{/if}
|
|
58
|
+
{#if customUi?.settingsTabs?.earlyReturn != false}
|
|
59
|
+
<Tab value="settings-early-return" active={Boolean($flowStore.value.early_return)}>
|
|
60
|
+
Early Return
|
|
61
|
+
</Tab>
|
|
62
|
+
{/if}
|
|
63
|
+
{#if customUi?.settingsTabs?.workerGroup != false}
|
|
64
|
+
<Tab value="settings-worker-group">Worker Group</Tab>
|
|
65
|
+
{/if}
|
|
66
|
+
{#if customUi?.settingsTabs?.concurrency != false}
|
|
67
|
+
<Tab value="settings-concurrency">Concurrency</Tab>
|
|
68
|
+
{/if}
|
|
69
|
+
{#if customUi?.settingsTabs?.cache != false}
|
|
70
|
+
<Tab value="settings-cache" active={Boolean($flowStore.value.cache_ttl)}>Cache</Tab>
|
|
71
|
+
{/if}
|
|
61
72
|
<svelte:fragment slot="content">
|
|
62
73
|
<TabContent value="settings-metadata" class="p-4 h-full overflow-auto">
|
|
63
74
|
<Section label="Metadata">
|
|
@@ -26,7 +26,7 @@ export async function loadSchemaFromModule(module) {
|
|
|
26
26
|
if (JSON.stringify(keys.sort()) !== JSON.stringify(Object.keys(input_transforms).sort())) {
|
|
27
27
|
input_transforms = keys.reduce((accu, key) => {
|
|
28
28
|
let nv = input_transforms[key] ??
|
|
29
|
-
(module.id == 'failure' && ['message', 'name'].includes(key)
|
|
29
|
+
(module.id == 'failure' && ['message', 'name', 'step_id'].includes(key)
|
|
30
30
|
? { type: 'javascript', expr: `error.${key}` }
|
|
31
31
|
: {
|
|
32
32
|
type: 'static',
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
<script>import
|
|
1
|
+
<script>import Menu from '../../common/menu/MenuV2.svelte';
|
|
2
2
|
import { createEventDispatcher } from 'svelte';
|
|
3
3
|
import { ListFilter } from 'lucide-svelte';
|
|
4
|
+
import { MenuItem } from '@rgossiaux/svelte-headlessui';
|
|
4
5
|
const dispatch = createEventDispatcher();
|
|
5
6
|
export let open = undefined;
|
|
6
7
|
export let index;
|
|
@@ -20,50 +21,44 @@ function onKeydown(event) {
|
|
|
20
21
|
}
|
|
21
22
|
</script>
|
|
22
23
|
|
|
23
|
-
<Menu
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
>
|
|
31
|
-
<button
|
|
32
|
-
title="Pick an iteration"
|
|
33
|
-
slot="trigger"
|
|
34
|
-
id={`flow-editor-iteration picker-${index}`}
|
|
35
|
-
type="button"
|
|
36
|
-
class=" text-xs bg-surface border-[1px] border-gray-300 dark:border-gray-500 focus:outline-none
|
|
24
|
+
<Menu>
|
|
25
|
+
<div slot="trigger">
|
|
26
|
+
<button
|
|
27
|
+
title="Pick an iteration"
|
|
28
|
+
id={`flow-editor-iteration picker-${index}`}
|
|
29
|
+
type="button"
|
|
30
|
+
class=" text-xs bg-surface border-[1px] border-gray-300 dark:border-gray-500 focus:outline-none
|
|
37
31
|
hover:bg-surface-hover focus:ring-4 focus:ring-surface-selected font-medium rounded-sm w-[40px] gap-1 h-[20px]
|
|
38
32
|
flex items-center justify-center {flowJobsSuccess?.[selected] == false
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<div id="flow-editor-insert-module">
|
|
46
|
-
<div class="font-mono divide-y text-xs w-full text-secondary max-h-[200px] overflow-auto">
|
|
47
|
-
<input autofocus type="number" bind:value={filter} on:keydown={onKeydown} />
|
|
48
|
-
{#each flowJobs ?? [] as id, idx (id)}
|
|
49
|
-
{#if filter == undefined || (idx + 1).toString().includes(filter.toString())}
|
|
50
|
-
<button
|
|
51
|
-
class="w-full text-left py-1 pl-2 min-w-20 hover:bg-surface-hover whitespace-nowrap flex flex-row gap-2 items-center {flowJobsSuccess?.[
|
|
52
|
-
idx
|
|
53
|
-
] == false
|
|
54
|
-
? 'text-red-400'
|
|
55
|
-
: ''}"
|
|
56
|
-
on:pointerdown={() => {
|
|
57
|
-
close()
|
|
58
|
-
dispatch('selectedIteration', { index: idx, id })
|
|
59
|
-
}}
|
|
60
|
-
role="menuitem"
|
|
61
|
-
tabindex="-1"
|
|
62
|
-
>
|
|
63
|
-
#{idx + 1}
|
|
64
|
-
</button>
|
|
65
|
-
{/if}
|
|
66
|
-
{/each}
|
|
67
|
-
</div>
|
|
33
|
+
? 'text-red-400'
|
|
34
|
+
: 'text-secondary'}"
|
|
35
|
+
>
|
|
36
|
+
#{selected == -1 ? '?' : selected + 1}
|
|
37
|
+
<ListFilter size={15} />
|
|
38
|
+
</button>
|
|
68
39
|
</div>
|
|
40
|
+
<MenuItem disabled>
|
|
41
|
+
<input type="number" bind:value={filter} on:keydown={onKeydown} />
|
|
42
|
+
</MenuItem>
|
|
43
|
+
{#each flowJobs ?? [] as id, idx (id)}
|
|
44
|
+
{#if filter == undefined || (idx + 1).toString().includes(filter.toString())}
|
|
45
|
+
<MenuItem>
|
|
46
|
+
<button
|
|
47
|
+
class="text-primary text-xs w-full text-left py-1 pl-2 hover:bg-surface-hover whitespace-nowrap flex flex-row gap-2 items-center {flowJobsSuccess?.[
|
|
48
|
+
idx
|
|
49
|
+
] == false
|
|
50
|
+
? 'text-red-400'
|
|
51
|
+
: ''}"
|
|
52
|
+
on:pointerdown={() => {
|
|
53
|
+
//close()
|
|
54
|
+
dispatch('selectedIteration', { index: idx, id })
|
|
55
|
+
}}
|
|
56
|
+
role="menuitem"
|
|
57
|
+
tabindex="-1"
|
|
58
|
+
>
|
|
59
|
+
#{idx + 1}
|
|
60
|
+
</button>
|
|
61
|
+
</MenuItem>
|
|
62
|
+
{/if}
|
|
63
|
+
{/each}
|
|
69
64
|
</Menu>
|
|
@@ -126,9 +126,8 @@ const { currentStepStore: copilotCurrentStepStore } = getContext('FlowCopilotCon
|
|
|
126
126
|
>
|
|
127
127
|
{#if $$slots.icon}
|
|
128
128
|
<slot name="icon" />
|
|
129
|
-
<span class="mr-2" />
|
|
130
129
|
{/if}
|
|
131
|
-
<div class="
|
|
130
|
+
<div class="truncate" class:font-bold={bold}>{label}</div>
|
|
132
131
|
<div class="flex items-center space-x-2">
|
|
133
132
|
{#if id}
|
|
134
133
|
<Badge color="indigo">{id}</Badge>
|
|
@@ -4,7 +4,6 @@ import { emptyFlowModuleState, initFlowStepWarnings } from '../utils';
|
|
|
4
4
|
import FlowSettingsItem from './FlowSettingsItem.svelte';
|
|
5
5
|
import FlowConstantsItem from './FlowConstantsItem.svelte';
|
|
6
6
|
import { dfs } from '../dfs';
|
|
7
|
-
import { FlowGraph } from '../../graph';
|
|
8
7
|
import FlowErrorHandlerItem from './FlowErrorHandlerItem.svelte';
|
|
9
8
|
import { push } from '../../../history';
|
|
10
9
|
import ConfirmationModal from '../../common/confirmationModal/ConfirmationModal.svelte';
|
|
@@ -15,6 +14,7 @@ import { copilotInfo, tutorialsToDo } from '../../../stores';
|
|
|
15
14
|
import FlowTutorials from '../../FlowTutorials.svelte';
|
|
16
15
|
import { ignoredTutorials } from '../../tutorials/ignoredTutorials';
|
|
17
16
|
import { tutorialInProgress } from '../../../tutorialUtils';
|
|
17
|
+
import FlowGraphV2 from '../../graph/FlowGraphV2.svelte';
|
|
18
18
|
export let modules;
|
|
19
19
|
export let sidebarSize = undefined;
|
|
20
20
|
export let disableStaticInputs = false;
|
|
@@ -203,13 +203,12 @@ async function updateFlowInputsStore() {
|
|
|
203
203
|
</div>
|
|
204
204
|
|
|
205
205
|
<div class="z-10 flex-auto grow" bind:clientHeight={minHeight}>
|
|
206
|
-
<
|
|
206
|
+
<FlowGraphV2
|
|
207
207
|
{disableAi}
|
|
208
208
|
insertable
|
|
209
209
|
scroll
|
|
210
210
|
{minHeight}
|
|
211
211
|
moving={$moving?.module.id}
|
|
212
|
-
rebuildOnChange={$flowStore}
|
|
213
212
|
maxHeight={minHeight}
|
|
214
213
|
modules={$flowStore.value?.modules}
|
|
215
214
|
{selectedId}
|
|
@@ -219,7 +218,9 @@ async function updateFlowInputsStore() {
|
|
|
219
218
|
dependents = getDependentComponents(e.id, $flowStore)
|
|
220
219
|
const cb = () => {
|
|
221
220
|
push(history, $flowStore)
|
|
221
|
+
|
|
222
222
|
selectNextId(e.id)
|
|
223
|
+
|
|
223
224
|
removeAtId($flowStore.value.modules, e.id)
|
|
224
225
|
|
|
225
226
|
if ($flowInputsStore) {
|
|
@@ -3,6 +3,7 @@ import { createEventDispatcher, getContext } from 'svelte';
|
|
|
3
3
|
import { CheckCircle2, Code, Cross, GitBranch, Repeat, Square, Zap } from 'lucide-svelte';
|
|
4
4
|
import StepGen from '../../copilot/StepGen.svelte';
|
|
5
5
|
import BarsStaggered from '../../icons/BarsStaggered.svelte';
|
|
6
|
+
import { twMerge } from 'tailwind-merge';
|
|
6
7
|
const dispatch = createEventDispatcher();
|
|
7
8
|
export let trigger = false;
|
|
8
9
|
export let stop = false;
|
|
@@ -23,15 +24,21 @@ let customUi = getContext('customUi');
|
|
|
23
24
|
placement="bottom-center"
|
|
24
25
|
let:close
|
|
25
26
|
>
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
<svelte:fragment slot="trigger">
|
|
28
|
+
<button
|
|
29
|
+
title="Add step"
|
|
30
|
+
id={`flow-editor-add-step-${index}`}
|
|
31
|
+
type="button"
|
|
32
|
+
class={twMerge(
|
|
33
|
+
'w-6 h-6 flex items-center justify-center',
|
|
34
|
+
'border border-gray-300 dark:border-gray-500',
|
|
35
|
+
'text-primary text-sm',
|
|
36
|
+
'bg-surface focus:outline-none hover:bg-surface-hover focus:ring-4 focus:ring-surface-selected rounded-full '
|
|
37
|
+
)}
|
|
38
|
+
>
|
|
39
|
+
<Cross size={14} />
|
|
40
|
+
</button>
|
|
41
|
+
</svelte:fragment>
|
|
35
42
|
<div id="flow-editor-insert-module">
|
|
36
43
|
<StepGen on:insert {index} bind:funcDesc bind:open {close} {modules} {disableAi} />
|
|
37
44
|
|
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
<script>import { Button } from '../../common';
|
|
2
2
|
import LanguageIcon from '../../common/languageIcons/LanguageIcon.svelte';
|
|
3
3
|
import IconedResourceType from '../../IconedResourceType.svelte';
|
|
4
|
-
import { Building,
|
|
4
|
+
import { Building, Repeat, Square, ArrowDown, GitBranch } from 'lucide-svelte';
|
|
5
5
|
import { createEventDispatcher, getContext } from 'svelte';
|
|
6
6
|
import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
|
|
7
|
-
import InsertModuleButton from './InsertModuleButton.svelte';
|
|
8
7
|
import { prettyLanguage } from '../../../common';
|
|
9
8
|
import { msToSec } from '../../../utils';
|
|
10
9
|
import BarsStaggered from '../../icons/BarsStaggered.svelte';
|
|
11
10
|
import FlowJobsMenu from './FlowJobsMenu.svelte';
|
|
12
11
|
export let mod;
|
|
13
|
-
export let trigger;
|
|
14
12
|
export let insertable;
|
|
15
|
-
export let insertableEnd = false;
|
|
16
13
|
export let annotation = undefined;
|
|
17
|
-
export let branchable = false;
|
|
18
14
|
export let bgColor = '';
|
|
19
15
|
export let modules;
|
|
20
16
|
export let moving = undefined;
|
|
21
17
|
export let duration_ms = undefined;
|
|
22
|
-
export let disableAi = false;
|
|
23
|
-
export let wrapperId = undefined;
|
|
24
18
|
export let retries = undefined;
|
|
25
19
|
export let flowJobs;
|
|
26
20
|
$: idx = modules.findIndex((m) => m.id === mod.id);
|
|
@@ -29,7 +23,7 @@ const dispatch = createEventDispatcher();
|
|
|
29
23
|
$: itemProps = {
|
|
30
24
|
selected: $selectedId === mod.id,
|
|
31
25
|
retry: mod.retry?.constant != undefined || mod.retry?.exponential != undefined,
|
|
32
|
-
earlyStop: mod.stop_after_if != undefined,
|
|
26
|
+
earlyStop: mod.stop_after_if != undefined || mod.stop_after_all_iters_if != undefined,
|
|
33
27
|
suspend: Boolean(mod.suspend),
|
|
34
28
|
sleep: Boolean(mod.sleep),
|
|
35
29
|
cache: Boolean(mod.cache_ttl),
|
|
@@ -39,46 +33,9 @@ $: itemProps = {
|
|
|
39
33
|
function onDelete(event) {
|
|
40
34
|
dispatch('delete', event);
|
|
41
35
|
}
|
|
42
|
-
let openMenu = undefined;
|
|
43
|
-
let openMenu2 = undefined;
|
|
44
36
|
</script>
|
|
45
37
|
|
|
46
38
|
{#if mod}
|
|
47
|
-
{#if insertable}
|
|
48
|
-
<div
|
|
49
|
-
class="{openMenu
|
|
50
|
-
? 'z-20'
|
|
51
|
-
: ''} w-[27px] absolute -top-[35px] left-[50%] right-[50%] -translate-x-1/2"
|
|
52
|
-
>
|
|
53
|
-
{#if moving}
|
|
54
|
-
<button
|
|
55
|
-
title="Add branch"
|
|
56
|
-
on:click={() => {
|
|
57
|
-
dispatch('insert', { modules, index: idx, detail: 'move' })
|
|
58
|
-
}}
|
|
59
|
-
type="button"
|
|
60
|
-
disabled={wrapperId === moving}
|
|
61
|
-
class=" text-primary bg-surface border mx-[1px] border-gray-300 dark:border-gray-500 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-[25px] h-[25px] flex items-center justify-center"
|
|
62
|
-
>
|
|
63
|
-
<ClipboardCopy class="m-[5px]" size={15} />
|
|
64
|
-
</button>
|
|
65
|
-
{:else}
|
|
66
|
-
<InsertModuleButton
|
|
67
|
-
{disableAi}
|
|
68
|
-
bind:open={openMenu}
|
|
69
|
-
{trigger}
|
|
70
|
-
on:insert={(e) => {
|
|
71
|
-
dispatch('insert', { modules, index: idx + 1, detail: 'script', script: e.detail })
|
|
72
|
-
}}
|
|
73
|
-
on:new={(e) => {
|
|
74
|
-
dispatch('insert', { modules, index: idx, detail: e.detail })
|
|
75
|
-
}}
|
|
76
|
-
index={idx}
|
|
77
|
-
{modules}
|
|
78
|
-
/>
|
|
79
|
-
{/if}
|
|
80
|
-
</div>
|
|
81
|
-
{/if}
|
|
82
39
|
<div class="relative">
|
|
83
40
|
{#if moving == mod.id}
|
|
84
41
|
<div class="absolute z-10 right-20 top-0.5 center-center">
|
|
@@ -98,8 +55,8 @@ let openMenu2 = undefined;
|
|
|
98
55
|
{annotation}
|
|
99
56
|
</div>
|
|
100
57
|
{/if}
|
|
101
|
-
{#if flowJobs && !insertable}
|
|
102
|
-
<div class="absolute
|
|
58
|
+
{#if flowJobs && !insertable && (mod.value.type === 'forloopflow' || mod.value.type === 'whileloopflow')}
|
|
59
|
+
<div class="absolute right-8 z-50 -top-5">
|
|
103
60
|
<FlowJobsMenu
|
|
104
61
|
on:selectedIteration={(e) => {
|
|
105
62
|
dispatch('selectedIteration', e.detail)
|
|
@@ -212,55 +169,4 @@ let openMenu2 = undefined;
|
|
|
212
169
|
{/if}
|
|
213
170
|
</div>
|
|
214
171
|
</div>
|
|
215
|
-
{#if insertable && insertableEnd}
|
|
216
|
-
<div
|
|
217
|
-
class="{openMenu2
|
|
218
|
-
? 'z-20'
|
|
219
|
-
: ''} w-[27px] absolute top-[49px] left-[50%] right-[50%] -translate-x-1/2"
|
|
220
|
-
>
|
|
221
|
-
{#if moving}
|
|
222
|
-
<button
|
|
223
|
-
title="Add branch"
|
|
224
|
-
on:click={() => {
|
|
225
|
-
dispatch('insert', { modules, index: idx + 1, detail: 'move' })
|
|
226
|
-
}}
|
|
227
|
-
type="button"
|
|
228
|
-
disabled={wrapperId === moving}
|
|
229
|
-
class=" text-primary bg-surface border mx-[1px] border-gray-300 dark:border-gray-500 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-[25px] h-[25px] flex items-center justify-center"
|
|
230
|
-
>
|
|
231
|
-
<ClipboardCopy class="m-[5px]" size={15} />
|
|
232
|
-
</button>
|
|
233
|
-
{:else}
|
|
234
|
-
<InsertModuleButton
|
|
235
|
-
{disableAi}
|
|
236
|
-
bind:open={openMenu2}
|
|
237
|
-
{trigger}
|
|
238
|
-
on:insert={(e) => {
|
|
239
|
-
dispatch('insert', { modules, index: idx + 1, detail: 'script', script: e.detail })
|
|
240
|
-
}}
|
|
241
|
-
on:new={(e) => {
|
|
242
|
-
dispatch('insert', { modules, index: idx + 1, detail: e.detail })
|
|
243
|
-
}}
|
|
244
|
-
index={idx + 1}
|
|
245
|
-
{modules}
|
|
246
|
-
/>
|
|
247
|
-
{/if}
|
|
248
|
-
</div>
|
|
249
|
-
{/if}
|
|
250
|
-
|
|
251
|
-
{#if insertable && branchable}
|
|
252
|
-
<div class="w-[27px] absolute top-[45px] left-[60%] right-[40%] -translate-x-1/2">
|
|
253
|
-
<button
|
|
254
|
-
title="Add branch"
|
|
255
|
-
on:click={() => {
|
|
256
|
-
dispatch('newBranch', { module: mod })
|
|
257
|
-
}}
|
|
258
|
-
type="button"
|
|
259
|
-
id="add-branch-button"
|
|
260
|
-
class=" text-primary bg-surface border mx-[1px] rotate-180 dark:border-gray-500 border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded-full text-sm w-[25px] h-[25px] flex items-center justify-center"
|
|
261
|
-
>
|
|
262
|
-
<GitBranchPlus class="m-[5px]" size={15} />
|
|
263
|
-
</button>
|
|
264
|
-
</div>
|
|
265
|
-
{/if}
|
|
266
172
|
{/if}
|
|
@@ -3,17 +3,12 @@ import type { FlowModule } from '../../../gen';
|
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
5
|
mod: FlowModule;
|
|
6
|
-
trigger: boolean;
|
|
7
6
|
insertable: boolean;
|
|
8
|
-
insertableEnd?: boolean | undefined;
|
|
9
7
|
annotation?: string | undefined;
|
|
10
|
-
branchable?: boolean | undefined;
|
|
11
8
|
bgColor?: string | undefined;
|
|
12
9
|
modules: FlowModule[];
|
|
13
10
|
moving?: string | undefined;
|
|
14
11
|
duration_ms?: number | undefined;
|
|
15
|
-
disableAi?: boolean | undefined;
|
|
16
|
-
wrapperId?: string | undefined;
|
|
17
12
|
retries?: number | undefined;
|
|
18
13
|
flowJobs: {
|
|
19
14
|
flowJobs: string[];
|