windmill-components 1.532.0 → 1.542.4
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/components/AIProviderPicker.svelte +181 -0
- package/package/components/AIProviderPicker.svelte.d.ts +15 -0
- package/package/components/ArgInfo.svelte +2 -2
- package/package/components/ArgInput.svelte +60 -27
- package/package/components/ArgInput.svelte.d.ts +3 -3
- package/package/components/AssignableTagsInner.svelte +89 -3
- package/package/components/Auth0Setting.svelte +8 -3
- package/package/components/ConcurrentJobsChart.svelte +36 -48
- package/package/components/ConcurrentJobsChart.svelte.d.ts +8 -20
- package/package/components/CustomPopover.svelte.d.ts +1 -1
- package/package/components/Dev.svelte +5 -4
- package/package/components/DiffDrawer.svelte +2 -2
- package/package/components/DiffEditor.svelte +34 -37
- package/package/components/DiffEditor.svelte.d.ts +23 -39
- package/package/components/DropdownSelect.svelte +26 -0
- package/package/components/DropdownSelect.svelte.d.ts +11 -0
- package/package/components/DropdownV2Inner.svelte +1 -1
- package/package/components/{DynSelect.svelte → DynamicInput.svelte} +47 -15
- package/package/components/DynamicInput.svelte.d.ts +11 -0
- package/package/components/EditableSchemaForm.svelte +155 -140
- package/package/components/EditableSchemaForm.svelte.d.ts +6 -7
- package/package/components/Editor.svelte +101 -87
- package/package/components/Editor.svelte.d.ts +7 -1
- package/package/components/EditorBar.svelte +2 -5
- package/package/components/FlowBuilder.svelte +10 -7
- package/package/components/FlowLogRow.svelte +64 -0
- package/package/components/FlowLogRow.svelte.d.ts +15 -0
- package/package/components/FlowLogViewer.svelte +406 -373
- package/package/components/FlowLogViewer.svelte.d.ts +5 -1
- package/package/components/FlowLogViewerWrapper.svelte +44 -1
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPreviewContent.svelte +3 -3
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowStatusViewer.svelte +28 -0
- package/package/components/FlowStatusViewerInner.svelte +106 -23
- package/package/components/FlowStatusViewerInner.svelte.d.ts +7 -0
- package/package/components/FolderPicker.svelte +1 -1
- package/package/components/InputTransformForm.svelte +20 -10
- package/package/components/JobArgs.svelte +1 -1
- package/package/components/JobLoader.svelte.d.ts +1 -1
- package/package/components/JobStatus.svelte +2 -0
- package/package/components/LogSnippetViewer.svelte +3 -3
- package/package/components/LogSnippetViewer.svelte.d.ts +1 -1
- package/package/components/LogViewer.svelte +87 -71
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/ModulePreview.svelte +2 -1
- package/package/components/ModulePreview.svelte.d.ts +1 -0
- package/package/components/ModulePreviewForm.svelte +72 -65
- package/package/components/ModulePreviewResultViewer.svelte +13 -18
- package/package/components/ModuleTest.svelte +6 -5
- package/package/components/ModuleTest.svelte.d.ts +1 -0
- package/package/components/OktaSetting.svelte +8 -3
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/Portal.svelte +11 -7
- package/package/components/Portal.svelte.d.ts +19 -39
- package/package/components/PrefixedInput.svelte +120 -0
- package/package/components/PrefixedInput.svelte.d.ts +8 -0
- package/package/components/QueuePosition.svelte +81 -0
- package/package/components/QueuePosition.svelte.d.ts +8 -0
- package/package/components/ResourceNarrowing.svelte +13 -0
- package/package/components/ResourceNarrowing.svelte.d.ts +6 -0
- package/package/components/ResourceTypePicker.svelte +49 -74
- package/package/components/RunChart.svelte +74 -89
- package/package/components/RunChart.svelte.d.ts +10 -22
- package/package/components/RunForm.svelte +2 -2
- package/package/components/RunForm.svelte.d.ts +1 -1
- package/package/components/RunFormAdvancedPopup.svelte +13 -1
- package/package/components/S3FilePicker.svelte +1 -1
- package/package/components/SchemaForm.svelte +1 -2
- package/package/components/SchemaForm.svelte.d.ts +2 -2
- package/package/components/ScriptBuilder.svelte +3 -2
- package/package/components/ScriptEditor.svelte +25 -10
- package/package/components/ScriptEditor.svelte.d.ts +2 -1
- package/package/components/ServiceLogsInner.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleEditor.svelte +4 -68
- package/package/components/StringTypeNarrowing.svelte +5 -10
- package/package/components/TemplateEditor.svelte +2 -16
- package/package/components/TimeAgo.svelte +1 -1
- package/package/components/TimeAgo.svelte.d.ts +1 -0
- package/package/components/Toggle.svelte +2 -1
- package/package/components/Toggle.svelte.d.ts +2 -1
- package/package/components/WorkerRepl.svelte +1 -1
- package/package/components/apps/components/display/AppNavbarItem.svelte +2 -1
- package/package/components/apps/components/display/table/AppAggridTable.svelte +44 -48
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +101 -19
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +5 -2
- package/package/components/apps/components/display/table/utils.js +36 -5
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +10 -5
- package/package/components/apps/components/layout/AppModal.svelte +2 -2
- package/package/components/apps/editor/AppEditor.svelte +4 -3
- package/package/components/apps/editor/AppEditorHeader.svelte +0 -1
- package/package/components/apps/editor/GridViewer.svelte.d.ts +11 -4
- package/package/components/apps/editor/SettingsPanel.svelte +2 -2
- package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -2
- package/package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +0 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +29 -4
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +55 -53
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -5
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +30 -11
- package/package/components/assets/JobAssetsViewer.svelte +28 -24
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -6
- package/package/components/chartjs-wrappers/Chart.svelte.d.ts +14 -7
- package/package/components/common/OnChange.svelte.d.ts +11 -4
- package/package/components/common/badge/Badge.svelte +9 -2
- package/package/components/common/badge/Badge.svelte.d.ts +2 -1
- package/package/components/common/button/model.d.ts +1 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +5 -4
- package/package/components/common/drawer/Disposable.svelte +45 -26
- package/package/components/common/drawer/Disposable.svelte.d.ts +12 -44
- package/package/components/common/drawer/Drawer.svelte +17 -14
- package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/package/components/common/menu/MenuItem.svelte.d.ts +2 -2
- package/package/components/common/modal/Modal.svelte.d.ts +1 -1
- package/package/components/common/tabs/TabContent.svelte +2 -7
- package/package/components/common/tabs/TabContent.svelte.d.ts +5 -27
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +9 -3
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +8 -4
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
- package/package/components/copilot/MetadataGen.svelte +14 -3
- package/package/components/copilot/chat/AIChatInput.svelte +0 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +26 -104
- package/package/components/copilot/chat/AssistantMessage.svelte +0 -4
- package/package/components/copilot/chat/AvailableContextList.svelte +192 -66
- package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +2 -2
- package/package/components/copilot/chat/ContextElementBadge.svelte +3 -3
- package/package/components/copilot/chat/ContextManager.svelte.js +36 -13
- package/package/components/copilot/chat/ContextTextarea.svelte +21 -48
- package/package/components/copilot/chat/ToolContentDisplay.svelte +10 -1
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +3 -3
- package/package/components/copilot/chat/anthropic.d.ts +15 -0
- package/package/components/copilot/chat/anthropic.js +208 -0
- package/package/components/copilot/chat/api/apiTools.d.ts +2 -2
- package/package/components/copilot/chat/api/apiTools.js +10 -7
- package/package/components/copilot/chat/api/core.d.ts +1 -1
- package/package/components/copilot/chat/api/core.js +7 -2
- package/package/components/copilot/chat/ask/core.d.ts +1 -1
- package/package/components/copilot/chat/ask/core.js +7 -2
- package/package/components/copilot/chat/context.d.ts +7 -2
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +110 -8
- package/package/components/copilot/chat/flow/core.d.ts +12 -1
- package/package/components/copilot/chat/flow/core.js +133 -5
- package/package/components/copilot/chat/flow/uiIntents.d.ts +8 -0
- package/package/components/copilot/chat/flow/uiIntents.js +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.d.ts +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.js +12 -0
- package/package/components/copilot/chat/monaco-adapter.d.ts +23 -4
- package/package/components/copilot/chat/monaco-adapter.js +55 -16
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +7 -2
- package/package/components/copilot/chat/script/CodeDisplay.svelte +10 -111
- package/package/components/copilot/chat/script/core.d.ts +5 -4
- package/package/components/copilot/chat/script/core.js +134 -21
- package/package/components/copilot/chat/shared.d.ts +10 -9
- package/package/components/copilot/chat/shared.js +24 -12
- package/package/components/copilot/lib.d.ts +29 -8
- package/package/components/copilot/lib.js +211 -31
- package/package/components/copilot/shared.d.ts +1 -1
- package/package/components/copilot/shared.js +16 -10
- package/package/components/flows/FlowEditor.svelte +4 -2
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
- package/package/components/flows/FlowModuleIcon.svelte +8 -8
- package/package/components/flows/common/FlowCardHeader.svelte +4 -1
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +6 -0
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +6 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +2 -1
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowInput.svelte +36 -39
- package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowLoop.svelte +7 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +42 -46
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +47 -17
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +4 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +15 -18
- package/package/components/flows/content/FlowModuleTimeout.svelte +50 -10
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowRetries.svelte +108 -3
- package/package/components/flows/content/FlowRetries.svelte.d.ts +3 -2
- package/package/components/flows/content/FlowWhileLoop.svelte +6 -0
- package/package/components/flows/content/ScriptEditorDrawer.svelte +9 -11
- package/package/components/flows/dfs.d.ts +1 -1
- package/package/components/flows/dfs.js +6 -6
- package/package/components/flows/flowInfers.js +15 -42
- package/package/components/flows/flowStateUtils.svelte.js +1 -2
- package/package/components/flows/flowStore.d.ts +45 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +73 -80
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -1
- package/package/components/flows/map/InsertModuleButton.svelte +1 -0
- package/package/components/flows/map/InsertModuleInner.svelte +12 -15
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +10 -9
- package/package/components/flows/map/MapItem.svelte +8 -4
- package/package/components/flows/map/VirtualItem.svelte +1 -1
- package/package/components/flows/pickers/TopLevelNode.svelte +1 -1
- package/package/components/flows/propPicker/InputPickerInner.svelte +5 -5
- package/package/components/flows/propPicker/OutputPickerInner.svelte +143 -118
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +7 -16
- package/package/components/flows/{testSteps.svelte.d.ts → stepsInputArgs.svelte.d.ts} +2 -1
- package/package/components/flows/{testSteps.svelte.js → stepsInputArgs.svelte.js} +15 -3
- package/package/components/flows/types.d.ts +16 -3
- package/package/components/flows/utils.js +3 -0
- package/package/components/git_sync/DetectionFlow.svelte +15 -17
- package/package/components/git_sync/GitSyncContext.svelte.js +1 -1
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +0 -1
- package/package/components/graph/FlowGraphV2.svelte +1 -1
- package/package/components/graph/graphBuilder.svelte.d.ts +5 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte +9 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +4 -1
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +4 -4
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +2 -3
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +2 -3
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +71 -54
- package/package/components/graph/renderers/triggers/TriggerButton.svelte.d.ts +1 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -1
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +34 -24
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +1 -2
- package/package/components/home/ItemsList.svelte +17 -13
- package/package/components/home/TreeView.svelte +21 -27
- package/package/components/home/TreeView.svelte.d.ts +2 -29
- package/package/components/home/TreeViewRoot.svelte +11 -23
- package/package/components/home/TreeViewRoot.svelte.d.ts +15 -13
- package/package/components/icons/GitIcon.svelte +10 -2
- package/package/components/icons/GitIcon.svelte.d.ts +1 -0
- package/package/components/meltComponents/MeltButton.svelte.d.ts +1 -1
- package/package/components/meltComponents/Popover.svelte +23 -3
- package/package/components/meltComponents/Popover.svelte.d.ts +2 -1
- package/package/components/monacoLanguagesOptions.d.ts +3 -0
- package/package/components/monacoLanguagesOptions.js +109 -0
- package/package/components/propertyPicker/ObjectViewer.svelte +18 -5
- package/package/components/propertyPicker/PropPicker.svelte +1 -1
- package/package/components/propertyPicker/utils.js +14 -7
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +1 -1
- package/package/components/runs/JobRunsPreview.svelte +212 -177
- package/package/components/runs/JobsLoader.svelte +2 -2
- package/package/components/runs/JobsLoader.svelte.d.ts +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +18 -5
- package/package/components/runs/RunBadges.svelte +100 -0
- package/package/components/runs/RunBadges.svelte.d.ts +12 -0
- package/package/components/runs/RunLabels.svelte +86 -0
- package/package/components/runs/RunLabels.svelte.d.ts +10 -0
- package/package/components/runs/RunOption.svelte +20 -0
- package/package/components/runs/RunOption.svelte.d.ts +10 -0
- package/package/components/runs/RunRow.svelte +239 -151
- package/package/components/runs/RunRow.svelte.d.ts +12 -9
- package/package/components/runs/RunsBatchActionsDropdown.svelte +13 -17
- package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +5 -18
- package/package/components/runs/RunsFilter.svelte +369 -243
- package/package/components/runs/RunsFilter.svelte.d.ts +2 -0
- package/package/components/runs/RunsQueue.svelte +96 -25
- package/package/components/runs/RunsQueue.svelte.d.ts +7 -21
- package/package/components/runs/RunsTable.svelte +62 -71
- package/package/components/runs/RunsTable.svelte.d.ts +2 -1
- package/package/components/runs/runs-grid.css +95 -0
- package/package/components/schema/AddPropertyV2.svelte +2 -7
- package/package/components/schema/AddPropertyV2.svelte.d.ts +3 -20
- package/package/components/schema/EditableSchemaDrawer.svelte +121 -127
- package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +2 -1
- package/package/components/schema/EditableSchemaSdkWrapper.svelte +16 -3
- package/package/components/schema/EditableSchemaSdkWrapper.svelte.d.ts +4 -1
- package/package/components/schema/EditableSchemaWrapper.svelte +3 -10
- package/package/components/schema/FlowPropertyEditor.svelte +195 -236
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +33 -35
- package/package/components/schema/SchemaFormDND.svelte +11 -10
- package/package/components/schema/SchemaFormDND.svelte.d.ts +4 -3
- package/package/components/schema/editable_schema_wrapper.d.ts +0 -3
- package/package/components/search/GlobalSearchModal.svelte +8 -1
- package/package/components/select/DraggableTags.svelte.d.ts +17 -7
- package/package/components/select/MultiSelect.svelte.d.ts +21 -11
- package/package/components/select/Select.svelte +2 -1
- package/package/components/select/Select.svelte.d.ts +25 -13
- package/package/components/select/SelectDropdown.svelte.d.ts +14 -7
- package/package/components/settings/PremiumInfo.svelte +7 -2
- package/package/components/settings/TokenDisplay.svelte +1 -1
- package/package/components/sidebar/OperatorMenu.svelte +5 -0
- package/package/components/sidebar/SidebarContent.svelte +48 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +116 -17
- package/package/components/toast.js +6 -3
- package/package/components/triggers/AddTriggersButton.svelte +7 -6
- package/package/components/triggers/CaptureWrapper.svelte +21 -16
- package/package/components/triggers/CaptureWrapper.svelte.d.ts +1 -1
- package/package/components/triggers/TriggerLabel.svelte +8 -0
- package/package/components/triggers/TriggerTokens.svelte +1 -1
- package/package/components/triggers/TriggersEditor.svelte +9 -5
- package/package/components/triggers/TriggersTable.svelte +2 -2
- package/package/components/triggers/TriggersWrapper.svelte +17 -5
- package/package/components/triggers/TriggersWrapper.svelte.d.ts +3 -19
- package/package/components/{details/EmailTriggerCaptures.svelte → triggers/email/DefaultEmailCapture.svelte} +5 -5
- package/package/components/{details/EmailTriggerCaptures.svelte.d.ts → triggers/email/DefaultEmailCapture.svelte.d.ts} +4 -4
- package/package/components/{details/EmailTriggerConfigSection.svelte → triggers/email/DefaultEmailConfigSection.svelte} +24 -14
- package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +13 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte +71 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailCapture.svelte +39 -0
- package/package/components/triggers/email/EmailCapture.svelte.d.ts +43 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte +20 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte +133 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte.d.ts +14 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +335 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte.d.ts +22 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte +61 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte.d.ts +14 -0
- package/package/components/triggers/email/utils.d.ts +4 -0
- package/package/components/triggers/email/utils.js +52 -0
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +1 -1
- package/package/components/triggers/http/RouteEditorInner.svelte +1 -1
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +23 -20
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte +15 -27
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte.d.ts +7 -5
- package/package/components/triggers/triggers.svelte.d.ts +1 -0
- package/package/components/triggers/triggers.svelte.js +24 -2
- package/package/components/triggers/utils.js +19 -5
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +16 -16
- package/package/components/triggers.d.ts +1 -1
- package/package/components/triggers.js +2 -0
- package/package/components/wizards/AgGridWizard.svelte +85 -80
- package/package/components/workspaceSettings/AISettings.svelte +74 -22
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/CreateWorkspace.svelte +395 -0
- package/package/components/workspaceSettings/CreateWorkspace.svelte.d.ts +6 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte +3 -1
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +1 -1
- package/package/components/workspaceSettings/StorageSettings.svelte +69 -48
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +142 -3
- package/package/gen/schemas.gen.js +144 -3
- package/package/gen/services.gen.d.ts +129 -1
- package/package/gen/services.gen.js +267 -1
- package/package/gen/types.gen.d.ts +434 -8
- package/package/hubPaths.json +6 -2
- package/package/infer.js +1 -1
- package/package/keyboardChain.d.ts +5 -0
- package/package/keyboardChain.js +40 -0
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +2 -0
- package/package/services/JobManager.js +2 -2
- package/package/stores.d.ts +4 -1
- package/package/stores.js +16 -6
- package/package/utils/workspaceHierarchy.d.ts +27 -0
- package/package/utils/workspaceHierarchy.js +101 -0
- package/package/utils.d.ts +6 -3
- package/package/utils.js +30 -15
- package/package/workspace_settings.js +2 -3
- package/package.json +10 -12
- package/package/components/DynSelect.svelte.d.ts +0 -11
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +0 -28
- package/package/components/ObjectTypeNarrowing.svelte +0 -18
- package/package/components/ObjectTypeNarrowing.svelte.d.ts +0 -22
- package/package/components/details/DetailPageTriggerPanel.svelte +0 -121
- package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +0 -20
- package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +0 -12
- package/package/components/details/EmailTriggerPanel.svelte +0 -76
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +0 -26
|
@@ -19,14 +19,14 @@ import CaptureButton from '../../triggers/CaptureButton.svelte';
|
|
|
19
19
|
import { getFullPath, setNestedProperty, getNestedProperty, schemaFromDiff, computeDiff, applyDiff } from '../../schema/schemaUtils.svelte';
|
|
20
20
|
import SideBarTab from '../../meltComponents/SideBarTab.svelte';
|
|
21
21
|
import CaptureTable from '../../triggers/CaptureTable.svelte';
|
|
22
|
-
import { isObjectTooBig } from '../../../utils';
|
|
22
|
+
import { isObjectTooBig, readFieldsRecursively } from '../../../utils';
|
|
23
23
|
import { refreshStateStore } from '../../../svelte5Utils.svelte';
|
|
24
|
-
|
|
24
|
+
import { deepEqual } from 'fast-equals';
|
|
25
|
+
let { noEditor, disabled, onTestFlow, previewOpen } = $props();
|
|
25
26
|
const { flowStore, previewArgs, pathStore, initialPathStore, fakeInitialPath, flowInputEditorState } = getContext('FlowEditorContext');
|
|
26
27
|
let addPropertyV2 = $state(undefined);
|
|
27
28
|
let previewSchema = $state(undefined);
|
|
28
29
|
let payloadData = undefined;
|
|
29
|
-
let previewArguments = $state(previewArgs.val);
|
|
30
30
|
let dropdownItems = $state([]);
|
|
31
31
|
let diff = $state({});
|
|
32
32
|
let editPanelSize = $state($flowInputEditorState?.editPanelSize ?? 0);
|
|
@@ -35,8 +35,8 @@ let runDisabled = $state(false);
|
|
|
35
35
|
let editableSchemaForm = $state(undefined);
|
|
36
36
|
let savedPreviewArgs = $state(undefined);
|
|
37
37
|
let isValid = $state(true);
|
|
38
|
-
let
|
|
39
|
-
let
|
|
38
|
+
let dynCode = $state(undefined);
|
|
39
|
+
let dynLang = $state(undefined);
|
|
40
40
|
function updateEditPanelSize(size) {
|
|
41
41
|
if (!$flowInputEditorState)
|
|
42
42
|
return;
|
|
@@ -148,7 +148,9 @@ function schemaFromPayload(payloadData) {
|
|
|
148
148
|
}
|
|
149
149
|
function handleKeydown(event) {
|
|
150
150
|
if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {
|
|
151
|
-
|
|
151
|
+
if (!previewOpen) {
|
|
152
|
+
runPreview();
|
|
153
|
+
}
|
|
152
154
|
}
|
|
153
155
|
else if (event.key === 'Enter' && previewSchema && !preventEnter) {
|
|
154
156
|
applySchemaAndArgs();
|
|
@@ -158,9 +160,6 @@ function handleKeydown(event) {
|
|
|
158
160
|
}
|
|
159
161
|
}
|
|
160
162
|
function runPreview() {
|
|
161
|
-
if (previewArguments) {
|
|
162
|
-
previewArgs.val = structuredClone($state.snapshot(previewArguments));
|
|
163
|
-
}
|
|
164
163
|
onTestFlow?.();
|
|
165
164
|
}
|
|
166
165
|
function updatePreviewSchemaAndArgs(payload) {
|
|
@@ -198,8 +197,8 @@ async function updatePreviewSchema(newSchema) {
|
|
|
198
197
|
}
|
|
199
198
|
async function applySchemaAndArgs() {
|
|
200
199
|
flowStore.val.schema = applyDiff(flowStore.val.schema, diff);
|
|
201
|
-
if (
|
|
202
|
-
savedPreviewArgs = structuredClone($state.snapshot(
|
|
200
|
+
if (previewArgs.val) {
|
|
201
|
+
savedPreviewArgs = structuredClone($state.snapshot(previewArgs.val));
|
|
203
202
|
}
|
|
204
203
|
updatePreviewSchemaAndArgs(undefined);
|
|
205
204
|
if ($flowInputEditorState) {
|
|
@@ -208,11 +207,13 @@ async function applySchemaAndArgs() {
|
|
|
208
207
|
}
|
|
209
208
|
function updatePreviewArguments(payloadData) {
|
|
210
209
|
if (!payloadData) {
|
|
211
|
-
|
|
210
|
+
if (savedPreviewArgs) {
|
|
211
|
+
previewArgs.val = savedPreviewArgs;
|
|
212
|
+
}
|
|
212
213
|
return;
|
|
213
214
|
}
|
|
214
|
-
savedPreviewArgs = structuredClone($state.snapshot(
|
|
215
|
-
|
|
215
|
+
savedPreviewArgs = structuredClone($state.snapshot(previewArgs.val));
|
|
216
|
+
previewArgs.val = structuredClone($state.snapshot(payloadData));
|
|
216
217
|
}
|
|
217
218
|
let tabButtonWidth = 0;
|
|
218
219
|
let connectFirstNode = $state(() => { });
|
|
@@ -267,10 +268,17 @@ function handleChange(arg, currentSchema, diffSchema, updateCurrentSchema) {
|
|
|
267
268
|
}
|
|
268
269
|
function resetArgs() {
|
|
269
270
|
if (!previewSchema) {
|
|
270
|
-
// previewArguments = undefined
|
|
271
271
|
savedPreviewArgs = undefined;
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
|
+
$effect(() => {
|
|
275
|
+
if (!previewArgs && savedPreviewArgs != undefined) {
|
|
276
|
+
readFieldsRecursively(flowStore.val.schema);
|
|
277
|
+
untrack(() => {
|
|
278
|
+
resetArgs();
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
});
|
|
274
282
|
let historicInputs = $state(undefined);
|
|
275
283
|
let captureTable = $state(undefined);
|
|
276
284
|
let savedInputsPicker = $state(undefined);
|
|
@@ -295,17 +303,14 @@ function resetSelected() {
|
|
|
295
303
|
bind:this={editableSchemaForm}
|
|
296
304
|
bind:schema={flowStore.val.schema}
|
|
297
305
|
isFlowInput
|
|
298
|
-
on:edit={(e) => {
|
|
299
|
-
addPropertyV2?.openDrawer(e.detail)
|
|
300
|
-
}}
|
|
301
306
|
on:delete={(e) => {
|
|
302
307
|
addPropertyV2?.handleDeleteArgument([e.detail])
|
|
303
308
|
}}
|
|
304
|
-
|
|
309
|
+
showDynOpt
|
|
305
310
|
displayWebhookWarning
|
|
306
311
|
editTab={$flowInputEditorState?.selectedTab}
|
|
307
312
|
{previewSchema}
|
|
308
|
-
bind:args={
|
|
313
|
+
bind:args={previewArgs.val}
|
|
309
314
|
bind:editPanelSize={
|
|
310
315
|
() => {
|
|
311
316
|
return editPanelSize
|
|
@@ -331,19 +336,17 @@ function resetSelected() {
|
|
|
331
336
|
})
|
|
332
337
|
}}
|
|
333
338
|
shouldDispatchChanges={true}
|
|
334
|
-
|
|
335
|
-
previewArguments = previewArguments
|
|
339
|
+
onChange={() => {
|
|
336
340
|
if (!previewSchema) {
|
|
337
|
-
|
|
341
|
+
let args = $state.snapshot(previewArgs.val)
|
|
342
|
+
if (!deepEqual(args, savedPreviewArgs)) {
|
|
343
|
+
savedPreviewArgs = args
|
|
344
|
+
}
|
|
338
345
|
}
|
|
339
|
-
refreshStateStore(flowStore)
|
|
340
|
-
}}
|
|
341
|
-
on:schemaChange={() => {
|
|
342
|
-
resetArgs()
|
|
343
346
|
}}
|
|
344
347
|
bind:isValid
|
|
345
|
-
bind:
|
|
346
|
-
bind:
|
|
348
|
+
bind:dynCode
|
|
349
|
+
bind:dynLang
|
|
347
350
|
>
|
|
348
351
|
{#snippet openEditTab()}
|
|
349
352
|
<div class={twMerge('flex flex-row divide-x', ButtonType.ColorVariants.blue.divider)}>
|
|
@@ -408,15 +411,9 @@ function resetSelected() {
|
|
|
408
411
|
<AddPropertyV2
|
|
409
412
|
bind:schema={flowStore.val.schema}
|
|
410
413
|
bind:this={addPropertyV2}
|
|
411
|
-
|
|
412
|
-
refreshStateStore(flowStore)
|
|
413
|
-
if (editableSchemaForm) {
|
|
414
|
-
editableSchemaForm.updateJson()
|
|
415
|
-
}
|
|
416
|
-
}}
|
|
417
|
-
on:addNew={(e) => {
|
|
414
|
+
onAddNew={(argName) => {
|
|
418
415
|
handleEditSchema('inputEditor')
|
|
419
|
-
editableSchemaForm?.openField(
|
|
416
|
+
editableSchemaForm?.openField(argName)
|
|
420
417
|
refreshStateStore(flowStore)
|
|
421
418
|
}}
|
|
422
419
|
>
|
|
@@ -493,7 +490,7 @@ function resetSelected() {
|
|
|
493
490
|
on:isEditing={(e) => {
|
|
494
491
|
preventEnter = e.detail
|
|
495
492
|
}}
|
|
496
|
-
previewArgs={
|
|
493
|
+
previewArgs={previewArgs.val}
|
|
497
494
|
{isValid}
|
|
498
495
|
limitPayloadSize
|
|
499
496
|
bind:this={savedInputsPicker}
|
|
@@ -516,7 +513,7 @@ function resetSelected() {
|
|
|
516
513
|
on:select={(e) => {
|
|
517
514
|
updatePreviewSchemaAndArgs(e.detail ?? undefined)
|
|
518
515
|
}}
|
|
519
|
-
selected={!!
|
|
516
|
+
selected={!!previewArgs.val}
|
|
520
517
|
bind:this={jsonInputs}
|
|
521
518
|
/>
|
|
522
519
|
</FlowInputEditor>
|
|
@@ -2,6 +2,7 @@ interface Props {
|
|
|
2
2
|
noEditor: boolean;
|
|
3
3
|
disabled: boolean;
|
|
4
4
|
onTestFlow?: () => void;
|
|
5
|
+
previewOpen: boolean;
|
|
5
6
|
}
|
|
6
7
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
7
8
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -20,10 +20,17 @@ import FlowModuleSkip from './FlowModuleSkip.svelte';
|
|
|
20
20
|
import FlowPlugConnect from '../../FlowPlugConnect.svelte';
|
|
21
21
|
import PropPickerWrapper, { CONNECT } from '../propPicker/PropPickerWrapper.svelte';
|
|
22
22
|
import TabsV2 from '../../common/tabs/TabsV2.svelte';
|
|
23
|
+
import { useUiIntent } from '../../copilot/chat/flow/useUiIntent';
|
|
23
24
|
const { previewArgs, flowStateStore, flowStore, currentEditor } = getContext('FlowEditorContext');
|
|
24
25
|
let { mod = $bindable(), parentModule, previousModule, noEditor, enableAi = false } = $props();
|
|
25
26
|
let editor = $state(undefined);
|
|
26
27
|
let selected = $state('early-stop');
|
|
28
|
+
// UI Intent handling for AI tool control
|
|
29
|
+
useUiIntent(`forloopflow-${mod.id}`, {
|
|
30
|
+
openTab: (tab) => {
|
|
31
|
+
selected = tab;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
27
34
|
const { flowPropPickerConfig } = getContext('PropPickerContext');
|
|
28
35
|
flowPropPickerConfig.set(undefined);
|
|
29
36
|
let stepPropPicker = $derived(getStepPropPicker(flowStateStore.val, parentModule, previousModule, mod.id, flowStore.val, previewArgs.val, false));
|
|
@@ -30,7 +30,7 @@ import InputTransformSchemaForm from '../../InputTransformSchemaForm.svelte';
|
|
|
30
30
|
import FlowModuleMockTransitionMessage from './FlowModuleMockTransitionMessage.svelte';
|
|
31
31
|
import Tooltip from '../../Tooltip.svelte';
|
|
32
32
|
import { SecondsInput } from '../../common';
|
|
33
|
-
import DiffEditor from '../../DiffEditor.svelte';
|
|
33
|
+
import DiffEditor, {} from '../../DiffEditor.svelte';
|
|
34
34
|
import FlowModuleTimeout from './FlowModuleTimeout.svelte';
|
|
35
35
|
import HighlightCode from '../../HighlightCode.svelte';
|
|
36
36
|
import ToggleButtonGroup from '../../common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
@@ -41,18 +41,29 @@ import { enterpriseLicense } from '../../../stores';
|
|
|
41
41
|
import { isCloudHosted } from '../../../cloud';
|
|
42
42
|
import { loadSchemaFromModule } from '../flowInfers';
|
|
43
43
|
import FlowModuleSkip from './FlowModuleSkip.svelte';
|
|
44
|
-
import {
|
|
44
|
+
import {} from '../../../gen';
|
|
45
45
|
import { workspaceStore } from '../../../stores';
|
|
46
46
|
import { checkIfParentLoop } from '../utils';
|
|
47
47
|
import ModulePreviewResultViewer from '../../ModulePreviewResultViewer.svelte';
|
|
48
48
|
import { refreshStateStore } from '../../../svelte5Utils.svelte';
|
|
49
49
|
import { getStepHistoryLoaderContext } from '../../stepHistoryLoader.svelte';
|
|
50
50
|
import AssetsDropdownButton from '../../assets/AssetsDropdownButton.svelte';
|
|
51
|
+
import { useUiIntent } from '../../copilot/chat/flow/useUiIntent';
|
|
52
|
+
import { editor as meditor } from 'monaco-editor';
|
|
51
53
|
const { selectedId, currentEditor, previewArgs, flowStateStore, flowStore, pathStore, saveDraft, customUi, executionCount } = getContext('FlowEditorContext');
|
|
52
54
|
let { flowModule = $bindable(), failureModule = false, preprocessorModule = false, parentModule = $bindable(), previousModule, scriptKind = 'script', scriptTemplate = 'script', noEditor, enableAi, savedModule = undefined, forceTestTab = false, highlightArg = undefined, isAgentTool = false } = $props();
|
|
53
55
|
let workspaceScriptTag = $state(undefined);
|
|
54
56
|
let workspaceScriptLang = $state(undefined);
|
|
55
57
|
let diffMode = $state(false);
|
|
58
|
+
let diffButtons = $state([
|
|
59
|
+
{
|
|
60
|
+
text: 'Quit diff mode',
|
|
61
|
+
color: 'red',
|
|
62
|
+
onClick: () => {
|
|
63
|
+
hideDiffMode();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
]);
|
|
56
67
|
let editor = $state();
|
|
57
68
|
let diffEditor = $state();
|
|
58
69
|
let modulePreview = $state();
|
|
@@ -69,11 +80,16 @@ let advancedRuntimeSelected = $state('concurrency');
|
|
|
69
80
|
let s3Kind = $state('s3_client');
|
|
70
81
|
let validCode = $state(true);
|
|
71
82
|
let width = $state(1200);
|
|
72
|
-
let lastJob = $state(undefined);
|
|
73
83
|
let testJob = $state(undefined);
|
|
74
84
|
let testIsLoading = $state(false);
|
|
75
85
|
let scriptProgress = $state(undefined);
|
|
76
86
|
let assets = $derived((flowModule.value.type === 'rawscript' && flowModule.value.assets) || []);
|
|
87
|
+
// UI Intent handling for AI tool control
|
|
88
|
+
useUiIntent(`flow-${flowModule.id}`, {
|
|
89
|
+
openTab: (tab) => {
|
|
90
|
+
selectAdvanced(tab);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
77
93
|
function onModulesChange(savedModule, flowModule) {
|
|
78
94
|
// console.log('onModulesChange', savedModule, flowModule)
|
|
79
95
|
return savedModule?.value?.type === 'rawscript' &&
|
|
@@ -138,41 +154,16 @@ let forceReload = $state(0);
|
|
|
138
154
|
let editorPanelSize = $state(noEditor ? 0 : flowModule.value.type == 'script' ? 30 : 50);
|
|
139
155
|
let editorSettingsPanelSize = $state(100 - untrack(() => editorPanelSize));
|
|
140
156
|
let stepHistoryLoader = getStepHistoryLoaderContext();
|
|
141
|
-
let lastJobId = undefined;
|
|
142
157
|
function onSelectedIdChange() {
|
|
143
158
|
if (!flowStateStore?.val?.[$selectedId]?.schema && flowModule) {
|
|
144
159
|
reload(flowModule);
|
|
145
160
|
}
|
|
146
|
-
lastJobId = undefined;
|
|
147
|
-
}
|
|
148
|
-
async function getLastJob() {
|
|
149
|
-
if (!flowStateStore ||
|
|
150
|
-
!flowModule.id ||
|
|
151
|
-
flowStateStore.val[flowModule.id]?.previewResult === 'never tested this far' ||
|
|
152
|
-
!flowStateStore.val[flowModule.id]?.previewJobId) {
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
if (lastJobId == flowStateStore.val[flowModule.id]?.previewJobId ||
|
|
156
|
-
lastJob?.id == flowStateStore.val[flowModule.id]?.previewJobId ||
|
|
157
|
-
flowStateStore.val[flowModule.id]?.previewSuccess == undefined) {
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
lastJobId = flowStateStore.val[flowModule.id]?.previewJobId;
|
|
161
|
-
const job = await JobService.getJob({
|
|
162
|
-
workspace: $workspaceStore ?? '',
|
|
163
|
-
id: flowStateStore.val[flowModule.id]?.previewJobId ?? '',
|
|
164
|
-
noCode: true
|
|
165
|
-
});
|
|
166
|
-
if (job && job.type === 'CompletedJob') {
|
|
167
|
-
lastJobId = flowStateStore.val[flowModule.id]?.previewJobId;
|
|
168
|
-
lastJob = job;
|
|
169
|
-
}
|
|
170
161
|
}
|
|
171
162
|
let leftPanelSize = $state(0);
|
|
172
163
|
function showDiffMode() {
|
|
173
164
|
diffMode = true;
|
|
174
165
|
diffEditor?.setOriginal((savedModule?.value).content ?? '');
|
|
175
|
-
diffEditor?.
|
|
166
|
+
diffEditor?.setModifiedModel(editor?.getModel());
|
|
176
167
|
diffEditor?.show();
|
|
177
168
|
editor?.hide();
|
|
178
169
|
}
|
|
@@ -188,14 +179,6 @@ let stepPropPicker = $derived($executionCount != undefined && failureModule
|
|
|
188
179
|
$effect.pre(() => {
|
|
189
180
|
$selectedId && untrack(() => onSelectedIdChange());
|
|
190
181
|
});
|
|
191
|
-
$effect(() => {
|
|
192
|
-
if (testJob && testJob.type === 'CompletedJob') {
|
|
193
|
-
lastJob = $state.snapshot(testJob);
|
|
194
|
-
}
|
|
195
|
-
else if ($workspaceStore && $pathStore && flowModule?.id && flowStateStore) {
|
|
196
|
-
untrack(() => getLastJob());
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
182
|
let parentLoop = $derived(flowStore.val && flowModule ? checkIfParentLoop(flowStore.val, flowModule.id) : undefined);
|
|
200
183
|
$effect(() => {
|
|
201
184
|
if (selected === 'test') {
|
|
@@ -214,7 +197,13 @@ $effect(() => {
|
|
|
214
197
|
showDiffMode,
|
|
215
198
|
hideDiffMode,
|
|
216
199
|
diffMode,
|
|
217
|
-
lastDeployedCode
|
|
200
|
+
lastDeployedCode,
|
|
201
|
+
setDiffOriginal: (code) => {
|
|
202
|
+
diffEditor?.setOriginal(code ?? '');
|
|
203
|
+
},
|
|
204
|
+
setDiffButtons: (buttons) => {
|
|
205
|
+
diffButtons = buttons;
|
|
206
|
+
}
|
|
218
207
|
});
|
|
219
208
|
});
|
|
220
209
|
onDestroy(() => {
|
|
@@ -234,6 +223,10 @@ $effect(() => {
|
|
|
234
223
|
}
|
|
235
224
|
});
|
|
236
225
|
let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.value.language : undefined);
|
|
226
|
+
let modulePreviewResultViewer = $state(undefined);
|
|
227
|
+
function onJobDone() {
|
|
228
|
+
modulePreviewResultViewer?.getOutputPickerInner()?.setJobPreview();
|
|
229
|
+
}
|
|
237
230
|
</script>
|
|
238
231
|
|
|
239
232
|
<svelte:window onkeydown={onKeyDown} />
|
|
@@ -395,13 +388,12 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
|
|
|
395
388
|
<DiffEditor
|
|
396
389
|
open={false}
|
|
397
390
|
bind:this={diffEditor}
|
|
391
|
+
modifiedModel={editor?.getModel() as meditor.ITextModel}
|
|
398
392
|
automaticLayout
|
|
399
393
|
fixedOverflowWidgets
|
|
400
394
|
defaultLang={scriptLangToEditorLang(flowModule.value.language)}
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
showHistoryButton={false}
|
|
404
|
-
on:hideDiffMode={hideDiffMode}
|
|
395
|
+
className="h-full"
|
|
396
|
+
buttons={diffMode ? diffButtons : []}
|
|
405
397
|
/>
|
|
406
398
|
{/key}
|
|
407
399
|
{/if}
|
|
@@ -508,6 +500,7 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
|
|
|
508
500
|
bind:testIsLoading
|
|
509
501
|
bind:scriptProgress
|
|
510
502
|
focusArg={highlightArg}
|
|
503
|
+
{onJobDone}
|
|
511
504
|
/>
|
|
512
505
|
{:else if selected === 'advanced'}
|
|
513
506
|
<Tabs bind:selected={advancedSelected}>
|
|
@@ -571,7 +564,7 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
|
|
|
571
564
|
</Tooltip>
|
|
572
565
|
</div>
|
|
573
566
|
<div class="my-8"></div>
|
|
574
|
-
<FlowRetries bind:flowModuleRetry={flowModule.retry} />
|
|
567
|
+
<FlowRetries bind:flowModuleRetry={flowModule.retry} bind:flowModule />
|
|
575
568
|
</Section>
|
|
576
569
|
{:else if advancedSelected === 'runtime' && advancedRuntimeSelected === 'concurrency'}
|
|
577
570
|
<Section label="Concurrency limits" class="flex flex-col gap-4" eeOnly>
|
|
@@ -633,7 +626,10 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
|
|
|
633
626
|
</Section>
|
|
634
627
|
{:else if advancedSelected === 'runtime' && advancedRuntimeSelected === 'timeout'}
|
|
635
628
|
<div>
|
|
636
|
-
<FlowModuleTimeout
|
|
629
|
+
<FlowModuleTimeout
|
|
630
|
+
previousModuleId={previousModule?.id}
|
|
631
|
+
bind:flowModule
|
|
632
|
+
/>
|
|
637
633
|
</div>
|
|
638
634
|
{:else if advancedSelected === 'runtime' && advancedRuntimeSelected === 'priority'}
|
|
639
635
|
<Section label="Priority" class="flex flex-col gap-4">
|
|
@@ -812,15 +808,15 @@ let rawScriptLang = $derived(flowModule.value.type == 'rawscript' ? flowModule.v
|
|
|
812
808
|
flowModule = flowModule
|
|
813
809
|
refreshStateStore(flowStore)
|
|
814
810
|
}}
|
|
815
|
-
{lastJob}
|
|
816
|
-
{scriptProgress}
|
|
817
811
|
{testJob}
|
|
812
|
+
{scriptProgress}
|
|
818
813
|
mod={flowModule}
|
|
819
814
|
{testIsLoading}
|
|
820
815
|
disableMock={preprocessorModule || failureModule}
|
|
821
816
|
disableHistory={failureModule}
|
|
822
817
|
loadingJob={stepHistoryLoader?.stepStates[flowModule.id]?.loadingJobs}
|
|
823
818
|
tagLabel={customUi?.tagLabel}
|
|
819
|
+
bind:this={modulePreviewResultViewer}
|
|
824
820
|
/>
|
|
825
821
|
</Pane>
|
|
826
822
|
{/if}
|
|
@@ -11,40 +11,50 @@ const { flowStateStore, flowStore, previewArgs } = getContext('FlowEditorContext
|
|
|
11
11
|
let { flowModule = $bindable() } = $props();
|
|
12
12
|
let editor = $state(undefined);
|
|
13
13
|
let stepPropPicker = $derived(getStepPropPicker(flowStateStore.val, undefined, undefined, flowModule.id, flowStore.val, previewArgs.val, false));
|
|
14
|
-
function
|
|
14
|
+
function checkIfBreakableParent(flowStoreValue) {
|
|
15
15
|
const flow = JSON.parse(JSON.stringify(flowStoreValue));
|
|
16
16
|
const parents = dfs(flowModule.id, flow, true);
|
|
17
17
|
for (const parent of parents.slice(1)) {
|
|
18
18
|
if (parent.value.type === 'forloopflow' || parent.value.type === 'whileloopflow') {
|
|
19
|
-
return parent.id;
|
|
19
|
+
return { stepId: parent.id, isParallel: parent.value.parallel ?? false, type: 'loop' };
|
|
20
|
+
}
|
|
21
|
+
else if (parent.value.type === 'branchall' && parent.value.parallel) {
|
|
22
|
+
return { stepId: parent.id, isParallel: true, type: 'branchall' };
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
25
|
return null;
|
|
23
26
|
}
|
|
24
27
|
let raise_error_message_stop_after_all_if = $state(flowModule.stop_after_all_iters_if?.error_message !== undefined);
|
|
25
28
|
let raise_error_message_stop_after_if = $state(flowModule.stop_after_if?.error_message !== undefined);
|
|
26
|
-
let isLoop = $derived(flowModule.value.type === 'forloopflow' || flowModule.value.type === 'whileloopflow'
|
|
29
|
+
let { isLoop, isParallelLoop } = $derived(flowModule.value.type === 'forloopflow' || flowModule.value.type === 'whileloopflow'
|
|
30
|
+
? { isLoop: true, isParallelLoop: flowModule.value.parallel ?? false }
|
|
31
|
+
: { isLoop: false, isParallelLoop: false });
|
|
27
32
|
let isBranchAll = $derived(flowModule.value.type === 'branchall');
|
|
28
33
|
let isStopAfterIfEnabled = $derived(Boolean(flowModule.stop_after_if));
|
|
29
34
|
let isStopAfterAllIterationsEnabled = $derived(Boolean(flowModule.stop_after_all_iters_if));
|
|
30
35
|
let result = $derived(flowStateStore.val[flowModule.id]?.previewResult ?? NEVER_TESTED_THIS_FAR);
|
|
31
|
-
let
|
|
36
|
+
let breakableParent = $derived(checkIfBreakableParent(flowStore.val));
|
|
32
37
|
</script>
|
|
33
38
|
|
|
34
39
|
<div class="flex flex-col items-start space-y-2">
|
|
35
|
-
{#if !isBranchAll}
|
|
40
|
+
{#if !isBranchAll && !isParallelLoop}
|
|
36
41
|
<Section
|
|
37
42
|
label={(isLoop
|
|
38
43
|
? 'Break loop'
|
|
39
|
-
:
|
|
40
|
-
?
|
|
44
|
+
: breakableParent
|
|
45
|
+
? breakableParent.isParallel
|
|
46
|
+
? breakableParent.type === 'loop'
|
|
47
|
+
? 'Skip rest of steps in iteration'
|
|
48
|
+
: 'Skip rest of steps in branch'
|
|
49
|
+
: 'Break parent loop module ' + breakableParent.stepId
|
|
41
50
|
: 'Stop flow early') + (isLoop ? ' (evaluated after each iteration)' : '')}
|
|
42
51
|
class="w-full"
|
|
43
52
|
>
|
|
44
53
|
{#snippet header()}
|
|
45
54
|
<Tooltip documentationLink="https://www.windmill.dev/docs/flows/early_stop">
|
|
46
55
|
If defined, at the end of the step, the predicate expression will be evaluated to decide
|
|
47
|
-
if the flow should stop early
|
|
56
|
+
if the flow should stop early, skip rest of steps in iteration/branch if inside a parallel
|
|
57
|
+
for loop or branch all, or break if inside a for/while loop or branch all.
|
|
48
58
|
</Tooltip>
|
|
49
59
|
{/snippet}
|
|
50
60
|
|
|
@@ -64,8 +74,12 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
|
|
|
64
74
|
options={{
|
|
65
75
|
right: isLoop
|
|
66
76
|
? 'Break loop'
|
|
67
|
-
:
|
|
68
|
-
?
|
|
77
|
+
: breakableParent
|
|
78
|
+
? breakableParent.isParallel
|
|
79
|
+
? breakableParent.type === 'loop'
|
|
80
|
+
? 'Skip rest of steps in iteration'
|
|
81
|
+
: 'Skip rest of steps in branch'
|
|
82
|
+
: 'Break parent loop module'
|
|
69
83
|
: 'Stop flow if condition met'
|
|
70
84
|
}}
|
|
71
85
|
/>
|
|
@@ -83,7 +97,7 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
|
|
|
83
97
|
? result
|
|
84
98
|
: undefined
|
|
85
99
|
: result}
|
|
86
|
-
{#if !
|
|
100
|
+
{#if !breakableParent && !isLoop}
|
|
87
101
|
<div class="flex flex-col gap-2">
|
|
88
102
|
<Toggle
|
|
89
103
|
size="xs"
|
|
@@ -140,15 +154,17 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
|
|
|
140
154
|
</PropPickerWrapper>
|
|
141
155
|
</div>
|
|
142
156
|
{:else}
|
|
143
|
-
{#if !
|
|
157
|
+
{#if !breakableParent && !isLoop}
|
|
144
158
|
<div class="flex flex-col gap-2">
|
|
145
159
|
<Toggle
|
|
160
|
+
disabled
|
|
146
161
|
size="xs"
|
|
147
162
|
options={{
|
|
148
163
|
right: 'Label flow as "skipped" if stopped'
|
|
149
164
|
}}
|
|
150
165
|
/>
|
|
151
166
|
<Toggle
|
|
167
|
+
disabled
|
|
152
168
|
size="xs"
|
|
153
169
|
options={{
|
|
154
170
|
right: 'Raise an error message if stopped'
|
|
@@ -165,7 +181,13 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
|
|
|
165
181
|
|
|
166
182
|
{#if isLoop || isBranchAll}
|
|
167
183
|
<Section
|
|
168
|
-
label={(
|
|
184
|
+
label={(breakableParent
|
|
185
|
+
? breakableParent.isParallel
|
|
186
|
+
? breakableParent.type === 'loop'
|
|
187
|
+
? 'Skip rest of steps in iteration'
|
|
188
|
+
: 'Skip rest of steps in branch'
|
|
189
|
+
: 'Break parent loop module ' + breakableParent.stepId
|
|
190
|
+
: 'Stop flow early') +
|
|
169
191
|
(isBranchAll
|
|
170
192
|
? ' (evaluated after all branches have been run)'
|
|
171
193
|
: ' (evaluated after all iterations)')}
|
|
@@ -174,7 +196,8 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
|
|
|
174
196
|
{#snippet header()}
|
|
175
197
|
<Tooltip documentationLink="https://www.windmill.dev/docs/flows/early_stop">
|
|
176
198
|
If defined, at the end of the step, the predicate expression will be evaluated to decide
|
|
177
|
-
if the flow should stop early
|
|
199
|
+
if the flow should stop early, skip rest of steps in iteration/branch if inside a parallel
|
|
200
|
+
for loop or branch all, or break if inside a for/while loop or branch all.
|
|
178
201
|
</Tooltip>
|
|
179
202
|
{/snippet}
|
|
180
203
|
|
|
@@ -192,7 +215,14 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
|
|
|
192
215
|
}
|
|
193
216
|
}}
|
|
194
217
|
options={{
|
|
195
|
-
right:
|
|
218
|
+
right:
|
|
219
|
+
(breakableParent
|
|
220
|
+
? breakableParent.isParallel
|
|
221
|
+
? breakableParent.type === 'loop'
|
|
222
|
+
? 'Skip rest of steps in iteration'
|
|
223
|
+
: 'Skip rest of steps in branch'
|
|
224
|
+
: 'Break parent loop module ' + breakableParent.stepId
|
|
225
|
+
: 'Stop flow') + ' if condition met'
|
|
196
226
|
}}
|
|
197
227
|
/>
|
|
198
228
|
|
|
@@ -202,7 +232,7 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
|
|
|
202
232
|
: 'bg-surface-secondary'}"
|
|
203
233
|
>
|
|
204
234
|
{#if flowModule.stop_after_all_iters_if}
|
|
205
|
-
{#if !
|
|
235
|
+
{#if !breakableParent}
|
|
206
236
|
<div class="flex flex-col gap-2">
|
|
207
237
|
<Toggle
|
|
208
238
|
size="xs"
|
|
@@ -258,7 +288,7 @@ let parentLoopId = $derived(checkIfParentLoop(flowStore.val));
|
|
|
258
288
|
</PropPickerWrapper>
|
|
259
289
|
</div>
|
|
260
290
|
{:else}
|
|
261
|
-
{#if !
|
|
291
|
+
{#if !breakableParent}
|
|
262
292
|
<div class="flex flex-col gap-2">
|
|
263
293
|
<Toggle
|
|
264
294
|
disabled
|
|
@@ -7,13 +7,15 @@ import PropPickerWrapper from '../propPicker/PropPickerWrapper.svelte';
|
|
|
7
7
|
import { SecondsInput } from '../../common';
|
|
8
8
|
import Section from '../../Section.svelte';
|
|
9
9
|
import Label from '../../Label.svelte';
|
|
10
|
+
import { getStepPropPicker } from '../previousResults';
|
|
10
11
|
let { flowModule = $bindable(), previousModuleId } = $props();
|
|
11
|
-
const { selectedId, flowStateStore } = getContext('FlowEditorContext');
|
|
12
|
+
const { selectedId, flowStore, flowStateStore, previewArgs } = getContext('FlowEditorContext');
|
|
12
13
|
let schema = $state(emptySchema());
|
|
13
14
|
schema.properties['sleep'] = {
|
|
14
15
|
type: 'number'
|
|
15
16
|
};
|
|
16
17
|
let editor = $state(undefined);
|
|
18
|
+
let stepPropPicker = $derived(getStepPropPicker(flowStateStore.val, undefined, undefined, flowModule.id, flowStore.val, previewArgs.val, false));
|
|
17
19
|
const result = flowStateStore.val[$selectedId]?.previewResult ?? {};
|
|
18
20
|
let isSleepEnabled = $derived(Boolean(flowModule.sleep));
|
|
19
21
|
</script>
|
|
@@ -47,6 +49,7 @@ let isSleepEnabled = $derived(Boolean(flowModule.sleep));
|
|
|
47
49
|
<div class="border">
|
|
48
50
|
<PropPickerWrapper
|
|
49
51
|
noFlowPlugConnect={true}
|
|
52
|
+
flow_input={stepPropPicker.pickableProperties.flow_input}
|
|
50
53
|
notSelectable
|
|
51
54
|
{result}
|
|
52
55
|
displayContext={false}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import
|
|
2
|
-
import Toggle from '../../Toggle.svelte';
|
|
1
|
+
<script lang="ts">import Toggle from '../../Toggle.svelte';
|
|
3
2
|
import Tooltip from '../../Tooltip.svelte';
|
|
4
3
|
import InputTransformForm from '../../InputTransformForm.svelte';
|
|
5
4
|
import { getContext, tick, untrack } from 'svelte';
|
|
@@ -32,13 +31,25 @@ async function loadGroups() {
|
|
|
32
31
|
}
|
|
33
32
|
};
|
|
34
33
|
}
|
|
35
|
-
|
|
34
|
+
$effect(() => {
|
|
36
35
|
if ($workspaceStore && allUserGroups.length === 0) {
|
|
37
36
|
untrack(() => {
|
|
38
37
|
loadGroups();
|
|
39
38
|
});
|
|
40
39
|
}
|
|
41
40
|
});
|
|
41
|
+
$effect(() => {
|
|
42
|
+
// If the schema is empty, remove the form
|
|
43
|
+
if (Object.keys(flowModule?.suspend?.resume_form?.schema?.properties ?? {}).length === 0) {
|
|
44
|
+
untrack(() => {
|
|
45
|
+
tick().then(() => {
|
|
46
|
+
if (!flowModule.suspend)
|
|
47
|
+
return;
|
|
48
|
+
flowModule.suspend.resume_form = undefined;
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
42
53
|
let jsonView = $state(false);
|
|
43
54
|
</script>
|
|
44
55
|
|
|
@@ -216,21 +227,7 @@ let jsonView = $state(false);
|
|
|
216
227
|
<div class="grid grid-cols-4 mt-4 gap-8">
|
|
217
228
|
<div class="col-span-2">
|
|
218
229
|
{#if flowModule?.suspend?.resume_form}
|
|
219
|
-
<EditableSchemaDrawer
|
|
220
|
-
bind:schema={flowModule.suspend.resume_form.schema}
|
|
221
|
-
on:change={(e) => {
|
|
222
|
-
const schema = e.detail
|
|
223
|
-
|
|
224
|
-
// If the schema is empty, remove the form
|
|
225
|
-
if (Object.keys(schema?.properties ?? {}).length === 0) {
|
|
226
|
-
tick().then(() => {
|
|
227
|
-
if (!flowModule.suspend) return
|
|
228
|
-
flowModule.suspend.resume_form = undefined
|
|
229
|
-
})
|
|
230
|
-
}
|
|
231
|
-
}}
|
|
232
|
-
{jsonView}
|
|
233
|
-
/>
|
|
230
|
+
<EditableSchemaDrawer bind:schema={flowModule.suspend.resume_form.schema} {jsonView} />
|
|
234
231
|
{:else if emptyString($enterpriseLicense)}
|
|
235
232
|
<Alert type="warning" title="Adding a form to the approval page is an EE feature" />
|
|
236
233
|
{:else}
|