windmill-components 1.642.0 → 1.655.1
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/aiStore.d.ts +1 -0
- package/package/aiStore.js +3 -0
- package/package/components/ApiConnectForm.svelte +7 -0
- package/package/components/ApiConnectForm.svelte.d.ts +1 -1
- package/package/components/AppConnectDrawer.svelte +18 -15
- package/package/components/AppConnectDrawer.svelte.d.ts +5 -5
- package/package/components/AppConnectInner.svelte +2 -0
- package/package/components/AppConnectLightweightResourcePicker.svelte +3 -3
- package/package/components/AppWrapper.svelte +3 -2
- package/package/components/ArgInput.svelte +1 -0
- package/package/components/AutheliaSetting.svelte +9 -6
- package/package/components/AutheliaSetting.svelte.d.ts +4 -18
- package/package/components/AuthentikSetting.svelte +10 -7
- package/package/components/AuthentikSetting.svelte.d.ts +4 -18
- package/package/components/AzureOauthSettings.svelte +23 -23
- package/package/components/AzureOauthSettings.svelte.d.ts +4 -18
- package/package/components/Badge.svelte +2 -4
- package/package/components/Badge.svelte.d.ts +5 -27
- package/package/components/ChangeInstanceUsernameInner.svelte +4 -7
- package/package/components/ChangeInstanceUsernameInner.svelte.d.ts +8 -7
- package/package/components/ChannelSelector.svelte +19 -15
- package/package/components/CompareWorkspaces.svelte +618 -650
- package/package/components/ContextualVariableEditor.svelte +8 -8
- package/package/components/ContextualVariableEditor.svelte.d.ts +3 -6
- package/package/components/CustomOauth.svelte +19 -23
- package/package/components/CustomOauth.svelte.d.ts +4 -26
- package/package/components/CustomPopover.svelte +3 -2
- package/package/components/CustomSso.svelte +20 -25
- package/package/components/CustomSso.svelte.d.ts +4 -27
- package/package/components/DBManagerDrawer.svelte +26 -44
- package/package/components/DBManagerDrawer.svelte.d.ts +3 -5
- package/package/components/DBSchemaExplorer.svelte +3 -3
- package/package/components/DBTableEditor.svelte +6 -6
- package/package/components/DatatablePicker.svelte +1 -3
- package/package/components/DateInput.svelte +1 -0
- package/package/components/DateTimeInput.svelte +1 -0
- package/package/components/DefaultScripts.svelte +3 -5
- package/package/components/DefaultScripts.svelte.d.ts +6 -20
- package/package/components/DefaultScriptsInner.svelte +4 -4
- package/package/components/DefaultScriptsInner.svelte.d.ts +4 -18
- package/package/components/DeployWorkspace.svelte +222 -470
- package/package/components/DeployWorkspaceDrawer.svelte +1 -10
- package/package/components/Description.svelte +3 -3
- package/package/components/Description.svelte.d.ts +6 -28
- package/package/components/Dev.svelte +15 -14
- package/package/components/DiffEditor.svelte +2 -2
- package/package/components/DisplayResult.svelte.d.ts +1 -1
- package/package/components/DropdownSubmenuItem.svelte +3 -2
- package/package/components/DropdownV2.svelte +1 -1
- package/package/components/DropdownV2.svelte.d.ts +2 -2
- package/package/components/DropdownV2Inner.svelte +3 -0
- package/package/components/DucklakePicker.svelte +1 -3
- package/package/components/DurationMs.svelte +1 -3
- package/package/components/DurationMs.svelte.d.ts +4 -18
- package/package/components/DynamicInput.svelte +2 -2
- package/package/components/EditableSchemaForm.svelte +4 -4
- package/package/components/Editor.svelte +9 -11
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/EditorBar.svelte.d.ts +1 -1
- package/package/components/ExecutionDuration.svelte +12 -20
- package/package/components/ExecutionDuration.svelte.d.ts +14 -24
- package/package/components/ExploreAssetButton.svelte +13 -6
- package/package/components/ExploreAssetButton.svelte.d.ts +0 -2
- package/package/components/FakeMonacoPlaceHolder.svelte +3 -2
- package/package/components/FieldHeader.svelte +6 -16
- package/package/components/FieldHeader.svelte.d.ts +5 -20
- package/package/components/FilesetEditor.svelte +23 -0
- package/package/components/FilterSearchbar.svelte +44 -11
- package/package/components/FilterSearchbar.svelte.d.ts +1 -0
- package/package/components/FlowBuilder.svelte +47 -28
- package/package/components/FlowGraphViewer.svelte +1 -10
- package/package/components/FlowGraphViewer.svelte.d.ts +17 -16
- package/package/components/FlowGraphViewerStep.svelte +5 -7
- package/package/components/FlowGraphViewerStep.svelte.d.ts +4 -18
- package/package/components/FlowHistoryJobPicker.svelte +4 -2
- package/package/components/FlowHistoryJobPicker.svelte.d.ts +1 -0
- package/package/components/FlowInputViewer.svelte +1 -1
- package/package/components/FlowInputViewer.svelte.d.ts +4 -18
- package/package/components/FlowLogViewer.svelte +6 -4
- package/package/components/FlowLogViewerWrapper.svelte +2 -2
- package/package/components/FlowPlugConnect.svelte +1 -3
- package/package/components/FlowPlugConnect.svelte.d.ts +7 -6
- package/package/components/FlowPreviewContent.svelte +111 -6
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -0
- package/package/components/FlowStatusViewer.svelte +6 -6
- package/package/components/FlowStatusViewerInner.svelte +99 -86
- package/package/components/FlowViewer.svelte +6 -4
- package/package/components/FlowWrapper.svelte +5 -4
- package/package/components/FolderEditor.svelte +9 -7
- package/package/components/FolderUsageInfo.svelte +7 -6
- package/package/components/FolderUsageInfo.svelte.d.ts +5 -19
- package/package/components/GraphqlSchemaViewer.svelte +3 -3
- package/package/components/GraphqlSchemaViewer.svelte.d.ts +5 -19
- package/package/components/GroupEditor.svelte +22 -10
- package/package/components/IdEditorInput.svelte +3 -2
- package/package/components/InputTransformForm.svelte +2 -0
- package/package/components/InputTransformSchemaForm.svelte.d.ts +1 -1
- package/package/components/InputTransformsViewer.svelte +2 -2
- package/package/components/InputTransformsViewer.svelte.d.ts +4 -18
- package/package/components/InstanceGroupEditor.svelte +28 -23
- package/package/components/InstanceGroupEditor.svelte.d.ts +5 -4
- package/package/components/InstanceNameEditor.svelte +19 -19
- package/package/components/InstanceNameEditor.svelte.d.ts +9 -9
- package/package/components/InstanceSetting.svelte +8 -2
- package/package/components/InstanceSettings.svelte +36 -22
- package/package/components/InviteGlobalUser.svelte +4 -4
- package/package/components/InviteGlobalUser.svelte.d.ts +5 -4
- package/package/components/JobLoader.svelte +51 -1
- package/package/components/KanidmSetting.svelte +15 -12
- package/package/components/KanidmSetting.svelte.d.ts +4 -18
- package/package/components/KeycloakSetting.svelte +18 -9
- package/package/components/KeycloakSetting.svelte.d.ts +4 -18
- package/package/components/LogId.svelte +5 -2
- package/package/components/LogId.svelte.d.ts +4 -18
- package/package/components/LogSnippetViewer.svelte +5 -5
- package/package/components/LogSnippetViewer.svelte.d.ts +5 -20
- package/package/components/LogViewer.svelte +2 -2
- package/package/components/ManualPopover.svelte +4 -1
- package/package/components/MapResult.svelte +33 -33
- package/package/components/MapResult.svelte.d.ts +13 -26
- package/package/components/MemoryFootprintViewer.svelte +8 -6
- package/package/components/MemoryFootprintViewer.svelte.d.ts +4 -18
- package/package/components/ModulePreview.svelte.d.ts +1 -1
- package/package/components/ModuleStatus.svelte +1 -3
- package/package/components/ModuleStatus.svelte.d.ts +5 -19
- package/package/components/ModuleTest.svelte +3 -3
- package/package/components/ModuleTest.svelte.d.ts +1 -1
- package/package/components/OAuthSetting.svelte +57 -41
- package/package/components/OauthExtraParams.svelte +9 -4
- package/package/components/OauthExtraParams.svelte.d.ts +4 -18
- package/package/components/OauthScopes.svelte +9 -4
- package/package/components/OauthScopes.svelte.d.ts +4 -18
- package/package/components/ObjectResourceInput.svelte +10 -3
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/OnBehalfOfSelector.svelte +191 -0
- package/package/components/OnBehalfOfSelector.svelte.d.ts +21 -0
- package/package/components/PageHeader.svelte +3 -7
- package/package/components/PageHeader.svelte.d.ts +5 -27
- package/package/components/ParqetCsvTableRenderer.svelte +12 -12
- package/package/components/ParqetCsvTableRenderer.svelte.d.ts +4 -18
- package/package/components/PermissionHistory.svelte +8 -6
- package/package/components/PersistentScriptDrawer.svelte +56 -50
- package/package/components/PersistentScriptDrawer.svelte.d.ts +3 -5
- package/package/components/Popover.svelte +2 -2
- package/package/components/PrefixedInput.svelte +2 -2
- package/package/components/QueueMetricsDrawer.svelte +1 -1
- package/package/components/QueueMetricsDrawer.svelte.d.ts +3 -20
- package/package/components/QueueMetricsDrawerInner.svelte +14 -9
- package/package/components/QueueMetricsDrawerInner.svelte.d.ts +2 -17
- package/package/components/RadioButton.svelte +3 -8
- package/package/components/RadioButton.svelte.d.ts +13 -12
- package/package/components/Range.svelte +15 -18
- package/package/components/Range.svelte.d.ts +5 -21
- package/package/components/RepositorySelector.svelte +3 -2
- package/package/components/Required.svelte +4 -4
- package/package/components/Required.svelte.d.ts +6 -20
- package/package/components/ResourceEditor.svelte +22 -5
- package/package/components/ResourceEditor.svelte.d.ts +0 -1
- package/package/components/ResourceEditorDrawer.svelte +11 -16
- package/package/components/ResourceEditorDrawer.svelte.d.ts +3 -6
- package/package/components/ResourcePicker.svelte +35 -17
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +2 -2
- package/package/components/RunFormAdvancedPopup.svelte +1 -4
- package/package/components/RunFormAdvancedPopup.svelte.d.ts +4 -18
- package/package/components/RunsPage.svelte +126 -27
- package/package/components/S3FilePicker.svelte +2 -1
- package/package/components/S3FilePicker.svelte.d.ts +1 -0
- package/package/components/S3FilePickerInner.svelte +19 -7
- package/package/components/S3FilePickerInner.svelte.d.ts +1 -0
- package/package/components/S3ObjectPicker.svelte +4 -5
- package/package/components/S3ObjectPicker.svelte.d.ts +6 -6
- package/package/components/SaveButton.svelte +2 -0
- package/package/components/SaveInputsButton.svelte +2 -7
- package/package/components/SaveInputsButton.svelte.d.ts +10 -9
- package/package/components/SavedInputsPickerViewer.svelte +21 -22
- package/package/components/SavedInputsPickerViewer.svelte.d.ts +10 -10
- package/package/components/SchemaEditorProperty.svelte +1 -1
- package/package/components/SchemaEditorProperty.svelte.d.ts +4 -18
- package/package/components/SchemaForm.svelte.d.ts +1 -1
- package/package/components/ScriptBuilder.svelte +113 -30
- package/package/components/ScriptEditor.svelte +90 -34
- package/package/components/ScriptEditor.svelte.d.ts +2 -2
- package/package/components/ScriptPicker.svelte +1 -1
- package/package/components/ScriptWrapper.svelte +3 -2
- package/package/components/Scrollable.svelte +10 -10
- package/package/components/Scrollable.svelte.d.ts +6 -29
- package/package/components/SearchItems.svelte +1 -1
- package/package/components/ServiceLogsInner.svelte +15 -9
- package/package/components/ShareModal.svelte +15 -8
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleEditor.svelte +1 -1
- package/package/components/Slider.svelte +2 -5
- package/package/components/Slider.svelte.d.ts +6 -28
- package/package/components/StringTypeNarrowing.svelte +3 -2
- package/package/components/Subsection.svelte +3 -2
- package/package/components/Summary.svelte +1 -2
- package/package/components/Summary.svelte.d.ts +4 -18
- package/package/components/SupabaseConnect.svelte +20 -17
- package/package/components/SupabaseConnect.svelte.d.ts +3 -5
- package/package/components/SuperadminSettings.svelte +11 -9
- package/package/components/SuperadminSettingsInner.svelte +3 -3
- package/package/components/TableCustom.svelte +6 -8
- package/package/components/TableCustom.svelte.d.ts +10 -10
- package/package/components/TeamSelector.svelte +20 -14
- package/package/components/TemplateEditor.svelte +1 -7
- package/package/components/TestConnection.svelte +2 -5
- package/package/components/TestConnection.svelte.d.ts +4 -18
- package/package/components/TimelineBar.svelte +5 -2
- package/package/components/Toast.svelte +2 -2
- package/package/components/Toggle.svelte +2 -2
- package/package/components/Tooltip.svelte +3 -16
- package/package/components/Tooltip.svelte.d.ts +4 -1
- package/package/components/TooltipInner.svelte +3 -14
- package/package/components/TooltipInner.svelte.d.ts +5 -28
- package/package/components/Uptodate.svelte +1 -1
- package/package/components/Uptodate.svelte.d.ts +2 -17
- package/package/components/Urlize.svelte +2 -2
- package/package/components/Urlize.svelte.d.ts +4 -18
- package/package/components/Version.svelte +1 -1
- package/package/components/Version.svelte.d.ts +2 -17
- package/package/components/WhitelistIp.svelte +1 -1
- package/package/components/WhitelistIp.svelte.d.ts +2 -17
- package/package/components/WorkerGroup.svelte +1 -5
- package/package/components/WorkerRepl.svelte +1 -2
- package/package/components/WorkflowTimeline.svelte +10 -14
- package/package/components/WorkflowTimeline.svelte.d.ts +4 -18
- package/package/components/WorkspaceDependenciesEditor.svelte +1 -1
- package/package/components/WorkspaceDeployLayout.svelte +107 -0
- package/package/components/WorkspaceDeployLayout.svelte.d.ts +31 -0
- package/package/components/ZitadelSetting.svelte +9 -6
- package/package/components/ZitadelSetting.svelte.d.ts +4 -18
- package/package/components/apps/components/GroupWrapper.svelte +5 -2
- package/package/components/apps/components/buttons/AppButton.svelte +6 -5
- package/package/components/apps/components/buttons/AppForm.svelte +5 -5
- package/package/components/apps/components/buttons/AppFormButton.svelte +5 -5
- package/package/components/apps/components/buttons/AppSchemaForm.svelte +5 -4
- package/package/components/apps/components/display/AppAccordionList.svelte +4 -4
- package/package/components/apps/components/display/AppAlert.svelte +4 -4
- package/package/components/apps/components/display/AppBarChart.svelte +4 -4
- package/package/components/apps/components/display/AppCarouselList.svelte +5 -5
- package/package/components/apps/components/display/AppChartJs.svelte +4 -4
- package/package/components/apps/components/display/AppChartJsV2.svelte +4 -4
- package/package/components/apps/components/display/AppChat.svelte +5 -5
- package/package/components/apps/components/display/AppCustomComponent.svelte +3 -3
- package/package/components/apps/components/display/AppDisplayComponent.svelte +5 -5
- package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +3 -3
- package/package/components/apps/components/display/AppDownload.svelte +3 -3
- package/package/components/apps/components/display/AppHtml.svelte +4 -3
- package/package/components/apps/components/display/AppIcon.svelte +4 -4
- package/package/components/apps/components/display/AppImage.svelte +4 -4
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +4 -4
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +3 -3
- package/package/components/apps/components/display/AppJobProgressBar.svelte +3 -3
- package/package/components/apps/components/display/AppMap.svelte +6 -4
- package/package/components/apps/components/display/AppMarkdown.svelte +5 -4
- package/package/components/apps/components/display/AppMenu.svelte +4 -3
- package/package/components/apps/components/display/AppNavbar.svelte +4 -4
- package/package/components/apps/components/display/AppPdf.svelte +3 -3
- package/package/components/apps/components/display/AppPieChart.svelte +3 -3
- package/package/components/apps/components/display/AppRecomputeAll.svelte +3 -3
- package/package/components/apps/components/display/AppScatterChart.svelte +3 -3
- package/package/components/apps/components/display/AppStatCard.svelte +3 -3
- package/package/components/apps/components/display/AppText.svelte +10 -8
- package/package/components/apps/components/display/AppTimeseries.svelte +3 -3
- package/package/components/apps/components/display/InsertRowDrawerButton.svelte +1 -1
- package/package/components/apps/components/display/PlotlyHtml.svelte +3 -2
- package/package/components/apps/components/display/PlotlyHtmlV2.svelte +3 -2
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte +3 -2
- package/package/components/apps/components/display/VegaLiteHtml.svelte +3 -2
- package/package/components/apps/components/display/charts/AppAgCharts.svelte +3 -3
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +2 -2
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +3 -3
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +2 -2
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +2 -2
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +2 -2
- package/package/components/apps/components/display/dbtable/metadata.js +9 -4
- package/package/components/apps/components/display/dbtable/utils.d.ts +3 -3
- package/package/components/apps/components/display/dbtable/utils.js +3 -3
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +8 -4
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +1 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
- package/package/components/apps/components/display/table/AppAggridTable.svelte +4 -3
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +3 -3
- package/package/components/apps/components/display/table/AppTable.svelte +4 -4
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -2
- package/package/components/apps/components/helpers/InputValue.svelte +3 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +2 -2
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
- package/package/components/apps/components/inputs/AppCheckbox.svelte +6 -6
- package/package/components/apps/components/inputs/AppCodeInputComponent.svelte +6 -5
- package/package/components/apps/components/inputs/AppDateInput.svelte +4 -4
- package/package/components/apps/components/inputs/AppDateSelect.svelte +4 -4
- package/package/components/apps/components/inputs/AppDateSliderInput.svelte +5 -4
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +4 -4
- package/package/components/apps/components/inputs/AppFileInput.svelte +4 -4
- package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +5 -4
- package/package/components/apps/components/inputs/AppNumberInput.svelte +4 -4
- package/package/components/apps/components/inputs/AppQuillEditor.svelte +3 -2
- package/package/components/apps/components/inputs/AppRangeInput.svelte +5 -4
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +4 -4
- package/package/components/apps/components/inputs/AppSelect.svelte +8 -7
- package/package/components/apps/components/inputs/AppSelectStep.svelte +5 -4
- package/package/components/apps/components/inputs/AppSelectTab.svelte +4 -4
- package/package/components/apps/components/inputs/AppSliderInputs.svelte +5 -4
- package/package/components/apps/components/inputs/AppTextInput.svelte +4 -4
- package/package/components/apps/components/inputs/AppTimeInput.svelte +4 -4
- package/package/components/apps/components/inputs/AppUserResource.svelte +4 -4
- package/package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +5 -4
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +3 -1
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +5 -5
- package/package/components/apps/components/layout/AppContainer.svelte +3 -3
- package/package/components/apps/components/layout/AppDecisionTree.svelte +5 -5
- package/package/components/apps/components/layout/AppDivider.svelte +3 -3
- package/package/components/apps/components/layout/AppDrawer.svelte +7 -6
- package/package/components/apps/components/layout/AppList.svelte +5 -5
- package/package/components/apps/components/layout/AppModal.svelte +7 -6
- package/package/components/apps/components/layout/AppSplitpanes.svelte +8 -6
- package/package/components/apps/components/layout/AppStepper.svelte +6 -6
- package/package/components/apps/components/layout/AppTabs.svelte +8 -8
- package/package/components/apps/components/layout/ListWrapper.svelte +6 -2
- package/package/components/apps/components/layout/RowWrapper.svelte +6 -2
- package/package/components/apps/editor/AppEditor.svelte +11 -11
- package/package/components/apps/editor/AppEditorHeader.svelte +21 -4
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +41 -1
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -1
- package/package/components/apps/editor/AppExportButton.svelte +4 -4
- package/package/components/apps/editor/AppExportButton.svelte.d.ts +3 -20
- package/package/components/apps/editor/AppInputs.svelte +1 -1
- package/package/components/apps/editor/AppInputs.svelte.d.ts +2 -17
- package/package/components/apps/editor/AppJsonEditor.svelte +5 -5
- package/package/components/apps/editor/AppJsonEditor.svelte.d.ts +3 -7
- package/package/components/apps/editor/AppPreview.svelte +17 -16
- package/package/components/apps/editor/ComponentHeader.svelte +1 -1
- package/package/components/apps/editor/DecisionTreeDebug.svelte +4 -4
- package/package/components/apps/editor/GridEditor.svelte +1 -0
- package/package/components/apps/editor/GridViewer.svelte +3 -3
- package/package/components/apps/editor/RecomputeAllComponents.svelte +13 -8
- package/package/components/apps/editor/RecomputeAllComponents.svelte.d.ts +2 -17
- package/package/components/apps/editor/SubGridEditor.svelte +4 -2
- package/package/components/apps/editor/appPolicy.js +1 -1
- package/package/components/apps/editor/commonAppUtils.d.ts +1 -1
- package/package/components/apps/editor/commonAppUtils.js +1 -1
- package/package/components/apps/editor/component/Component.svelte +2 -2
- package/package/components/apps/editor/component/components.d.ts +8 -2
- package/package/components/apps/editor/component/components.js +26 -39
- package/package/components/apps/editor/componentsPanel/CssHelperPanel.svelte +10 -7
- package/package/components/apps/editor/componentsPanel/CssHelperPanel.svelte.d.ts +1 -1
- package/package/components/apps/editor/componentsPanel/CustomComponentsList.svelte +7 -7
- package/package/components/apps/editor/componentsPanel/CustomComponentsList.svelte.d.ts +1 -1
- package/package/components/apps/editor/componentsPanel/NameEditor.svelte +2 -2
- package/package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +3 -4
- package/package/components/apps/editor/componentsPanel/QuickStyleProperty.svelte +3 -3
- package/package/components/apps/editor/componentsPanel/ThemeList.svelte +5 -5
- package/package/components/apps/editor/componentsPanel/ThemeList.svelte.d.ts +1 -1
- package/package/components/apps/editor/componentsPanel/ThemeNameEditor.svelte +2 -2
- package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -2
- package/package/components/apps/editor/contextPanel/DebugPanel.svelte +4 -4
- package/package/components/apps/editor/contextPanel/DebugPanel.svelte.d.ts +2 -17
- package/package/components/apps/editor/contextPanel/components/Output.svelte +6 -1
- package/package/components/apps/editor/contextPanel/components/Output.svelte.d.ts +1 -0
- package/package/components/apps/editor/contextPanel/components/TableActionsOutput.svelte +14 -2
- package/package/components/apps/editor/settingsPanel/ComponentControl.svelte +3 -2
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +6 -6
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +4 -4
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +0 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -2
- package/package/components/apps/editor/settingsPanel/common/PanelSection.svelte +3 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +6 -5
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +3 -2
- package/package/components/apps/svelte-grid/Grid.svelte +4 -4
- package/package/components/apps/svelte-grid/MoveResize.svelte +5 -5
- package/package/components/assets/AssetButtons.svelte +31 -27
- package/package/components/assets/AssetButtons.svelte.d.ts +0 -1
- package/package/components/assets/AssetColumnBadges.svelte +5 -3
- package/package/components/assets/AssetsDropdownButton.svelte +11 -13
- package/package/components/assets/AssetsUsageDrawer.svelte +7 -5
- package/package/components/assets/JobAssetsViewer.svelte +11 -5
- package/package/components/assets/VolumeDetailDrawer.svelte +101 -0
- package/package/components/assets/VolumeDetailDrawer.svelte.d.ts +9 -0
- package/package/components/assets/VolumesDrawer.svelte +191 -0
- package/package/components/assets/VolumesDrawer.svelte.d.ts +8 -0
- package/package/components/assets/assetsFilter.d.ts +4 -0
- package/package/components/assets/assetsFilter.js +4 -0
- package/package/components/assets/lib.js +4 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte +4 -7
- package/package/components/chartjs-wrappers/Chart.svelte +4 -4
- package/package/components/common/FileProgressBar.svelte +9 -7
- package/package/components/common/FileProgressBar.svelte.d.ts +5 -27
- package/package/components/common/InlineCalendarInput.svelte +5 -1
- package/package/components/common/alert/Notification.svelte +2 -2
- package/package/components/common/alert/Notification.svelte.d.ts +4 -18
- package/package/components/common/button/AnimatedButton.svelte +3 -9
- package/package/components/common/button/AnimatedButton.svelte.d.ts +5 -27
- package/package/components/common/button/AnimatedButtonInner.svelte +6 -12
- package/package/components/common/button/AnimatedButtonInner.svelte.d.ts +5 -27
- package/package/components/common/button/Button.svelte +5 -5
- package/package/components/common/button/PulseButton.svelte +15 -19
- package/package/components/common/button/PulseButton.svelte.d.ts +10 -48
- package/package/components/common/button/RefreshButton.svelte +3 -2
- package/package/components/common/button/RefreshButton.svelte.d.ts +1 -1
- package/package/components/common/button/RoundIconButton.svelte +5 -5
- package/package/components/common/button/RoundIconButton.svelte.d.ts +6 -28
- package/package/components/common/button/UndoRedo.svelte +1 -2
- package/package/components/common/button/UndoRedo.svelte.d.ts +6 -5
- package/package/components/common/calendarPicker/CalendarPicker.svelte +44 -43
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +11 -11
- package/package/components/common/clearableInput/ClearableInput.svelte +28 -27
- package/package/components/common/clearableInput/ClearableInput.svelte.d.ts +11 -37
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
- package/package/components/common/confirmationModal/DraftTriggersConfirmationModal.svelte +2 -2
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +3 -3
- package/package/components/common/contextmenu/ContextMenu.svelte +14 -4
- package/package/components/common/contextmenu/ContextMenu.svelte.d.ts +2 -0
- package/package/components/common/contextmenu/contextMenuStyles.d.ts +4 -0
- package/package/components/common/contextmenu/contextMenuStyles.js +4 -0
- package/package/components/common/drawer/Disposable.svelte +3 -3
- package/package/components/common/fileInput/FileInput.svelte +16 -30
- package/package/components/common/fileInput/FileInput.svelte.d.ts +24 -32
- package/package/components/common/fileUpload/FileUploadModal.svelte +2 -4
- package/package/components/common/fileUpload/FileUploadModal.svelte.d.ts +7 -6
- package/package/components/common/kbd/Kbd.svelte +4 -3
- package/package/components/common/languageIcons/LanguageIcon.svelte +21 -4
- package/package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -1
- package/package/components/common/layout/ListElement.svelte +5 -1
- package/package/components/common/layout/ListElement.svelte.d.ts +5 -25
- package/package/components/common/menu/MenuItem.svelte +9 -4
- package/package/components/common/menu/MenuItem.svelte.d.ts +5 -29
- package/package/components/common/menu/ResolveOpen.svelte +6 -3
- package/package/components/common/menu/ResolveOpen.svelte.d.ts +8 -4
- package/package/components/common/modal/AlwaysMountedModal.svelte +11 -15
- package/package/components/common/modal/AlwaysMountedModal.svelte.d.ts +8 -32
- package/package/components/common/modal/Modal2.svelte +12 -20
- package/package/components/common/modal/Modal2.svelte.d.ts +10 -36
- package/package/components/common/popup/PopupV2.svelte +3 -2
- package/package/components/common/stepper/Stepper.svelte +4 -9
- package/package/components/common/stepper/Stepper.svelte.d.ts +10 -9
- package/package/components/common/table/AppRow.svelte +20 -12
- package/package/components/common/table/FlowRow.svelte +17 -9
- package/package/components/common/table/Row.svelte +6 -5
- package/package/components/common/table/Row.svelte.d.ts +2 -1
- package/package/components/common/table/RowIcon.svelte +40 -11
- package/package/components/common/table/RowIcon.svelte.d.ts +6 -18
- package/package/components/common/table/ScriptRow.svelte +37 -27
- package/package/components/common/table/Table.svelte +5 -1
- package/package/components/common/table/Table.svelte.d.ts +5 -25
- package/package/components/common/tabs/Tabs.svelte +2 -2
- package/package/components/common/tabs/TabsV2.svelte +1 -1
- package/package/components/common/toggleButton-v2/ToggleButton.svelte +0 -1
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +10 -5
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
- package/package/components/copilot/FlowCopilotInputsModal.svelte +14 -13
- package/package/components/copilot/FlowCopilotInputsModal.svelte.d.ts +6 -5
- package/package/components/copilot/MetadataGen.svelte +5 -5
- package/package/components/copilot/RegexGen.svelte +87 -80
- package/package/components/copilot/RegexGen.svelte.d.ts +1 -1
- package/package/components/copilot/ResourceGen.svelte +157 -0
- package/package/components/copilot/ResourceGen.svelte.d.ts +12 -0
- package/package/components/copilot/ScriptFix.svelte +37 -33
- package/package/components/copilot/ScriptGen.svelte +1 -1
- package/package/components/copilot/chat/AIChat.svelte +1 -1
- package/package/components/copilot/chat/AIChatDisplay.svelte +52 -48
- package/package/components/copilot/chat/AIChatInput.svelte +46 -38
- package/package/components/copilot/chat/AIChatManager.svelte.js +4 -2
- package/package/components/copilot/chat/AssistantMessage.svelte +1 -1
- package/package/components/copilot/chat/AssistantMessage.svelte.d.ts +4 -18
- package/package/components/copilot/chat/ChatMode.svelte +37 -33
- package/package/components/copilot/chat/ContextElementBadge.svelte +6 -8
- package/package/components/copilot/chat/flow/AIChangesWarningModal.svelte +8 -11
- package/package/components/copilot/lib.d.ts +3 -2
- package/package/components/copilot/lib.js +25 -29
- package/package/components/custom_ui.d.ts +3 -0
- package/package/components/dbManagerDrawerModel.svelte.d.ts +13 -0
- package/package/components/dbManagerDrawerModel.svelte.js +182 -0
- package/package/components/details/ClipboardPanel.svelte +5 -8
- package/package/components/details/ClipboardPanel.svelte.d.ts +8 -22
- package/package/components/details/ErrorHandlerToggleButton.svelte +1 -4
- package/package/components/details/ErrorHandlerToggleButton.svelte.d.ts +5 -19
- package/package/components/details/ErrorHandlerToggleButtonV2.svelte +2 -6
- package/package/components/details/ErrorHandlerToggleButtonV2.svelte.d.ts +6 -20
- package/package/components/flows/CreateActionsApp.svelte +42 -18
- package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
- package/package/components/flows/FlowAssetsHandler.svelte +3 -2
- package/package/components/flows/FlowModuleIcon.svelte +4 -3
- package/package/components/flows/common/FlowCardHeader.svelte +3 -2
- package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
- package/package/components/flows/content/DynamicInputHelpBox.svelte +1 -1
- package/package/components/flows/content/DynamicInputHelpBox.svelte.d.ts +2 -17
- package/package/components/flows/content/FlowEditorPanel.svelte +14 -1
- package/package/components/flows/content/FlowEnvironmentVariables.svelte +128 -32
- package/package/components/flows/content/FlowFailureModule.svelte +2 -3
- package/package/components/flows/content/FlowFailureModule.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowInputs.svelte +20 -2
- package/package/components/flows/content/FlowInputsQuick.svelte +21 -0
- package/package/components/flows/content/FlowLoop.svelte +2 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +2 -2
- package/package/components/flows/content/FlowModuleMockTransitionMessage.svelte +13 -13
- package/package/components/flows/content/FlowModuleMockTransitionMessage.svelte.d.ts +2 -17
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowPathViewer.svelte +7 -5
- package/package/components/flows/content/FlowPathViewer.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowPreprocessorModule.svelte +2 -3
- package/package/components/flows/content/FlowPreprocessorModule.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowSelectionPanel.svelte +34 -10
- package/package/components/flows/content/FlowSelectionPanel.svelte.d.ts +5 -0
- package/package/components/flows/content/FlowSettings.svelte +70 -22
- package/package/components/flows/content/FlowWhileLoop.svelte +2 -1
- package/package/components/flows/content/GenAiQuick.svelte +6 -6
- package/package/components/flows/content/GenAiQuick.svelte.d.ts +7 -6
- package/package/components/flows/content/ScriptEditorDrawer.svelte +5 -4
- package/package/components/flows/content/SuspendDrawer.svelte +4 -4
- package/package/components/flows/content/SuspendDrawer.svelte.d.ts +4 -18
- package/package/components/flows/flowModuleNextId.d.ts +1 -0
- package/package/components/flows/flowModuleNextId.js +11 -0
- package/package/components/flows/flowStateUtils.svelte.d.ts +1 -1
- package/package/components/flows/header/FlowPreviewButtons.svelte +10 -0
- package/package/components/flows/header/FlowYamlEditor.svelte +6 -2
- package/package/components/flows/map/FlowJobsMenu.svelte +4 -0
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +2 -2
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +65 -54
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +2 -2
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +11 -9
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +151 -17
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +3 -0
- package/package/components/flows/map/InsertModuleInner.svelte +46 -21
- package/package/components/flows/map/MapItem.svelte +22 -9
- package/package/components/flows/map/MapItem.svelte.d.ts +4 -3
- package/package/components/flows/map/VirtualItem.svelte +5 -2
- package/package/components/flows/multiSelectUtils.d.ts +26 -0
- package/package/components/flows/multiSelectUtils.js +122 -0
- package/package/components/flows/pickers/FlowScriptPicker.svelte +3 -0
- package/package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
- package/package/components/flows/pickers/FlowScriptPickerQuick.svelte +5 -6
- package/package/components/flows/pickers/FlowScriptPickerQuick.svelte.d.ts +9 -8
- package/package/components/flows/pickers/FlowToplevelNode.svelte +2 -3
- package/package/components/flows/pickers/FlowToplevelNode.svelte.d.ts +6 -5
- package/package/components/flows/pickers/PickHubApp.svelte +21 -2
- package/package/components/flows/pickers/PickHubFlow.svelte +21 -2
- package/package/components/flows/pickers/PickHubScript.svelte +12 -1
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +16 -7
- package/package/components/flows/pickers/TopLevelNode.svelte +2 -0
- package/package/components/flows/previousResults.d.ts +1 -1
- package/package/components/flows/propPicker/JobPickerLight.svelte +1 -1
- package/package/components/flows/propPicker/JobPickerLight.svelte.d.ts +4 -18
- package/package/components/flows/propPicker/OutputBadge.svelte +2 -2
- package/package/components/flows/propPicker/OutputBadge.svelte.d.ts +6 -20
- package/package/components/flows/propPicker/OutputPicker.svelte +1 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +0 -3
- package/package/components/flows/types.d.ts +2 -3
- package/package/components/git_sync/GitSyncContext.svelte.js +74 -41
- package/package/components/git_sync/GitSyncModalManager.svelte +1 -1
- package/package/components/git_sync/GitSyncModalManager.svelte.d.ts +2 -17
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +34 -17
- package/package/components/graph/DragCoordinator.svelte +63 -0
- package/package/components/graph/DragCoordinator.svelte.d.ts +12 -0
- package/package/components/graph/DragGhost.svelte +138 -0
- package/package/components/graph/DragGhost.svelte.d.ts +10 -0
- package/package/components/graph/FlowGraphV2.svelte +85 -61
- package/package/components/graph/FlowGraphV2.svelte.d.ts +9 -3
- package/package/components/graph/MiniFlowGraph.svelte +82 -0
- package/package/components/graph/MiniFlowGraph.svelte.d.ts +11 -0
- package/package/components/graph/MoveHandleButton.svelte +47 -0
- package/package/components/graph/MoveHandleButton.svelte.d.ts +13 -0
- package/package/components/graph/SelectionBoundingBox.svelte +72 -20
- package/package/components/graph/SelectionBoundingBox.svelte.d.ts +7 -0
- package/package/components/graph/SelectionTool.svelte +3 -2
- package/package/components/graph/compoundLayout.d.ts +28 -0
- package/package/components/graph/compoundLayout.js +436 -0
- package/package/components/graph/graphBuilder.svelte.d.ts +9 -22
- package/package/components/graph/graphBuilder.svelte.js +27 -41
- package/package/components/graph/graphContext.d.ts +2 -0
- package/package/components/graph/moveManager.svelte.d.ts +74 -0
- package/package/components/graph/moveManager.svelte.js +176 -0
- package/package/components/graph/noteEditor.svelte.d.ts +0 -1
- package/package/components/graph/noteManager.svelte.d.ts +4 -0
- package/package/components/graph/noteManager.svelte.js +6 -0
- package/package/components/graph/noteUtils.svelte.d.ts +0 -1
- package/package/components/graph/noteUtils.svelte.js +0 -2
- package/package/components/graph/renderers/edges/BaseEdge.svelte +65 -24
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +0 -1
- package/package/components/graph/renderers/edges/HiddenBaseEdge.svelte +1 -1
- package/package/components/graph/renderers/edges/HiddenBaseEdge.svelte.d.ts +4 -18
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +4 -4
- package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +30 -27
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +18 -14
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +50 -9
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +5 -0
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte +2 -2
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte +21 -7
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte.d.ts +4 -1
- package/package/components/graph/renderers/nodes/NoteNode.svelte +2 -2
- package/package/components/graph/renderers/nodes/SubflowBound.svelte +1 -1
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +1 -1
- package/package/components/graph/renderers/triggers/TriggerButton.svelte +6 -4
- package/package/components/graph/renderers/triggers/TriggerButton.svelte.d.ts +5 -29
- package/package/components/graph/renderers/triggers/TriggerCount.svelte +1 -1
- package/package/components/graph/renderers/triggers/TriggerCount.svelte.d.ts +4 -18
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -6
- package/package/components/graph/selectionUtils.svelte.d.ts +1 -0
- package/package/components/graph/selectionUtils.svelte.js +11 -1
- package/package/components/graph/util.d.ts +1 -4
- package/package/components/graph/util.js +3 -6
- package/package/components/graph/wacToFlow.d.ts +4 -0
- package/package/components/graph/wacToFlow.js +14 -0
- package/package/components/home/FlowIcon.svelte +2 -2
- package/package/components/home/FlowIcon.svelte.d.ts +5 -19
- package/package/components/home/ItemsList.svelte +3 -3
- package/package/components/home/ListFiltersQuick.svelte +2 -4
- package/package/components/home/ListFiltersQuick.svelte.d.ts +10 -9
- package/package/components/icons/AssetGenericIcon.svelte +3 -1
- package/package/components/icons/ClaudeIcon.svelte +20 -0
- package/package/components/icons/ClaudeIcon.svelte.d.ts +7 -0
- package/package/components/icons/RubyIcon.svelte +2 -2
- package/package/components/icons/WindmillIcon2.svelte +0 -1
- package/package/components/instanceSettings/IndexerMemorySettings.svelte +153 -20
- package/package/components/instanceSettings.js +44 -6
- package/package/components/meltComponents/MeltButton.svelte +5 -10
- package/package/components/meltComponents/MeltButton.svelte.d.ts +12 -35
- package/package/components/meltComponents/Menu.svelte +6 -6
- package/package/components/meltComponents/Menu.svelte.d.ts +2 -2
- package/package/components/meltComponents/Menubar.svelte +3 -2
- package/package/components/meltComponents/Menubar.svelte.d.ts +7 -0
- package/package/components/meltComponents/Popover.svelte +49 -73
- package/package/components/meltComponents/Popover.svelte.d.ts +40 -44
- package/package/components/meltComponents/SideBarTab.svelte +3 -2
- package/package/components/meltComponents/Tooltip.svelte +15 -21
- package/package/components/meltComponents/Tooltip.svelte.d.ts +16 -39
- package/package/components/propertyPicker/ObjectViewer.svelte +253 -165
- package/package/components/propertyPicker/ObjectViewerWrapper.svelte +16 -27
- package/package/components/propertyPicker/ObjectViewerWrapper.svelte.d.ts +16 -15
- package/package/components/propertyPicker/PropPicker.svelte +21 -53
- package/package/components/propertyPicker/PropPicker.svelte.d.ts +0 -1
- package/package/components/propertyPicker/PropPickerResult.svelte +1 -5
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +9 -8
- package/package/components/raw_apps/DefaultDatabaseSelector.svelte +40 -36
- package/package/components/raw_apps/FileTreeNode.svelte +2 -2
- package/package/components/raw_apps/RawAppEditorHeader.svelte +14 -1
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +0 -1
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +4 -4
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +0 -1
- package/package/components/raw_apps/RunnableRow.svelte +2 -2
- package/package/components/raw_apps/fileTreeUtils.js +2 -3
- package/package/components/raw_apps/utils.js +6 -1
- package/package/components/recording/FlowRecordingReplay.svelte +210 -0
- package/package/components/recording/FlowRecordingReplay.svelte.d.ts +7 -0
- package/package/components/recording/ScriptRecordingReplay.svelte +210 -0
- package/package/components/recording/ScriptRecordingReplay.svelte.d.ts +7 -0
- package/package/components/recording/flowRecording.svelte.d.ts +22 -0
- package/package/components/recording/flowRecording.svelte.js +205 -0
- package/package/components/recording/scriptRecording.svelte.d.ts +9 -0
- package/package/components/recording/scriptRecording.svelte.js +88 -0
- package/package/components/recording/types.d.ts +39 -0
- package/package/components/recording/types.js +1 -0
- package/package/components/resources/resourcesFilter.d.ts +4 -0
- package/package/components/resources/resourcesFilter.js +4 -0
- package/package/components/runs/JobRunsPreview.svelte +8 -1
- package/package/components/runs/MobileFilters.svelte +15 -10
- package/package/components/runs/MobileFilters.svelte.d.ts +4 -18
- package/package/components/runs/PreprocessedArgsDisplay.svelte +2 -10
- package/package/components/runs/PreprocessedArgsDisplay.svelte.d.ts +4 -18
- package/package/components/runs/QueuePopover.svelte +2 -2
- package/package/components/runs/QueuePopover.svelte.d.ts +4 -18
- package/package/components/runs/RunBadges.svelte +2 -2
- package/package/components/runs/RunsTable.svelte +9 -4
- package/package/components/runs/RunsTable.svelte.d.ts +1 -0
- package/package/components/runs/TimeframeSelect.svelte +2 -32
- package/package/components/runs/TimeframeSelect.svelte.d.ts +2 -20
- package/package/components/runs/runsFilter.d.ts +18 -2
- package/package/components/runs/runsFilter.js +20 -4
- package/package/components/runs/timeframes.d.ts +20 -0
- package/package/components/runs/timeframes.js +33 -0
- package/package/components/runs/useJobsLoader.svelte.d.ts +9 -2
- package/package/components/runs/useJobsLoader.svelte.js +189 -47
- package/package/components/schedules/schedulesFilter.d.ts +4 -0
- package/package/components/schedules/schedulesFilter.js +4 -0
- package/package/components/schema/AddProperty.svelte +1 -1
- package/package/components/schema/AddProperty.svelte.d.ts +5 -6
- package/package/components/schema/AddPropertyForm.svelte +1 -1
- package/package/components/schema/AddPropertyForm.svelte.d.ts +1 -1
- package/package/components/schema/EditableSchemaSdkWrapper.svelte +3 -2
- package/package/components/schema/FlowPropertyEditor.svelte +1 -5
- package/package/components/schema/RunningJobSchemaPicker.svelte +31 -30
- package/package/components/schema/RunningJobSchemaPicker.svelte.d.ts +8 -7
- package/package/components/schema/SchemaPickerRow.svelte +3 -3
- package/package/components/scriptEditor/LogPanel.svelte +11 -2
- package/package/components/script_builder.d.ts +1 -1
- package/package/components/search/QuickMenuItem.svelte +2 -2
- package/package/components/search/RunsSearch.svelte +5 -1
- package/package/components/select/GenericDropdown.svelte +5 -2
- package/package/components/select/MultiSelect.svelte +1 -0
- package/package/components/select/Select.svelte +1 -0
- package/package/components/select/SelectDropdown.svelte +1 -1
- package/package/components/settings/ChangeWorkspaceId.svelte +14 -9
- package/package/components/settings/ChangeWorkspaceId.svelte.d.ts +4 -18
- package/package/components/settings/CreateToken.svelte +8 -20
- package/package/components/settings/PremiumInfo.svelte +36 -32
- package/package/components/settings/PremiumInfo.svelte.d.ts +4 -18
- package/package/components/settings/TokensTable.svelte +74 -14
- package/package/components/settings/WorkspaceUserSettings.svelte +0 -1
- package/package/components/sidebar/CriticalAlertModal.svelte +33 -30
- package/package/components/sidebar/CriticalAlertModal.svelte.d.ts +4 -18
- package/package/components/sidebar/CriticalAlertTable.svelte +4 -13
- package/package/components/sidebar/CriticalAlertTable.svelte.d.ts +4 -18
- package/package/components/sidebar/DarkModeToggle.svelte +2 -3
- package/package/components/sidebar/DarkModeToggle.svelte.d.ts +5 -20
- package/package/components/sidebar/FavoriteMenu.svelte +1 -1
- package/package/components/sidebar/MenuButton.svelte +2 -2
- package/package/components/sidebar/MultiplayerMenu.svelte +12 -7
- package/package/components/sidebar/MultiplayerMenu.svelte.d.ts +2 -17
- package/package/components/sidebar/SideBarNotification.svelte +1 -2
- package/package/components/sidebar/SideBarNotification.svelte.d.ts +4 -18
- package/package/components/sidebar/SidebarContent.svelte +3 -3
- package/package/components/sidebar/WorkspaceMenu.svelte +4 -4
- package/package/components/splitPanes/AnimatedPane.svelte +2 -2
- package/package/components/splitPanes/SplitPanesWrapper.svelte +11 -15
- package/package/components/splitPanes/SplitPanesWrapper.svelte.d.ts +12 -28
- package/package/components/sqlTypeService.d.ts +2 -2
- package/package/components/sqlTypeService.js +4 -8
- package/package/components/table/Cell.svelte +2 -2
- package/package/components/table/DataTable.svelte +1 -1
- package/package/components/table/DownloadCsv.svelte +1 -2
- package/package/components/table/DownloadCsv.svelte.d.ts +4 -18
- package/package/components/table/Head.svelte +6 -2
- package/package/components/table/Head.svelte.d.ts +6 -27
- package/package/components/table/Row.svelte +6 -10
- package/package/components/table/Row.svelte.d.ts +11 -18
- package/package/components/triggers/CaptureIcon.svelte +1 -2
- package/package/components/triggers/CaptureIcon.svelte.d.ts +5 -19
- package/package/components/triggers/TestTriggerConnection.svelte +1 -4
- package/package/components/triggers/TestTriggerConnection.svelte.d.ts +6 -21
- package/package/components/triggers/TriggerAdvancedBadges.svelte +16 -0
- package/package/components/triggers/TriggerAdvancedBadges.svelte.d.ts +12 -0
- package/package/components/triggers/TriggerEditorToolbar.svelte +11 -9
- package/package/components/triggers/TriggerTokens.svelte +8 -7
- package/package/components/triggers/TriggerTokens.svelte.d.ts +6 -21
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte +1 -1
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +7 -2
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +9 -2
- package/package/components/triggers/http/RouteCapture.svelte +1 -1
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +1 -1
- package/package/components/triggers/http/RouteEditorInner.svelte +10 -1
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +119 -5
- package/package/components/triggers/kafka/KafkaTriggersConfigSection.svelte +1 -0
- package/package/components/triggers/kafka/utils.js +2 -0
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +12 -3
- package/package/components/triggers/native/services/google/GoogleDrivePicker.svelte.d.ts +1 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +7 -2
- package/package/components/triggers/postgres/CheckPostgresRequirement.svelte +2 -4
- package/package/components/triggers/postgres/CheckPostgresRequirement.svelte.d.ts +4 -18
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +10 -4
- package/package/components/triggers/postgres/PublicationPicker.svelte +9 -12
- package/package/components/triggers/postgres/PublicationPicker.svelte.d.ts +4 -18
- package/package/components/triggers/postgres/SlotPicker.svelte +4 -7
- package/package/components/triggers/postgres/SlotPicker.svelte.d.ts +4 -18
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +10 -0
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +6 -1
- package/package/components/triggers/testingBadge.svelte +3 -1
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +1 -1
- package/package/components/triggers/websocket/WebsocketCapture.svelte +15 -13
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +10 -4
- package/package/components/tutorials/Tutorial.svelte +2 -6
- package/package/components/tutorials/Tutorial.svelte.d.ts +14 -23
- package/package/components/tutorials/TutorialControls.svelte +1 -2
- package/package/components/tutorials/TutorialControls.svelte.d.ts +6 -5
- package/package/components/tutorials/TutorialWrapper.svelte +3 -2
- package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte +2 -3
- package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte.d.ts +6 -6
- package/package/components/tutorials/app/ConnectionTutorial.svelte +2 -3
- package/package/components/tutorials/app/ConnectionTutorial.svelte.d.ts +6 -6
- package/package/components/tutorials/app/ExpressionEvaluationTutorial.svelte +2 -3
- package/package/components/tutorials/app/ExpressionEvaluationTutorial.svelte.d.ts +6 -6
- package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +3 -3
- package/package/components/tutorials/workspace/WorkspaceOnboardingTutorial.svelte +3 -3
- package/package/components/variables/variablesFilter.d.ts +4 -0
- package/package/components/variables/variablesFilter.js +4 -0
- package/package/components/wizards/AppPicker.svelte +3 -3
- package/package/components/wizards/AppPicker.svelte.d.ts +4 -18
- package/package/components/wizards/DBExplorerWizard.svelte +1 -0
- package/package/components/workspace/WorkspaceCard.svelte +3 -2
- package/package/components/workspaceSettings/CreateWorkspace.svelte +3 -3
- package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +1 -3
- package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte.d.ts +0 -2
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +3 -3
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte.d.ts +0 -1
- package/package/components/workspaceSettings/DataTableSettings.svelte +7 -12
- package/package/components/workspaceSettings/DucklakeSettings.svelte +131 -167
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +12 -2
- package/package/components/workspaceSettings/RulesetEditor.svelte +24 -12
- package/package/components/workspaceSettings/StorageSettings.svelte +68 -15
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +10 -9
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +257 -9
- package/package/gen/schemas.gen.js +257 -9
- package/package/gen/services.gen.d.ts +165 -58
- package/package/gen/services.gen.js +278 -64
- package/package/gen/types.gen.d.ts +779 -128
- package/package/hub.d.ts +0 -1
- package/package/hubPaths.json +24 -22
- package/package/infer.js +64 -14
- package/package/infer.svelte.js +88 -42
- package/package/script_helpers.d.ts +8 -5
- package/package/script_helpers.js +64 -21
- package/package/stores.d.ts +3 -1
- package/package/stores.js +2 -3
- package/package/svelte5Utils.svelte.d.ts +6 -0
- package/package/svelte5Utils.svelte.js +6 -0
- package/package/svelte5UtilsKit.svelte.js +3 -2
- package/package/system_prompts/prompts.d.ts +20 -20
- package/package/system_prompts/prompts.js +814 -540
- package/package/templates/claude_sandbox.ts.template +85 -0
- package/package/utils/editInFork.d.ts +3 -0
- package/package/utils/editInFork.js +19 -0
- package/package/utils.js +2 -2
- package/package/utils_deployable.d.ts +233 -9
- package/package/utils_deployable.js +64 -10
- package/package/utils_workspace_deploy.d.ts +31 -0
- package/package/utils_workspace_deploy.js +449 -0
- package/package/workspace_settings.d.ts +2 -1
- package/package/workspace_settings.js +28 -0
- package/package.json +34 -15
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
<script lang="ts">import { AlertTriangle, ArrowDown, ArrowDownRight, ArrowRight, ArrowUp, ArrowUpRight, Building, DiffIcon, GitFork, Loader2 } from 'lucide-svelte';
|
|
1
|
+
<script lang="ts">import { AlertTriangle, ArrowDown, ArrowDownRight, ArrowRight, ArrowUp, ArrowUpRight, Building, DiffIcon, GitFork, Loader2, Trash2, Upload } from 'lucide-svelte';
|
|
2
2
|
import { Alert, Badge } from './common';
|
|
3
|
-
import { AppService, FlowService, FolderService,
|
|
3
|
+
import { AppService, EmailTriggerService, FlowService, FolderService, GcpTriggerService, HttpTriggerService, KafkaTriggerService, MqttTriggerService, NatsTriggerService, PostgresTriggerService, ScheduleService, ScriptService, SqsTriggerService, UserService, WebsocketTriggerService, WorkspaceService } from '../gen';
|
|
4
4
|
import Button from './common/button/Button.svelte';
|
|
5
|
+
import ConfirmationModal from './common/confirmationModal/ConfirmationModal.svelte';
|
|
6
|
+
import Row from './common/table/Row.svelte';
|
|
5
7
|
import DiffDrawer from './DiffDrawer.svelte';
|
|
8
|
+
import DeployWorkspaceDrawer from './DeployWorkspaceDrawer.svelte';
|
|
6
9
|
import ParentWorkspaceProtectionAlert from './ParentWorkspaceProtectionAlert.svelte';
|
|
7
|
-
import { getAllModules } from './flows/flowExplorer';
|
|
8
10
|
import { userWorkspaces, workspaceStore } from '../stores';
|
|
9
|
-
import
|
|
10
|
-
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
11
|
-
import Row from './common/table/Row.svelte';
|
|
12
|
-
import { sendUserToast } from '../toast';
|
|
11
|
+
import { deployItem, getItemValue, getOnBehalfOfEmail } from '../utils_workspace_deploy';
|
|
13
12
|
import Tooltip from './Tooltip.svelte';
|
|
13
|
+
import OnBehalfOfSelector, { needsOnBehalfOfSelection } from './OnBehalfOfSelector.svelte';
|
|
14
|
+
import { sendUserToast } from '../toast';
|
|
14
15
|
import { deepEqual } from 'fast-equals';
|
|
16
|
+
import WorkspaceDeployLayout from './WorkspaceDeployLayout.svelte';
|
|
17
|
+
import { triggerDisplayNamesMap, triggerKindToTriggerType } from './triggers/utils';
|
|
18
|
+
import { getEmailAddress, getEmailDomain } from './triggers/email/utils';
|
|
19
|
+
import { base } from '../base';
|
|
20
|
+
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
21
|
+
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
15
22
|
let { currentWorkspaceId, parentWorkspaceId, comparison } = $props();
|
|
16
23
|
let currentWorkspaceInfo = $derived($userWorkspaces.find((w) => w.id == currentWorkspaceId));
|
|
17
24
|
let parentWorkspaceInfo = $derived($userWorkspaces.find((w) => w.id == parentWorkspaceId));
|
|
@@ -19,6 +26,9 @@ let mergeIntoParent = $state(true);
|
|
|
19
26
|
let deploying = $state(false);
|
|
20
27
|
let hasAutoSelected = $state(false);
|
|
21
28
|
let canDeployToParent = $state(true);
|
|
29
|
+
let canPreserveInParent = $state(false);
|
|
30
|
+
let canPreserveInCurrent = $state(false);
|
|
31
|
+
let canPreserveOnBehalfOf = $derived(mergeIntoParent ? canPreserveInParent : canPreserveInCurrent);
|
|
22
32
|
let selectableDiffs = $derived(comparison?.diffs.filter((diff) => {
|
|
23
33
|
if (mergeIntoParent) {
|
|
24
34
|
return diff.ahead > 0;
|
|
@@ -40,6 +50,12 @@ let itemsWithAheadChanges = $derived(comparison?.diffs.filter((diff) => {
|
|
|
40
50
|
let hasBehindChanges = $derived(mergeIntoParent && itemsWithBehindChanges.length > 0);
|
|
41
51
|
let hasAheadChanges = $derived(mergeIntoParent && itemsWithAheadChanges.length > 0);
|
|
42
52
|
let summaryCache = $state({});
|
|
53
|
+
// On-behalf-of tracking for flows and scripts
|
|
54
|
+
// Source workspace on_behalf_of emails (keyed by workspace/kind:path)
|
|
55
|
+
let onBehalfOfInfo = $state({});
|
|
56
|
+
let onBehalfOfChoice = $state({});
|
|
57
|
+
let customOnBehalfOfEmails = $state({});
|
|
58
|
+
let deployTargetWorkspace = $derived(mergeIntoParent ? parentWorkspaceId : currentWorkspaceId);
|
|
43
59
|
function getItemKey(diff) {
|
|
44
60
|
return `${diff.kind}:${diff.path}`;
|
|
45
61
|
}
|
|
@@ -89,84 +105,52 @@ async function fetchSummaries(diffs) {
|
|
|
89
105
|
};
|
|
90
106
|
}
|
|
91
107
|
}
|
|
92
|
-
async function
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
else if (kind == 'script') {
|
|
107
|
-
const script = await ScriptService.getScriptByPath({
|
|
108
|
-
workspace: workspace,
|
|
109
|
-
path: path
|
|
110
|
-
});
|
|
111
|
-
return {
|
|
112
|
-
content: script.content,
|
|
113
|
-
lock: script.lock,
|
|
114
|
-
schema: script.schema,
|
|
115
|
-
summary: script.summary,
|
|
116
|
-
language: script.language
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
else if (kind == 'app') {
|
|
120
|
-
const app = await AppService.getAppByPath({
|
|
121
|
-
workspace: workspace,
|
|
122
|
-
path: path
|
|
123
|
-
});
|
|
124
|
-
return app;
|
|
125
|
-
}
|
|
126
|
-
else if (kind == 'variable') {
|
|
127
|
-
const variable = await VariableService.getVariable({
|
|
128
|
-
workspace: workspace,
|
|
129
|
-
path: path,
|
|
130
|
-
decryptSecret: true
|
|
131
|
-
});
|
|
132
|
-
return variable.value;
|
|
133
|
-
}
|
|
134
|
-
else if (kind == 'resource') {
|
|
135
|
-
const resource = await ResourceService.getResource({
|
|
136
|
-
workspace: workspace,
|
|
137
|
-
path: path
|
|
138
|
-
});
|
|
139
|
-
return resource.value;
|
|
140
|
-
}
|
|
141
|
-
else if (kind == 'resource_type') {
|
|
142
|
-
const resource = await ResourceService.getResourceType({
|
|
143
|
-
workspace: workspace,
|
|
144
|
-
path: path
|
|
145
|
-
});
|
|
146
|
-
return resource.schema;
|
|
147
|
-
}
|
|
148
|
-
else if (kind == 'folder') {
|
|
149
|
-
const folder = await FolderService.getFolder({
|
|
150
|
-
workspace: workspace,
|
|
151
|
-
name: path
|
|
152
|
-
});
|
|
153
|
-
return {
|
|
154
|
-
name: folder.name
|
|
155
|
-
};
|
|
156
|
-
// } else if (kind == 'trigger') {
|
|
157
|
-
// if (additionalInformation?.triggers) {
|
|
158
|
-
// return await getTriggerValue(additionalInformation.triggers.kind, path, workspace)
|
|
159
|
-
// } else {
|
|
160
|
-
// throw new Error(`Missing trigger information`)
|
|
161
|
-
// }
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
throw new Error(`Unknown kind ${kind}`);
|
|
108
|
+
async function fetchOnBehalfOfInfo(diffs) {
|
|
109
|
+
const flowsAndScripts = diffs.filter((d) => ['flow', 'script', 'app'].includes(d.kind));
|
|
110
|
+
for (const diff of flowsAndScripts) {
|
|
111
|
+
for (const workspace of [currentWorkspaceId, parentWorkspaceId]) {
|
|
112
|
+
const workspacedKey = getWorkspacedKey(workspace, getItemKey(diff));
|
|
113
|
+
if (onBehalfOfInfo[workspacedKey] !== undefined)
|
|
114
|
+
continue;
|
|
115
|
+
try {
|
|
116
|
+
onBehalfOfInfo[workspacedKey] = await getOnBehalfOfEmail(diff.kind, diff.path, workspace);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
onBehalfOfInfo[workspacedKey] = undefined;
|
|
120
|
+
}
|
|
165
121
|
}
|
|
166
122
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
123
|
+
}
|
|
124
|
+
// Get source workspace email for an item
|
|
125
|
+
function getSourceEmail(itemKey) {
|
|
126
|
+
const sourceWorkspace = mergeIntoParent ? currentWorkspaceId : parentWorkspaceId;
|
|
127
|
+
return onBehalfOfInfo[getWorkspacedKey(sourceWorkspace, itemKey)];
|
|
128
|
+
}
|
|
129
|
+
// Get target workspace email for an item (existing item in destination)
|
|
130
|
+
function getTargetEmail(itemKey) {
|
|
131
|
+
const targetWorkspace = mergeIntoParent ? parentWorkspaceId : currentWorkspaceId;
|
|
132
|
+
return onBehalfOfInfo[getWorkspacedKey(targetWorkspace, itemKey)];
|
|
133
|
+
}
|
|
134
|
+
// Check if an item needs on_behalf_of selection
|
|
135
|
+
function itemNeedsOnBehalfOfSelection(itemKey, kind) {
|
|
136
|
+
return needsOnBehalfOfSelection(kind, getSourceEmail(itemKey));
|
|
137
|
+
}
|
|
138
|
+
// Check if all required on_behalf_of selections are made
|
|
139
|
+
let hasUnselectedOnBehalfOf = $derived(selectedItems.some((itemKey) => {
|
|
140
|
+
const diff = selectableDiffs.find((d) => getItemKey(d) === itemKey);
|
|
141
|
+
if (!diff)
|
|
142
|
+
return false;
|
|
143
|
+
return (itemNeedsOnBehalfOfSelection(itemKey, diff.kind) && onBehalfOfChoice[itemKey] === undefined);
|
|
144
|
+
}));
|
|
145
|
+
// Get the email to use for deployment based on user's choice
|
|
146
|
+
function getOnBehalfOfEmailForDeploy(itemKey) {
|
|
147
|
+
const choice = onBehalfOfChoice[itemKey];
|
|
148
|
+
if (choice === 'target')
|
|
149
|
+
return getTargetEmail(itemKey);
|
|
150
|
+
if (choice === 'custom')
|
|
151
|
+
return customOnBehalfOfEmails[itemKey];
|
|
152
|
+
// 'me' or undefined = don't pass, backend will use deploying user's email
|
|
153
|
+
return undefined;
|
|
170
154
|
}
|
|
171
155
|
let diffDrawer = $state(undefined);
|
|
172
156
|
let isFlow = $state(true);
|
|
@@ -177,8 +161,8 @@ async function showDiff(kind, path) {
|
|
|
177
161
|
isFlow = kind == 'flow';
|
|
178
162
|
diffDrawer?.openDrawer();
|
|
179
163
|
let values = await Promise.all([
|
|
180
|
-
|
|
181
|
-
|
|
164
|
+
getItemValue(kind, path, workspaceTo),
|
|
165
|
+
getItemValue(kind, path, workspaceFrom)
|
|
182
166
|
]);
|
|
183
167
|
diffDrawer?.setDiff({
|
|
184
168
|
mode: 'simple',
|
|
@@ -203,344 +187,25 @@ async function selectAllNonConflicts() {
|
|
|
203
187
|
.map((d) => getItemKey(d))
|
|
204
188
|
.filter((k) => !(deploymentStatus[k]?.status == 'deployed'));
|
|
205
189
|
}
|
|
206
|
-
async function checkAlreadyExists(kind, path, workspace) {
|
|
207
|
-
let exists;
|
|
208
|
-
if (kind == 'flow') {
|
|
209
|
-
exists = await FlowService.existsFlowByPath({
|
|
210
|
-
workspace: workspace,
|
|
211
|
-
path: path
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
else if (kind == 'script') {
|
|
215
|
-
exists = await ScriptService.existsScriptByPath({
|
|
216
|
-
workspace: workspace,
|
|
217
|
-
path: path
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
else if (kind == 'app') {
|
|
221
|
-
exists = await AppService.existsApp({
|
|
222
|
-
workspace: workspace,
|
|
223
|
-
path: path
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
else if (kind == 'variable') {
|
|
227
|
-
exists = await VariableService.existsVariable({
|
|
228
|
-
workspace: workspace,
|
|
229
|
-
path: path
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
else if (kind == 'resource') {
|
|
233
|
-
exists = await ResourceService.existsResource({
|
|
234
|
-
workspace: workspace,
|
|
235
|
-
path: path
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
else if (kind == 'schedule') {
|
|
239
|
-
exists = await ScheduleService.existsSchedule({
|
|
240
|
-
workspace: workspace,
|
|
241
|
-
path: path
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
else if (kind == 'resource_type') {
|
|
245
|
-
exists = await ResourceService.existsResourceType({
|
|
246
|
-
workspace: workspace,
|
|
247
|
-
path: path
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
else if (kind == 'folder') {
|
|
251
|
-
exists = await FolderService.existsFolder({
|
|
252
|
-
workspace: workspace,
|
|
253
|
-
name: path
|
|
254
|
-
});
|
|
255
|
-
// } else if (kind === 'trigger') {
|
|
256
|
-
// const triggersKind: TriggerKind[] = [
|
|
257
|
-
// 'kafka',
|
|
258
|
-
// 'mqtt',
|
|
259
|
-
// 'nats',
|
|
260
|
-
// 'postgres',
|
|
261
|
-
// 'routes',
|
|
262
|
-
// 'schedules',
|
|
263
|
-
// 'sqs',
|
|
264
|
-
// 'websockets',
|
|
265
|
-
// 'gcp'
|
|
266
|
-
// ]
|
|
267
|
-
// if (
|
|
268
|
-
// additionalInformation?.triggers &&
|
|
269
|
-
// triggersKind.includes(additionalInformation.triggers.kind)
|
|
270
|
-
// ) {
|
|
271
|
-
// exists = await existsTrigger(
|
|
272
|
-
// { workspace: workspace, path },
|
|
273
|
-
// additionalInformation.triggers.kind
|
|
274
|
-
// )
|
|
275
|
-
// } else {
|
|
276
|
-
// throw new Error(
|
|
277
|
-
// `Unexpected triggers kind, expected one of: '${triggersKind.join(', ')}' got: ${
|
|
278
|
-
// additionalInformation?.triggers?.kind
|
|
279
|
-
// }`
|
|
280
|
-
// )
|
|
281
|
-
// }
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
throw new Error(`Unknown kind ${kind}`);
|
|
285
|
-
}
|
|
286
|
-
return exists;
|
|
287
|
-
}
|
|
288
190
|
const deploymentStatus = $state({});
|
|
289
|
-
|
|
290
|
-
|
|
191
|
+
function getWorkspacedKey(workspace, key) {
|
|
192
|
+
return `${workspace}/${key}`;
|
|
193
|
+
}
|
|
194
|
+
async function deploy(kind, path, workspaceToDeployTo, workspaceFrom, statusPath) {
|
|
291
195
|
deploymentStatus[statusPath] = { status: 'loading' };
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
let alreadyExists = await checkAlreadyExists(kind, path, workspaceToDeployTo);
|
|
301
|
-
if (kind == 'flow') {
|
|
302
|
-
const flow = await FlowService.getFlowByPath({
|
|
303
|
-
workspace: workspaceFrom,
|
|
304
|
-
path: path
|
|
305
|
-
});
|
|
306
|
-
getAllModules(flow.value.modules).forEach((x) => {
|
|
307
|
-
if (x.value.type == 'script' && x.value.hash != undefined) {
|
|
308
|
-
x.value.hash = undefined;
|
|
309
|
-
}
|
|
310
|
-
});
|
|
311
|
-
if (alreadyExists) {
|
|
312
|
-
await FlowService.updateFlow({
|
|
313
|
-
workspace: workspaceToDeployTo,
|
|
314
|
-
path: path,
|
|
315
|
-
requestBody: {
|
|
316
|
-
...flow
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
await FlowService.createFlow({
|
|
322
|
-
workspace: workspaceToDeployTo,
|
|
323
|
-
requestBody: {
|
|
324
|
-
...flow
|
|
325
|
-
}
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
else if (kind == 'script') {
|
|
330
|
-
const script = await ScriptService.getScriptByPath({
|
|
331
|
-
workspace: workspaceFrom,
|
|
332
|
-
path: path
|
|
333
|
-
});
|
|
334
|
-
await ScriptService.createScript({
|
|
335
|
-
workspace: workspaceToDeployTo,
|
|
336
|
-
requestBody: {
|
|
337
|
-
...script,
|
|
338
|
-
lock: script.lock,
|
|
339
|
-
parent_hash: alreadyExists
|
|
340
|
-
? (await ScriptService.getScriptByPath({
|
|
341
|
-
workspace: workspaceToDeployTo,
|
|
342
|
-
path: path
|
|
343
|
-
})).hash
|
|
344
|
-
: undefined
|
|
345
|
-
}
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
else if (kind == 'app') {
|
|
349
|
-
const app = await AppService.getAppByPath({
|
|
350
|
-
workspace: workspaceFrom,
|
|
351
|
-
path: path
|
|
352
|
-
});
|
|
353
|
-
if (alreadyExists) {
|
|
354
|
-
if (app.raw_app) {
|
|
355
|
-
const secret = await AppService.getPublicSecretOfLatestVersionOfApp({
|
|
356
|
-
workspace: workspaceFrom,
|
|
357
|
-
path: app.path
|
|
358
|
-
});
|
|
359
|
-
const js = await AppService.getRawAppData({
|
|
360
|
-
secretWithExtension: `${secret}.js`,
|
|
361
|
-
workspace: workspaceFrom
|
|
362
|
-
});
|
|
363
|
-
const css = await AppService.getRawAppData({
|
|
364
|
-
secretWithExtension: `${secret}.css`,
|
|
365
|
-
workspace: workspaceFrom
|
|
366
|
-
});
|
|
367
|
-
await AppService.updateAppRaw({
|
|
368
|
-
workspace: workspaceToDeployTo,
|
|
369
|
-
path: path,
|
|
370
|
-
formData: {
|
|
371
|
-
app,
|
|
372
|
-
css,
|
|
373
|
-
js
|
|
374
|
-
}
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
else {
|
|
378
|
-
await AppService.updateApp({
|
|
379
|
-
workspace: workspaceToDeployTo,
|
|
380
|
-
path: path,
|
|
381
|
-
requestBody: {
|
|
382
|
-
...app
|
|
383
|
-
}
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
if (app.raw_app) {
|
|
389
|
-
const secret = await AppService.getPublicSecretOfLatestVersionOfApp({
|
|
390
|
-
workspace: workspaceFrom,
|
|
391
|
-
path: app.path
|
|
392
|
-
});
|
|
393
|
-
const js = await AppService.getRawAppData({
|
|
394
|
-
secretWithExtension: `${secret}.js`,
|
|
395
|
-
workspace: workspaceFrom
|
|
396
|
-
});
|
|
397
|
-
const css = await AppService.getRawAppData({
|
|
398
|
-
secretWithExtension: `${secret}.css`,
|
|
399
|
-
workspace: workspaceFrom
|
|
400
|
-
});
|
|
401
|
-
await AppService.createAppRaw({
|
|
402
|
-
workspace: workspaceToDeployTo,
|
|
403
|
-
formData: {
|
|
404
|
-
app,
|
|
405
|
-
css,
|
|
406
|
-
js
|
|
407
|
-
}
|
|
408
|
-
});
|
|
409
|
-
}
|
|
410
|
-
else {
|
|
411
|
-
await AppService.createApp({
|
|
412
|
-
workspace: workspaceToDeployTo,
|
|
413
|
-
requestBody: {
|
|
414
|
-
...app
|
|
415
|
-
}
|
|
416
|
-
});
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
else if (kind == 'variable') {
|
|
421
|
-
const variable = await VariableService.getVariable({
|
|
422
|
-
workspace: workspaceFrom,
|
|
423
|
-
path: path,
|
|
424
|
-
decryptSecret: true
|
|
425
|
-
});
|
|
426
|
-
if (alreadyExists) {
|
|
427
|
-
await VariableService.updateVariable({
|
|
428
|
-
workspace: workspaceToDeployTo,
|
|
429
|
-
path: path,
|
|
430
|
-
requestBody: {
|
|
431
|
-
path: path,
|
|
432
|
-
value: variable.value ?? '',
|
|
433
|
-
is_secret: variable.is_secret,
|
|
434
|
-
description: variable.description ?? ''
|
|
435
|
-
},
|
|
436
|
-
alreadyEncrypted: false
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
|
-
else {
|
|
440
|
-
await VariableService.createVariable({
|
|
441
|
-
workspace: workspaceToDeployTo,
|
|
442
|
-
requestBody: {
|
|
443
|
-
path: path,
|
|
444
|
-
value: variable.value ?? '',
|
|
445
|
-
is_secret: variable.is_secret,
|
|
446
|
-
description: variable.description ?? ''
|
|
447
|
-
}
|
|
448
|
-
});
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
else if (kind == 'resource') {
|
|
452
|
-
const resource = await ResourceService.getResource({
|
|
453
|
-
workspace: workspaceFrom,
|
|
454
|
-
path: path
|
|
455
|
-
});
|
|
456
|
-
if (alreadyExists) {
|
|
457
|
-
await ResourceService.updateResource({
|
|
458
|
-
workspace: workspaceToDeployTo,
|
|
459
|
-
path: path,
|
|
460
|
-
requestBody: {
|
|
461
|
-
path: path,
|
|
462
|
-
value: resource.value ?? '',
|
|
463
|
-
description: resource.description ?? ''
|
|
464
|
-
}
|
|
465
|
-
});
|
|
466
|
-
}
|
|
467
|
-
else {
|
|
468
|
-
await ResourceService.createResource({
|
|
469
|
-
workspace: workspaceToDeployTo,
|
|
470
|
-
requestBody: {
|
|
471
|
-
path: path,
|
|
472
|
-
value: resource.value ?? '',
|
|
473
|
-
resource_type: resource.resource_type,
|
|
474
|
-
description: resource.description ?? ''
|
|
475
|
-
}
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
else if (kind == 'resource_type') {
|
|
480
|
-
const resource = await ResourceService.getResourceType({
|
|
481
|
-
workspace: workspaceFrom,
|
|
482
|
-
path: path
|
|
483
|
-
});
|
|
484
|
-
if (alreadyExists) {
|
|
485
|
-
await ResourceService.updateResourceType({
|
|
486
|
-
workspace: workspaceToDeployTo,
|
|
487
|
-
path: path,
|
|
488
|
-
requestBody: {
|
|
489
|
-
schema: resource.schema,
|
|
490
|
-
description: resource.description ?? ''
|
|
491
|
-
}
|
|
492
|
-
});
|
|
493
|
-
}
|
|
494
|
-
else {
|
|
495
|
-
await ResourceService.createResourceType({
|
|
496
|
-
workspace: workspaceToDeployTo,
|
|
497
|
-
requestBody: {
|
|
498
|
-
description: resource.description ?? '',
|
|
499
|
-
schema: resource.schema,
|
|
500
|
-
name: resource.name
|
|
501
|
-
}
|
|
502
|
-
});
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
else if (kind == 'folder') {
|
|
506
|
-
await FolderService.createFolder({
|
|
507
|
-
workspace: workspaceToDeployTo,
|
|
508
|
-
requestBody: {
|
|
509
|
-
name: path
|
|
510
|
-
}
|
|
511
|
-
});
|
|
512
|
-
// } else if (kind === 'trigger') {
|
|
513
|
-
// if (additionalInformation?.triggers) {
|
|
514
|
-
// const { data, createFn, updateFn } = await getTriggersDeployData(
|
|
515
|
-
// additionalInformation.triggers.kind,
|
|
516
|
-
// path,
|
|
517
|
-
// workspaceFrom
|
|
518
|
-
// )
|
|
519
|
-
// if (alreadyExists) {
|
|
520
|
-
// await updateFn({
|
|
521
|
-
// path,
|
|
522
|
-
// workspace: workspaceToDeployTo,
|
|
523
|
-
// requestBody: data
|
|
524
|
-
// } as any)
|
|
525
|
-
// } else {
|
|
526
|
-
// await createFn({
|
|
527
|
-
// workspace: workspaceToDeployTo,
|
|
528
|
-
// requestBody: data
|
|
529
|
-
// } as any)
|
|
530
|
-
// }
|
|
531
|
-
// } else {
|
|
532
|
-
// throw new Error('Missing triggers kind')
|
|
533
|
-
// }
|
|
534
|
-
}
|
|
535
|
-
else {
|
|
536
|
-
throw new Error(`Unknown kind ${kind}`);
|
|
537
|
-
}
|
|
538
|
-
// allAlreadyExists[statusPath] = true
|
|
196
|
+
const result = await deployItem({
|
|
197
|
+
kind,
|
|
198
|
+
path,
|
|
199
|
+
workspaceFrom,
|
|
200
|
+
workspaceTo: workspaceToDeployTo,
|
|
201
|
+
onBehalfOfEmail: getOnBehalfOfEmailForDeploy(statusPath)
|
|
202
|
+
});
|
|
203
|
+
if (result.success) {
|
|
539
204
|
deploymentStatus[statusPath] = { status: 'deployed' };
|
|
540
205
|
}
|
|
541
|
-
|
|
542
|
-
deploymentStatus[statusPath] = { status: 'failed', error:
|
|
543
|
-
sendUserToast(`Failed to deploy ${statusPath}: ${
|
|
206
|
+
else {
|
|
207
|
+
deploymentStatus[statusPath] = { status: 'failed', error: result.error };
|
|
208
|
+
sendUserToast(`Failed to deploy ${statusPath}: ${result.error}`);
|
|
544
209
|
}
|
|
545
210
|
}
|
|
546
211
|
let deploymentErrorMessage = $state('');
|
|
@@ -582,10 +247,10 @@ async function deployChanges() {
|
|
|
582
247
|
continue;
|
|
583
248
|
}
|
|
584
249
|
if (mergeIntoParent) {
|
|
585
|
-
await deploy(diff.kind, diff.path, parent, current);
|
|
250
|
+
await deploy(diff.kind, diff.path, parent, current, itemKey);
|
|
586
251
|
}
|
|
587
252
|
else {
|
|
588
|
-
await deploy(diff.kind, diff.path, current, parent);
|
|
253
|
+
await deploy(diff.kind, diff.path, current, parent, itemKey);
|
|
589
254
|
}
|
|
590
255
|
}
|
|
591
256
|
deploying = false;
|
|
@@ -613,10 +278,35 @@ function toggleDeploymentDirection(v) {
|
|
|
613
278
|
mergeIntoParent = v == 'deploy_to';
|
|
614
279
|
selectDefault();
|
|
615
280
|
}
|
|
616
|
-
// Fetch
|
|
281
|
+
// Fetch user permissions for both workspaces
|
|
282
|
+
$effect(() => {
|
|
283
|
+
;
|
|
284
|
+
[currentWorkspaceId, parentWorkspaceId];
|
|
285
|
+
async function fetchPermissions() {
|
|
286
|
+
try {
|
|
287
|
+
const parentUser = await UserService.whoami({ workspace: parentWorkspaceId });
|
|
288
|
+
canPreserveInParent =
|
|
289
|
+
parentUser.is_admin || parentUser.groups?.includes('wm_deployers') || false;
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
canPreserveInParent = false;
|
|
293
|
+
}
|
|
294
|
+
try {
|
|
295
|
+
const currentUser = await UserService.whoami({ workspace: currentWorkspaceId });
|
|
296
|
+
canPreserveInCurrent =
|
|
297
|
+
currentUser.is_admin || currentUser.groups?.includes('wm_deployers') || false;
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
canPreserveInCurrent = false;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
fetchPermissions();
|
|
304
|
+
});
|
|
305
|
+
// Fetch summaries and on_behalf_of_email when comparison data loads
|
|
617
306
|
$effect(() => {
|
|
618
307
|
if (comparison?.diffs) {
|
|
619
308
|
fetchSummaries(comparison.diffs);
|
|
309
|
+
fetchOnBehalfOfInfo(comparison.diffs);
|
|
620
310
|
}
|
|
621
311
|
});
|
|
622
312
|
// Auto-select items on initial load
|
|
@@ -632,24 +322,247 @@ $effect(() => {
|
|
|
632
322
|
[selectedItems, mergeIntoParent];
|
|
633
323
|
allowBehindChangesOverride = false;
|
|
634
324
|
});
|
|
325
|
+
// Transform diffs to deployable item format for the shared layout
|
|
326
|
+
let deployableItems = $derived((comparison?.diffs ?? [])
|
|
327
|
+
.filter((diff) => {
|
|
328
|
+
const key = getItemKey(diff);
|
|
329
|
+
const isSelectable = selectableDiffs.includes(diff);
|
|
330
|
+
const isDeployedAndIrrelevant = deploymentStatus[key]?.status === 'deployed' && !isSelectable;
|
|
331
|
+
return !isDeployedAndIrrelevant;
|
|
332
|
+
})
|
|
333
|
+
.map((diff) => ({
|
|
334
|
+
key: getItemKey(diff),
|
|
335
|
+
path: diff.path,
|
|
336
|
+
kind: diff.kind,
|
|
337
|
+
diff
|
|
338
|
+
})));
|
|
339
|
+
let forkTriggers = $state([]);
|
|
340
|
+
let loadingTriggers = $state(true);
|
|
341
|
+
let deploymentDrawer = $state(undefined);
|
|
342
|
+
let triggerToDelete = $state(undefined);
|
|
343
|
+
/** Deployable trigger kinds and their list+delete services */
|
|
344
|
+
const triggerServices = {
|
|
345
|
+
schedules: {
|
|
346
|
+
list: (ws) => ScheduleService.listSchedules({ workspace: ws }),
|
|
347
|
+
delete: (ws, path) => ScheduleService.deleteSchedule({ workspace: ws, path }),
|
|
348
|
+
normalize: (item) => ({
|
|
349
|
+
path: item.path,
|
|
350
|
+
triggerKind: 'schedules',
|
|
351
|
+
scriptPath: item.script_path,
|
|
352
|
+
isFlow: item.is_flow,
|
|
353
|
+
enabled: item.enabled,
|
|
354
|
+
extraLabel: item.schedule
|
|
355
|
+
})
|
|
356
|
+
},
|
|
357
|
+
routes: {
|
|
358
|
+
list: (ws) => HttpTriggerService.listHttpTriggers({ workspace: ws }),
|
|
359
|
+
delete: (ws, path) => HttpTriggerService.deleteHttpTrigger({ workspace: ws, path }),
|
|
360
|
+
normalize: (item) => ({
|
|
361
|
+
path: item.path,
|
|
362
|
+
triggerKind: 'routes',
|
|
363
|
+
scriptPath: item.script_path,
|
|
364
|
+
isFlow: item.is_flow,
|
|
365
|
+
enabled: item.mode === 'enabled',
|
|
366
|
+
extraLabel: `${(item.http_method ?? 'get').toUpperCase()} ${item.route_path ?? ''}`
|
|
367
|
+
})
|
|
368
|
+
},
|
|
369
|
+
websockets: {
|
|
370
|
+
list: (ws) => WebsocketTriggerService.listWebsocketTriggers({ workspace: ws }),
|
|
371
|
+
delete: (ws, path) => WebsocketTriggerService.deleteWebsocketTrigger({ workspace: ws, path }),
|
|
372
|
+
normalize: (item) => ({
|
|
373
|
+
path: item.path,
|
|
374
|
+
triggerKind: 'websockets',
|
|
375
|
+
scriptPath: item.script_path,
|
|
376
|
+
isFlow: item.is_flow,
|
|
377
|
+
enabled: item.mode === 'enabled',
|
|
378
|
+
extraLabel: item.url
|
|
379
|
+
})
|
|
380
|
+
},
|
|
381
|
+
kafka: {
|
|
382
|
+
list: (ws) => KafkaTriggerService.listKafkaTriggers({ workspace: ws }),
|
|
383
|
+
delete: (ws, path) => KafkaTriggerService.deleteKafkaTrigger({ workspace: ws, path }),
|
|
384
|
+
normalize: (item) => ({
|
|
385
|
+
path: item.path,
|
|
386
|
+
triggerKind: 'kafka',
|
|
387
|
+
scriptPath: item.script_path,
|
|
388
|
+
isFlow: item.is_flow,
|
|
389
|
+
enabled: item.mode === 'enabled',
|
|
390
|
+
extraLabel: item.topics?.join(', ')
|
|
391
|
+
})
|
|
392
|
+
},
|
|
393
|
+
postgres: {
|
|
394
|
+
list: (ws) => PostgresTriggerService.listPostgresTriggers({ workspace: ws }),
|
|
395
|
+
delete: (ws, path) => PostgresTriggerService.deletePostgresTrigger({ workspace: ws, path }),
|
|
396
|
+
normalize: (item) => ({
|
|
397
|
+
path: item.path,
|
|
398
|
+
triggerKind: 'postgres',
|
|
399
|
+
scriptPath: item.script_path,
|
|
400
|
+
isFlow: item.is_flow,
|
|
401
|
+
enabled: item.mode === 'enabled'
|
|
402
|
+
})
|
|
403
|
+
},
|
|
404
|
+
nats: {
|
|
405
|
+
list: (ws) => NatsTriggerService.listNatsTriggers({ workspace: ws }),
|
|
406
|
+
delete: (ws, path) => NatsTriggerService.deleteNatsTrigger({ workspace: ws, path }),
|
|
407
|
+
normalize: (item) => ({
|
|
408
|
+
path: item.path,
|
|
409
|
+
triggerKind: 'nats',
|
|
410
|
+
scriptPath: item.script_path,
|
|
411
|
+
isFlow: item.is_flow,
|
|
412
|
+
enabled: item.mode === 'enabled',
|
|
413
|
+
extraLabel: item.subjects?.join(', ')
|
|
414
|
+
})
|
|
415
|
+
},
|
|
416
|
+
mqtt: {
|
|
417
|
+
list: (ws) => MqttTriggerService.listMqttTriggers({ workspace: ws }),
|
|
418
|
+
delete: (ws, path) => MqttTriggerService.deleteMqttTrigger({ workspace: ws, path }),
|
|
419
|
+
normalize: (item) => ({
|
|
420
|
+
path: item.path,
|
|
421
|
+
triggerKind: 'mqtt',
|
|
422
|
+
scriptPath: item.script_path,
|
|
423
|
+
isFlow: item.is_flow,
|
|
424
|
+
enabled: item.mode === 'enabled'
|
|
425
|
+
})
|
|
426
|
+
},
|
|
427
|
+
sqs: {
|
|
428
|
+
list: (ws) => SqsTriggerService.listSqsTriggers({ workspace: ws }),
|
|
429
|
+
delete: (ws, path) => SqsTriggerService.deleteSqsTrigger({ workspace: ws, path }),
|
|
430
|
+
normalize: (item) => ({
|
|
431
|
+
path: item.path,
|
|
432
|
+
triggerKind: 'sqs',
|
|
433
|
+
scriptPath: item.script_path,
|
|
434
|
+
isFlow: item.is_flow,
|
|
435
|
+
enabled: item.mode === 'enabled',
|
|
436
|
+
extraLabel: item.queue_url
|
|
437
|
+
})
|
|
438
|
+
},
|
|
439
|
+
gcp: {
|
|
440
|
+
list: (ws) => GcpTriggerService.listGcpTriggers({ workspace: ws }),
|
|
441
|
+
delete: (ws, path) => GcpTriggerService.deleteGcpTrigger({ workspace: ws, path }),
|
|
442
|
+
normalize: (item) => ({
|
|
443
|
+
path: item.path,
|
|
444
|
+
triggerKind: 'gcp',
|
|
445
|
+
scriptPath: item.script_path,
|
|
446
|
+
isFlow: item.is_flow,
|
|
447
|
+
enabled: item.mode === 'enabled',
|
|
448
|
+
extraLabel: item.topic_id
|
|
449
|
+
})
|
|
450
|
+
},
|
|
451
|
+
emails: {
|
|
452
|
+
list: (ws) => EmailTriggerService.listEmailTriggers({ workspace: ws }),
|
|
453
|
+
delete: (ws, path) => EmailTriggerService.deleteEmailTrigger({ workspace: ws, path }),
|
|
454
|
+
normalize: (item) => ({
|
|
455
|
+
path: item.path,
|
|
456
|
+
triggerKind: 'emails',
|
|
457
|
+
scriptPath: item.script_path,
|
|
458
|
+
isFlow: item.is_flow,
|
|
459
|
+
enabled: item.mode === 'enabled',
|
|
460
|
+
extraLabel: getEmailAddress(item.local_part, item.workspaced_local_part, currentWorkspaceId, emailDomain ?? '')
|
|
461
|
+
})
|
|
462
|
+
}
|
|
463
|
+
};
|
|
464
|
+
let emailDomain = $state(undefined);
|
|
465
|
+
async function fetchAllTriggers() {
|
|
466
|
+
loadingTriggers = true;
|
|
467
|
+
try {
|
|
468
|
+
emailDomain = await getEmailDomain();
|
|
469
|
+
const entries = Object.values(triggerServices);
|
|
470
|
+
const results = await Promise.allSettled(entries.map(async (svc) => {
|
|
471
|
+
const items = await svc.list(currentWorkspaceId);
|
|
472
|
+
return items.map(svc.normalize);
|
|
473
|
+
}));
|
|
474
|
+
forkTriggers = results.flatMap((r) => (r.status === 'fulfilled' ? r.value : []));
|
|
475
|
+
}
|
|
476
|
+
catch (e) {
|
|
477
|
+
console.error('Failed to fetch fork triggers:', e);
|
|
478
|
+
forkTriggers = [];
|
|
479
|
+
}
|
|
480
|
+
finally {
|
|
481
|
+
loadingTriggers = false;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
function deleteTrigger(trigger) {
|
|
485
|
+
triggerToDelete = trigger;
|
|
486
|
+
}
|
|
487
|
+
async function confirmDeleteTrigger() {
|
|
488
|
+
const trigger = triggerToDelete;
|
|
489
|
+
if (!trigger)
|
|
490
|
+
return;
|
|
491
|
+
triggerToDelete = undefined;
|
|
492
|
+
const triggerType = triggerKindToTriggerType(trigger.triggerKind);
|
|
493
|
+
const displayName = triggerType ? triggerDisplayNamesMap[triggerType] : trigger.triggerKind;
|
|
494
|
+
try {
|
|
495
|
+
const svc = triggerServices[trigger.triggerKind];
|
|
496
|
+
if (!svc) {
|
|
497
|
+
throw new Error(`No service for trigger kind: ${trigger.triggerKind}`);
|
|
498
|
+
}
|
|
499
|
+
await svc.delete(currentWorkspaceId, trigger.path);
|
|
500
|
+
forkTriggers = forkTriggers.filter((t) => !(t.path === trigger.path && t.triggerKind === trigger.triggerKind));
|
|
501
|
+
sendUserToast(`Deleted ${displayName} trigger '${trigger.path}'`);
|
|
502
|
+
}
|
|
503
|
+
catch (e) {
|
|
504
|
+
sendUserToast(`Failed to delete trigger '${trigger.path}': ${e.body || e.message}`, true);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
function getTriggerDisplayName(triggerKind) {
|
|
508
|
+
const triggerType = triggerKindToTriggerType(triggerKind);
|
|
509
|
+
return triggerType ? triggerDisplayNamesMap[triggerType] : triggerKind;
|
|
510
|
+
}
|
|
511
|
+
const triggerKindToPagePath = {
|
|
512
|
+
schedules: '/schedules',
|
|
513
|
+
routes: '/routes',
|
|
514
|
+
websockets: '/websocket_triggers',
|
|
515
|
+
kafka: '/kafka_triggers',
|
|
516
|
+
postgres: '/postgres_triggers',
|
|
517
|
+
nats: '/nats_triggers',
|
|
518
|
+
mqtt: '/mqtt_triggers',
|
|
519
|
+
sqs: '/sqs_triggers',
|
|
520
|
+
gcp: '/gcp_triggers',
|
|
521
|
+
emails: '/email_triggers'
|
|
522
|
+
};
|
|
523
|
+
function getTriggerHref(triggerKind) {
|
|
524
|
+
const pagePath = triggerKindToPagePath[triggerKind];
|
|
525
|
+
return pagePath ? `${base}${pagePath}` : undefined;
|
|
526
|
+
}
|
|
527
|
+
// Fetch triggers when workspace is available
|
|
528
|
+
$effect(() => {
|
|
529
|
+
if (currentWorkspaceId) {
|
|
530
|
+
fetchAllTriggers();
|
|
531
|
+
}
|
|
532
|
+
});
|
|
635
533
|
</script>
|
|
636
534
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
<
|
|
640
|
-
<
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
535
|
+
{#if $workspaceStore != currentWorkspaceId}
|
|
536
|
+
<Alert title="Targetting different workspace" type="info" class="my-2">
|
|
537
|
+
<span>
|
|
538
|
+
You are currently seeing the deployement page of workspace <b
|
|
539
|
+
>{currentWorkspaceInfo?.name} ({currentWorkspaceInfo?.id})</b
|
|
540
|
+
> which is not your currently selected workspace.
|
|
541
|
+
</span>
|
|
542
|
+
<a href="/">Click here to go home ({$workspaceStore})</a>
|
|
543
|
+
</Alert>
|
|
544
|
+
{/if}
|
|
545
|
+
|
|
546
|
+
{#if comparison}
|
|
547
|
+
{@const selectedConflicts = conflictingDiffs.filter((e) =>
|
|
548
|
+
selectedItems.includes(getItemKey(e))
|
|
549
|
+
).length}
|
|
550
|
+
|
|
551
|
+
<WorkspaceDeployLayout
|
|
552
|
+
items={deployableItems}
|
|
553
|
+
{selectedItems}
|
|
554
|
+
{deploymentStatus}
|
|
555
|
+
selectablePredicate={(item) => selectableDiffs.some((d) => getItemKey(d) === item.key)}
|
|
556
|
+
{allSelected}
|
|
557
|
+
onToggleItem={(item) => {
|
|
558
|
+
const diff = comparison?.diffs.find((d) => getItemKey(d) === item.key)
|
|
559
|
+
if (diff) toggleItem(diff)
|
|
560
|
+
}}
|
|
561
|
+
onSelectAll={selectAll}
|
|
562
|
+
onDeselectAll={deselectAll}
|
|
563
|
+
emptyMessage="No comparison data available"
|
|
564
|
+
>
|
|
565
|
+
{#snippet header()}
|
|
653
566
|
<div class="flex items-center justify-between">
|
|
654
567
|
<div
|
|
655
568
|
class="flex flex-col gap-2 border bg-surface-tertiary w-full p-4 border-radius-5 rounded"
|
|
@@ -720,216 +633,169 @@ $effect(() => {
|
|
|
720
633
|
</div>
|
|
721
634
|
</div>
|
|
722
635
|
</div>
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
{#if mergeIntoParent}
|
|
726
|
-
<ParentWorkspaceProtectionAlert
|
|
727
|
-
{parentWorkspaceId}
|
|
728
|
-
onUpdateCanDeploy={(canDeploy) => {
|
|
729
|
-
canDeployToParent = canDeploy
|
|
730
|
-
}}
|
|
731
|
-
/>
|
|
732
|
-
{/if}
|
|
733
|
-
{#if conflictingDiffs.length > 0}
|
|
734
|
-
<Alert title="Conflicting changes detected" type="warning" class="mt-2">
|
|
735
|
-
<!-- <AlertTriangle class="w-4 h-4" /> -->
|
|
736
|
-
<span>
|
|
737
|
-
{conflictingDiffs.length} item{conflictingDiffs.length !== 1 ? 's have' : ' has'} conflicting
|
|
738
|
-
changes, it was modified on the original workspace while changes were made on this fork. Make
|
|
739
|
-
sure to resolve these before merging.
|
|
740
|
-
</span>
|
|
741
|
-
</Alert>
|
|
742
|
-
{/if}
|
|
743
|
-
{#if hasBehindChanges && hasAheadChanges && !(mergeIntoParent && !canDeployToParent)}
|
|
744
|
-
<Alert
|
|
745
|
-
title="This fork is behind {parentWorkspaceId} and needs to be up to date before deploying"
|
|
746
|
-
type="warning"
|
|
747
|
-
class="my-2"
|
|
748
|
-
>
|
|
749
|
-
You have items behind '{parentWorkspaceId}'. You need to update and test your changes before
|
|
750
|
-
being able to deploy.
|
|
751
|
-
<span class="font-medium flex flex-row gap-1 text-red-500">
|
|
752
|
-
<input
|
|
753
|
-
type="checkbox"
|
|
754
|
-
bind:checked={allowBehindChangesOverride}
|
|
755
|
-
class="rounded max-w-4"
|
|
756
|
-
/>
|
|
757
|
-
Override: Deploy despite {itemsWithBehindChanges.length} outdated item{itemsWithBehindChanges.length !==
|
|
758
|
-
1
|
|
759
|
-
? 's'
|
|
760
|
-
: ''}
|
|
761
|
-
</span>
|
|
762
|
-
</Alert>
|
|
763
|
-
{/if}
|
|
764
|
-
{#if !comparison.all_ahead_items_visible || !comparison.all_behind_items_visible}
|
|
765
|
-
<Alert title="This fork has changes not visible to your user" type="warning" class="my-2">
|
|
766
|
-
{#if !comparison.all_ahead_items_visible && !comparison.all_behind_items_visible}
|
|
767
|
-
This fork is ahead and behind its parent
|
|
768
|
-
{:else if !comparison.all_behind_items_visible}
|
|
769
|
-
This fork is behind of its parent
|
|
770
|
-
{:else if !comparison.all_ahead_items_visible}
|
|
771
|
-
This fork is ahead of its parent
|
|
772
|
-
{/if}
|
|
773
|
-
and some of the changes are not visible by you. Only a user with access to the whole context
|
|
774
|
-
may deploy or update this fork. You can share the link to this page to someone with proper permissions
|
|
775
|
-
to get it deployed.
|
|
776
|
-
</Alert>
|
|
777
|
-
{/if}
|
|
636
|
+
{/snippet}
|
|
778
637
|
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
638
|
+
{#snippet alerts()}
|
|
639
|
+
{#if mergeIntoParent}
|
|
640
|
+
<ParentWorkspaceProtectionAlert
|
|
641
|
+
{parentWorkspaceId}
|
|
642
|
+
onUpdateCanDeploy={(canDeploy) => {
|
|
643
|
+
canDeployToParent = canDeploy
|
|
644
|
+
}}
|
|
645
|
+
/>
|
|
646
|
+
{/if}
|
|
647
|
+
{#if conflictingDiffs.length > 0}
|
|
648
|
+
<Alert title="Conflicting changes detected" type="warning" class="mt-2">
|
|
649
|
+
<span>
|
|
650
|
+
{conflictingDiffs.length} item{conflictingDiffs.length !== 1 ? 's have' : ' has'} conflicting
|
|
651
|
+
changes, it was modified on the original workspace while changes were made on this fork.
|
|
652
|
+
Make sure to resolve these before merging.
|
|
653
|
+
</span>
|
|
654
|
+
</Alert>
|
|
655
|
+
{/if}
|
|
656
|
+
{#if hasBehindChanges && hasAheadChanges && !(mergeIntoParent && !canDeployToParent)}
|
|
657
|
+
<Alert
|
|
658
|
+
title="This fork is behind {parentWorkspaceId} and needs to be up to date before deploying"
|
|
659
|
+
type="warning"
|
|
660
|
+
class="my-2"
|
|
661
|
+
>
|
|
662
|
+
You have items behind '{parentWorkspaceId}'. You need to update and test your changes
|
|
663
|
+
before being able to deploy.
|
|
664
|
+
<span class="font-medium flex flex-row gap-1 text-red-500">
|
|
665
|
+
<input
|
|
666
|
+
type="checkbox"
|
|
667
|
+
bind:checked={allowBehindChangesOverride}
|
|
668
|
+
class="rounded max-w-4"
|
|
669
|
+
/>
|
|
670
|
+
Override: Deploy despite {itemsWithBehindChanges.length} outdated item{itemsWithBehindChanges.length !==
|
|
671
|
+
1
|
|
672
|
+
? 's'
|
|
673
|
+
: ''}
|
|
674
|
+
</span>
|
|
675
|
+
</Alert>
|
|
676
|
+
{/if}
|
|
677
|
+
{#if !comparison.all_ahead_items_visible || !comparison.all_behind_items_visible}
|
|
678
|
+
<Alert title="This fork has changes not visible to your user" type="warning" class="my-2">
|
|
679
|
+
{#if !comparison.all_ahead_items_visible && !comparison.all_behind_items_visible}
|
|
680
|
+
This fork is ahead and behind its parent
|
|
681
|
+
{:else if !comparison.all_behind_items_visible}
|
|
682
|
+
This fork is behind of its parent
|
|
683
|
+
{:else if !comparison.all_ahead_items_visible}
|
|
684
|
+
This fork is ahead of its parent
|
|
685
|
+
{/if}
|
|
686
|
+
and some of the changes are not visible by you. Only a user with access to the whole context
|
|
687
|
+
may deploy or update this fork. You can share the link to this page to someone with proper
|
|
688
|
+
permissions to get it deployed.
|
|
689
|
+
</Alert>
|
|
690
|
+
{/if}
|
|
691
|
+
{/snippet}
|
|
793
692
|
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
693
|
+
{#snippet itemSummary(item)}
|
|
694
|
+
{@const diff = item.diff as WorkspaceItemDiff}
|
|
695
|
+
{@const key = item.key}
|
|
696
|
+
{@const isSelectable = selectableDiffs.includes(diff)}
|
|
697
|
+
{@const oldSummary = mergeIntoParent ? summaryCache[key]?.parent : summaryCache[key]?.current}
|
|
698
|
+
{@const newSummary = mergeIntoParent ? summaryCache[key]?.current : summaryCache[key]?.parent}
|
|
699
|
+
{@const existsInBothWorkspaces = !(
|
|
700
|
+
(diff.exists_in_fork && !diff.exists_in_source) ||
|
|
701
|
+
(!diff.exists_in_fork && diff.exists_in_source)
|
|
702
|
+
)}
|
|
703
|
+
{#if oldSummary != newSummary && isSelectable && existsInBothWorkspaces}
|
|
704
|
+
<span class="line-through text-secondary">{oldSummary || diff.path}</span>
|
|
705
|
+
{newSummary || diff.path}
|
|
706
|
+
{:else if !existsInBothWorkspaces}
|
|
707
|
+
{newSummary || oldSummary || diff.path}
|
|
708
|
+
{:else}
|
|
709
|
+
{newSummary || diff.path}
|
|
710
|
+
{/if}
|
|
711
|
+
{/snippet}
|
|
813
712
|
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
{
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
{#if isConflict}
|
|
887
|
-
<Badge color="orange" size="xs">
|
|
888
|
-
<AlertTriangle class="w-3 h-3 inline" />
|
|
889
|
-
Conflict
|
|
890
|
-
</Badge>
|
|
891
|
-
{/if}
|
|
892
|
-
{/if}
|
|
893
|
-
</div>
|
|
894
|
-
<div class:invisible={!existsInBothWorkspaces}>
|
|
895
|
-
<Button
|
|
896
|
-
size="xs"
|
|
897
|
-
variant="subtle"
|
|
898
|
-
onclick={() => showDiff(diff.kind as Kind, diff.path)}
|
|
899
|
-
>
|
|
900
|
-
<DiffIcon class="w-3 h-3" />
|
|
901
|
-
Show diff
|
|
902
|
-
</Button>
|
|
903
|
-
</div>
|
|
904
|
-
{/if}
|
|
905
|
-
{#if deploymentStatus[key]}
|
|
906
|
-
{#if deploymentStatus[key].status == 'loading'}
|
|
907
|
-
<Loader2 class="animate-spin" />
|
|
908
|
-
{:else if deploymentStatus[key].status == 'deployed'}
|
|
909
|
-
<Badge color="green">Deployed</Badge>
|
|
910
|
-
{:else if deploymentStatus[key].status == 'failed'}
|
|
911
|
-
<div class="inline-flex gap-1">
|
|
912
|
-
<Badge color="red">Failed</Badge>
|
|
913
|
-
<Tooltip>{deploymentStatus[key].error}</Tooltip></div
|
|
914
|
-
>
|
|
915
|
-
{/if}
|
|
916
|
-
{/if}
|
|
917
|
-
{/snippet}
|
|
918
|
-
</Row>
|
|
713
|
+
{#snippet itemActions(item)}
|
|
714
|
+
{@const diff = item.diff as WorkspaceItemDiff}
|
|
715
|
+
{@const key = item.key}
|
|
716
|
+
{@const targetEmail = getTargetEmail(key)}
|
|
717
|
+
{@const isConflict = diff.ahead > 0 && diff.behind > 0}
|
|
718
|
+
{@const existsInBothWorkspaces = !(
|
|
719
|
+
(diff.exists_in_fork && !diff.exists_in_source) ||
|
|
720
|
+
(!diff.exists_in_fork && diff.exists_in_source)
|
|
721
|
+
)}
|
|
722
|
+
<!-- On-behalf-of selector -->
|
|
723
|
+
{#if itemNeedsOnBehalfOfSelection(key, diff.kind)}
|
|
724
|
+
<OnBehalfOfSelector
|
|
725
|
+
targetWorkspace={deployTargetWorkspace}
|
|
726
|
+
{targetEmail}
|
|
727
|
+
selected={onBehalfOfChoice[key]}
|
|
728
|
+
onSelect={(choice, email) => {
|
|
729
|
+
onBehalfOfChoice[key] = choice
|
|
730
|
+
if (email) customOnBehalfOfEmails[key] = email
|
|
731
|
+
}}
|
|
732
|
+
kind={diff.kind}
|
|
733
|
+
canPreserve={canPreserveOnBehalfOf}
|
|
734
|
+
customEmail={customOnBehalfOfEmails[key]}
|
|
735
|
+
/>
|
|
736
|
+
{/if}
|
|
737
|
+
<!-- Status badges -->
|
|
738
|
+
{#if !diff.exists_in_fork && diff.exists_in_source && diff.ahead == 0 && diff.behind > 0}
|
|
739
|
+
<Badge
|
|
740
|
+
title="This item was newly created in the parent workspace '{parentWorkspaceId}'"
|
|
741
|
+
color="indigo"
|
|
742
|
+
size="xs">New</Badge
|
|
743
|
+
>
|
|
744
|
+
{/if}
|
|
745
|
+
{#if !diff.exists_in_fork && diff.exists_in_source && diff.ahead > 0}
|
|
746
|
+
<Badge title="This item was deleted in '{currentWorkspaceId}'" color="red" size="xs"
|
|
747
|
+
>Deleted</Badge
|
|
748
|
+
>
|
|
749
|
+
{/if}
|
|
750
|
+
{#if diff.exists_in_fork && !diff.exists_in_source && diff.behind > 0}
|
|
751
|
+
<Badge
|
|
752
|
+
title="This item was deleted in the parent workspace '{parentWorkspaceId}'"
|
|
753
|
+
color="red"
|
|
754
|
+
size="xs">Deleted</Badge
|
|
755
|
+
>
|
|
756
|
+
{/if}
|
|
757
|
+
{#if diff.exists_in_fork && !diff.exists_in_source && diff.ahead > 0 && diff.behind == 0}
|
|
758
|
+
<Badge
|
|
759
|
+
title="This item was newly created in '{currentWorkspaceId}'"
|
|
760
|
+
color="indigo"
|
|
761
|
+
size="xs">New</Badge
|
|
762
|
+
>
|
|
763
|
+
{/if}
|
|
764
|
+
{#if !deploymentStatus[key] || deploymentStatus[key].status != 'deployed'}
|
|
765
|
+
<div class="flex items-center gap-2">
|
|
766
|
+
{#if isConflict || existsInBothWorkspaces}
|
|
767
|
+
{#if diff.ahead > 0}
|
|
768
|
+
<Badge color="green" size="xs">
|
|
769
|
+
<ArrowUpRight class="w-3 h-3 inline" />
|
|
770
|
+
{diff.ahead} ahead
|
|
771
|
+
</Badge>
|
|
772
|
+
{/if}
|
|
773
|
+
{#if diff.behind > 0}
|
|
774
|
+
<Badge color="blue" size="xs">
|
|
775
|
+
<ArrowDownRight class="w-3 h-3 inline" />
|
|
776
|
+
{diff.behind} behind
|
|
777
|
+
</Badge>
|
|
778
|
+
{/if}
|
|
779
|
+
{#if isConflict}
|
|
780
|
+
<Badge color="orange" size="xs">
|
|
781
|
+
<AlertTriangle class="w-3 h-3 inline" />
|
|
782
|
+
Conflict
|
|
783
|
+
</Badge>
|
|
784
|
+
{/if}
|
|
919
785
|
{/if}
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
786
|
+
</div>
|
|
787
|
+
<div class:invisible={!existsInBothWorkspaces}>
|
|
788
|
+
<Button size="xs" variant="subtle" onclick={() => showDiff(diff.kind as Kind, diff.path)}>
|
|
789
|
+
<DiffIcon class="w-3 h-3" />
|
|
790
|
+
Show diff
|
|
791
|
+
</Button>
|
|
792
|
+
</div>
|
|
793
|
+
{/if}
|
|
794
|
+
{/snippet}
|
|
923
795
|
|
|
924
|
-
|
|
796
|
+
{#snippet footer()}
|
|
925
797
|
<div class="flex items-center justify-between">
|
|
926
|
-
<div>
|
|
927
|
-
<!-- {#if comparison.summary.total_diffs === 0} -->
|
|
928
|
-
<!-- <Button color="red" variant="accent-secondary" on:click={deleteWorkspace}> -->
|
|
929
|
-
<!-- Delete Fork Workspace -->
|
|
930
|
-
<!-- </Button> -->
|
|
931
|
-
<!-- {/if} -->
|
|
932
|
-
</div>
|
|
798
|
+
<div></div>
|
|
933
799
|
|
|
934
800
|
<div class="flex flex-col items-end gap-2">
|
|
935
801
|
{#if comparison.all_behind_items_visible && comparison.all_ahead_items_visible}
|
|
@@ -939,7 +805,8 @@ $effect(() => {
|
|
|
939
805
|
disabled={selectedItems.length === 0 ||
|
|
940
806
|
deploying ||
|
|
941
807
|
(hasBehindChanges && !allowBehindChangesOverride) ||
|
|
942
|
-
(mergeIntoParent && !canDeployToParent)
|
|
808
|
+
(mergeIntoParent && !canDeployToParent) ||
|
|
809
|
+
hasUnselectedOnBehalfOf}
|
|
943
810
|
loading={deploying}
|
|
944
811
|
on:click={deployChanges}
|
|
945
812
|
>
|
|
@@ -949,6 +816,15 @@ $effect(() => {
|
|
|
949
816
|
({selectedConflicts} conflicts)
|
|
950
817
|
{/if}
|
|
951
818
|
</Button>
|
|
819
|
+
{#if hasUnselectedOnBehalfOf}
|
|
820
|
+
<span class="text-xs text-yellow-600">
|
|
821
|
+
You must set the "on behalf of" user for all items before deploying
|
|
822
|
+
<Tooltip class="text-yellow-600">
|
|
823
|
+
The "run on behalf of" field defines which user's permissions will be applied
|
|
824
|
+
during execution. Make sure this is set to an appropriate user before deploying.
|
|
825
|
+
</Tooltip>
|
|
826
|
+
</span>
|
|
827
|
+
{/if}
|
|
952
828
|
{/if}
|
|
953
829
|
{/if}
|
|
954
830
|
|
|
@@ -965,11 +841,103 @@ $effect(() => {
|
|
|
965
841
|
{/if}
|
|
966
842
|
</div>
|
|
967
843
|
</div>
|
|
844
|
+
{/snippet}
|
|
845
|
+
</WorkspaceDeployLayout>
|
|
846
|
+
|
|
847
|
+
<!-- Fork Triggers Section -->
|
|
848
|
+
<div class="mt-6">
|
|
849
|
+
<div class="flex items-center gap-2 mb-2">
|
|
850
|
+
<h3 class="text-sm font-semibold">Triggers created in this fork</h3>
|
|
851
|
+
{#if !loadingTriggers}
|
|
852
|
+
<Badge color="indigo" size="xs"
|
|
853
|
+
>{forkTriggers.length} trigger{forkTriggers.length !== 1 ? 's' : ''}</Badge
|
|
854
|
+
>
|
|
855
|
+
{/if}
|
|
968
856
|
</div>
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
857
|
+
|
|
858
|
+
<Alert title="Deploy and/or delete these triggers" type="info" class="mb-2">
|
|
859
|
+
When forking a workspace, triggers are not forked to avoid unnecessary executions or
|
|
860
|
+
collisions. If you created this triggers with the intention of deploying them to the parent
|
|
861
|
+
workspace, you can do so here. Otherwise it is recommended to delete them or disable them.
|
|
862
|
+
</Alert>
|
|
863
|
+
|
|
864
|
+
{#if loadingTriggers}
|
|
865
|
+
<div class="flex items-center gap-2 text-secondary text-sm p-4">
|
|
866
|
+
<Loader2 class="animate-spin w-4 h-4" />
|
|
867
|
+
Loading triggers...
|
|
868
|
+
</div>
|
|
869
|
+
{:else if forkTriggers.length === 0}
|
|
870
|
+
<div class="text-secondary text-sm p-4 border rounded-md bg-surface-tertiary">
|
|
871
|
+
No triggers in this fork workspace.
|
|
872
|
+
</div>
|
|
873
|
+
{:else}
|
|
874
|
+
<div class="border rounded-md bg-surface-tertiary">
|
|
875
|
+
{#each forkTriggers as trigger (trigger.triggerKind + ':' + trigger.path)}
|
|
876
|
+
<Row
|
|
877
|
+
kind="trigger"
|
|
878
|
+
triggerKind={trigger.triggerKind}
|
|
879
|
+
path={trigger.path}
|
|
880
|
+
href={getTriggerHref(trigger.triggerKind)}
|
|
881
|
+
marked={undefined}
|
|
882
|
+
isSelectable={false}
|
|
883
|
+
canFavorite={false}
|
|
884
|
+
workspaceId={currentWorkspaceId}
|
|
885
|
+
>
|
|
886
|
+
{#snippet customSummary()}
|
|
887
|
+
<span>{getTriggerDisplayName(trigger.triggerKind)}</span>
|
|
888
|
+
<span class="text-secondary mx-1">→</span>
|
|
889
|
+
<span class="text-secondary">{trigger.scriptPath}</span>
|
|
890
|
+
{#if trigger.isFlow}
|
|
891
|
+
<Badge color="blue" size="xs">flow</Badge>
|
|
892
|
+
{/if}
|
|
893
|
+
{#if trigger.extraLabel}
|
|
894
|
+
<span class="text-tertiary text-xs">({trigger.extraLabel})</span>
|
|
895
|
+
{/if}
|
|
896
|
+
{/snippet}
|
|
897
|
+
{#snippet actions()}
|
|
898
|
+
{#if trigger.enabled != null}
|
|
899
|
+
<Badge color={trigger.enabled ? 'green' : 'gray'} size="xs">
|
|
900
|
+
{trigger.enabled ? 'Enabled' : 'Disabled'}
|
|
901
|
+
</Badge>
|
|
902
|
+
{/if}
|
|
903
|
+
<Button
|
|
904
|
+
size="xs"
|
|
905
|
+
variant="subtle"
|
|
906
|
+
onclick={() => {
|
|
907
|
+
deploymentDrawer?.openDrawer(trigger.path, 'trigger', {
|
|
908
|
+
triggers: { kind: trigger.triggerKind }
|
|
909
|
+
})
|
|
910
|
+
}}
|
|
911
|
+
>
|
|
912
|
+
<Upload size={12} />
|
|
913
|
+
Deploy
|
|
914
|
+
</Button>
|
|
915
|
+
<Button size="xs" variant="subtle" color="red" onclick={() => deleteTrigger(trigger)}>
|
|
916
|
+
<Trash2 size={12} />
|
|
917
|
+
</Button>
|
|
918
|
+
{/snippet}
|
|
919
|
+
</Row>
|
|
920
|
+
{/each}
|
|
921
|
+
</div>
|
|
922
|
+
{/if}
|
|
923
|
+
</div>
|
|
924
|
+
|
|
925
|
+
<DeployWorkspaceDrawer bind:this={deploymentDrawer} />
|
|
926
|
+
<DiffDrawer bind:this={diffDrawer} {isFlow} />
|
|
927
|
+
<ConfirmationModal
|
|
928
|
+
title="Delete trigger"
|
|
929
|
+
confirmationText="Delete"
|
|
930
|
+
open={!!triggerToDelete}
|
|
931
|
+
onConfirmed={confirmDeleteTrigger}
|
|
932
|
+
onCanceled={() => (triggerToDelete = undefined)}
|
|
933
|
+
>
|
|
934
|
+
{#if triggerToDelete}
|
|
935
|
+
Are you sure you want to delete the {getTriggerDisplayName(triggerToDelete.triggerKind)} trigger
|
|
936
|
+
'{triggerToDelete.path}'?
|
|
937
|
+
{/if}
|
|
938
|
+
</ConfirmationModal>
|
|
939
|
+
{:else}
|
|
940
|
+
<div class="flex items-center justify-center h-full">
|
|
941
|
+
<div class="text-gray-500">No comparison data available</div>
|
|
942
|
+
</div>
|
|
943
|
+
{/if}
|