windmill-components 1.558.4 → 1.596.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package/aiStore.d.ts +2 -0
- package/package/aiStore.js +24 -0
- package/package/ansibleUtils.d.ts +60 -0
- package/package/ansibleUtils.js +338 -0
- package/package/assets/app.css +22 -2
- package/package/assets/tokens/README.md +1 -0
- package/package/assets/tokens/colorTokensConfig.d.ts +2 -0
- package/package/assets/tokens/colorTokensConfig.js +2 -0
- package/package/assets/tokens/tokens.json +481 -0
- package/package/cancelable-promise-utils.d.ts +11 -0
- package/package/cancelable-promise-utils.js +70 -0
- package/package/common.d.ts +5 -1
- package/package/components/AIAgentLogViewer.svelte +59 -1
- package/package/components/AIAgentLogViewer.svelte.d.ts +3 -2
- package/package/components/AIProviderPicker.svelte +140 -57
- package/package/components/AddUser.svelte +2 -3
- package/package/components/ApiConnectForm.svelte +3 -10
- package/package/components/ApiConnectForm.svelte.d.ts +1 -1
- package/package/components/AppConnectDrawer.svelte +3 -3
- package/package/components/AppConnectInner.svelte +212 -164
- package/package/components/AppConnectLightweightResourcePicker.svelte +2 -2
- package/package/components/AppTutorials.svelte +19 -42
- package/package/components/AppTutorials.svelte.d.ts +3 -25
- package/package/components/ArgEnum.svelte +9 -2
- package/package/components/ArgEnum.svelte.d.ts +1 -0
- package/package/components/ArgInfo.svelte +8 -8
- package/package/components/ArgInput.svelte +127 -88
- package/package/components/ArgInput.svelte.d.ts +2 -1
- package/package/components/ArrayTypeNarrowing.svelte +9 -5
- package/package/components/ArrayTypeNarrowing.svelte.d.ts +2 -1
- package/package/components/AssignableTags.svelte +3 -3
- package/package/components/AssignableTags.svelte.d.ts +1 -2
- package/package/components/AssignableTagsInner.svelte +116 -74
- package/package/components/AssignableTagsInner.svelte.d.ts +1 -1
- package/package/components/Auth0Setting.svelte +74 -29
- package/package/components/AuthSettings.svelte +295 -108
- package/package/components/AutheliaSetting.svelte +26 -15
- package/package/components/AuthentikSetting.svelte +16 -14
- package/package/components/AutoscalingConfigEditor.svelte +417 -337
- package/package/components/AutoscalingConfigEditor.svelte.d.ts +3 -19
- package/package/components/AutoscalingEvents.svelte +64 -42
- package/package/components/Awareness.svelte +14 -11
- package/package/components/Awareness.svelte.d.ts +2 -17
- package/package/components/AzureOauthSettings.svelte +10 -6
- package/package/components/CenteredModal.svelte +4 -4
- package/package/components/CenteredPage.svelte +6 -5
- package/package/components/CenteredPage.svelte.d.ts +8 -38
- package/package/components/ChangeInstanceUsernameInner.svelte +4 -5
- package/package/components/ChannelSelector.svelte +103 -72
- package/package/components/ChannelSelector.svelte.d.ts +2 -0
- package/package/components/CliHelpBox.svelte +17 -13
- package/package/components/CollapseLink.svelte +16 -16
- package/package/components/CollapseLink.svelte.d.ts +7 -30
- package/package/components/CompareWorkspaces.svelte +945 -0
- package/package/components/CompareWorkspaces.svelte.d.ts +9 -0
- package/package/components/ConnectionSection.svelte +122 -106
- package/package/components/ConnectionSection.svelte.d.ts +10 -20
- package/package/components/ContentSearchInner.svelte +15 -60
- package/package/components/ContentSearchInnerItem.svelte +1 -1
- package/package/components/ContextualVariableEditor.svelte +14 -9
- package/package/components/CronBuilder.svelte +11 -10
- package/package/components/CronInput.svelte +161 -162
- package/package/components/CronInput.svelte.d.ts +1 -1
- package/package/components/CustomOauth.svelte +56 -53
- package/package/components/CustomSso.svelte +7 -7
- package/package/components/DBManager.svelte +108 -90
- package/package/components/DBManager.svelte.d.ts +6 -6
- package/package/components/DBManagerDrawer.svelte +13 -26
- package/package/components/DBManagerDrawer.svelte.d.ts +1 -1
- package/package/components/DBTableEditor.svelte +25 -22
- package/package/components/DBTableEditor.svelte.d.ts +5 -5
- package/package/components/DateInput.svelte +3 -0
- package/package/components/DateInput.svelte.d.ts +1 -1
- package/package/components/DateTimeInput.svelte +18 -20
- package/package/components/DateTimeInput.svelte.d.ts +1 -1
- package/package/components/DefaultScripts.svelte +1 -8
- package/package/components/DefaultScriptsInner.svelte +2 -1
- package/package/components/DefaultTagsInner.svelte +108 -69
- package/package/components/DefaultTagsInner.svelte.d.ts +4 -18
- package/package/components/DependenciesDeploymentWarning.svelte +265 -0
- package/package/components/DependenciesDeploymentWarning.svelte.d.ts +13 -0
- package/package/components/DeployButton.svelte +5 -3
- package/package/components/DeployToSetting.svelte +7 -8
- package/package/components/DeployWorkspace.svelte +58 -28
- package/package/components/DeployWorkspace.svelte.d.ts +9 -9
- package/package/components/Description.svelte +1 -1
- package/package/components/Dev.svelte +32 -13
- package/package/components/Dev.svelte.d.ts +1 -0
- package/package/components/DiffDrawer.svelte +76 -37
- package/package/components/DiffDrawer.svelte.d.ts +1 -0
- package/package/components/DiffEditor.svelte +6 -0
- package/package/components/DiffEditor.svelte.d.ts +2 -1
- package/package/components/DisplayResult.svelte +59 -75
- package/package/components/DisplayResultControlBar.svelte +1 -1
- package/package/components/DraftBadge.svelte +2 -2
- package/package/components/DropdownV2.svelte +13 -9
- package/package/components/DropdownV2.svelte.d.ts +4 -0
- package/package/components/DropdownV2Inner.svelte +12 -4
- package/package/components/DynamicInput.svelte +1 -1
- package/package/components/EEOnly.svelte +25 -0
- package/package/components/EEOnly.svelte.d.ts +7 -0
- package/package/components/EditableSchemaForm.svelte +10 -12
- package/package/components/Editor.svelte +175 -18
- package/package/components/Editor.svelte.d.ts +5 -0
- package/package/components/EditorBar.svelte +210 -112
- package/package/components/EditorBar.svelte.d.ts +2 -4
- package/package/components/EditorSettings.svelte +2 -4
- package/package/components/EditorSettings.svelte.d.ts +3 -0
- package/package/components/ErrorOrRecoveryHandler.svelte +320 -334
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -0
- package/package/components/ExploreAssetButton.svelte +36 -11
- package/package/components/FakeMonacoPlaceHolder.svelte +11 -7
- package/package/components/FieldHeader.svelte +4 -4
- package/package/components/FlowBuilder.svelte +88 -69
- package/package/components/FlowGraphDiffViewer.svelte +210 -0
- package/package/components/FlowGraphDiffViewer.svelte.d.ts +7 -0
- package/package/components/FlowGraphViewer.svelte +2 -1
- package/package/components/FlowGraphViewerStep.svelte +6 -3
- package/package/components/FlowGraphViewerStep.svelte.d.ts +1 -0
- package/package/components/FlowHistoryJobPicker.svelte +9 -11
- package/package/components/FlowHistoryJobPicker.svelte.d.ts +8 -7
- package/package/components/FlowJobResult.svelte +8 -6
- package/package/components/FlowJobResult.svelte.d.ts +3 -2
- package/package/components/FlowLogRow.svelte +1 -1
- package/package/components/FlowLogViewer.svelte +18 -14
- package/package/components/FlowLoopIterationPreview.svelte +9 -9
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowMetadata.svelte +19 -19
- package/package/components/FlowPlugConnect.svelte +3 -5
- package/package/components/FlowPreviewContent.svelte +50 -129
- package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
- package/package/components/FlowPreviewResult.svelte +4 -0
- package/package/components/FlowRestartButton.svelte +192 -0
- package/package/components/FlowRestartButton.svelte.d.ts +15 -0
- package/package/components/FlowStatusViewerInner.svelte +171 -111
- package/package/components/FlowStatusWaitingForEvents.svelte +13 -7
- package/package/components/FlowTimelineBar.svelte +1 -1
- package/package/components/FlowTutorials.svelte +19 -60
- package/package/components/FlowTutorials.svelte.d.ts +3 -21
- package/package/components/FlowViewer.svelte +3 -3
- package/package/components/FlowViewerInner.svelte +5 -5
- package/package/components/FolderEditor.svelte +229 -207
- package/package/components/FolderInfo.svelte +3 -3
- package/package/components/FolderPicker.svelte +6 -9
- package/package/components/ForkWorkspaceBanner.svelte +183 -0
- package/package/components/ForkWorkspaceBanner.svelte.d.ts +3 -0
- package/package/components/GfmMarkdown.svelte +2 -2
- package/package/components/GfmMarkdown.svelte.d.ts +5 -18
- package/package/components/GitDiffPreview.svelte +5 -5
- package/package/components/GitHubAppIntegration.svelte +67 -41
- package/package/components/GitRepoPopoverPicker.svelte +83 -0
- package/package/components/GitRepoPopoverPicker.svelte.d.ts +26 -0
- package/package/components/GitRepoResourcePicker.svelte +230 -0
- package/package/components/GitRepoResourcePicker.svelte.d.ts +37 -0
- package/package/components/GitRepoViewer.svelte +167 -0
- package/package/components/GitRepoViewer.svelte.d.ts +8 -0
- package/package/components/GroupEditor.svelte +192 -163
- package/package/components/GroupInfo.svelte +25 -6
- package/package/components/HighlightCode.svelte +3 -0
- package/package/components/HighlightCode.svelte.d.ts +2 -2
- package/package/components/HighlightTheme.svelte +2 -5
- package/package/components/HistoricInputs.svelte +5 -5
- package/package/components/HistoricInputs.svelte.d.ts +1 -1
- package/package/components/HistoricList.svelte +1 -1
- package/package/components/HttpAgentWorkerDrawer.svelte +217 -148
- package/package/components/IconedPath.svelte +2 -3
- package/package/components/IconedPath.svelte.d.ts +6 -20
- package/package/components/IconedResourceType.svelte +1 -1
- package/package/components/InfiniteList.svelte.d.ts +1 -1
- package/package/components/InputTransformForm.svelte +233 -167
- package/package/components/InputTransformForm.svelte.d.ts +3 -1
- package/package/components/InputTransformSchemaForm.svelte +23 -7
- package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -1
- package/package/components/InputTransformsViewer.svelte +1 -1
- package/package/components/InstanceGroupEditor.svelte +1 -2
- package/package/components/InstanceNameEditor.svelte +28 -23
- package/package/components/InstanceSetting.svelte +358 -538
- package/package/components/InstanceSetting.svelte.d.ts +2 -0
- package/package/components/InstanceSettings.svelte +149 -124
- package/package/components/InviteGlobalUser.svelte +6 -7
- package/package/components/InviteUser.svelte +2 -8
- package/package/components/ItemPicker.svelte +2 -4
- package/package/components/JobArgs.svelte +1 -1
- package/package/components/JobLoader.svelte +4 -1
- package/package/components/JsonEditor.svelte +6 -7
- package/package/components/KanidmSetting.svelte +25 -15
- package/package/components/KeycloakSetting.svelte +26 -15
- package/package/components/Label.svelte +17 -5
- package/package/components/Label.svelte.d.ts +3 -1
- package/package/components/LightweightResourcePicker.svelte +1 -1
- package/package/components/LogViewer.svelte +15 -16
- package/package/components/LogViewerHeader.svelte +3 -4
- package/package/components/Login.svelte +27 -43
- package/package/components/Login.svelte.d.ts +3 -19
- package/package/components/ManageTagsDrawer.svelte +55 -0
- package/package/components/ManageTagsDrawer.svelte.d.ts +12 -0
- package/package/components/MapResult.svelte +9 -11
- package/package/components/McpToolCallDetails.svelte +33 -0
- package/package/components/McpToolCallDetails.svelte.d.ts +11 -0
- package/package/components/ModulePreview.svelte +3 -3
- package/package/components/ModulePreview.svelte.d.ts +1 -0
- package/package/components/ModulePreviewForm.svelte +3 -3
- package/package/components/ModulePreviewResultViewer.svelte +1 -1
- package/package/components/ModuleStatus.svelte +2 -2
- package/package/components/ModuleTest.svelte +4 -3
- package/package/components/NextcloudSetting.svelte +36 -24
- package/package/components/NumberTypeNarrowing.svelte +1 -1
- package/package/components/NumberTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/OAuthSetting.svelte +132 -55
- package/package/components/OAuthSetting.svelte.d.ts +4 -18
- package/package/components/OauthExtraParams.svelte +12 -12
- package/package/components/OauthScopes.svelte +5 -7
- package/package/components/ObjectStoreConfigSettings.svelte +50 -59
- package/package/components/OccupancyBars.svelte +35 -0
- package/package/components/OccupancyBars.svelte.d.ts +9 -0
- package/package/components/OktaSetting.svelte +69 -33
- package/package/components/PageHeader.svelte +6 -3
- package/package/components/PageHeader.svelte.d.ts +1 -0
- package/package/components/Password.svelte +31 -33
- package/package/components/Password.svelte.d.ts +2 -0
- package/package/components/PasswordArgInput.svelte +2 -3
- package/package/components/Path.svelte +29 -28
- package/package/components/PermissionHistory.svelte +99 -0
- package/package/components/PermissionHistory.svelte.d.ts +15 -0
- package/package/components/PersistentScriptDrawer.svelte +1 -7
- package/package/components/Popover.svelte +7 -3
- package/package/components/QueueAlerts.svelte +544 -0
- package/package/components/QueueAlerts.svelte.d.ts +3 -0
- package/package/components/QueueMetricsDrawer.svelte +8 -375
- package/package/components/QueueMetricsDrawer.svelte.d.ts +0 -2
- package/package/components/QueueMetricsDrawerInner.svelte +79 -73
- package/package/components/QueuePosition.svelte +2 -2
- package/package/components/RepositorySelector.svelte +90 -0
- package/package/components/RepositorySelector.svelte.d.ts +18 -0
- package/package/components/Required.svelte +1 -1
- package/package/components/ResourceEditor.svelte +106 -97
- package/package/components/ResourceEditorDrawer.svelte +3 -1
- package/package/components/ResourcePicker.svelte +26 -10
- package/package/components/ResourceTypePicker.svelte +6 -8
- package/package/components/RunButton.svelte +3 -3
- package/package/components/RunChart.svelte +15 -14
- package/package/components/RunChart.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +3 -3
- package/package/components/RunFormAdvancedPopup.svelte +1 -2
- package/package/components/RunPageTutorials.svelte +21 -0
- package/package/components/RunPageTutorials.svelte.d.ts +23 -0
- package/package/components/RunsPage.svelte +1261 -0
- package/package/components/RunsPage.svelte.d.ts +7 -0
- package/package/components/S3ArrayHelperButton.svelte +1 -3
- package/package/components/S3FilePicker.svelte +42 -751
- package/package/components/S3FilePicker.svelte.d.ts +6 -25
- package/package/components/S3FilePickerInner.svelte +749 -0
- package/package/components/S3FilePickerInner.svelte.d.ts +74 -0
- package/package/components/S3ObjectPicker.svelte +3 -5
- package/package/components/SaveInputsButton.svelte +2 -3
- package/package/components/SaveToWorkspace.svelte +14 -0
- package/package/components/SaveToWorkspace.svelte.d.ts +6 -0
- package/package/components/SavedInputs.svelte +33 -46
- package/package/components/SavedInputs.svelte.d.ts +10 -9
- package/package/components/SavedInputsPicker.svelte +14 -18
- package/package/components/SavedInputsPickerViewer.svelte +7 -8
- package/package/components/SavedInputsV2.svelte +2 -3
- package/package/components/SchemaForm.svelte +6 -10
- package/package/components/SchemaForm.svelte.d.ts +1 -1
- package/package/components/SchemaFormWithArgPicker.svelte +1 -1
- package/package/components/SchemaViewer.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +261 -206
- package/package/components/ScriptEditor.svelte +308 -198
- package/package/components/ScriptEditor.svelte.d.ts +10 -4
- package/package/components/ScriptEditorSkeleton.svelte +55 -0
- package/package/components/ScriptEditorSkeleton.svelte.d.ts +26 -0
- package/package/components/ScriptPicker.svelte +15 -20
- package/package/components/ScriptSchema.svelte +0 -3
- package/package/components/ScriptSchema.svelte.d.ts +1 -3
- package/package/components/ScriptVersionHistory.svelte +5 -5
- package/package/components/Section.svelte +22 -19
- package/package/components/Section.svelte.d.ts +3 -0
- package/package/components/ServiceLogsInner.svelte +7 -7
- package/package/components/ShareModal.svelte +66 -60
- package/package/components/SharedBadge.svelte +6 -8
- package/package/components/SimpleEditor.svelte +18 -32
- package/package/components/SimpleEditor.svelte.d.ts +1 -3
- package/package/components/SqlRepl.svelte +8 -6
- package/package/components/SqlRepl.svelte.d.ts +1 -1
- package/package/components/Star.svelte +3 -3
- package/package/components/StringTypeNarrowing.svelte +6 -2
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/Subsection.svelte +3 -5
- package/package/components/Summary.svelte +11 -60
- package/package/components/SupabaseConnect.svelte +4 -7
- package/package/components/SuperadminSettings.svelte +1 -1
- package/package/components/SuperadminSettingsInner.svelte +28 -24
- package/package/components/TableCustom.svelte +1 -1
- package/package/components/TagList.svelte +46 -0
- package/package/components/TagList.svelte.d.ts +8 -0
- package/package/components/TagsToListenTo.svelte +46 -13
- package/package/components/TagsToListenTo.svelte.d.ts +3 -19
- package/package/components/TeamSelector.svelte +217 -72
- package/package/components/TeamSelector.svelte.d.ts +1 -0
- package/package/components/TemplateEditor.svelte +23 -24
- package/package/components/TestConnection.svelte +2 -9
- package/package/components/TimeAgo.svelte +6 -7
- package/package/components/TimeAgo.svelte.d.ts +4 -18
- package/package/components/Toast.svelte +72 -16
- package/package/components/Toast.svelte.d.ts +1 -1
- package/package/components/Toggle.svelte +22 -40
- package/package/components/Toggle.svelte.d.ts +26 -28
- package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
- package/package/components/Tooltip.svelte +11 -14
- package/package/components/TooltipInner.svelte +2 -2
- package/package/components/Uptodate.svelte +1 -1
- package/package/components/UserSettings.svelte +23 -17
- package/package/components/VariableEditor.svelte +52 -42
- package/package/components/WhitelistIp.svelte +1 -1
- package/package/components/WorkerGroup.svelte +690 -552
- package/package/components/WorkerGroup.svelte.d.ts +7 -1
- package/package/components/WorkerRepl.svelte +10 -18
- package/package/components/WorkerTagPicker.svelte +2 -3
- package/package/components/WorkerTagSelect.svelte +17 -16
- package/package/components/WorkspaceDependenciesEditor.svelte +444 -0
- package/package/components/WorkspaceDependenciesEditor.svelte.d.ts +28 -0
- package/package/components/WorkspaceDependenciesViewer.svelte +90 -0
- package/package/components/WorkspaceDependenciesViewer.svelte.d.ts +7 -0
- package/package/components/WorkspaceTutorials.svelte +17 -0
- package/package/components/WorkspaceTutorials.svelte.d.ts +5 -0
- package/package/components/ZitadelSetting.svelte +25 -16
- package/package/components/apps/components/buttons/AppButton.svelte +3 -2
- package/package/components/apps/components/buttons/AppForm.svelte +6 -1
- package/package/components/apps/components/buttons/AppFormButton.svelte +8 -3
- package/package/components/apps/components/componentManagedFields.d.ts +33 -0
- package/package/components/apps/components/componentManagedFields.js +80 -0
- package/package/components/apps/components/display/AppAccordionList.svelte +1 -1
- package/package/components/apps/components/display/AppCarouselList.svelte +1 -1
- package/package/components/apps/components/display/AppChat.svelte +282 -0
- package/package/components/apps/components/display/AppChat.svelte.d.ts +14 -0
- package/package/components/apps/components/display/AppDownload.svelte +46 -4
- package/package/components/apps/components/display/AppImage.svelte +22 -26
- package/package/components/apps/components/display/AppJobProgressBar.svelte +102 -0
- package/package/components/apps/components/display/AppJobProgressBar.svelte.d.ts +11 -0
- package/package/components/apps/components/display/AppMap.svelte +8 -7
- package/package/components/apps/components/display/AppMenu.svelte +3 -1
- package/package/components/apps/components/display/AppNavbarItem.svelte +1 -0
- package/package/components/apps/components/display/AppPdf.svelte +41 -2
- package/package/components/apps/components/display/AppText.svelte +4 -5
- package/package/components/apps/components/display/InsertRowDrawerButton.svelte +3 -3
- package/package/components/apps/components/display/InsertRowDrawerButton.svelte.d.ts +2 -1
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +5 -3
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +1 -2
- package/package/components/apps/components/display/dbtable/InsertRow.svelte.d.ts +2 -1
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/metadata.d.ts +10 -0
- package/package/components/apps/components/display/dbtable/metadata.js +433 -0
- package/package/components/apps/components/display/dbtable/queries/count.d.ts +1 -2
- package/package/components/apps/components/display/dbtable/queries/count.js +2 -2
- package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/queries/delete.d.ts +2 -2
- package/package/components/apps/components/display/dbtable/queries/delete.js +2 -2
- package/package/components/apps/components/display/dbtable/queries/deleteTable.d.ts +2 -2
- package/package/components/apps/components/display/dbtable/queries/deleteTable.js +3 -1
- package/package/components/apps/components/display/dbtable/queries/insert.d.ts +1 -2
- package/package/components/apps/components/display/dbtable/queries/insert.js +6 -3
- package/package/components/apps/components/display/dbtable/queries/select.d.ts +1 -2
- package/package/components/apps/components/display/dbtable/queries/select.js +2 -2
- package/package/components/apps/components/display/dbtable/queries/update.d.ts +2 -2
- package/package/components/apps/components/display/dbtable/queries/update.js +2 -2
- package/package/components/apps/components/display/dbtable/utils.d.ts +15 -20
- package/package/components/apps/components/display/dbtable/utils.js +50 -438
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +38 -1
- package/package/components/apps/components/display/table/AppTable.svelte.d.ts +2 -2
- package/package/components/apps/components/display/table/AppTableFooter.svelte +2 -4
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +10 -22
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
- package/package/components/apps/components/helpers/InputValue.svelte +10 -10
- package/package/components/apps/components/helpers/Loader.svelte +1 -1
- package/package/components/apps/components/helpers/MissingConnectionWarning.svelte +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +28 -25
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +6 -2
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +27 -2
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +6 -1
- package/package/components/apps/components/helpers/eval.d.ts +1 -0
- package/package/components/apps/components/helpers/eval.js +3 -1
- package/package/components/apps/components/helpers/executeRunnable.d.ts +3 -3
- package/package/components/apps/components/helpers/executeRunnable.js +7 -3
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +10 -7
- package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +5 -1
- package/package/components/apps/components/inputs/AppQuillEditor.svelte +1 -1
- package/package/components/apps/components/inputs/AppSelectTab.svelte +2 -4
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -2
- package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
- package/package/components/apps/components/layout/AppDrawer.svelte +2 -1
- package/package/components/apps/components/layout/AppList.svelte +3 -5
- package/package/components/apps/components/layout/AppModal.svelte +5 -3
- package/package/components/apps/components/layout/AppModal.svelte.d.ts +1 -0
- package/package/components/apps/components/layout/AppStepper.svelte +3 -5
- package/package/components/apps/components/layout/AppTabs.svelte +3 -9
- package/package/components/apps/editor/AppEditor.svelte +21 -30
- package/package/components/apps/editor/AppEditorHeader.svelte +39 -212
- package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +3 -1
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +4 -5
- package/package/components/apps/editor/AppEditorTutorial.svelte +16 -43
- package/package/components/apps/editor/AppEditorTutorial.svelte.d.ts +4 -2
- package/package/components/apps/editor/AppExportButton.svelte +5 -6
- package/package/components/apps/editor/AppInputs.svelte +1 -1
- package/package/components/apps/editor/AppJobsDrawer.svelte +15 -17
- package/package/components/apps/editor/AppJsonEditor.svelte +2 -2
- package/package/components/apps/editor/AppPreview.svelte +2 -1
- package/package/components/apps/editor/AppReportsDrawerInner.svelte +30 -89
- package/package/components/apps/editor/ComponentHeader.svelte +1 -2
- package/package/components/apps/editor/DeploymentHistory.svelte +3 -3
- package/package/components/apps/editor/GridEditor.svelte +4 -4
- package/package/components/apps/editor/PreviewToggle.svelte +0 -1
- package/package/components/apps/editor/PublicApp.svelte +125 -0
- package/package/components/apps/editor/PublicApp.svelte.d.ts +14 -0
- package/package/components/apps/editor/RecomputeAllButton.svelte +2 -3
- package/package/components/apps/editor/RecomputeAllComponents.svelte +1 -1
- package/package/components/apps/editor/RecomputeAllWrapper.svelte +1 -1
- package/package/components/apps/editor/RunnableJobPanelInner.svelte +3 -3
- package/package/components/apps/editor/SettingsPanel.svelte +1 -1
- package/package/components/apps/editor/SubGridEditor.svelte +2 -1
- package/package/components/apps/editor/appPolicy.d.ts +6 -0
- package/package/components/apps/editor/appPolicy.js +186 -0
- package/package/components/apps/editor/appUtils.d.ts +1 -3
- package/package/components/apps/editor/appUtils.js +2 -60
- package/package/components/apps/editor/appUtilsCore.d.ts +7 -0
- package/package/components/apps/editor/appUtilsCore.js +66 -0
- package/package/components/apps/editor/appUtilsS3.d.ts +16 -16
- package/package/components/apps/editor/appUtilsS3.js +31 -9
- package/package/components/apps/editor/component/ComponentInner.svelte +23 -1
- package/package/components/apps/editor/component/componentCallbacks.svelte.js +2 -1
- package/package/components/apps/editor/component/components.d.ts +649 -17
- package/package/components/apps/editor/component/components.js +186 -9
- package/package/components/apps/editor/component/default-codes.js +13 -0
- package/package/components/apps/editor/component/sets.js +2 -0
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +3 -3
- package/package/components/apps/editor/componentsPanel/CssHelperPanel.svelte +5 -8
- package/package/components/apps/editor/componentsPanel/CssProperty.svelte +37 -39
- package/package/components/apps/editor/componentsPanel/CssSettings.svelte +6 -8
- package/package/components/apps/editor/componentsPanel/CustomComponentsList.svelte +1 -1
- package/package/components/apps/editor/componentsPanel/GroupList.svelte +1 -1
- package/package/components/apps/editor/componentsPanel/ListItem.svelte +9 -7
- package/package/components/apps/editor/componentsPanel/NameEditor.svelte +1 -1
- package/package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +1 -1
- package/package/components/apps/editor/componentsPanel/QuickStyleProperty.svelte +2 -3
- package/package/components/apps/editor/componentsPanel/ThemeList.svelte +2 -3
- package/package/components/apps/editor/componentsPanel/ThemeNameEditor.svelte +1 -1
- package/package/components/apps/editor/componentsPanel/ThemeRow.svelte +1 -1
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +7 -0
- package/package/components/apps/editor/componentsPanel/cssUtils.js +25 -1
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +12 -0
- package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +1 -1
- package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +2 -2
- package/package/components/apps/editor/contextPanel/DebugPanel.svelte +2 -2
- package/package/components/apps/editor/contextPanel/LazyModePanel.svelte +3 -3
- package/package/components/apps/editor/contextPanel/SubGridOutput.svelte +1 -1
- package/package/components/apps/editor/contextPanel/components/BackgroundScriptsOutput.svelte +1 -1
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +2 -2
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +6 -4
- package/package/components/apps/editor/inlineScriptsPanel/AppRunButton.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +2 -1
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte.d.ts +3 -0
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +2 -12
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +34 -60
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +7 -9
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptHiddenRunnable.svelte +5 -4
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +8 -14
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +3 -3
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +6 -6
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte +3 -3
- package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/utils.js +5 -4
- package/package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +8 -6
- package/package/components/apps/editor/settingsPanel/CSSMigrationModal.svelte +3 -3
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +33 -24
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +2 -3
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +3 -8
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +2 -3
- package/package/components/apps/editor/settingsPanel/GridGroup.svelte +2 -3
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +3 -10
- package/package/components/apps/editor/settingsPanel/GridPane.svelte +2 -9
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -9
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +11 -38
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +4 -3
- package/package/components/apps/editor/settingsPanel/MenuItems.svelte +5 -6
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +36 -17
- package/package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +5 -5
- package/package/components/apps/editor/settingsPanel/SelectedRunnable.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/StylePanel.svelte +26 -24
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +44 -25
- package/package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -2
- package/package/components/apps/editor/settingsPanel/common/PanelSection.svelte +31 -3
- package/package/components/apps/editor/settingsPanel/common/PanelSection.svelte.d.ts +3 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +5 -5
- package/package/components/apps/editor/settingsPanel/inputEditor/RunnableInputEditor.svelte +5 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +9 -9
- package/package/components/apps/editor/settingsPanel/inputEditor/TabSelectInput.svelte +3 -3
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -34
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +1 -2
- package/package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +3 -2
- package/package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte +3 -2
- package/package/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte +3 -2
- package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte +4 -3
- package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/script/shared/BackgroundScriptTriggerBy.svelte +5 -4
- package/package/components/apps/editor/settingsPanel/script/shared/ComponentScriptTriggerBy.svelte +4 -4
- package/package/components/apps/editor/settingsPanel/script/shared/ComponentScriptTriggerBy.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingsActions.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptTransformer.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptTransformer.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/script/utils.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/script/utils.js +10 -3
- package/package/components/apps/inputType.d.ts +7 -5
- package/package/components/apps/inputType.js +6 -1
- package/package/components/apps/sharedTypes.d.ts +21 -0
- package/package/components/apps/sharedTypes.js +1 -0
- package/package/components/apps/types.d.ts +3 -20
- package/package/components/apps/utils.d.ts +2 -4
- package/package/components/apps/utils.js +15 -14
- package/package/components/assets/AssetButtons.svelte +37 -14
- package/package/components/assets/AssetButtons.svelte.d.ts +2 -0
- package/package/components/assets/AssetsDropdownButton.svelte +35 -16
- package/package/components/assets/AssetsUsageDrawer.svelte +4 -4
- package/package/components/assets/JobAssetsViewer.svelte +14 -11
- package/package/components/assets/lib.d.ts +2 -1
- package/package/components/assets/lib.js +10 -2
- package/package/components/auditLogs/AuditLogDetails.svelte +59 -53
- package/package/components/auditLogs/AuditLogMobileFilters.svelte +2 -2
- package/package/components/auditLogs/AuditLogsFilters.svelte +94 -98
- package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +2 -1
- package/package/components/auditLogs/AuditLogsTable.svelte +52 -31
- package/package/components/auditLogs/AuditLogsTable.svelte.d.ts +1 -0
- package/package/components/auditLogs/AuditLogsTimeline.svelte +1 -1
- package/package/components/chat/ChatInput.svelte +53 -0
- package/package/components/chat/ChatInput.svelte.d.ts +29 -0
- package/package/components/chat/ChatMessage.svelte +101 -0
- package/package/components/chat/ChatMessage.svelte.d.ts +22 -0
- package/package/components/chat/utils.d.ts +5 -0
- package/package/components/chat/utils.js +26 -0
- package/package/components/common/CloseButton.svelte +3 -2
- package/package/components/common/OnChange.svelte +1 -2
- package/package/components/common/ResizeTransitionWrapper.svelte +17 -5
- package/package/components/common/Url.svelte +1 -1
- package/package/components/common/alert/Alert.svelte +6 -19
- package/package/components/common/alert/model.js +4 -4
- package/package/components/common/badge/Badge.svelte +71 -54
- package/package/components/common/badge/Badge.svelte.d.ts +21 -41
- package/package/components/common/badge/model.d.ts +1 -1
- package/package/components/common/breadcrumb/Breadcrumb.svelte +1 -1
- package/package/components/common/button/Button.svelte +110 -36
- package/package/components/common/button/Button.svelte.d.ts +33 -0
- package/package/components/common/button/ConnectionButton.svelte +5 -3
- package/package/components/common/button/RefreshButton.svelte +6 -11
- package/package/components/common/button/RefreshButton.svelte.d.ts +4 -20
- package/package/components/common/button/RoundIconButton.svelte +2 -2
- package/package/components/common/button/UndoRedo.svelte +8 -12
- package/package/components/common/button/model.d.ts +29 -5
- package/package/components/common/button/model.js +126 -8
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +5 -3
- package/package/components/common/confirmationModal/DeployOverrideConfirmationModal.svelte +2 -3
- package/package/components/common/confirmationModal/DraftTriggersConfirmationModal.svelte +7 -18
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +16 -14
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +7 -18
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +5 -4
- package/package/components/common/contextmenu/ContextMenu.svelte +83 -0
- package/package/components/common/contextmenu/ContextMenu.svelte.d.ts +22 -0
- package/package/components/common/contextmenu/contextMenuStyles.d.ts +33 -0
- package/package/components/common/contextmenu/contextMenuStyles.js +35 -0
- package/package/components/common/drawer/Drawer.svelte +1 -1
- package/package/components/common/drawer/DrawerContent.svelte +10 -4
- package/package/components/common/drawer/DrawerContent.svelte.d.ts +1 -0
- package/package/components/common/fileDownload/FileDownload.svelte +16 -14
- package/package/components/common/fileInput/FileInput.svelte +3 -3
- package/package/components/common/fileUpload/FileUpload.svelte +7 -10
- package/package/components/common/fileUpload/FileUploadModal.svelte +2 -2
- package/package/components/common/fileUpload/S3ArgInput.svelte +7 -8
- package/package/components/common/languageIcons/LanguageIcon.svelte +4 -4
- package/package/components/common/languageIcons/LanguageIcon.svelte.d.ts +1 -0
- package/package/components/common/modal/AlwaysMountedModal.svelte +1 -1
- package/package/components/common/modal/Modal.svelte +2 -2
- package/package/components/common/modal/Modal2.svelte +27 -15
- package/package/components/common/modal/Modal2.svelte.d.ts +3 -1
- package/package/components/common/popup/PopupV2.svelte +2 -2
- package/package/components/common/popup/PopupV2.svelte.d.ts +1 -0
- package/package/components/common/seconds/SecondsInput.svelte +2 -2
- package/package/components/common/slack/SlackConnectionStatus.svelte +63 -0
- package/package/components/common/slack/SlackConnectionStatus.svelte.d.ts +10 -0
- package/package/components/common/smtp/SmtpConfigurationStatus.svelte +22 -0
- package/package/components/common/smtp/SmtpConfigurationStatus.svelte.d.ts +7 -0
- package/package/components/common/stepper/Stepper.svelte +3 -3
- package/package/components/common/table/AppRow.svelte +9 -20
- package/package/components/common/table/FlowRow.svelte +8 -8
- package/package/components/common/table/RawAppRow.svelte +2 -3
- package/package/components/common/table/Row.svelte +55 -32
- package/package/components/common/table/Row.svelte.d.ts +10 -2
- package/package/components/common/table/RowIcon.svelte +13 -21
- package/package/components/common/table/RowIcon.svelte.d.ts +1 -2
- package/package/components/common/table/ScriptRow.svelte +20 -16
- package/package/components/common/tabs/Tab.svelte +20 -15
- package/package/components/common/tabs/Tab.svelte.d.ts +7 -2
- package/package/components/common/tabs/Tabs.svelte +14 -20
- package/package/components/common/tabs/Tabs.svelte.d.ts +7 -0
- package/package/components/common/teams/TeamsConnectionStatus.svelte +62 -0
- package/package/components/common/teams/TeamsConnectionStatus.svelte.d.ts +10 -0
- package/package/components/common/toggleButton-v2/ToggleButton.svelte +19 -11
- package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +1 -1
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +2 -3
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -1
- package/package/components/copilot/AIFormAssistant.svelte +1 -1
- package/package/components/copilot/AIFormSettings.svelte +21 -17
- package/package/components/copilot/AskAiButton.svelte +3 -2
- package/package/components/copilot/CronGen.svelte +22 -15
- package/package/components/copilot/CronGen.svelte.d.ts +4 -18
- package/package/components/copilot/CustomAIPrompts.svelte +57 -0
- package/package/components/copilot/CustomAIPrompts.svelte.d.ts +8 -0
- package/package/components/copilot/FlowInlineScriptAIButton.svelte +3 -2
- package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +3 -0
- package/package/components/copilot/IteratorGen.svelte +5 -5
- package/package/components/copilot/MetadataGen.svelte +66 -65
- package/package/components/copilot/MetadataGen.svelte.d.ts +11 -25
- package/package/components/copilot/PredicateGen.svelte +5 -5
- package/package/components/copilot/RegexGen.svelte +2 -2
- package/package/components/copilot/ScriptFix.svelte +1 -1
- package/package/components/copilot/ScriptGen.svelte +23 -38
- package/package/components/copilot/ScriptGen.svelte.d.ts +3 -1
- package/package/components/copilot/StepGenQuick.svelte +13 -10
- package/package/components/copilot/StepInputGen.svelte +53 -71
- package/package/components/copilot/StepInputGen.svelte.d.ts +0 -2
- package/package/components/copilot/StepInputsGen.svelte +13 -9
- package/package/components/copilot/TestAIKey.svelte +4 -14
- package/package/components/copilot/TestAIKey.svelte.d.ts +4 -18
- package/package/components/copilot/chat/AIButton.svelte +56 -0
- package/package/components/copilot/chat/AIButton.svelte.d.ts +7 -0
- package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -0
- package/package/components/copilot/chat/AIButtonStyle.js +8 -0
- package/package/components/copilot/chat/AIChat.svelte +2 -10
- package/package/components/copilot/chat/AIChatDisplay.svelte +9 -13
- package/package/components/copilot/chat/AIChatInlineWidget.svelte +6 -6
- package/package/components/copilot/chat/AIChatInput.svelte +4 -2
- package/package/components/copilot/chat/AIChatManager.svelte.js +149 -45
- package/package/components/copilot/chat/AIChatMessage.svelte +11 -9
- package/package/components/copilot/chat/AiChatLayout.svelte +20 -10
- package/package/components/copilot/chat/AvailableContextList.svelte +4 -4
- package/package/components/copilot/chat/ChatMode.svelte +1 -1
- package/package/components/copilot/chat/ContextElementBadge.svelte +3 -3
- package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
- package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
- package/package/components/copilot/chat/ToolContentDisplay.svelte +33 -13
- package/package/components/copilot/chat/ToolContentDisplay.svelte.d.ts +3 -0
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +24 -15
- package/package/components/copilot/chat/__tests__/app/appChat.eval.test.d.ts +1 -0
- package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +137 -0
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +26 -0
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +131 -0
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +15 -0
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +91 -0
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +41 -0
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +92 -0
- package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +29 -0
- package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +134 -0
- package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +30 -0
- package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +197 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +10 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +9 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +6 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +5 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +12 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +14 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +8 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +25 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +7 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +5 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +8 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +5 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +10 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +26 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +10 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +79 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +10 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +46 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +10 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +56 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +6 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +59 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +16 -0
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +119 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +15 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +14 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +14 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +5 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +6 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +41 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +15 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +3 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +9 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +51 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +8 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +27 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +8 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +18 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +12 -0
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +81 -0
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +3 -0
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +3 -0
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +3 -0
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +3 -0
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +4 -0
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +2 -0
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +38 -0
- package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +6 -0
- package/package/components/copilot/chat/__tests__/app/variants/baseline.js +10 -0
- package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +3 -0
- package/package/components/copilot/chat/__tests__/app/variants/index.js +3 -0
- package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +6 -0
- package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +137 -0
- package/package/components/copilot/chat/__tests__/flow/expected/test1.json +134 -0
- package/package/components/copilot/chat/__tests__/flow/expected/test2.json +183 -0
- package/package/components/copilot/chat/__tests__/flow/expected/test3.json +204 -0
- package/package/components/copilot/chat/__tests__/flow/expected/test4.json +175 -0
- package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +68 -0
- package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +142 -0
- package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +136 -0
- package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.d.ts +1 -0
- package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +277 -0
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +17 -0
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +52 -0
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +12 -0
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +75 -0
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +41 -0
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +101 -0
- package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +53 -0
- package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +68 -0
- package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +120 -0
- package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +6 -0
- package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +10 -0
- package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +3 -0
- package/package/components/copilot/chat/__tests__/flow/variants/index.js +3 -0
- package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +15 -0
- package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +386 -0
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +48 -0
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +147 -0
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +31 -0
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +88 -0
- package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +32 -0
- package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +130 -0
- package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +45 -0
- package/package/components/copilot/chat/__tests__/shared/baseVariants.js +57 -0
- package/package/components/copilot/chat/__tests__/shared/index.d.ts +10 -0
- package/package/components/copilot/chat/__tests__/shared/index.js +5 -0
- package/package/components/copilot/chat/__tests__/shared/types.d.ts +102 -0
- package/package/components/copilot/chat/__tests__/shared/types.js +9 -0
- package/package/components/copilot/chat/anthropic.d.ts +1 -1
- package/package/components/copilot/chat/anthropic.js +75 -2
- package/package/components/copilot/chat/app/core.d.ts +69 -0
- package/package/components/copilot/chat/app/core.js +552 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +119 -477
- package/package/components/copilot/chat/flow/FlowAIChat.svelte.d.ts +1 -0
- package/package/components/copilot/chat/flow/core.d.ts +24 -127
- package/package/components/copilot/chat/flow/core.js +461 -535
- package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +31 -0
- package/package/components/copilot/chat/flow/inlineScriptsUtils.js +271 -0
- package/package/components/copilot/chat/flow/openFlow.json +1 -0
- package/package/components/copilot/chat/flow/openFlowZod.d.ts +3 -0
- package/package/components/copilot/chat/flow/openFlowZod.js +14 -0
- package/package/components/copilot/chat/flow/utils.d.ts +12 -6
- package/package/components/copilot/chat/flow/utils.js +66 -33
- package/package/components/copilot/chat/navigator/core.js +17 -10
- package/package/components/copilot/chat/openai-responses.d.ts +16 -0
- package/package/components/copilot/chat/openai-responses.js +318 -0
- package/package/components/copilot/chat/script/core.d.ts +7 -5
- package/package/components/copilot/chat/script/core.js +41 -208
- package/package/components/copilot/chat/shared.d.ts +28 -2
- package/package/components/copilot/chat/shared.js +174 -16
- package/package/components/copilot/lib.d.ts +4 -3
- package/package/components/copilot/lib.js +169 -52
- package/package/components/copilot/prompts/edit.yaml +38 -2
- package/package/components/copilot/prompts/editPrompt.d.ts +6 -3
- package/package/components/copilot/prompts/editPrompt.js +9 -6
- package/package/components/copilot/prompts/fix.yaml +40 -1
- package/package/components/copilot/prompts/fixPrompt.d.ts +3 -0
- package/package/components/copilot/prompts/fixPrompt.js +5 -2
- package/package/components/copilot/prompts/gen.yaml +25 -1
- package/package/components/copilot/prompts/genPrompt.d.ts +7 -4
- package/package/components/copilot/prompts/genPrompt.js +9 -6
- package/package/components/custom_ui.d.ts +2 -0
- package/package/components/dbOps.d.ts +26 -23
- package/package/components/dbOps.js +49 -27
- package/package/components/dbTypes.d.ts +14 -0
- package/package/components/dbTypes.js +9 -0
- package/package/components/details/ClipboardPanel.svelte +7 -7
- package/package/components/details/CopyableCodeBlock.svelte +13 -11
- package/package/components/details/CopyableCodeBlock.svelte.d.ts +5 -18
- package/package/components/details/DetailPageDetailPanel.svelte +5 -5
- package/package/components/details/DetailPageHeader.svelte +5 -4
- package/package/components/details/DetailPageLayout.svelte +5 -5
- package/package/components/details/ErrorHandlerToggleButton.svelte +2 -2
- package/package/components/details/ErrorHandlerToggleButtonV2.svelte +4 -4
- package/package/components/details/ErrorHandlerToggleButtonV2.svelte.d.ts +1 -1
- package/package/components/details/createAppFromScript.js +2 -2
- package/package/components/ducklake.d.ts +1 -0
- package/package/components/ducklake.js +4 -0
- package/package/components/flows/CreateActionsApp.svelte +5 -6
- package/package/components/flows/CreateActionsFlow.svelte +3 -3
- package/package/components/flows/DebounceLimit.svelte +58 -0
- package/package/components/flows/DebounceLimit.svelte.d.ts +11 -0
- package/package/components/flows/FlowAssetsHandler.svelte +47 -31
- package/package/components/flows/FlowEditor.svelte +6 -1
- package/package/components/flows/FlowEditor.svelte.d.ts +2 -1
- package/package/components/flows/FlowEditorTutorial.svelte +59 -0
- package/package/components/flows/{content/FlowInputsFlowQuick.svelte.d.ts → FlowEditorTutorial.svelte.d.ts} +8 -9
- package/package/components/flows/FlowHistoryInner.svelte +6 -8
- package/package/components/flows/FlowModuleIcon.svelte +1 -1
- package/package/components/flows/FlowProgressBar.svelte +1 -1
- package/package/components/flows/agentToolUtils.d.ts +45 -0
- package/package/components/flows/agentToolUtils.js +59 -0
- package/package/components/flows/common/FlowCardHeader.svelte +31 -7
- package/package/components/flows/content/AgentToolWrapper.svelte +30 -0
- package/package/components/flows/content/AgentToolWrapper.svelte.d.ts +14 -0
- package/package/components/flows/content/BranchPredicateEditor.svelte +1 -2
- package/package/components/flows/content/DynamicInputHelpBox.svelte +6 -9
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +6 -6
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +7 -7
- package/package/components/flows/content/FlowEditorPanel.svelte +23 -17
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -1
- package/package/components/flows/content/FlowEnvironmentVariables.svelte +251 -0
- package/package/components/flows/content/FlowEnvironmentVariables.svelte.d.ts +6 -0
- package/package/components/flows/content/FlowInput.svelte +78 -45
- package/package/components/flows/content/FlowInput.svelte.d.ts +2 -1
- package/package/components/flows/content/FlowInputEditor.svelte +2 -2
- package/package/components/flows/content/FlowInputs.svelte +34 -6
- package/package/components/flows/content/FlowInputsFlow.svelte +16 -12
- package/package/components/flows/content/FlowInputsFlow.svelte.d.ts +6 -5
- package/package/components/flows/content/FlowInputsQuick.svelte +68 -70
- package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +0 -1
- package/package/components/flows/content/FlowLoop.svelte +67 -31
- package/package/components/flows/content/FlowModuleCache.svelte +23 -11
- package/package/components/flows/content/FlowModuleComponent.svelte +123 -107
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -6
- package/package/components/flows/content/FlowModuleHeader.svelte +23 -42
- package/package/components/flows/content/FlowModuleMock.svelte +2 -1
- package/package/components/flows/content/FlowModuleScript.svelte +2 -2
- package/package/components/flows/content/FlowModuleSkip.svelte +4 -3
- package/package/components/flows/content/FlowModuleSleep.svelte +5 -4
- package/package/components/flows/content/FlowModuleSuspend.svelte +5 -12
- package/package/components/flows/content/FlowModuleTimeout.svelte +3 -3
- package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +5 -5
- package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleWrapper.svelte +27 -20
- package/package/components/flows/content/FlowResult.svelte +4 -4
- package/package/components/flows/content/FlowRetries.svelte +32 -16
- package/package/components/flows/content/FlowSelectionPanel.svelte +35 -0
- package/package/components/flows/content/FlowSelectionPanel.svelte.d.ts +8 -0
- package/package/components/flows/content/FlowSettings.svelte +121 -122
- package/package/components/flows/content/FlowWhileLoop.svelte +35 -8
- package/package/components/flows/content/GenAiQuick.svelte +1 -1
- package/package/components/flows/content/McpToolEditor.svelte +169 -0
- package/package/components/flows/content/McpToolEditor.svelte.d.ts +8 -0
- package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -5
- package/package/components/flows/content/SuspendDrawer.svelte +4 -5
- package/package/components/flows/content/WebsearchToolDisplay.svelte +9 -0
- package/package/components/{FlowBuilderTutorials.svelte.d.ts → flows/content/WebsearchToolDisplay.svelte.d.ts} +4 -6
- package/package/components/flows/conversations/FlowChat.svelte +32 -0
- package/package/components/flows/conversations/FlowChat.svelte.d.ts +10 -0
- package/package/components/flows/conversations/FlowChatInterface.svelte +58 -103
- package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +3 -14
- package/package/components/flows/conversations/FlowChatManager.svelte.js +172 -69
- package/package/components/flows/conversations/FlowConversationsSidebar.svelte +31 -110
- package/package/components/flows/conversations/FlowConversationsSidebar.svelte.d.ts +3 -11
- package/package/components/flows/flowDiff.d.ts +142 -0
- package/package/components/flows/flowDiff.js +769 -0
- package/package/components/flows/flowDiff.test.d.ts +1 -0
- package/package/components/flows/flowDiff.test.js +1173 -0
- package/package/components/flows/flowDiff.testUtils.d.ts +61 -0
- package/package/components/flows/flowDiff.testUtils.js +128 -0
- package/package/components/flows/flowDiffManager.svelte.d.ts +47 -0
- package/package/components/flows/flowDiffManager.svelte.js +461 -0
- package/package/components/flows/flowDiffManager.svelte.test.d.ts +1 -0
- package/package/components/flows/flowDiffManager.svelte.test.js +1255 -0
- package/package/components/flows/flowExplorer.js +15 -0
- package/package/components/flows/flowInfers.d.ts +1 -60
- package/package/components/flows/flowInfers.js +115 -8
- package/package/components/flows/flowState.js +1 -1
- package/package/components/flows/flowStateUtils.svelte.js +10 -2
- package/package/components/flows/flowStore.svelte.d.ts +4 -0
- package/package/components/flows/header/FlowImportExportMenu.svelte +3 -4
- package/package/components/flows/header/FlowPreviewButtons.svelte +11 -12
- package/package/components/flows/header/FlowYamlEditor.svelte +5 -4
- package/package/components/flows/map/DiffActionBar.svelte +50 -0
- package/package/components/flows/map/DiffActionBar.svelte.d.ts +14 -0
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +60 -54
- package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +2 -1
- package/package/components/flows/map/FlowGraphPreviewButton.svelte +6 -3
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +91 -42
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +7 -6
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +32 -25
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +2 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +91 -35
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +27 -2
- package/package/components/flows/map/FlowStickyNode.svelte +51 -38
- package/package/components/flows/map/FlowStickyNode.svelte.d.ts +4 -0
- package/package/components/flows/map/InsertModuleButton.svelte +11 -73
- package/package/components/flows/map/InsertModuleButton.svelte.d.ts +8 -34
- package/package/components/flows/map/InsertModuleInner.svelte +89 -68
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +3 -1
- package/package/components/flows/map/InsertModulePopover.svelte +41 -0
- package/package/components/{ConfirmButton.svelte.d.ts → flows/map/InsertModulePopover.svelte.d.ts} +18 -16
- package/package/components/flows/map/MapItem.svelte +33 -33
- package/package/components/flows/map/MapItem.svelte.d.ts +6 -6
- package/package/components/flows/map/VirtualItem.svelte +9 -17
- package/package/components/flows/map/VirtualItem.svelte.d.ts +1 -5
- package/package/components/flows/map/VirtualItemWrapper.svelte +11 -15
- package/package/components/flows/map/VirtualItemWrapper.svelte.d.ts +2 -3
- package/package/components/flows/pickers/FlowScriptPicker.svelte +1 -2
- package/package/components/flows/pickers/FlowScriptPickerQuick.svelte +11 -15
- package/package/components/flows/pickers/FlowToplevelNode.svelte +1 -1
- package/package/components/flows/pickers/PickHubApp.svelte +23 -19
- package/package/components/flows/pickers/PickHubApp.svelte.d.ts +9 -14
- package/package/components/flows/pickers/PickHubFlow.svelte +23 -18
- package/package/components/flows/pickers/PickHubFlow.svelte.d.ts +9 -14
- package/package/components/flows/pickers/PickHubScript.svelte +37 -28
- package/package/components/flows/pickers/PickHubScript.svelte.d.ts +2 -0
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +59 -27
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
- package/package/components/flows/pickers/TopLevelNode.svelte +34 -51
- package/package/components/flows/pickers/TopLevelNode.svelte.d.ts +7 -23
- package/package/components/flows/pickers/WorkspaceScriptPicker.svelte +31 -25
- package/package/components/flows/pickers/WorkspaceScriptPicker.svelte.d.ts +9 -17
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +22 -18
- package/package/components/flows/previousResults.d.ts +5 -1
- package/package/components/flows/previousResults.js +24 -4
- package/package/components/flows/propPicker/InputPickerInner.svelte +1 -1
- package/package/components/flows/propPicker/OutputPicker.svelte +30 -32
- package/package/components/flows/propPicker/OutputPicker.svelte.d.ts +0 -4
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +2 -2
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +61 -66
- package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +15 -23
- package/package/components/flows/propPicker/StepHistory.svelte +1 -1
- package/package/components/flows/stepsInputArgs.svelte.js +1 -1
- package/package/components/flows/types.d.ts +4 -1
- package/package/components/flows/{utils.d.ts → utils.svelte.d.ts} +2 -2
- package/package/components/flows/{utils.js → utils.svelte.js} +10 -5
- package/package/components/git_sync/DetectionFlow.svelte +7 -5
- package/package/components/git_sync/GitSyncContext.svelte.d.ts +3 -2
- package/package/components/git_sync/GitSyncContext.svelte.js +25 -8
- package/package/components/git_sync/GitSyncModeDisplay.svelte +9 -4
- package/package/components/git_sync/GitSyncModeDisplay.svelte.d.ts +1 -1
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +180 -74
- package/package/components/git_sync/GitSyncSection.svelte +70 -42
- package/package/components/git_sync/PullWorkspaceModal.svelte +79 -44
- package/package/components/git_sync/PushWorkspaceModal.svelte +42 -34
- package/package/components/graph/FlowGraphV2.svelte +433 -94
- package/package/components/graph/FlowGraphV2.svelte.d.ts +48 -3
- package/package/components/graph/NodeContextMenu.svelte +36 -0
- package/package/components/graph/NodeContextMenu.svelte.d.ts +8 -0
- package/package/components/graph/NoteColorPicker.svelte +42 -0
- package/package/components/graph/NoteColorPicker.svelte.d.ts +9 -0
- package/package/components/graph/NoteTool.svelte +182 -0
- package/package/components/graph/NoteTool.svelte.d.ts +7 -0
- package/package/components/graph/PaneContextMenu.svelte +95 -0
- package/package/components/graph/PaneContextMenu.svelte.d.ts +8 -0
- package/package/components/graph/SelectionBoundingBox.svelte +68 -0
- package/package/components/graph/SelectionBoundingBox.svelte.d.ts +10 -0
- package/package/components/graph/SelectionTool.svelte +32 -0
- package/package/components/graph/SelectionTool.svelte.d.ts +8 -0
- package/package/components/graph/ViewportSynchronizer.svelte +49 -0
- package/package/components/graph/ViewportSynchronizer.svelte.d.ts +12 -0
- package/package/components/graph/graphBuilder.svelte.d.ts +7 -1
- package/package/components/graph/graphBuilder.svelte.js +8 -4
- package/package/components/graph/graphContext.d.ts +15 -0
- package/package/components/graph/graphContext.js +5 -0
- package/package/components/graph/groupDetectionUtils.d.ts +9 -0
- package/package/components/graph/groupDetectionUtils.js +73 -0
- package/package/components/graph/model.d.ts +1 -0
- package/package/components/graph/noteColors.d.ts +30 -0
- package/package/components/graph/noteColors.js +121 -0
- package/package/components/graph/noteEditor.svelte.d.ts +97 -0
- package/package/components/graph/noteEditor.svelte.js +259 -0
- package/package/components/graph/noteManager.svelte.d.ts +32 -0
- package/package/components/graph/noteManager.svelte.js +126 -0
- package/package/components/graph/noteUtils.svelte.d.ts +87 -0
- package/package/components/graph/noteUtils.svelte.js +294 -0
- package/package/components/graph/renderers/edges/BaseEdge.svelte +50 -44
- package/package/components/graph/renderers/edges/EmptyEdge.svelte +4 -3
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +63 -25
- package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +3 -1
- package/package/components/graph/renderers/nodes/AssetNode.svelte +37 -27
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +7 -3
- package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte +4 -6
- package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +4 -10
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +4 -8
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +4 -7
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +4 -14
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/InputNode.svelte +28 -13
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +16 -30
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +52 -30
- package/package/components/graph/renderers/nodes/NoBranchNode.svelte +0 -4
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte +34 -22
- package/package/components/graph/renderers/nodes/NodeWrapper.svelte.d.ts +2 -0
- package/package/components/graph/renderers/nodes/NoteNode.svelte +329 -0
- package/package/components/graph/renderers/nodes/NoteNode.svelte.d.ts +16 -0
- package/package/components/graph/renderers/nodes/ResultNode.svelte +4 -10
- package/package/components/graph/renderers/nodes/ResultNode.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/SubflowBound.svelte +17 -17
- package/package/components/graph/renderers/nodes/SubflowBound.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/TriggersNode.svelte +22 -18
- package/package/components/graph/renderers/nodes/TriggersNode.svelte.d.ts +4 -18
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +4 -6
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte.d.ts +1 -0
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +4 -4
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +5 -11
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +2 -2
- package/package/components/graph/selectionUtils.svelte.d.ts +15 -0
- package/package/components/graph/selectionUtils.svelte.js +94 -0
- package/package/components/graph/util.d.ts +42 -2
- package/package/components/graph/util.js +230 -38
- package/package/components/home/ItemsList.svelte +35 -38
- package/package/components/home/ListFilters.svelte +6 -9
- package/package/components/home/ListFiltersQuick.svelte +28 -29
- package/package/components/home/NoItemFound.svelte +19 -5
- package/package/components/home/NoItemFound.svelte.d.ts +5 -25
- package/package/components/home/TreeView.svelte +17 -19
- package/package/components/home/TreeViewRoot.svelte +4 -4
- package/package/components/home/TutorialBanner.svelte +119 -0
- package/package/components/home/TutorialBanner.svelte.d.ts +3 -0
- package/package/components/home/TutorialButton.svelte +97 -0
- package/package/components/home/TutorialButton.svelte.d.ts +15 -0
- package/package/components/icons/ApifyIcon.svelte +17 -0
- package/package/components/icons/ApifyIcon.svelte.d.ts +7 -0
- package/package/components/icons/AsanaIcon.svelte +13 -1
- package/package/components/icons/AssetDatabaseIcon.svelte +23 -0
- package/package/components/icons/AssetDatabaseIcon.svelte.d.ts +9 -0
- package/package/components/icons/AssetGenericIcon.svelte +10 -10
- package/package/components/icons/AssetGenericIcon.svelte.d.ts +0 -1
- package/package/components/icons/Auth0Icon.svelte +10 -11
- package/package/components/icons/Auth0Icon.svelte.d.ts +5 -25
- package/package/components/icons/DucklakeIcon.svelte +2 -1
- package/package/components/icons/DucklakeIcon.svelte.d.ts +2 -1
- package/package/components/icons/FunnelCog.svelte +31 -0
- package/package/components/icons/FunnelCog.svelte.d.ts +11 -0
- package/package/components/icons/MSTeamsIcon.svelte +76 -2
- package/package/components/icons/MSTeamsIcon.svelte.d.ts +1 -2
- package/package/components/icons/McpIcon.svelte +18 -0
- package/package/components/icons/McpIcon.svelte.d.ts +7 -0
- package/package/components/icons/NextcloudIcon.svelte +13 -5
- package/package/components/icons/NextcloudIcon.svelte.d.ts +3 -2
- package/package/components/icons/SageIcon.svelte +10 -0
- package/package/components/icons/SageIcon.svelte.d.ts +7 -0
- package/package/components/icons/WindmillIcon.svelte +3 -1
- package/package/components/icons/WindmillIcon.svelte.d.ts +1 -0
- package/package/components/icons/ZohoIcon.svelte +30 -0
- package/package/components/icons/ZohoIcon.svelte.d.ts +7 -0
- package/package/components/icons/index.js +9 -1
- package/package/components/instanceSettings/CriticalAlertChannels.svelte +146 -0
- package/package/components/instanceSettings/CriticalAlertChannels.svelte.d.ts +9 -0
- package/package/components/instanceSettings/EmailChannelCard.svelte +91 -0
- package/package/components/instanceSettings/EmailChannelCard.svelte.d.ts +18 -0
- package/package/components/instanceSettings/IntegrationCard.svelte +48 -0
- package/package/components/instanceSettings/IntegrationCard.svelte.d.ts +13 -0
- package/package/components/instanceSettings/SlackChannelCard.svelte +96 -0
- package/package/components/instanceSettings/SlackChannelCard.svelte.d.ts +18 -0
- package/package/components/instanceSettings/SmtpSettings.svelte +167 -0
- package/package/components/instanceSettings/SmtpSettings.svelte.d.ts +9 -0
- package/package/components/instanceSettings/TeamsChannelCard.svelte +131 -0
- package/package/components/instanceSettings/TeamsChannelCard.svelte.d.ts +29 -0
- package/package/components/instanceSettings.d.ts +6 -0
- package/package/components/instanceSettings.js +29 -11
- package/package/components/jobs/JobPreview.svelte +2 -2
- package/package/components/meltComponents/MenuItem.svelte +3 -1
- package/package/components/meltComponents/MenuItem.svelte.d.ts +1 -0
- package/package/components/meltComponents/Popover.svelte +43 -12
- package/package/components/meltComponents/Popover.svelte.d.ts +3 -0
- package/package/components/meltComponents/Tooltip.svelte +2 -2
- package/package/components/preview/FlowPreviewStatus.svelte +3 -3
- package/package/components/propertyPicker/ObjectViewer.svelte +18 -19
- package/package/components/propertyPicker/PropPicker.svelte +96 -44
- package/package/components/propertyPicker/PropPicker.svelte.d.ts +1 -1
- package/package/components/propertyPicker/PropPickerResult.svelte +7 -0
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
- package/package/components/propertyPicker/WarningMessage.svelte +1 -1
- package/package/components/raw_apps/FileTreeNode.svelte +237 -0
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +15 -9
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +3 -2
- package/package/components/raw_apps/RawAppEditor.svelte +385 -48
- package/package/components/raw_apps/RawAppEditor.svelte.d.ts +2 -2
- package/package/components/raw_apps/RawAppEditorHeader.svelte +29 -48
- package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +6 -2
- package/package/components/raw_apps/RawAppHistoryList.svelte +106 -0
- package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +10 -0
- package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +142 -0
- package/package/components/raw_apps/RawAppHistoryManager.svelte.js +314 -0
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +114 -115
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +6 -4
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +84 -19
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +2 -19
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +36 -40
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +10 -2
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +33 -46
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +4 -21
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +3 -3
- package/package/components/raw_apps/RawAppModules.svelte +55 -0
- package/package/components/raw_apps/RawAppModules.svelte.d.ts +14 -0
- package/package/components/raw_apps/RawAppPreview.svelte.d.ts +2 -2
- package/package/components/raw_apps/RawAppSidebar.svelte +277 -0
- package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +18 -0
- package/package/components/raw_apps/fileTreeUtils.d.ts +7 -0
- package/package/components/raw_apps/fileTreeUtils.js +54 -0
- package/package/components/raw_apps/lintStore.d.ts +33 -0
- package/package/components/raw_apps/lintStore.js +62 -0
- package/package/components/raw_apps/rawAppPolicy.d.ts +10 -0
- package/package/components/raw_apps/rawAppPolicy.js +42 -0
- package/package/components/raw_apps/utils.d.ts +11 -2
- package/package/components/raw_apps/utils.js +32 -45
- package/package/components/runs/BatchReRunOptionsPane.svelte +57 -52
- package/package/components/runs/JobRunsPreview.svelte +24 -14
- package/package/components/runs/JobsLoader.svelte +171 -135
- package/package/components/runs/JobsLoader.svelte.d.ts +5 -4
- package/package/components/runs/ManuelDatePicker.svelte +6 -12
- package/package/components/runs/ManuelDatePicker.svelte.d.ts +11 -14
- package/package/components/runs/MobileFilters.svelte +1 -1
- package/package/components/runs/PreprocessedArgsDisplay.svelte +1 -1
- package/package/components/runs/QueuePopover.svelte +1 -1
- package/package/components/runs/RunBadges.svelte +1 -1
- package/package/components/runs/RunOption.svelte +3 -1
- package/package/components/runs/RunRow.svelte +38 -61
- package/package/components/runs/RunRow.svelte.d.ts +1 -1
- package/package/components/runs/RunsBatchActionsDropdown.svelte +16 -18
- package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +1 -1
- package/package/components/runs/RunsFilter.svelte +116 -90
- package/package/components/runs/RunsFilter.svelte.d.ts +4 -2
- package/package/components/runs/RunsQueue.svelte +17 -9
- package/package/components/runs/RunsTable.svelte +10 -8
- package/package/components/runs/RunsTable.svelte.d.ts +2 -1
- package/package/components/schema/AddPropertyForm.svelte +9 -9
- package/package/components/schema/AddPropertyFormV2.svelte +1 -2
- package/package/components/schema/EditableSchemaDrawer.svelte +3 -4
- package/package/components/schema/EditableSchemaSdkWrapper.svelte +2 -2
- package/package/components/schema/FlowPropertyEditor.svelte +6 -8
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +2 -1
- package/package/components/schema/PropertyEditor.svelte.d.ts +2 -1
- package/package/components/schema/SchemaFormDND.svelte +4 -3
- package/package/components/schema/SchemaPickerRow.svelte +3 -3
- package/package/components/schema/jsonSchemaResource.svelte.js +6 -1
- package/package/components/scriptEditor/LogPanel.svelte +4 -4
- package/package/components/scripts/CreateActionsScript.svelte +5 -4
- package/package/components/search/GlobalSearchModal.svelte +11 -21
- package/package/components/search/RunsSearch.svelte +6 -6
- package/package/components/search/RunsSearch.svelte.d.ts +1 -1
- package/package/components/select/DraggableTags.svelte +4 -4
- package/package/components/select/MultiSelect.svelte +13 -9
- package/package/components/select/MultiSelect.svelte.d.ts +10 -2
- package/package/components/select/Select.svelte +28 -9
- package/package/components/select/Select.svelte.d.ts +8 -0
- package/package/components/select/SelectDropdown.svelte +20 -12
- package/package/components/select/utils.svelte.d.ts +1 -0
- package/package/components/select/utils.svelte.js +1 -2
- package/package/components/settings/AIUserSettings.svelte +7 -3
- package/package/components/settings/ChangeWorkspaceColor.svelte +6 -4
- package/package/components/settings/ChangeWorkspaceId.svelte +4 -4
- package/package/components/settings/ChangeWorkspaceName.svelte +4 -4
- package/package/components/settings/CreateToken.svelte +278 -57
- package/package/components/settings/PremiumInfo.svelte +4 -4
- package/package/components/settings/ScopeSelector.svelte +32 -33
- package/package/components/settings/TokenDisplay.svelte +50 -61
- package/package/components/settings/TokenDisplay.svelte.d.ts +1 -1
- package/package/components/settings/TokensTable.svelte +33 -34
- package/package/components/settings/UserAIPromptsSettings.svelte +31 -0
- package/package/components/settings/UserAIPromptsSettings.svelte.d.ts +3 -0
- package/package/components/settings/UserInfoSettings.svelte +37 -39
- package/package/components/settings/WorkspaceOperatorSettings.svelte +2 -2
- package/package/components/settings/WorkspaceUserSettings.svelte +12 -11
- package/package/components/sidebar/CriticalAlertModal.svelte +10 -7
- package/package/components/sidebar/CriticalAlertModalInner.svelte +4 -4
- package/package/components/sidebar/CriticalAlertTable.svelte +4 -4
- package/package/components/sidebar/MenuButton.svelte +11 -12
- package/package/components/sidebar/MenuButton.svelte.d.ts +5 -0
- package/package/components/sidebar/MenuLink.svelte +8 -33
- package/package/components/sidebar/MultiplayerMenu.svelte +1 -1
- package/package/components/sidebar/OperatorMenu.svelte +29 -20
- package/package/components/sidebar/SidebarContent.svelte +38 -11
- package/package/components/sidebar/UserMenu.svelte +2 -6
- package/package/components/sidebar/WorkspaceMenu.svelte +9 -13
- package/package/components/sidebar/changelogs.js +5 -0
- package/package/components/splitPanes/AnimatedPane.svelte +38 -0
- package/package/components/splitPanes/AnimatedPane.svelte.d.ts +12 -0
- package/package/components/sqlTypeService.d.ts +19 -0
- package/package/components/sqlTypeService.js +146 -0
- package/package/components/stepHistoryLoader.svelte.js +1 -1
- package/package/components/table/Cell.svelte +4 -3
- package/package/components/table/DataTable.svelte +1 -1
- package/package/components/table/DownloadCsv.svelte +2 -2
- package/package/components/text_input/TextInput.svelte +38 -19
- package/package/components/text_input/TextInput.svelte.d.ts +42 -9
- package/package/components/triggers/AddTriggersButton.svelte +2 -3
- package/package/components/triggers/CaptureButton.svelte +2 -3
- package/package/components/triggers/CaptureSection.svelte +88 -34
- package/package/components/triggers/CaptureSection.svelte.d.ts +3 -1
- package/package/components/triggers/CaptureTable.svelte +3 -3
- package/package/components/triggers/CaptureTable.svelte.d.ts +3 -1
- package/package/components/triggers/DeleteTriggerButton.svelte +4 -7
- package/package/components/triggers/TestTriggerConnection.svelte +1 -2
- package/package/components/triggers/TriggerEditorToolbar.svelte +23 -23
- package/package/components/triggers/TriggerEditorToolbar.svelte.d.ts +7 -3
- package/package/components/triggers/TriggerLabel.svelte +8 -30
- package/package/components/triggers/TriggerModeToggle.svelte +73 -0
- package/package/components/triggers/TriggerModeToggle.svelte.d.ts +18 -0
- package/package/components/triggers/TriggerSuspendedJobsAlert.svelte +21 -0
- package/package/components/triggers/TriggerSuspendedJobsAlert.svelte.d.ts +7 -0
- package/package/components/triggers/TriggerSuspendedJobsModal.svelte +471 -0
- package/package/components/triggers/TriggerSuspendedJobsModal.svelte.d.ts +22 -0
- package/package/components/triggers/TriggersEditor.svelte +113 -69
- package/package/components/triggers/TriggersEditor.svelte.d.ts +1 -1
- package/package/components/triggers/TriggersTable.svelte +14 -15
- package/package/components/triggers/TriggersWrapper.svelte +5 -9
- package/package/components/triggers/TriggersWrapper.svelte.d.ts +1 -1
- package/package/components/triggers/email/DefaultEmailCapture.svelte.d.ts +3 -1
- package/package/components/triggers/email/DefaultEmailConfigSection.svelte +19 -27
- package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +1 -1
- package/package/components/triggers/email/DefaultEmailPanel.svelte +3 -3
- package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +1 -1
- package/package/components/triggers/email/EmailCapture.svelte.d.ts +3 -1
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +75 -16
- package/package/components/triggers/email/utils.d.ts +1 -1
- package/package/components/triggers/email/utils.js +14 -13
- package/package/components/triggers/gcp/GcpCapture.svelte.d.ts +3 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +4 -8
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +60 -25
- package/package/components/triggers/gcp/utils.js +2 -2
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +8 -14
- package/package/components/triggers/http/RouteBodyTransformerOption.svelte +4 -2
- package/package/components/triggers/http/RouteCapture.svelte.d.ts +3 -1
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +38 -35
- package/package/components/triggers/http/RouteEditorInner.svelte +402 -303
- package/package/components/triggers/http/RoutesGenerator.svelte +2 -3
- package/package/components/triggers/http/utils.js +5 -4
- package/package/components/triggers/kafka/KafkaCapture.svelte.d.ts +3 -1
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +63 -20
- package/package/components/triggers/kafka/utils.js +2 -2
- package/package/components/triggers/mqtt/MqttCapture.svelte.d.ts +3 -1
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +2 -3
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +58 -20
- package/package/components/triggers/mqtt/utils.js +3 -3
- package/package/components/triggers/nats/NatsCapture.svelte.d.ts +3 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +57 -19
- package/package/components/triggers/nats/utils.js +2 -2
- package/package/components/triggers/postgres/CheckPostgresRequirement.svelte +1 -2
- package/package/components/triggers/postgres/PostgresCapture.svelte.d.ts +3 -1
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +79 -35
- package/package/components/triggers/postgres/PublicationPicker.svelte +3 -6
- package/package/components/triggers/postgres/RelationPicker.svelte +3 -6
- package/package/components/triggers/postgres/SlotPicker.svelte +2 -4
- package/package/components/triggers/postgres/utils.js +3 -3
- package/package/components/triggers/scheduled/ScheduledPollPanel.svelte +1 -1
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +152 -135
- package/package/components/triggers/sqs/SqsCapture.svelte.d.ts +3 -1
- package/package/components/triggers/sqs/SqsTriggerEditorConfigSection.svelte +3 -4
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +60 -19
- package/package/components/triggers/sqs/utils.js +3 -3
- package/package/components/triggers/testingBadge.svelte +1 -1
- package/package/components/triggers/utils.js +30 -0
- package/package/components/triggers/webhook/WebhooksCapture.svelte.d.ts +3 -1
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +124 -155
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte.d.ts +1 -1
- package/package/components/triggers/webhook/WebhooksPanel.svelte +2 -2
- package/package/components/triggers/webhook/WebhooksPanel.svelte.d.ts +1 -1
- package/package/components/triggers/websocket/WebsocketCapture.svelte.d.ts +3 -1
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +67 -27
- package/package/components/triggers/websocket/utils.js +2 -2
- package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +703 -0
- package/package/components/tutorials/{app/AppTutorial.svelte.d.ts → FlowBuilderLiveTutorial.svelte.d.ts} +7 -8
- package/package/components/tutorials/SkipTutorials.svelte +2 -4
- package/package/components/tutorials/TroubleshootFlowTutorial.svelte +410 -0
- package/package/components/tutorials/{FlowBuilderTutorialErrorHandler.svelte.d.ts → TroubleshootFlowTutorial.svelte.d.ts} +8 -7
- package/package/components/tutorials/TutorialControls.svelte +1 -1
- package/package/components/tutorials/TutorialProgressBar.svelte +20 -0
- package/package/components/tutorials/TutorialProgressBar.svelte.d.ts +8 -0
- package/package/components/tutorials/TutorialRouter.svelte +45 -0
- package/package/components/tutorials/TutorialRouter.svelte.d.ts +16 -0
- package/package/components/tutorials/TutorialWrapper.svelte +23 -0
- package/package/components/tutorials/TutorialWrapper.svelte.d.ts +28 -0
- package/package/components/tutorials/utils.js +6 -6
- package/package/components/tutorials/workspace/WorkspaceOnboardingTutorial.svelte +106 -0
- package/package/components/tutorials/{FlowBuilderTutorialSimpleFlow.svelte.d.ts → workspace/WorkspaceOnboardingTutorial.svelte.d.ts} +7 -8
- package/package/components/vscode.d.ts +1 -0
- package/package/components/vscode.js +12 -6
- package/package/components/wizards/AgChartWizard.svelte +1 -1
- package/package/components/wizards/AgGridWizard.svelte +55 -55
- package/package/components/wizards/DBExplorerWizard.svelte +1 -2
- package/package/components/wizards/LoggedWizardResult.svelte +3 -3
- package/package/components/wizards/TableActionsWizard.svelte +4 -10
- package/package/components/wizards/TableActionsWizard.svelte.d.ts +2 -2
- package/package/components/worker_group.js +3 -2
- package/package/components/workspaceSettings/AISettings.svelte +21 -70
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/CreateWorkspace.svelte +325 -159
- package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +69 -0
- package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte.d.ts +17 -0
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +188 -0
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte.d.ts +19 -0
- package/package/components/workspaceSettings/DataTableSettings.svelte +256 -0
- package/package/components/workspaceSettings/DataTableSettings.svelte.d.ts +23 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte +41 -205
- package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +1 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +42 -21
- package/package/components/workspaceSettings/ModelTokenLimits.svelte +1 -1
- package/package/components/workspaceSettings/StorageSettings.svelte +18 -17
- package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
- package/package/components/workspaceSettings/WorkspaceDependenciesSettings.svelte +365 -0
- package/package/components/workspaceSettings/WorkspaceDependenciesSettings.svelte.d.ts +3 -0
- package/package/components/workspaceSettings/utils.svelte.d.ts +1 -0
- package/package/components/workspaceSettings/utils.svelte.js +4 -0
- package/package/consts.d.ts +1 -1
- package/package/cookies.d.ts +7 -0
- package/package/cookies.js +25 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +1053 -97
- package/package/gen/schemas.gen.js +1139 -174
- package/package/gen/services.gen.d.ts +539 -35
- package/package/gen/services.gen.js +1125 -87
- package/package/gen/types.gen.d.ts +2833 -299
- package/package/hub.d.ts +4 -0
- package/package/hub.js +2 -0
- package/package/hubPaths.json +10 -9
- package/package/infer.d.ts +27 -1
- package/package/infer.js +27 -9
- package/package/infer.svelte.d.ts +4 -0
- package/package/infer.svelte.js +70 -0
- package/package/mcpEndpointTools.d.ts +11 -0
- package/package/mcpEndpointTools.js +1414 -0
- package/package/monaco_workers/sqlTypePlugin.worker.d.ts +151 -0
- package/package/monaco_workers/sqlTypePlugin.worker.js +789 -0
- package/package/monaco_workers/sqlTypePlugin.worker.test.d.ts +1 -0
- package/package/monaco_workers/sqlTypePlugin.worker.test.js +99 -0
- package/package/rawAppWmillTs.d.ts +4 -0
- package/package/rawAppWmillTs.js +46 -0
- package/package/script_helpers.d.ts +14 -1
- package/package/script_helpers.js +205 -33
- package/package/scripts.d.ts +2 -1
- package/package/scripts.js +9 -0
- package/package/sharedUtils.d.ts +5 -0
- package/package/sharedUtils.js +7 -0
- package/package/storeUtils.js +2 -2
- package/package/stores.d.ts +3 -0
- package/package/stores.js +26 -14
- package/package/svelte5Utils.svelte.d.ts +27 -1
- package/package/svelte5Utils.svelte.js +68 -2
- package/package/test-setup.d.ts +4 -0
- package/package/test-setup.js +76 -0
- package/package/toast.d.ts +3 -0
- package/package/toast.js +3 -2
- package/package/tutorialUtils.d.ts +36 -0
- package/package/tutorialUtils.js +152 -6
- package/package/tutorials/config.d.ts +28 -0
- package/package/tutorials/config.js +103 -0
- package/package/tutorials/roleUtils.d.ts +20 -0
- package/package/tutorials/roleUtils.js +52 -0
- package/package/utils.js +164 -9
- package/package/utils.test.d.ts +1 -0
- package/package/utils.test.js +208 -0
- package/package/utils_deployable.d.ts +18 -18
- package/package/utils_deployable.js +16 -16
- package/package.json +25 -17
- package/package/components/ConfirmButton.svelte +0 -31
- package/package/components/DefaultTags.svelte +0 -24
- package/package/components/DefaultTags.svelte.d.ts +0 -7
- package/package/components/FlowBuilderTutorials.svelte +0 -79
- package/package/components/copilot/chat/flow/FlowAIButton.svelte +0 -64
- package/package/components/copilot/chat/flow/FlowAIButton.svelte.d.ts +0 -8
- package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +0 -52
- package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte.d.ts +0 -10
- package/package/components/flows/content/FlowConstants.svelte +0 -120
- package/package/components/flows/content/FlowConstants.svelte.d.ts +0 -6
- package/package/components/flows/content/FlowInputsFlowQuick.svelte +0 -65
- package/package/components/flows/conversations/FlowChatManager.svelte.d.ts +0 -52
- package/package/components/flows/conversations/FlowChatMessage.svelte +0 -68
- package/package/components/flows/conversations/FlowChatMessage.svelte.d.ts +0 -7
- package/package/components/tutorials/FlowBuilderTutorialBranchAll.svelte +0 -96
- package/package/components/tutorials/FlowBuilderTutorialBranchAll.svelte.d.ts +0 -25
- package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte +0 -116
- package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte.d.ts +0 -26
- package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +0 -131
- package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +0 -273
- package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte.d.ts +0 -26
- package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +0 -280
- package/package/components/tutorials/app/AppTutorial.svelte +0 -247
- package/package/defaults.d.ts +0 -5
- package/package/defaults.js +0 -5
- package/package/utils.d.ts +0 -240
|
@@ -0,0 +1,1255 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { flushSync } from 'svelte';
|
|
3
|
+
import { createFlowDiffManager } from './flowDiffManager.svelte';
|
|
4
|
+
import { DUPLICATE_MODULE_PREFIX, NEW_MODULE_PREFIX } from './flowDiff';
|
|
5
|
+
import { SPECIAL_MODULE_IDS } from '../copilot/chat/shared';
|
|
6
|
+
import { createRawScriptModule, createForloopModule, createBranchOneModule, createBranchAllModule, createExtendedOpenFlow, createFlowStore, deepClone, expectModuleOrder, createIdentityModule } from './flowDiff.testUtils';
|
|
7
|
+
describe('FlowDiffManager', () => {
|
|
8
|
+
describe('effect auto-computation', () => {
|
|
9
|
+
it('auto-computes moduleActions when flows differ', () => {
|
|
10
|
+
const cleanup = $effect.root(() => {
|
|
11
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
12
|
+
const moduleA = createRawScriptModule('a', 'before');
|
|
13
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleA] });
|
|
14
|
+
const moduleB = createRawScriptModule('b', 'new');
|
|
15
|
+
const afterFlow = { modules: [moduleA, moduleB] };
|
|
16
|
+
manager.setEditMode(true);
|
|
17
|
+
manager.setBeforeFlow(beforeFlow);
|
|
18
|
+
manager.setCurrentFlow(afterFlow);
|
|
19
|
+
flushSync();
|
|
20
|
+
expect(manager.moduleActions).toHaveProperty('b');
|
|
21
|
+
expect(manager.moduleActions['b']).toEqual({ action: 'added', pending: true });
|
|
22
|
+
});
|
|
23
|
+
cleanup();
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('acceptModule', () => {
|
|
27
|
+
it('accepts added module - inserts into beforeFlow', () => {
|
|
28
|
+
const cleanup = $effect.root(() => {
|
|
29
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
30
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
31
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
32
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleA] });
|
|
33
|
+
const afterFlow = { modules: [moduleA, moduleB] };
|
|
34
|
+
manager.setEditMode(true);
|
|
35
|
+
manager.setBeforeFlow(beforeFlow);
|
|
36
|
+
manager.setCurrentFlow(afterFlow);
|
|
37
|
+
flushSync();
|
|
38
|
+
// Verify 'b' is detected as added
|
|
39
|
+
expect(manager.moduleActions['b']).toEqual({ action: 'added', pending: true });
|
|
40
|
+
// Accept the added module
|
|
41
|
+
manager.acceptModule('b');
|
|
42
|
+
flushSync();
|
|
43
|
+
// After accepting, beforeFlow should now contain module 'b'
|
|
44
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
45
|
+
expect(beforeModules.map((m) => m.id)).toContain('b');
|
|
46
|
+
// The action should be cleared since beforeFlow now matches currentFlow
|
|
47
|
+
expect(manager.moduleActions['b']).toBeUndefined();
|
|
48
|
+
});
|
|
49
|
+
cleanup();
|
|
50
|
+
});
|
|
51
|
+
it('accepts removed module - deletes from beforeFlow', () => {
|
|
52
|
+
const cleanup = $effect.root(() => {
|
|
53
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
54
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
55
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
56
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleA, moduleB] });
|
|
57
|
+
const afterFlow = { modules: [moduleA] };
|
|
58
|
+
manager.setEditMode(true);
|
|
59
|
+
manager.setBeforeFlow(beforeFlow);
|
|
60
|
+
manager.setCurrentFlow(afterFlow);
|
|
61
|
+
flushSync();
|
|
62
|
+
// Verify 'b' is detected as removed
|
|
63
|
+
expect(manager.moduleActions['b']).toEqual({ action: 'removed', pending: true });
|
|
64
|
+
// Accept the removal
|
|
65
|
+
manager.acceptModule('b');
|
|
66
|
+
flushSync();
|
|
67
|
+
// After accepting, beforeFlow should no longer contain module 'b'
|
|
68
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
69
|
+
expect(beforeModules.map((m) => m.id)).not.toContain('b');
|
|
70
|
+
expect(manager.moduleActions['b']).toBeUndefined();
|
|
71
|
+
});
|
|
72
|
+
cleanup();
|
|
73
|
+
});
|
|
74
|
+
it('accepts modified module - updates beforeFlow content', () => {
|
|
75
|
+
const cleanup = $effect.root(() => {
|
|
76
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
77
|
+
const moduleBeforeA = createRawScriptModule('a', 'original-content');
|
|
78
|
+
const moduleAfterA = createRawScriptModule('a', 'modified-content');
|
|
79
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleBeforeA] });
|
|
80
|
+
const afterFlow = { modules: [moduleAfterA] };
|
|
81
|
+
manager.setEditMode(true);
|
|
82
|
+
manager.setBeforeFlow(beforeFlow);
|
|
83
|
+
manager.setCurrentFlow(afterFlow);
|
|
84
|
+
flushSync();
|
|
85
|
+
// Verify 'a' is detected as modified
|
|
86
|
+
expect(manager.moduleActions['a']).toEqual({ action: 'modified', pending: true });
|
|
87
|
+
// Accept the modification
|
|
88
|
+
manager.acceptModule('a');
|
|
89
|
+
flushSync();
|
|
90
|
+
// After accepting, beforeFlow module should have the new content
|
|
91
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
92
|
+
const moduleA = beforeModules.find((m) => m.id === 'a');
|
|
93
|
+
expect((moduleA?.value).content).toBe('modified-content');
|
|
94
|
+
expect(manager.moduleActions['a']).toBeUndefined();
|
|
95
|
+
});
|
|
96
|
+
cleanup();
|
|
97
|
+
});
|
|
98
|
+
it('accepts added nested module - parent accepted as skeleton first', () => {
|
|
99
|
+
const cleanup = $effect.root(() => {
|
|
100
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
101
|
+
// beforeFlow: empty
|
|
102
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [] });
|
|
103
|
+
// afterFlow: forloop containing a nested module
|
|
104
|
+
const nestedModule = createRawScriptModule('nested', 'nested-content');
|
|
105
|
+
const forloop = createForloopModule('loop', [nestedModule]);
|
|
106
|
+
const afterFlow = { modules: [forloop] };
|
|
107
|
+
manager.setEditMode(true);
|
|
108
|
+
manager.setBeforeFlow(beforeFlow);
|
|
109
|
+
manager.setCurrentFlow(afterFlow);
|
|
110
|
+
flushSync();
|
|
111
|
+
// Both 'loop' and 'nested' should be detected as added
|
|
112
|
+
expect(manager.moduleActions['loop']).toEqual({ action: 'added', pending: true });
|
|
113
|
+
expect(manager.moduleActions['nested']).toEqual({ action: 'added', pending: true });
|
|
114
|
+
// Accept the nested module first - should auto-accept parent as skeleton
|
|
115
|
+
manager.acceptModule('nested');
|
|
116
|
+
flushSync();
|
|
117
|
+
// After accepting nested, the loop should also be in beforeFlow (as skeleton initially)
|
|
118
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
119
|
+
expect(beforeModules.map((m) => m.id)).toContain('loop');
|
|
120
|
+
// The nested module should be in the loop
|
|
121
|
+
const loopModule = beforeModules.find((m) => m.id === 'loop');
|
|
122
|
+
const loopValue = loopModule?.value;
|
|
123
|
+
expect(loopValue.modules.map((m) => m.id)).toContain('nested');
|
|
124
|
+
});
|
|
125
|
+
cleanup();
|
|
126
|
+
});
|
|
127
|
+
it('accepts input schema changes', () => {
|
|
128
|
+
const cleanup = $effect.root(() => {
|
|
129
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
130
|
+
const beforeSchema = {
|
|
131
|
+
properties: { x: { type: 'string' } }
|
|
132
|
+
};
|
|
133
|
+
const afterSchema = {
|
|
134
|
+
properties: { x: { type: 'string' }, y: { type: 'number' } }
|
|
135
|
+
};
|
|
136
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [] }, beforeSchema);
|
|
137
|
+
const afterFlow = { modules: [] };
|
|
138
|
+
manager.setEditMode(true);
|
|
139
|
+
manager.setBeforeFlow(beforeFlow);
|
|
140
|
+
manager.setCurrentFlow(afterFlow);
|
|
141
|
+
manager.setCurrentInputSchema(afterSchema);
|
|
142
|
+
flushSync();
|
|
143
|
+
// Input schema change should be detected
|
|
144
|
+
expect(manager.moduleActions[SPECIAL_MODULE_IDS.INPUT]).toEqual({
|
|
145
|
+
action: 'modified',
|
|
146
|
+
pending: true
|
|
147
|
+
});
|
|
148
|
+
// Accept the input schema change
|
|
149
|
+
manager.acceptModule(SPECIAL_MODULE_IDS.INPUT);
|
|
150
|
+
flushSync();
|
|
151
|
+
// beforeFlow schema should now match currentInputSchema
|
|
152
|
+
expect(manager.beforeFlow?.schema).toEqual(afterSchema);
|
|
153
|
+
});
|
|
154
|
+
cleanup();
|
|
155
|
+
});
|
|
156
|
+
it('handles duplicate ID prefix (old__) for type changes', () => {
|
|
157
|
+
const cleanup = $effect.root(() => {
|
|
158
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
159
|
+
// Create a real type change: rawscript -> identity
|
|
160
|
+
const moduleBeforeA = createRawScriptModule('a', 'content');
|
|
161
|
+
const moduleAfterA = createIdentityModule('a');
|
|
162
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleBeforeA] });
|
|
163
|
+
const afterFlow = { modules: [moduleAfterA] };
|
|
164
|
+
manager.setEditMode(true);
|
|
165
|
+
manager.setBeforeFlow(beforeFlow);
|
|
166
|
+
manager.setCurrentFlow(afterFlow);
|
|
167
|
+
flushSync();
|
|
168
|
+
// Type change produces: 'a' (added) and 'old__a' (removed)
|
|
169
|
+
expect(manager.moduleActions['a']).toEqual({ action: 'added', pending: true });
|
|
170
|
+
expect(manager.moduleActions[`${DUPLICATE_MODULE_PREFIX}a`]).toEqual({ action: 'removed', pending: true });
|
|
171
|
+
// Accept the removal (old__a) - should remove original module from beforeFlow
|
|
172
|
+
manager.acceptModule(`${DUPLICATE_MODULE_PREFIX}a`);
|
|
173
|
+
flushSync();
|
|
174
|
+
// The module 'a' (original rawscript) should be removed from beforeFlow
|
|
175
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
176
|
+
expect(beforeModules.map((m) => m.id)).not.toContain('a');
|
|
177
|
+
});
|
|
178
|
+
cleanup();
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
describe('rejectModule', () => {
|
|
182
|
+
it('rejects added module - removes from flowStore', () => {
|
|
183
|
+
const cleanup = $effect.root(() => {
|
|
184
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
185
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
186
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
187
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [deepClone(moduleA)] });
|
|
188
|
+
const currentFlowValue = {
|
|
189
|
+
modules: [deepClone(moduleA), deepClone(moduleB)]
|
|
190
|
+
};
|
|
191
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
192
|
+
manager.setEditMode(true);
|
|
193
|
+
manager.setBeforeFlow(beforeFlow);
|
|
194
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
195
|
+
flushSync();
|
|
196
|
+
expect(manager.moduleActions['b']).toEqual({ action: 'added', pending: true });
|
|
197
|
+
// Reject the added module
|
|
198
|
+
manager.rejectModule('b', flowStore);
|
|
199
|
+
flushSync();
|
|
200
|
+
// After rejecting, flowStore should no longer contain module 'b'
|
|
201
|
+
const currentModules = flowStore.val.value.modules;
|
|
202
|
+
expect(currentModules.map((m) => m.id)).not.toContain('b');
|
|
203
|
+
expect(currentModules.map((m) => m.id)).toContain('a');
|
|
204
|
+
});
|
|
205
|
+
cleanup();
|
|
206
|
+
});
|
|
207
|
+
it('rejects removed module - restores to flowStore', () => {
|
|
208
|
+
const cleanup = $effect.root(() => {
|
|
209
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
210
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
211
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
212
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
213
|
+
modules: [deepClone(moduleA), deepClone(moduleB)]
|
|
214
|
+
});
|
|
215
|
+
const currentFlowValue = { modules: [deepClone(moduleA)] };
|
|
216
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
217
|
+
manager.setEditMode(true);
|
|
218
|
+
manager.setBeforeFlow(beforeFlow);
|
|
219
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
220
|
+
flushSync();
|
|
221
|
+
expect(manager.moduleActions['b']).toEqual({ action: 'removed', pending: true });
|
|
222
|
+
// Reject the removal - should restore module 'b'
|
|
223
|
+
manager.rejectModule('b', flowStore);
|
|
224
|
+
flushSync();
|
|
225
|
+
// After rejecting, flowStore should contain module 'b' again
|
|
226
|
+
const currentModules = flowStore.val.value.modules;
|
|
227
|
+
expect(currentModules.map((m) => m.id)).toContain('b');
|
|
228
|
+
});
|
|
229
|
+
cleanup();
|
|
230
|
+
});
|
|
231
|
+
it('rejects modified module - reverts flowStore to beforeFlow state', () => {
|
|
232
|
+
const cleanup = $effect.root(() => {
|
|
233
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
234
|
+
const moduleBeforeA = createRawScriptModule('a', 'original-content');
|
|
235
|
+
const moduleAfterA = createRawScriptModule('a', 'modified-content');
|
|
236
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [deepClone(moduleBeforeA)] });
|
|
237
|
+
const currentFlowValue = { modules: [deepClone(moduleAfterA)] };
|
|
238
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
239
|
+
manager.setEditMode(true);
|
|
240
|
+
manager.setBeforeFlow(beforeFlow);
|
|
241
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
242
|
+
flushSync();
|
|
243
|
+
expect(manager.moduleActions['a']).toEqual({ action: 'modified', pending: true });
|
|
244
|
+
// Reject the modification
|
|
245
|
+
manager.rejectModule('a', flowStore);
|
|
246
|
+
flushSync();
|
|
247
|
+
// After rejecting, flowStore should have the original content
|
|
248
|
+
const moduleA = flowStore.val.value.modules.find((m) => m.id === 'a');
|
|
249
|
+
expect((moduleA?.value).content).toBe('original-content');
|
|
250
|
+
});
|
|
251
|
+
cleanup();
|
|
252
|
+
});
|
|
253
|
+
it('rejects input schema changes - reverts flowStore schema', () => {
|
|
254
|
+
const cleanup = $effect.root(() => {
|
|
255
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
256
|
+
const beforeSchema = { properties: { x: { type: 'string' } } };
|
|
257
|
+
const afterSchema = { properties: { x: { type: 'string' }, y: { type: 'number' } } };
|
|
258
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [] }, beforeSchema);
|
|
259
|
+
const flowStore = createFlowStore(createExtendedOpenFlow({ modules: [] }, afterSchema));
|
|
260
|
+
manager.setEditMode(true);
|
|
261
|
+
manager.setBeforeFlow(beforeFlow);
|
|
262
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
263
|
+
manager.setCurrentInputSchema(afterSchema);
|
|
264
|
+
flushSync();
|
|
265
|
+
expect(manager.moduleActions[SPECIAL_MODULE_IDS.INPUT]).toEqual({
|
|
266
|
+
action: 'modified',
|
|
267
|
+
pending: true
|
|
268
|
+
});
|
|
269
|
+
// Reject the schema change
|
|
270
|
+
manager.rejectModule(SPECIAL_MODULE_IDS.INPUT, flowStore);
|
|
271
|
+
flushSync();
|
|
272
|
+
// After rejecting, flowStore schema should match beforeFlow
|
|
273
|
+
expect(flowStore.val.schema).toEqual(beforeSchema);
|
|
274
|
+
});
|
|
275
|
+
cleanup();
|
|
276
|
+
});
|
|
277
|
+
it('does not crash without flowStore', () => {
|
|
278
|
+
const cleanup = $effect.root(() => {
|
|
279
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
280
|
+
const moduleA = createRawScriptModule('a', 'content');
|
|
281
|
+
const moduleB = createRawScriptModule('b', 'content');
|
|
282
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleA] });
|
|
283
|
+
const afterFlow = { modules: [moduleA, moduleB] };
|
|
284
|
+
manager.setEditMode(true);
|
|
285
|
+
manager.setBeforeFlow(beforeFlow);
|
|
286
|
+
manager.setCurrentFlow(afterFlow);
|
|
287
|
+
flushSync();
|
|
288
|
+
// Should not throw when flowStore is not provided
|
|
289
|
+
expect(() => manager.rejectModule('b')).not.toThrow();
|
|
290
|
+
});
|
|
291
|
+
cleanup();
|
|
292
|
+
});
|
|
293
|
+
it('does nothing for module not in actions', () => {
|
|
294
|
+
const cleanup = $effect.root(() => {
|
|
295
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
296
|
+
const moduleA = createRawScriptModule('a', 'content');
|
|
297
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleA] });
|
|
298
|
+
const afterFlow = { modules: [moduleA] };
|
|
299
|
+
manager.setEditMode(true);
|
|
300
|
+
manager.setBeforeFlow(beforeFlow);
|
|
301
|
+
manager.setCurrentFlow(afterFlow);
|
|
302
|
+
flushSync();
|
|
303
|
+
// No actions should exist
|
|
304
|
+
expect(Object.keys(manager.moduleActions)).toHaveLength(0);
|
|
305
|
+
// Should not throw for non-existent module
|
|
306
|
+
expect(() => manager.rejectModule('nonexistent')).not.toThrow();
|
|
307
|
+
});
|
|
308
|
+
cleanup();
|
|
309
|
+
});
|
|
310
|
+
it('rejects duplicate ID prefix (old__) for type changes - restores original and renames new', () => {
|
|
311
|
+
const cleanup = $effect.root(() => {
|
|
312
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
313
|
+
// Create a real type change: rawscript -> identity
|
|
314
|
+
const moduleBeforeA = createRawScriptModule('a', 'original-content');
|
|
315
|
+
const moduleAfterA = createIdentityModule('a');
|
|
316
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [deepClone(moduleBeforeA)] });
|
|
317
|
+
const currentFlowValue = { modules: [deepClone(moduleAfterA)] };
|
|
318
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
319
|
+
manager.setEditMode(true);
|
|
320
|
+
manager.setBeforeFlow(beforeFlow);
|
|
321
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
322
|
+
flushSync();
|
|
323
|
+
// Type change produces: 'a' (added) and 'old__a' (removed)
|
|
324
|
+
expect(manager.moduleActions['a']).toEqual({ action: 'added', pending: true });
|
|
325
|
+
expect(manager.moduleActions[`${DUPLICATE_MODULE_PREFIX}a`]).toEqual({
|
|
326
|
+
action: 'removed',
|
|
327
|
+
pending: true
|
|
328
|
+
});
|
|
329
|
+
// Reject the removal (old__a) - should restore original and rename the new one
|
|
330
|
+
manager.rejectModule(`${DUPLICATE_MODULE_PREFIX}a`, flowStore);
|
|
331
|
+
flushSync();
|
|
332
|
+
const currentModules = flowStore.val.value.modules;
|
|
333
|
+
// The original module 'a' (rawscript) should be restored
|
|
334
|
+
const restoredOriginal = currentModules.find((m) => m.id === 'a');
|
|
335
|
+
expect(restoredOriginal).toBeDefined();
|
|
336
|
+
expect(restoredOriginal?.value.type).toBe('rawscript');
|
|
337
|
+
// The new module should be renamed to 'new__a' so user can still accept/reject it
|
|
338
|
+
const renamedNew = currentModules.find((m) => m.id === `${NEW_MODULE_PREFIX}a`);
|
|
339
|
+
expect(renamedNew).toBeDefined();
|
|
340
|
+
expect(renamedNew?.value.type).toBe('identity');
|
|
341
|
+
});
|
|
342
|
+
cleanup();
|
|
343
|
+
});
|
|
344
|
+
});
|
|
345
|
+
describe('batch operations', () => {
|
|
346
|
+
it('acceptAll accepts all pending modules', () => {
|
|
347
|
+
const cleanup = $effect.root(() => {
|
|
348
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
349
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
350
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
351
|
+
const moduleC = createRawScriptModule('c', 'content-c');
|
|
352
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleA] });
|
|
353
|
+
const afterFlow = { modules: [moduleA, moduleB, moduleC] };
|
|
354
|
+
manager.setEditMode(true);
|
|
355
|
+
manager.setBeforeFlow(beforeFlow);
|
|
356
|
+
manager.setCurrentFlow(afterFlow);
|
|
357
|
+
flushSync();
|
|
358
|
+
expect(manager.moduleActions['b']).toBeDefined();
|
|
359
|
+
expect(manager.moduleActions['c']).toBeDefined();
|
|
360
|
+
// Accept all
|
|
361
|
+
manager.acceptAll();
|
|
362
|
+
flushSync();
|
|
363
|
+
// All modules should now be in beforeFlow
|
|
364
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
365
|
+
expect(beforeModules.map((m) => m.id)).toContain('b');
|
|
366
|
+
expect(beforeModules.map((m) => m.id)).toContain('c');
|
|
367
|
+
});
|
|
368
|
+
cleanup();
|
|
369
|
+
});
|
|
370
|
+
it('acceptAll skips non-pending actions', () => {
|
|
371
|
+
const cleanup = $effect.root(() => {
|
|
372
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
373
|
+
const moduleA = createRawScriptModule('a', 'content');
|
|
374
|
+
const moduleB = createRawScriptModule('b', 'content');
|
|
375
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleA] });
|
|
376
|
+
const afterFlow = { modules: [moduleA, moduleB] };
|
|
377
|
+
// Set editMode to false so actions are not pending
|
|
378
|
+
manager.setEditMode(false);
|
|
379
|
+
manager.setBeforeFlow(beforeFlow);
|
|
380
|
+
manager.setCurrentFlow(afterFlow);
|
|
381
|
+
flushSync();
|
|
382
|
+
// Action should exist but not be pending
|
|
383
|
+
expect(manager.moduleActions['b']?.pending).toBe(false);
|
|
384
|
+
// acceptAll should skip non-pending
|
|
385
|
+
manager.acceptAll();
|
|
386
|
+
flushSync();
|
|
387
|
+
// 'b' should still not be in beforeFlow
|
|
388
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
389
|
+
expect(beforeModules.map((m) => m.id)).not.toContain('b');
|
|
390
|
+
});
|
|
391
|
+
cleanup();
|
|
392
|
+
});
|
|
393
|
+
it('rejectAll rejects all pending modules', () => {
|
|
394
|
+
const cleanup = $effect.root(() => {
|
|
395
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
396
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
397
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
398
|
+
const moduleC = createRawScriptModule('c', 'content-c');
|
|
399
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [deepClone(moduleA)] });
|
|
400
|
+
const currentFlowValue = {
|
|
401
|
+
modules: [deepClone(moduleA), deepClone(moduleB), deepClone(moduleC)]
|
|
402
|
+
};
|
|
403
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
404
|
+
manager.setEditMode(true);
|
|
405
|
+
manager.setBeforeFlow(beforeFlow);
|
|
406
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
407
|
+
flushSync();
|
|
408
|
+
expect(manager.moduleActions['b']).toBeDefined();
|
|
409
|
+
expect(manager.moduleActions['c']).toBeDefined();
|
|
410
|
+
// Reject all
|
|
411
|
+
manager.rejectAll(flowStore);
|
|
412
|
+
flushSync();
|
|
413
|
+
// Both added modules should be removed from flowStore
|
|
414
|
+
const currentModules = flowStore.val.value.modules;
|
|
415
|
+
expect(currentModules.map((m) => m.id)).not.toContain('b');
|
|
416
|
+
expect(currentModules.map((m) => m.id)).not.toContain('c');
|
|
417
|
+
});
|
|
418
|
+
cleanup();
|
|
419
|
+
});
|
|
420
|
+
});
|
|
421
|
+
describe('edge cases', () => {
|
|
422
|
+
it('clearSnapshot clears all state', () => {
|
|
423
|
+
const cleanup = $effect.root(() => {
|
|
424
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
425
|
+
const moduleA = createRawScriptModule('a', 'content');
|
|
426
|
+
const moduleB = createRawScriptModule('b', 'content');
|
|
427
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [moduleA] });
|
|
428
|
+
const afterFlow = { modules: [moduleA, moduleB] };
|
|
429
|
+
manager.setEditMode(true);
|
|
430
|
+
manager.setBeforeFlow(beforeFlow);
|
|
431
|
+
manager.setCurrentFlow(afterFlow);
|
|
432
|
+
flushSync();
|
|
433
|
+
expect(manager.beforeFlow).toBeDefined();
|
|
434
|
+
expect(manager.currentFlow).toBeDefined();
|
|
435
|
+
expect(Object.keys(manager.moduleActions).length).toBeGreaterThan(0);
|
|
436
|
+
manager.clearSnapshot();
|
|
437
|
+
flushSync();
|
|
438
|
+
expect(manager.beforeFlow).toBeUndefined();
|
|
439
|
+
expect(manager.currentFlow).toBeUndefined();
|
|
440
|
+
expect(Object.keys(manager.moduleActions)).toHaveLength(0);
|
|
441
|
+
});
|
|
442
|
+
cleanup();
|
|
443
|
+
});
|
|
444
|
+
it('revertToSnapshot restores entire flow', () => {
|
|
445
|
+
const cleanup = $effect.root(() => {
|
|
446
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
447
|
+
const moduleA = createRawScriptModule('a', 'original');
|
|
448
|
+
const moduleB = createRawScriptModule('b', 'modified');
|
|
449
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [deepClone(moduleA)] });
|
|
450
|
+
const currentFlowValue = { modules: [deepClone(moduleB)] };
|
|
451
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
452
|
+
manager.setEditMode(true);
|
|
453
|
+
manager.setBeforeFlow(beforeFlow);
|
|
454
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
455
|
+
flushSync();
|
|
456
|
+
// Revert to snapshot
|
|
457
|
+
manager.revertToSnapshot(flowStore);
|
|
458
|
+
flushSync();
|
|
459
|
+
// flowStore should now be the beforeFlow
|
|
460
|
+
expect(flowStore.val.value.modules.map((m) => m.id)).toEqual(['a']);
|
|
461
|
+
expect(flowStore.val.value.modules[0].value.content).toBe('original');
|
|
462
|
+
});
|
|
463
|
+
cleanup();
|
|
464
|
+
});
|
|
465
|
+
});
|
|
466
|
+
describe('module positioning', () => {
|
|
467
|
+
it('accept added module at beginning - inserts at correct position', () => {
|
|
468
|
+
const cleanup = $effect.root(() => {
|
|
469
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
470
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
471
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
472
|
+
const moduleNew = createRawScriptModule('new', 'new at beginning');
|
|
473
|
+
// beforeFlow: [a, b]
|
|
474
|
+
// afterFlow: [new, a, b]
|
|
475
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
476
|
+
modules: [deepClone(moduleA), deepClone(moduleB)]
|
|
477
|
+
});
|
|
478
|
+
const afterFlow = {
|
|
479
|
+
modules: [deepClone(moduleNew), deepClone(moduleA), deepClone(moduleB)]
|
|
480
|
+
};
|
|
481
|
+
manager.setEditMode(true);
|
|
482
|
+
manager.setBeforeFlow(beforeFlow);
|
|
483
|
+
manager.setCurrentFlow(afterFlow);
|
|
484
|
+
flushSync();
|
|
485
|
+
expect(manager.moduleActions['new']).toEqual({ action: 'added', pending: true });
|
|
486
|
+
// Accept the added module
|
|
487
|
+
manager.acceptModule('new');
|
|
488
|
+
flushSync();
|
|
489
|
+
// Verify 'new' is inserted at the beginning
|
|
490
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
491
|
+
expectModuleOrder(beforeModules, ['new', 'a', 'b']);
|
|
492
|
+
});
|
|
493
|
+
cleanup();
|
|
494
|
+
});
|
|
495
|
+
it('accept added module in middle - inserts at correct position', () => {
|
|
496
|
+
const cleanup = $effect.root(() => {
|
|
497
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
498
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
499
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
500
|
+
const moduleC = createRawScriptModule('c', 'content-c');
|
|
501
|
+
const moduleNew = createRawScriptModule('new', 'new in middle');
|
|
502
|
+
// beforeFlow: [a, b, c]
|
|
503
|
+
// afterFlow: [a, new, b, c]
|
|
504
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
505
|
+
modules: [deepClone(moduleA), deepClone(moduleB), deepClone(moduleC)]
|
|
506
|
+
});
|
|
507
|
+
const afterFlow = {
|
|
508
|
+
modules: [
|
|
509
|
+
deepClone(moduleA),
|
|
510
|
+
deepClone(moduleNew),
|
|
511
|
+
deepClone(moduleB),
|
|
512
|
+
deepClone(moduleC)
|
|
513
|
+
]
|
|
514
|
+
};
|
|
515
|
+
manager.setEditMode(true);
|
|
516
|
+
manager.setBeforeFlow(beforeFlow);
|
|
517
|
+
manager.setCurrentFlow(afterFlow);
|
|
518
|
+
flushSync();
|
|
519
|
+
expect(manager.moduleActions['new']).toEqual({ action: 'added', pending: true });
|
|
520
|
+
// Accept the added module
|
|
521
|
+
manager.acceptModule('new');
|
|
522
|
+
flushSync();
|
|
523
|
+
// Verify 'new' is inserted at the correct middle position
|
|
524
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
525
|
+
expectModuleOrder(beforeModules, ['a', 'new', 'b', 'c']);
|
|
526
|
+
});
|
|
527
|
+
cleanup();
|
|
528
|
+
});
|
|
529
|
+
it('reject removed module - restores at correct position', () => {
|
|
530
|
+
const cleanup = $effect.root(() => {
|
|
531
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
532
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
533
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
534
|
+
const moduleC = createRawScriptModule('c', 'content-c');
|
|
535
|
+
// beforeFlow: [a, b, c]
|
|
536
|
+
// afterFlow (currentFlow): [a, c] - 'b' removed
|
|
537
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
538
|
+
modules: [deepClone(moduleA), deepClone(moduleB), deepClone(moduleC)]
|
|
539
|
+
});
|
|
540
|
+
const currentFlowValue = {
|
|
541
|
+
modules: [deepClone(moduleA), deepClone(moduleC)]
|
|
542
|
+
};
|
|
543
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
544
|
+
manager.setEditMode(true);
|
|
545
|
+
manager.setBeforeFlow(beforeFlow);
|
|
546
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
547
|
+
flushSync();
|
|
548
|
+
expect(manager.moduleActions['b']).toEqual({ action: 'removed', pending: true });
|
|
549
|
+
// Reject the removal - should restore 'b' at original position
|
|
550
|
+
manager.rejectModule('b', flowStore);
|
|
551
|
+
flushSync();
|
|
552
|
+
// Verify 'b' is restored at the middle position
|
|
553
|
+
const currentModules = flowStore.val.value.modules;
|
|
554
|
+
expectModuleOrder(currentModules, ['a', 'b', 'c']);
|
|
555
|
+
});
|
|
556
|
+
cleanup();
|
|
557
|
+
});
|
|
558
|
+
it('accept added module inside loop - inserts at correct nested position', () => {
|
|
559
|
+
const cleanup = $effect.root(() => {
|
|
560
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
561
|
+
const innerA = createRawScriptModule('inner_a', 'inner a');
|
|
562
|
+
const innerB = createRawScriptModule('inner_b', 'inner b');
|
|
563
|
+
const innerNew = createRawScriptModule('inner_new', 'new at beginning of loop');
|
|
564
|
+
// beforeFlow: loop with [inner_a, inner_b]
|
|
565
|
+
// afterFlow: loop with [inner_new, inner_a, inner_b]
|
|
566
|
+
const beforeLoop = createForloopModule('loop1', [deepClone(innerA), deepClone(innerB)]);
|
|
567
|
+
const afterLoop = createForloopModule('loop1', [
|
|
568
|
+
deepClone(innerNew),
|
|
569
|
+
deepClone(innerA),
|
|
570
|
+
deepClone(innerB)
|
|
571
|
+
]);
|
|
572
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeLoop] });
|
|
573
|
+
const afterFlow = { modules: [afterLoop] };
|
|
574
|
+
manager.setEditMode(true);
|
|
575
|
+
manager.setBeforeFlow(beforeFlow);
|
|
576
|
+
manager.setCurrentFlow(afterFlow);
|
|
577
|
+
flushSync();
|
|
578
|
+
expect(manager.moduleActions['inner_new']).toEqual({ action: 'added', pending: true });
|
|
579
|
+
// Accept the added nested module
|
|
580
|
+
manager.acceptModule('inner_new');
|
|
581
|
+
flushSync();
|
|
582
|
+
// Verify 'inner_new' is inserted at beginning inside the loop
|
|
583
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
584
|
+
expect(beforeModules).toHaveLength(1);
|
|
585
|
+
const loopModule = beforeModules[0];
|
|
586
|
+
const loopModules = loopModule.value.modules;
|
|
587
|
+
expectModuleOrder(loopModules, ['inner_new', 'inner_a', 'inner_b']);
|
|
588
|
+
});
|
|
589
|
+
cleanup();
|
|
590
|
+
});
|
|
591
|
+
it('reject removed module inside loop - restores at correct nested position', () => {
|
|
592
|
+
const cleanup = $effect.root(() => {
|
|
593
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
594
|
+
const innerA = createRawScriptModule('inner_a', 'inner a');
|
|
595
|
+
const innerB = createRawScriptModule('inner_b', 'inner b');
|
|
596
|
+
const innerC = createRawScriptModule('inner_c', 'inner c');
|
|
597
|
+
// beforeFlow: loop with [inner_a, inner_b, inner_c]
|
|
598
|
+
// afterFlow: loop with [inner_a, inner_c] - inner_b removed
|
|
599
|
+
const beforeLoop = createForloopModule('loop1', [
|
|
600
|
+
deepClone(innerA),
|
|
601
|
+
deepClone(innerB),
|
|
602
|
+
deepClone(innerC)
|
|
603
|
+
]);
|
|
604
|
+
const afterLoop = createForloopModule('loop1', [deepClone(innerA), deepClone(innerC)]);
|
|
605
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeLoop] });
|
|
606
|
+
const currentFlowValue = { modules: [afterLoop] };
|
|
607
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
608
|
+
manager.setEditMode(true);
|
|
609
|
+
manager.setBeforeFlow(beforeFlow);
|
|
610
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
611
|
+
flushSync();
|
|
612
|
+
expect(manager.moduleActions['inner_b']).toEqual({ action: 'removed', pending: true });
|
|
613
|
+
// Reject the removal - should restore 'inner_b' at original nested position
|
|
614
|
+
manager.rejectModule('inner_b', flowStore);
|
|
615
|
+
flushSync();
|
|
616
|
+
// Verify 'inner_b' is restored at the middle position inside the loop
|
|
617
|
+
const currentModules = flowStore.val.value.modules;
|
|
618
|
+
expect(currentModules).toHaveLength(1);
|
|
619
|
+
const loopModule = currentModules[0];
|
|
620
|
+
const loopModules = loopModule.value.modules;
|
|
621
|
+
expectModuleOrder(loopModules, ['inner_a', 'inner_b', 'inner_c']);
|
|
622
|
+
});
|
|
623
|
+
cleanup();
|
|
624
|
+
});
|
|
625
|
+
it('accept multiple added modules at different positions', () => {
|
|
626
|
+
const cleanup = $effect.root(() => {
|
|
627
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
628
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
629
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
630
|
+
const moduleNew1 = createRawScriptModule('new1', 'new at start');
|
|
631
|
+
const moduleNew2 = createRawScriptModule('new2', 'new in middle');
|
|
632
|
+
const moduleNew3 = createRawScriptModule('new3', 'new at end');
|
|
633
|
+
// beforeFlow: [a, b]
|
|
634
|
+
// afterFlow: [new1, a, new2, b, new3]
|
|
635
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
636
|
+
modules: [deepClone(moduleA), deepClone(moduleB)]
|
|
637
|
+
});
|
|
638
|
+
const afterFlow = {
|
|
639
|
+
modules: [
|
|
640
|
+
deepClone(moduleNew1),
|
|
641
|
+
deepClone(moduleA),
|
|
642
|
+
deepClone(moduleNew2),
|
|
643
|
+
deepClone(moduleB),
|
|
644
|
+
deepClone(moduleNew3)
|
|
645
|
+
]
|
|
646
|
+
};
|
|
647
|
+
manager.setEditMode(true);
|
|
648
|
+
manager.setBeforeFlow(beforeFlow);
|
|
649
|
+
manager.setCurrentFlow(afterFlow);
|
|
650
|
+
flushSync();
|
|
651
|
+
// Accept all added modules one by one
|
|
652
|
+
manager.acceptModule('new1');
|
|
653
|
+
flushSync();
|
|
654
|
+
manager.acceptModule('new2');
|
|
655
|
+
flushSync();
|
|
656
|
+
manager.acceptModule('new3');
|
|
657
|
+
flushSync();
|
|
658
|
+
// Verify all modules are at correct positions
|
|
659
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
660
|
+
expectModuleOrder(beforeModules, ['new1', 'a', 'new2', 'b', 'new3']);
|
|
661
|
+
});
|
|
662
|
+
cleanup();
|
|
663
|
+
});
|
|
664
|
+
it('reject multiple removed modules - restores all at correct positions', () => {
|
|
665
|
+
const cleanup = $effect.root(() => {
|
|
666
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
667
|
+
const moduleA = createRawScriptModule('a', 'first');
|
|
668
|
+
const moduleB = createRawScriptModule('b', 'second');
|
|
669
|
+
const moduleC = createRawScriptModule('c', 'third');
|
|
670
|
+
const moduleD = createRawScriptModule('d', 'fourth');
|
|
671
|
+
const moduleE = createRawScriptModule('e', 'fifth');
|
|
672
|
+
// beforeFlow: [a, b, c, d, e]
|
|
673
|
+
// afterFlow: [b, d] - a, c, e removed
|
|
674
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
675
|
+
modules: [
|
|
676
|
+
deepClone(moduleA),
|
|
677
|
+
deepClone(moduleB),
|
|
678
|
+
deepClone(moduleC),
|
|
679
|
+
deepClone(moduleD),
|
|
680
|
+
deepClone(moduleE)
|
|
681
|
+
]
|
|
682
|
+
});
|
|
683
|
+
const currentFlowValue = {
|
|
684
|
+
modules: [deepClone(moduleB), deepClone(moduleD)]
|
|
685
|
+
};
|
|
686
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
687
|
+
manager.setEditMode(true);
|
|
688
|
+
manager.setBeforeFlow(beforeFlow);
|
|
689
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
690
|
+
flushSync();
|
|
691
|
+
// Reject removals one by one
|
|
692
|
+
manager.rejectModule('a', flowStore);
|
|
693
|
+
flushSync();
|
|
694
|
+
manager.rejectModule('c', flowStore);
|
|
695
|
+
flushSync();
|
|
696
|
+
manager.rejectModule('e', flowStore);
|
|
697
|
+
flushSync();
|
|
698
|
+
// Verify all modules are restored at correct positions
|
|
699
|
+
const currentModules = flowStore.val.value.modules;
|
|
700
|
+
expectModuleOrder(currentModules, ['a', 'b', 'c', 'd', 'e']);
|
|
701
|
+
});
|
|
702
|
+
cleanup();
|
|
703
|
+
});
|
|
704
|
+
});
|
|
705
|
+
describe('branch operations', () => {
|
|
706
|
+
describe('branchone', () => {
|
|
707
|
+
it('accept added module in default branch - inserts at correct position', () => {
|
|
708
|
+
const cleanup = $effect.root(() => {
|
|
709
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
710
|
+
const defaultA = createRawScriptModule('default_a', 'default step a');
|
|
711
|
+
const defaultB = createRawScriptModule('default_b', 'default step b');
|
|
712
|
+
// beforeFlow: branch with [default_a] in default
|
|
713
|
+
// afterFlow: branch with [default_a, default_b] in default
|
|
714
|
+
const beforeBranch = createBranchOneModule('branch1', [deepClone(defaultA)], []);
|
|
715
|
+
const afterBranch = createBranchOneModule('branch1', [deepClone(defaultA), deepClone(defaultB)], []);
|
|
716
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranch] });
|
|
717
|
+
const afterFlow = { modules: [afterBranch] };
|
|
718
|
+
manager.setEditMode(true);
|
|
719
|
+
manager.setBeforeFlow(beforeFlow);
|
|
720
|
+
manager.setCurrentFlow(afterFlow);
|
|
721
|
+
flushSync();
|
|
722
|
+
expect(manager.moduleActions['default_b']).toEqual({ action: 'added', pending: true });
|
|
723
|
+
// Accept the added module
|
|
724
|
+
manager.acceptModule('default_b');
|
|
725
|
+
flushSync();
|
|
726
|
+
// Verify 'default_b' is inserted at correct position in default branch
|
|
727
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
728
|
+
expect(beforeModules).toHaveLength(1);
|
|
729
|
+
const branchModule = beforeModules[0];
|
|
730
|
+
const branchDefault = branchModule.value.default;
|
|
731
|
+
expectModuleOrder(branchDefault, ['default_a', 'default_b']);
|
|
732
|
+
});
|
|
733
|
+
cleanup();
|
|
734
|
+
});
|
|
735
|
+
it('reject removed module from default branch - restores at correct position', () => {
|
|
736
|
+
const cleanup = $effect.root(() => {
|
|
737
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
738
|
+
const defaultA = createRawScriptModule('default_a', 'default step a');
|
|
739
|
+
const defaultB = createRawScriptModule('default_b', 'default step b');
|
|
740
|
+
const defaultC = createRawScriptModule('default_c', 'default step c');
|
|
741
|
+
// beforeFlow: branch with [default_a, default_b, default_c] in default
|
|
742
|
+
// afterFlow: branch with [default_a, default_c] in default - default_b removed
|
|
743
|
+
const beforeBranch = createBranchOneModule('branch1', [deepClone(defaultA), deepClone(defaultB), deepClone(defaultC)], []);
|
|
744
|
+
const afterBranch = createBranchOneModule('branch1', [deepClone(defaultA), deepClone(defaultC)], []);
|
|
745
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranch] });
|
|
746
|
+
const currentFlowValue = { modules: [afterBranch] };
|
|
747
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
748
|
+
manager.setEditMode(true);
|
|
749
|
+
manager.setBeforeFlow(beforeFlow);
|
|
750
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
751
|
+
flushSync();
|
|
752
|
+
expect(manager.moduleActions['default_b']).toEqual({ action: 'removed', pending: true });
|
|
753
|
+
// Reject the removal - should restore 'default_b' at original position
|
|
754
|
+
manager.rejectModule('default_b', flowStore);
|
|
755
|
+
flushSync();
|
|
756
|
+
// Verify 'default_b' is restored at the middle position in default branch
|
|
757
|
+
const currentModules = flowStore.val.value.modules;
|
|
758
|
+
expect(currentModules).toHaveLength(1);
|
|
759
|
+
const branchModule = currentModules[0];
|
|
760
|
+
const branchDefault = branchModule.value.default;
|
|
761
|
+
expectModuleOrder(branchDefault, ['default_a', 'default_b', 'default_c']);
|
|
762
|
+
});
|
|
763
|
+
cleanup();
|
|
764
|
+
});
|
|
765
|
+
it('accept added module in conditional branch - inserts at correct position', () => {
|
|
766
|
+
const cleanup = $effect.root(() => {
|
|
767
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
768
|
+
const branchModuleA = createRawScriptModule('branch_a', 'branch step a');
|
|
769
|
+
const branchModuleB = createRawScriptModule('branch_b', 'branch step b');
|
|
770
|
+
// beforeFlow: branch with [branch_a] in conditional branch
|
|
771
|
+
// afterFlow: branch with [branch_a, branch_b] in conditional branch
|
|
772
|
+
const beforeBranch = createBranchOneModule('branch1', [], [{ expr: 'x > 0', modules: [deepClone(branchModuleA)] }]);
|
|
773
|
+
const afterBranch = createBranchOneModule('branch1', [], [{ expr: 'x > 0', modules: [deepClone(branchModuleA), deepClone(branchModuleB)] }]);
|
|
774
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranch] });
|
|
775
|
+
const afterFlow = { modules: [afterBranch] };
|
|
776
|
+
manager.setEditMode(true);
|
|
777
|
+
manager.setBeforeFlow(beforeFlow);
|
|
778
|
+
manager.setCurrentFlow(afterFlow);
|
|
779
|
+
flushSync();
|
|
780
|
+
expect(manager.moduleActions['branch_b']).toEqual({ action: 'added', pending: true });
|
|
781
|
+
// Accept the added module
|
|
782
|
+
manager.acceptModule('branch_b');
|
|
783
|
+
flushSync();
|
|
784
|
+
// Verify 'branch_b' is inserted in the conditional branch
|
|
785
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
786
|
+
expect(beforeModules).toHaveLength(1);
|
|
787
|
+
const branchModule = beforeModules[0];
|
|
788
|
+
const branches = branchModule.value.branches;
|
|
789
|
+
expect(branches).toHaveLength(1);
|
|
790
|
+
expectModuleOrder(branches[0].modules, ['branch_a', 'branch_b']);
|
|
791
|
+
});
|
|
792
|
+
cleanup();
|
|
793
|
+
});
|
|
794
|
+
it('reject removed module from conditional branch - restores at correct position', () => {
|
|
795
|
+
const cleanup = $effect.root(() => {
|
|
796
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
797
|
+
const branchModuleA = createRawScriptModule('branch_a', 'branch step a');
|
|
798
|
+
const branchModuleB = createRawScriptModule('branch_b', 'branch step b');
|
|
799
|
+
// beforeFlow: branch with [branch_a, branch_b] in conditional branch
|
|
800
|
+
// afterFlow: branch with [branch_a] in conditional branch - branch_b removed
|
|
801
|
+
const beforeBranch = createBranchOneModule('branch1', [], [{ expr: 'x > 0', modules: [deepClone(branchModuleA), deepClone(branchModuleB)] }]);
|
|
802
|
+
const afterBranch = createBranchOneModule('branch1', [], [{ expr: 'x > 0', modules: [deepClone(branchModuleA)] }]);
|
|
803
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranch] });
|
|
804
|
+
const currentFlowValue = { modules: [afterBranch] };
|
|
805
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
806
|
+
manager.setEditMode(true);
|
|
807
|
+
manager.setBeforeFlow(beforeFlow);
|
|
808
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
809
|
+
flushSync();
|
|
810
|
+
expect(manager.moduleActions['branch_b']).toEqual({ action: 'removed', pending: true });
|
|
811
|
+
// Reject the removal
|
|
812
|
+
manager.rejectModule('branch_b', flowStore);
|
|
813
|
+
flushSync();
|
|
814
|
+
// Verify 'branch_b' is restored in the conditional branch
|
|
815
|
+
const currentModules = flowStore.val.value.modules;
|
|
816
|
+
expect(currentModules).toHaveLength(1);
|
|
817
|
+
const branchModule = currentModules[0];
|
|
818
|
+
const branches = branchModule.value.branches;
|
|
819
|
+
expect(branches).toHaveLength(1);
|
|
820
|
+
expectModuleOrder(branches[0].modules, ['branch_a', 'branch_b']);
|
|
821
|
+
});
|
|
822
|
+
cleanup();
|
|
823
|
+
});
|
|
824
|
+
it('accept modified module in branch - updates content correctly', () => {
|
|
825
|
+
const cleanup = $effect.root(() => {
|
|
826
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
827
|
+
const branchModuleBefore = createRawScriptModule('branch_a', 'original content');
|
|
828
|
+
const branchModuleAfter = createRawScriptModule('branch_a', 'modified content');
|
|
829
|
+
// beforeFlow: branch with original module
|
|
830
|
+
// afterFlow: branch with modified module
|
|
831
|
+
const beforeBranch = createBranchOneModule('branch1', [deepClone(branchModuleBefore)], []);
|
|
832
|
+
const afterBranch = createBranchOneModule('branch1', [deepClone(branchModuleAfter)], []);
|
|
833
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranch] });
|
|
834
|
+
const afterFlow = { modules: [afterBranch] };
|
|
835
|
+
manager.setEditMode(true);
|
|
836
|
+
manager.setBeforeFlow(beforeFlow);
|
|
837
|
+
manager.setCurrentFlow(afterFlow);
|
|
838
|
+
flushSync();
|
|
839
|
+
expect(manager.moduleActions['branch_a']).toEqual({ action: 'modified', pending: true });
|
|
840
|
+
// Accept the modification
|
|
841
|
+
manager.acceptModule('branch_a');
|
|
842
|
+
flushSync();
|
|
843
|
+
// Verify content is updated
|
|
844
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
845
|
+
const branchModule = beforeModules[0];
|
|
846
|
+
const branchDefault = branchModule.value.default;
|
|
847
|
+
const moduleA = branchDefault.find((m) => m.id === 'branch_a');
|
|
848
|
+
expect((moduleA?.value).content).toBe('modified content');
|
|
849
|
+
});
|
|
850
|
+
cleanup();
|
|
851
|
+
});
|
|
852
|
+
it('reject entire conditional branch removal - restores the branch with its modules', () => {
|
|
853
|
+
const cleanup = $effect.root(() => {
|
|
854
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
855
|
+
const defaultModule = createRawScriptModule('default_mod', 'default');
|
|
856
|
+
const branch1ModuleA = createRawScriptModule('b1_a', 'branch 1 a');
|
|
857
|
+
const branch2ModuleA = createRawScriptModule('b2_a', 'branch 2 a');
|
|
858
|
+
const branch2ModuleB = createRawScriptModule('b2_b', 'branch 2 b');
|
|
859
|
+
// beforeFlow: branch with 2 conditional branches
|
|
860
|
+
// afterFlow: branch with only 1 conditional branch - second branch removed
|
|
861
|
+
const beforeBranch = createBranchOneModule('branch1', [deepClone(defaultModule)], [
|
|
862
|
+
{ expr: 'x > 0', modules: [deepClone(branch1ModuleA)] },
|
|
863
|
+
{ expr: 'x < 0', modules: [deepClone(branch2ModuleA), deepClone(branch2ModuleB)] }
|
|
864
|
+
]);
|
|
865
|
+
const afterBranch = createBranchOneModule('branch1', [deepClone(defaultModule)], [{ expr: 'x > 0', modules: [deepClone(branch1ModuleA)] }]);
|
|
866
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranch] });
|
|
867
|
+
const currentFlowValue = { modules: [afterBranch] };
|
|
868
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
869
|
+
manager.setEditMode(true);
|
|
870
|
+
manager.setBeforeFlow(beforeFlow);
|
|
871
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
872
|
+
flushSync();
|
|
873
|
+
// Both modules from the removed branch should be marked as removed
|
|
874
|
+
expect(manager.moduleActions['b2_a']).toEqual({ action: 'removed', pending: true });
|
|
875
|
+
expect(manager.moduleActions['b2_b']).toEqual({ action: 'removed', pending: true });
|
|
876
|
+
// Reject both removals to restore the entire branch
|
|
877
|
+
manager.rejectModule('b2_a', flowStore);
|
|
878
|
+
flushSync();
|
|
879
|
+
manager.rejectModule('b2_b', flowStore);
|
|
880
|
+
flushSync();
|
|
881
|
+
// Verify the second branch is restored with both modules
|
|
882
|
+
const currentModules = flowStore.val.value.modules;
|
|
883
|
+
expect(currentModules).toHaveLength(1);
|
|
884
|
+
const branchModule = currentModules[0];
|
|
885
|
+
const branches = branchModule.value.branches;
|
|
886
|
+
// Should have 2 branches again
|
|
887
|
+
expect(branches).toHaveLength(2);
|
|
888
|
+
expectModuleOrder(branches[0].modules, ['b1_a']);
|
|
889
|
+
expectModuleOrder(branches[1].modules, ['b2_a', 'b2_b']);
|
|
890
|
+
});
|
|
891
|
+
cleanup();
|
|
892
|
+
});
|
|
893
|
+
});
|
|
894
|
+
describe('branchall', () => {
|
|
895
|
+
it('accept added module in parallel branch - inserts at correct position', () => {
|
|
896
|
+
const cleanup = $effect.root(() => {
|
|
897
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
898
|
+
const parallel1A = createRawScriptModule('p1_a', 'parallel 1 a');
|
|
899
|
+
const parallel2A = createRawScriptModule('p2_a', 'parallel 2 a');
|
|
900
|
+
const parallel2B = createRawScriptModule('p2_b', 'parallel 2 b - new');
|
|
901
|
+
// beforeFlow: branchall with [p1_a] and [p2_a]
|
|
902
|
+
// afterFlow: branchall with [p1_a] and [p2_a, p2_b]
|
|
903
|
+
const beforeBranchAll = createBranchAllModule('branchall1', [
|
|
904
|
+
{ modules: [deepClone(parallel1A)] },
|
|
905
|
+
{ modules: [deepClone(parallel2A)] }
|
|
906
|
+
]);
|
|
907
|
+
const afterBranchAll = createBranchAllModule('branchall1', [
|
|
908
|
+
{ modules: [deepClone(parallel1A)] },
|
|
909
|
+
{ modules: [deepClone(parallel2A), deepClone(parallel2B)] }
|
|
910
|
+
]);
|
|
911
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranchAll] });
|
|
912
|
+
const afterFlow = { modules: [afterBranchAll] };
|
|
913
|
+
manager.setEditMode(true);
|
|
914
|
+
manager.setBeforeFlow(beforeFlow);
|
|
915
|
+
manager.setCurrentFlow(afterFlow);
|
|
916
|
+
flushSync();
|
|
917
|
+
expect(manager.moduleActions['p2_b']).toEqual({ action: 'added', pending: true });
|
|
918
|
+
// Accept the added module
|
|
919
|
+
manager.acceptModule('p2_b');
|
|
920
|
+
flushSync();
|
|
921
|
+
// Verify 'p2_b' is inserted in the second parallel branch
|
|
922
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
923
|
+
expect(beforeModules).toHaveLength(1);
|
|
924
|
+
const branchAllModule = beforeModules[0];
|
|
925
|
+
const branches = branchAllModule.value.branches;
|
|
926
|
+
expect(branches).toHaveLength(2);
|
|
927
|
+
expectModuleOrder(branches[0].modules, ['p1_a']);
|
|
928
|
+
expectModuleOrder(branches[1].modules, ['p2_a', 'p2_b']);
|
|
929
|
+
});
|
|
930
|
+
cleanup();
|
|
931
|
+
});
|
|
932
|
+
it('reject removed module from parallel branch - restores at correct position', () => {
|
|
933
|
+
const cleanup = $effect.root(() => {
|
|
934
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
935
|
+
const parallel1A = createRawScriptModule('p1_a', 'parallel 1 a');
|
|
936
|
+
const parallel1B = createRawScriptModule('p1_b', 'parallel 1 b');
|
|
937
|
+
const parallel2A = createRawScriptModule('p2_a', 'parallel 2 a');
|
|
938
|
+
// beforeFlow: branchall with [p1_a, p1_b] and [p2_a]
|
|
939
|
+
// afterFlow: branchall with [p1_a] and [p2_a] - p1_b removed
|
|
940
|
+
const beforeBranchAll = createBranchAllModule('branchall1', [
|
|
941
|
+
{ modules: [deepClone(parallel1A), deepClone(parallel1B)] },
|
|
942
|
+
{ modules: [deepClone(parallel2A)] }
|
|
943
|
+
]);
|
|
944
|
+
const afterBranchAll = createBranchAllModule('branchall1', [
|
|
945
|
+
{ modules: [deepClone(parallel1A)] },
|
|
946
|
+
{ modules: [deepClone(parallel2A)] }
|
|
947
|
+
]);
|
|
948
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranchAll] });
|
|
949
|
+
const currentFlowValue = { modules: [afterBranchAll] };
|
|
950
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
951
|
+
manager.setEditMode(true);
|
|
952
|
+
manager.setBeforeFlow(beforeFlow);
|
|
953
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
954
|
+
flushSync();
|
|
955
|
+
expect(manager.moduleActions['p1_b']).toEqual({ action: 'removed', pending: true });
|
|
956
|
+
// Reject the removal
|
|
957
|
+
manager.rejectModule('p1_b', flowStore);
|
|
958
|
+
flushSync();
|
|
959
|
+
// Verify 'p1_b' is restored in the first parallel branch
|
|
960
|
+
const currentModules = flowStore.val.value.modules;
|
|
961
|
+
expect(currentModules).toHaveLength(1);
|
|
962
|
+
const branchAllModule = currentModules[0];
|
|
963
|
+
const branches = branchAllModule.value.branches;
|
|
964
|
+
expect(branches).toHaveLength(2);
|
|
965
|
+
expectModuleOrder(branches[0].modules, ['p1_a', 'p1_b']);
|
|
966
|
+
expectModuleOrder(branches[1].modules, ['p2_a']);
|
|
967
|
+
});
|
|
968
|
+
cleanup();
|
|
969
|
+
});
|
|
970
|
+
it('reject entire parallel branch removal - restores the branch with its modules', () => {
|
|
971
|
+
const cleanup = $effect.root(() => {
|
|
972
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
973
|
+
const parallel1A = createRawScriptModule('p1_a', 'parallel 1 a');
|
|
974
|
+
const parallel1B = createRawScriptModule('p1_b', 'parallel 1 b');
|
|
975
|
+
const parallel2A = createRawScriptModule('p2_a', 'parallel 2 a');
|
|
976
|
+
// beforeFlow: branchall with 2 parallel branches
|
|
977
|
+
// afterFlow: branchall with only 1 parallel branch - second branch removed
|
|
978
|
+
const beforeBranchAll = createBranchAllModule('branchall1', [
|
|
979
|
+
{ modules: [deepClone(parallel1A), deepClone(parallel1B)] },
|
|
980
|
+
{ modules: [deepClone(parallel2A)] }
|
|
981
|
+
]);
|
|
982
|
+
const afterBranchAll = createBranchAllModule('branchall1', [
|
|
983
|
+
{ modules: [deepClone(parallel1A), deepClone(parallel1B)] }
|
|
984
|
+
]);
|
|
985
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranchAll] });
|
|
986
|
+
const currentFlowValue = { modules: [afterBranchAll] };
|
|
987
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
988
|
+
manager.setEditMode(true);
|
|
989
|
+
manager.setBeforeFlow(beforeFlow);
|
|
990
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
991
|
+
flushSync();
|
|
992
|
+
// Module from the removed branch should be marked as removed
|
|
993
|
+
expect(manager.moduleActions['p2_a']).toEqual({ action: 'removed', pending: true });
|
|
994
|
+
// Reject the removal to restore the entire branch
|
|
995
|
+
manager.rejectModule('p2_a', flowStore);
|
|
996
|
+
flushSync();
|
|
997
|
+
// Verify the second parallel branch is restored
|
|
998
|
+
const currentModules = flowStore.val.value.modules;
|
|
999
|
+
expect(currentModules).toHaveLength(1);
|
|
1000
|
+
const branchAllModule = currentModules[0];
|
|
1001
|
+
const branches = branchAllModule.value.branches;
|
|
1002
|
+
// Should have 2 branches again
|
|
1003
|
+
expect(branches).toHaveLength(2);
|
|
1004
|
+
expectModuleOrder(branches[0].modules, ['p1_a', 'p1_b']);
|
|
1005
|
+
expectModuleOrder(branches[1].modules, ['p2_a']);
|
|
1006
|
+
});
|
|
1007
|
+
cleanup();
|
|
1008
|
+
});
|
|
1009
|
+
});
|
|
1010
|
+
});
|
|
1011
|
+
describe('module movement', () => {
|
|
1012
|
+
it('accept module moved from root to loop - accepts the addition in loop', () => {
|
|
1013
|
+
const cleanup = $effect.root(() => {
|
|
1014
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
1015
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
1016
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
1017
|
+
const emptyLoop = createForloopModule('loop1', []);
|
|
1018
|
+
const loopWithB = createForloopModule('loop1', [deepClone(moduleB)]);
|
|
1019
|
+
// beforeFlow: [a, b, loop(empty)]
|
|
1020
|
+
// afterFlow: [a, loop(b)]
|
|
1021
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
1022
|
+
modules: [deepClone(moduleA), deepClone(moduleB), deepClone(emptyLoop)]
|
|
1023
|
+
});
|
|
1024
|
+
const afterFlow = {
|
|
1025
|
+
modules: [deepClone(moduleA), deepClone(loopWithB)]
|
|
1026
|
+
};
|
|
1027
|
+
manager.setEditMode(true);
|
|
1028
|
+
manager.setBeforeFlow(beforeFlow);
|
|
1029
|
+
manager.setCurrentFlow(afterFlow);
|
|
1030
|
+
flushSync();
|
|
1031
|
+
// 'b' should be detected as moved (removed from root, added in loop)
|
|
1032
|
+
expect(manager.moduleActions['b']).toEqual({ action: 'added', pending: true });
|
|
1033
|
+
expect(manager.moduleActions['old__b']).toEqual({ action: 'removed', pending: true });
|
|
1034
|
+
// Accept the added 'b' in loop
|
|
1035
|
+
manager.acceptModule('b');
|
|
1036
|
+
flushSync();
|
|
1037
|
+
// After accepting, beforeFlow should have 'b' inside the loop
|
|
1038
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
1039
|
+
const loopModule = beforeModules.find((m) => m.id === 'loop1');
|
|
1040
|
+
const loopModules = (loopModule?.value).modules;
|
|
1041
|
+
expect(loopModules.some((m) => m.id === 'b')).toBe(true);
|
|
1042
|
+
});
|
|
1043
|
+
cleanup();
|
|
1044
|
+
});
|
|
1045
|
+
it('accept module moved from root to loop - accepts the removal at root', () => {
|
|
1046
|
+
const cleanup = $effect.root(() => {
|
|
1047
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
1048
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
1049
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
1050
|
+
const emptyLoop = createForloopModule('loop1', []);
|
|
1051
|
+
const loopWithB = createForloopModule('loop1', [deepClone(moduleB)]);
|
|
1052
|
+
// beforeFlow: [a, b, loop(empty)]
|
|
1053
|
+
// afterFlow: [a, loop(b)]
|
|
1054
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
1055
|
+
modules: [deepClone(moduleA), deepClone(moduleB), deepClone(emptyLoop)]
|
|
1056
|
+
});
|
|
1057
|
+
const afterFlow = {
|
|
1058
|
+
modules: [deepClone(moduleA), deepClone(loopWithB)]
|
|
1059
|
+
};
|
|
1060
|
+
manager.setEditMode(true);
|
|
1061
|
+
manager.setBeforeFlow(beforeFlow);
|
|
1062
|
+
manager.setCurrentFlow(afterFlow);
|
|
1063
|
+
flushSync();
|
|
1064
|
+
// Accept the removed 'old__b' at root
|
|
1065
|
+
manager.acceptModule('old__b');
|
|
1066
|
+
flushSync();
|
|
1067
|
+
// After accepting removal, 'b' should no longer be at root in beforeFlow
|
|
1068
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
1069
|
+
const rootIds = beforeModules.map((m) => m.id);
|
|
1070
|
+
expect(rootIds).not.toContain('b');
|
|
1071
|
+
});
|
|
1072
|
+
cleanup();
|
|
1073
|
+
});
|
|
1074
|
+
it('reject module moved from root to loop - rejects the addition', () => {
|
|
1075
|
+
const cleanup = $effect.root(() => {
|
|
1076
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
1077
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
1078
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
1079
|
+
const emptyLoop = createForloopModule('loop1', []);
|
|
1080
|
+
const loopWithB = createForloopModule('loop1', [deepClone(moduleB)]);
|
|
1081
|
+
// beforeFlow: [a, b, loop(empty)]
|
|
1082
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
1083
|
+
modules: [deepClone(moduleA), deepClone(moduleB), deepClone(emptyLoop)]
|
|
1084
|
+
});
|
|
1085
|
+
// currentFlow (flowStore): [a, loop(b)]
|
|
1086
|
+
const currentFlowValue = {
|
|
1087
|
+
modules: [deepClone(moduleA), deepClone(loopWithB)]
|
|
1088
|
+
};
|
|
1089
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
1090
|
+
manager.setEditMode(true);
|
|
1091
|
+
manager.setBeforeFlow(beforeFlow);
|
|
1092
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
1093
|
+
flushSync();
|
|
1094
|
+
// Reject the added 'b' in loop - should remove it from flowStore
|
|
1095
|
+
manager.rejectModule('b', flowStore);
|
|
1096
|
+
flushSync();
|
|
1097
|
+
// 'b' should no longer be in the loop in flowStore
|
|
1098
|
+
const currentModules = flowStore.val.value.modules;
|
|
1099
|
+
const loopModule = currentModules.find((m) => m.id === 'loop1');
|
|
1100
|
+
const loopModules = (loopModule?.value).modules;
|
|
1101
|
+
expect(loopModules.some((m) => m.id === 'b')).toBe(false);
|
|
1102
|
+
});
|
|
1103
|
+
cleanup();
|
|
1104
|
+
});
|
|
1105
|
+
it('reject module moved from root to loop - rejects the removal (restores at root)', () => {
|
|
1106
|
+
const cleanup = $effect.root(() => {
|
|
1107
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
1108
|
+
const moduleA = createRawScriptModule('a', 'content-a');
|
|
1109
|
+
const moduleB = createRawScriptModule('b', 'content-b');
|
|
1110
|
+
const emptyLoop = createForloopModule('loop1', []);
|
|
1111
|
+
const loopWithB = createForloopModule('loop1', [deepClone(moduleB)]);
|
|
1112
|
+
// beforeFlow: [a, b, loop(empty)]
|
|
1113
|
+
const beforeFlow = createExtendedOpenFlow({
|
|
1114
|
+
modules: [deepClone(moduleA), deepClone(moduleB), deepClone(emptyLoop)]
|
|
1115
|
+
});
|
|
1116
|
+
// currentFlow (flowStore): [a, loop(b)]
|
|
1117
|
+
const currentFlowValue = {
|
|
1118
|
+
modules: [deepClone(moduleA), deepClone(loopWithB)]
|
|
1119
|
+
};
|
|
1120
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
1121
|
+
manager.setEditMode(true);
|
|
1122
|
+
manager.setBeforeFlow(beforeFlow);
|
|
1123
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
1124
|
+
flushSync();
|
|
1125
|
+
// Reject the removed 'old__b' - restores original at root, renames new to 'new__b'
|
|
1126
|
+
manager.rejectModule('old__b', flowStore);
|
|
1127
|
+
flushSync();
|
|
1128
|
+
// 'b' should be restored at root level in flowStore
|
|
1129
|
+
const currentModules = flowStore.val.value.modules;
|
|
1130
|
+
const rootIds = currentModules.map((m) => m.id);
|
|
1131
|
+
expect(rootIds).toContain('b');
|
|
1132
|
+
// The module in the loop should now be 'new__b'
|
|
1133
|
+
const loopModule = currentModules.find((m) => m.id === 'loop1');
|
|
1134
|
+
const loopModules = (loopModule?.value).modules;
|
|
1135
|
+
expect(loopModules.some((m) => m.id === `${NEW_MODULE_PREFIX}b`)).toBe(true);
|
|
1136
|
+
});
|
|
1137
|
+
cleanup();
|
|
1138
|
+
});
|
|
1139
|
+
it('accept module moved between branches', () => {
|
|
1140
|
+
const cleanup = $effect.root(() => {
|
|
1141
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
1142
|
+
const moduleA = createRawScriptModule('a', 'step a');
|
|
1143
|
+
// beforeFlow: branch with 'a' in first conditional branch
|
|
1144
|
+
const beforeBranch = createBranchOneModule('branch1', [], [
|
|
1145
|
+
{ expr: 'x > 0', modules: [deepClone(moduleA)] },
|
|
1146
|
+
{ expr: 'x < 0', modules: [] }
|
|
1147
|
+
]);
|
|
1148
|
+
// afterFlow: branch with 'a' in second conditional branch
|
|
1149
|
+
const afterBranch = createBranchOneModule('branch1', [], [
|
|
1150
|
+
{ expr: 'x > 0', modules: [] },
|
|
1151
|
+
{ expr: 'x < 0', modules: [deepClone(moduleA)] }
|
|
1152
|
+
]);
|
|
1153
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranch] });
|
|
1154
|
+
const afterFlow = { modules: [afterBranch] };
|
|
1155
|
+
manager.setEditMode(true);
|
|
1156
|
+
manager.setBeforeFlow(beforeFlow);
|
|
1157
|
+
manager.setCurrentFlow(afterFlow);
|
|
1158
|
+
flushSync();
|
|
1159
|
+
// 'a' is moved - should be removed from branch 0 and added to branch 1
|
|
1160
|
+
expect(manager.moduleActions['a']).toEqual({ action: 'added', pending: true });
|
|
1161
|
+
expect(manager.moduleActions['old__a']).toEqual({ action: 'removed', pending: true });
|
|
1162
|
+
// Accept both the addition and removal
|
|
1163
|
+
manager.acceptModule('a');
|
|
1164
|
+
flushSync();
|
|
1165
|
+
manager.acceptModule('old__a');
|
|
1166
|
+
flushSync();
|
|
1167
|
+
// beforeFlow should now have 'a' in branch 1, not in branch 0
|
|
1168
|
+
const beforeModules = manager.beforeFlow?.value.modules ?? [];
|
|
1169
|
+
const branchModule = beforeModules.find((m) => m.id === 'branch1');
|
|
1170
|
+
const branches = (branchModule?.value).branches;
|
|
1171
|
+
expect(branches[0].modules.some((m) => m.id === 'a')).toBe(false);
|
|
1172
|
+
expect(branches[1].modules.some((m) => m.id === 'a')).toBe(true);
|
|
1173
|
+
});
|
|
1174
|
+
cleanup();
|
|
1175
|
+
});
|
|
1176
|
+
it('reject module moved between branches - restores original position', () => {
|
|
1177
|
+
const cleanup = $effect.root(() => {
|
|
1178
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
1179
|
+
const moduleA = createRawScriptModule('a', 'step a');
|
|
1180
|
+
// beforeFlow: branch with 'a' in first conditional branch
|
|
1181
|
+
const beforeBranch = createBranchOneModule('branch1', [], [
|
|
1182
|
+
{ expr: 'x > 0', modules: [deepClone(moduleA)] },
|
|
1183
|
+
{ expr: 'x < 0', modules: [] }
|
|
1184
|
+
]);
|
|
1185
|
+
// afterFlow: branch with 'a' in second conditional branch
|
|
1186
|
+
const afterBranch = createBranchOneModule('branch1', [], [
|
|
1187
|
+
{ expr: 'x > 0', modules: [] },
|
|
1188
|
+
{ expr: 'x < 0', modules: [deepClone(moduleA)] }
|
|
1189
|
+
]);
|
|
1190
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranch] });
|
|
1191
|
+
const currentFlowValue = { modules: [afterBranch] };
|
|
1192
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
1193
|
+
manager.setEditMode(true);
|
|
1194
|
+
manager.setBeforeFlow(beforeFlow);
|
|
1195
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
1196
|
+
flushSync();
|
|
1197
|
+
// Reject the removal from branch 0 - restores original 'a', renames new to 'new__a'
|
|
1198
|
+
manager.rejectModule('old__a', flowStore);
|
|
1199
|
+
flushSync();
|
|
1200
|
+
// Accept the addition in branch 1
|
|
1201
|
+
manager.acceptModule('a');
|
|
1202
|
+
flushSync();
|
|
1203
|
+
// flowStore should now have 'a' in branch 0 (original), 'new__a' in branch 1 (renamed new)
|
|
1204
|
+
const currentModules = flowStore.val.value.modules;
|
|
1205
|
+
const branchModule = currentModules.find((m) => m.id === 'branch1');
|
|
1206
|
+
const branches = (branchModule?.value).branches;
|
|
1207
|
+
expect(branches[0].modules.some((m) => m.id === 'a')).toBe(true);
|
|
1208
|
+
expect(branches[1].modules.some((m) => m.id === `${NEW_MODULE_PREFIX}a`)).toBe(true);
|
|
1209
|
+
});
|
|
1210
|
+
cleanup();
|
|
1211
|
+
});
|
|
1212
|
+
it('prevents bug when rejecting moved module removal (branchall scenario)', () => {
|
|
1213
|
+
const cleanup = $effect.root(() => {
|
|
1214
|
+
const manager = createFlowDiffManager({ testMode: true });
|
|
1215
|
+
const moduleR = createRawScriptModule('r', 'module r content');
|
|
1216
|
+
// beforeFlow: 'r' in branch 2
|
|
1217
|
+
const beforeBranchAll = createBranchAllModule('branchall1', [
|
|
1218
|
+
{ modules: [] }, // branch 0
|
|
1219
|
+
{ modules: [] }, // branch 1
|
|
1220
|
+
{ modules: [deepClone(moduleR)] } // branch 2
|
|
1221
|
+
]);
|
|
1222
|
+
// currentFlow: 'r' moved to branch 0
|
|
1223
|
+
const afterBranchAll = createBranchAllModule('branchall1', [
|
|
1224
|
+
{ modules: [deepClone(moduleR)] }, // branch 0
|
|
1225
|
+
{ modules: [] }, // branch 1
|
|
1226
|
+
{ modules: [] } // branch 2
|
|
1227
|
+
]);
|
|
1228
|
+
const beforeFlow = createExtendedOpenFlow({ modules: [beforeBranchAll] });
|
|
1229
|
+
const currentFlowValue = { modules: [afterBranchAll] };
|
|
1230
|
+
const flowStore = createFlowStore(createExtendedOpenFlow(currentFlowValue));
|
|
1231
|
+
manager.setEditMode(true);
|
|
1232
|
+
manager.setBeforeFlow(beforeFlow);
|
|
1233
|
+
manager.setCurrentFlow(flowStore.val.value);
|
|
1234
|
+
flushSync();
|
|
1235
|
+
// Verify initial state: 'r' is added at branch 0, 'old__r' is removed from branch 2
|
|
1236
|
+
expect(manager.moduleActions['r']).toEqual({ action: 'added', pending: true });
|
|
1237
|
+
expect(manager.moduleActions['old__r']).toEqual({ action: 'removed', pending: true });
|
|
1238
|
+
// User rejects the removal - wants to keep module at original location (branch 2)
|
|
1239
|
+
manager.rejectModule('old__r', flowStore);
|
|
1240
|
+
flushSync();
|
|
1241
|
+
// After rejection, verify the current behavior:
|
|
1242
|
+
// 1. Original module should be restored at branch 2 with id 'r'
|
|
1243
|
+
// 2. New module at branch 0 should be renamed to 'new__r'
|
|
1244
|
+
const currentModules = flowStore.val.value.modules;
|
|
1245
|
+
const branchAllModule = currentModules.find((m) => m.id === 'branchall1');
|
|
1246
|
+
const branches = (branchAllModule?.value).branches;
|
|
1247
|
+
// Branch 0 should have 'new__r' (renamed new module)
|
|
1248
|
+
expect(branches[0].modules.some((m) => m.id === `${NEW_MODULE_PREFIX}r`)).toBe(true);
|
|
1249
|
+
// Branch 2 should have 'r' (restored original)
|
|
1250
|
+
expect(branches[2].modules.some((m) => m.id === 'r')).toBe(true);
|
|
1251
|
+
});
|
|
1252
|
+
cleanup();
|
|
1253
|
+
});
|
|
1254
|
+
});
|
|
1255
|
+
});
|