windmill-components 1.677.1 → 1.687.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/package/components/AppConnectInner.svelte +6 -0
- package/package/components/CiTestResults.svelte +64 -0
- package/package/components/CiTestResults.svelte.d.ts +7 -0
- package/package/components/CompareWorkspaces.svelte +626 -418
- package/package/components/DBManager.svelte +35 -4
- package/package/components/DBManager.svelte.d.ts +2 -0
- package/package/components/DBManagerContent.svelte +3 -1
- package/package/components/DBManagerContent.svelte.d.ts +3 -0
- package/package/components/DBManagerDrawer.svelte +145 -3
- package/package/components/DBTableEditor.svelte +14 -4
- package/package/components/DatatablePicker.svelte +2 -5
- package/package/components/DatatableSchemaDiff.svelte +531 -0
- package/package/components/DatatableSchemaDiff.svelte.d.ts +29 -0
- package/package/components/DedicatedWorkersSelector.svelte +4 -2
- package/package/components/DefaultTagsInner.svelte +42 -2
- package/package/components/DeployWorkspaceDrawer.svelte +1 -1
- package/package/components/Dev.svelte +20 -3
- package/package/components/Editor.svelte +1 -1
- package/package/components/EditorBar.svelte +1 -1
- package/package/components/EditorBar.svelte.d.ts +1 -1
- package/package/components/FlowStatusViewerInner.svelte +269 -220
- package/package/components/FlowTimeline.svelte +1 -1
- package/package/components/FolderEditor.svelte +189 -4
- package/package/components/ForkWorkspaceBanner.svelte +82 -11
- package/package/components/GlobalUserOffboardingModal.svelte +293 -0
- package/package/components/GlobalUserOffboardingModal.svelte.d.ts +10 -0
- package/package/components/InstanceSettings.svelte +22 -3
- package/package/components/Login.svelte +22 -10
- package/package/components/ModuleTest.svelte +2 -1
- package/package/components/NoMainFuncBadge.svelte +1 -1
- package/package/components/OffboardItemsBox.svelte +56 -0
- package/package/components/OffboardItemsBox.svelte.d.ts +12 -0
- package/package/components/OffboardReassignControls.svelte +47 -0
- package/package/components/OffboardReassignControls.svelte.d.ts +20 -0
- package/package/components/OffboardWorkspaceSection.svelte +110 -0
- package/package/components/OffboardWorkspaceSection.svelte.d.ts +24 -0
- package/package/components/OnBehalfOfSelector.svelte +21 -3
- package/package/components/OnBehalfOfSelector.svelte.d.ts +7 -0
- package/package/components/QueueAlerts.svelte +10 -10
- package/package/components/ResourcePicker.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +52 -11
- package/package/components/ScriptEditor.svelte +1 -3
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ShareModal.svelte +236 -98
- package/package/components/SuperadminSettingsInner.svelte +362 -315
- package/package/components/UserOffboardingModal.svelte +238 -0
- package/package/components/UserOffboardingModal.svelte.d.ts +10 -0
- package/package/components/WorkspaceDeployLayout.svelte +3 -3
- package/package/components/WorkspaceDeployLayout.svelte.d.ts +1 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +4 -2
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -0
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
- package/package/components/common/table/AppRow.svelte +3 -3
- package/package/components/common/table/FlowRow.svelte +3 -3
- package/package/components/common/table/RawAppRow.svelte +4 -4
- package/package/components/common/table/Row.svelte +6 -2
- package/package/components/common/table/ScriptRow.svelte +11 -3
- package/package/components/copilot/chat/AIChatManager.svelte.js +2 -2
- package/package/components/copilot/chat/anthropic.d.ts +7 -1
- package/package/components/copilot/chat/anthropic.js +5 -2
- package/package/components/copilot/chat/app/core.js +129 -1
- package/package/components/copilot/chat/app/core.test.js +192 -0
- package/package/components/copilot/chat/chatLoop.d.ts +3 -0
- package/package/components/copilot/chat/chatLoop.js +13 -5
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +55 -76
- package/package/components/copilot/chat/flow/core.d.ts +13 -3
- package/package/components/copilot/chat/flow/core.js +467 -116
- package/package/components/copilot/chat/flow/helperUtils.d.ts +19 -0
- package/package/components/copilot/chat/flow/helperUtils.js +68 -0
- package/package/components/copilot/chat/flow/helperUtils.test.js +116 -0
- package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +5 -24
- package/package/components/copilot/chat/flow/inlineScriptsUtils.js +30 -55
- package/package/components/copilot/chat/flow/utils.test.js +59 -0
- package/package/components/copilot/chat/openai-responses.d.ts +7 -1
- package/package/components/copilot/chat/openai-responses.js +5 -2
- package/package/components/copilot/chat/shared.d.ts +1 -2
- package/package/components/copilot/chat/shared.js +94 -52
- package/package/components/copilot/chat/tokenUsage.d.ts +23 -0
- package/package/components/copilot/chat/tokenUsage.js +42 -0
- package/package/components/copilot/lib.d.ts +5 -1
- package/package/components/copilot/lib.js +21 -5
- package/package/components/deploymentRequest/DeploymentRequestPanel.svelte +337 -0
- package/package/components/deploymentRequest/DeploymentRequestPanel.svelte.d.ts +15 -0
- package/package/components/details/CopyableCodeBlock.svelte +18 -8
- package/package/components/details/CopyableCodeBlock.svelte.d.ts +1 -0
- package/package/components/flows/FlowAssetsHandler.svelte +19 -21
- package/package/components/flows/agentToolTree.d.ts +17 -0
- package/package/components/flows/agentToolTree.js +114 -0
- package/package/components/flows/agentToolTree.test.d.ts +1 -0
- package/package/components/flows/agentToolTree.test.js +86 -0
- package/package/components/flows/agentToolUtils.d.ts +0 -5
- package/package/components/flows/agentToolUtils.js +0 -49
- package/package/components/flows/content/FlowLoop.svelte +7 -4
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +15 -7
- package/package/components/flows/content/FlowSettings.svelte +29 -0
- package/package/components/flows/dfs.d.ts +6 -2
- package/package/components/flows/dfs.js +19 -11
- package/package/components/flows/flowDeleteController.d.ts +32 -0
- package/package/components/flows/flowDeleteController.js +54 -0
- package/package/components/flows/flowDeleteController.test.d.ts +1 -0
- package/package/components/flows/flowDeleteController.test.js +121 -0
- package/package/components/flows/flowDeleteUtils.d.ts +48 -0
- package/package/components/flows/flowDeleteUtils.js +150 -0
- package/package/components/flows/flowDeleteUtils.test.d.ts +1 -0
- package/package/components/flows/flowDeleteUtils.test.js +131 -0
- package/package/components/flows/flowDiff.d.ts +2 -47
- package/package/components/flows/flowDiff.js +16 -293
- package/package/components/flows/flowDiff.testUtils.d.ts +8 -0
- package/package/components/flows/flowDiff.testUtils.js +26 -0
- package/package/components/flows/flowDiffManager.svelte.js +20 -75
- package/package/components/flows/flowDiffManager.svelte.test.js +103 -2
- package/package/components/flows/flowExplorer.d.ts +4 -0
- package/package/components/flows/flowExplorer.js +7 -30
- package/package/components/flows/flowState.d.ts +1 -0
- package/package/components/flows/flowStateUtils.svelte.js +6 -1
- package/package/components/flows/flowTree.d.ts +91 -0
- package/package/components/flows/flowTree.js +326 -0
- package/package/components/flows/flowTree.test.d.ts +1 -0
- package/package/components/flows/flowTree.test.js +236 -0
- package/package/components/flows/map/FlowJobsMenu.svelte +36 -30
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +70 -227
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +0 -2
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +2 -2
- package/package/components/flows/previousResults.js +13 -41
- package/package/components/flows/previousResults.test.d.ts +1 -0
- package/package/components/flows/previousResults.test.js +65 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +2 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte +41 -4
- package/package/components/flows/propPicker/StepHistory.svelte +9 -1
- package/package/components/git_sync/GitSyncContext.svelte.js +11 -5
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +2 -29
- package/package/components/git_sync/PullWorkspaceModal.svelte +6 -7
- package/package/components/graph/FlowGraphV2.svelte +2 -2
- package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
- package/package/components/graph/groupedModulesProxy.svelte.d.ts +10 -0
- package/package/components/graph/groupedModulesProxy.svelte.js +17 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +5 -2
- package/package/components/home/HomeConnectDrawer.svelte +125 -0
- package/package/components/home/HomeConnectDrawer.svelte.d.ts +5 -0
- package/package/components/icons/GithubIcon.svelte +4 -4
- package/package/components/icons/GithubIcon.svelte.d.ts +5 -2
- package/package/components/instanceSettings/ExternalJwtTokens.svelte +85 -0
- package/package/components/instanceSettings/ExternalJwtTokens.svelte.d.ts +12 -0
- package/package/components/instanceSettings/GhesAppSettings.svelte +17 -0
- package/package/components/instanceSettings/IndexerMemorySettings.svelte +56 -29
- package/package/components/instanceSettings/SecretBackendConfig.svelte +9 -2
- package/package/components/instanceSettings.d.ts +1 -0
- package/package/components/instanceSettings.js +42 -8
- package/package/components/offboarding-utils.d.ts +11 -0
- package/package/components/offboarding-utils.js +100 -0
- package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -1
- package/package/components/raw_apps/RawAppEditor.svelte +27 -0
- package/package/components/raw_apps/RawAppEditorHeader.svelte +6 -1
- package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -0
- package/package/components/raw_apps/RawAppYamlEditor.svelte +81 -0
- package/package/components/raw_apps/RawAppYamlEditor.svelte.d.ts +20 -0
- package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
- package/package/components/runs/runsFilter.d.ts +1 -1
- package/package/components/script_builder.d.ts +1 -1
- package/package/components/select/Select.svelte +2 -1
- package/package/components/select/Select.svelte.d.ts +1 -0
- package/package/components/settings/CreateToken.svelte +113 -64
- package/package/components/settings/CreateToken.svelte.d.ts +3 -0
- package/package/components/settings/WorkspaceUserSettings.svelte +34 -28
- package/package/components/sidebar/SidebarContent.svelte +58 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +8 -4
- package/package/components/triggers/AddTriggersButton.svelte +11 -0
- package/package/components/triggers/PermissionedAsLine.svelte +37 -3
- package/package/components/triggers/PermissionedAsLine.svelte.d.ts +6 -0
- package/package/components/triggers/TriggersEditor.svelte +5 -1
- package/package/components/triggers/TriggersWrapper.svelte +10 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +15 -7
- package/package/components/triggers/http/RouteEditorInner.svelte +14 -14
- package/package/components/triggers/http/RoutesGenerator.svelte +6 -1
- package/package/components/triggers/http/RoutesPanel.svelte +1 -1
- package/package/components/triggers/http/utils.d.ts +1 -1
- package/package/components/triggers/http/utils.js +2 -2
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/native/NativeTriggerEditor.svelte +3 -0
- package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte +118 -0
- package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte.d.ts +17 -0
- package/package/components/triggers/native/utils.js +14 -0
- package/package/components/triggers/nats/NatsTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +13 -11
- package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/triggers.svelte.js +1 -0
- package/package/components/triggers/utils.js +27 -6
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +13 -11
- package/package/components/triggers.d.ts +1 -1
- package/package/components/useFolderDefaultPermissionedAs.svelte.d.ts +13 -0
- package/package/components/useFolderDefaultPermissionedAs.svelte.js +63 -0
- package/package/components/workspaceSettings/CreateWorkspace.svelte +16 -677
- package/package/components/workspaceSettings/CreateWorkspaceInner.svelte +604 -0
- package/package/components/workspaceSettings/CreateWorkspaceInner.svelte.d.ts +7 -0
- package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +27 -25
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +46 -8
- package/package/components/workspaceSettings/DataTableSettings.svelte +27 -22
- package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
- package/package/components/workspaceSettings/ForkDatatableSection.svelte +228 -0
- package/package/components/workspaceSettings/ForkDatatableSection.svelte.d.ts +28 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +8 -2
- package/package/components/workspaceSettings/RulesetEditor.svelte +27 -2
- package/package/components/workspaceSettings/VolumeStorageSettings.svelte +1 -1
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +17 -1
- package/package/consts.d.ts +3 -0
- package/package/consts.js +10 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +485 -19
- package/package/gen/schemas.gen.js +489 -20
- package/package/gen/services.gen.d.ts +229 -2
- package/package/gen/services.gen.js +463 -1
- package/package/gen/types.gen.d.ts +866 -29
- package/package/githubApp.js +5 -1
- package/package/hubPaths.json +1 -4
- package/package/infer.js +13 -1
- package/package/infer.svelte.js +10 -1
- package/package/monaco_workers/sqlTypePlugin.worker.d.ts +10 -0
- package/package/monaco_workers/sqlTypePlugin.worker.js +39 -0
- package/package/script_helpers.d.ts +8 -2
- package/package/script_helpers.js +14 -0
- package/package/stores.d.ts +4 -0
- package/package/stores.js +1 -0
- package/package/system_prompts/prompts.d.ts +4 -3
- package/package/system_prompts/prompts.js +270 -20
- package/package/templates/ci_test_bun.ts.template +19 -0
- package/package/templates/ci_test_python.py.template +18 -0
- package/package/utils_workspace_deploy.d.ts +8 -8
- package/package/utils_workspace_deploy.js +86 -420
- package/package.json +3 -3
- package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +0 -153
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +0 -21
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +0 -136
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -107
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +0 -50
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +0 -93
- package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +0 -29
- package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +0 -134
- package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +0 -30
- package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +0 -197
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +0 -9
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +0 -12
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +0 -14
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +0 -25
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +0 -7
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +0 -26
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +0 -79
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +0 -46
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +0 -56
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +0 -59
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +0 -16
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +0 -119
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +0 -14
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +0 -14
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +0 -41
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +0 -9
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +0 -51
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +0 -27
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +0 -18
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +0 -12
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +0 -81
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +0 -2
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +0 -38
- package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/variants/baseline.js +0 -10
- package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/app/variants/index.js +0 -3
- package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +0 -137
- package/package/components/copilot/chat/__tests__/flow/expected/test1.json +0 -134
- package/package/components/copilot/chat/__tests__/flow/expected/test2.json +0 -183
- package/package/components/copilot/chat/__tests__/flow/expected/test3.json +0 -204
- package/package/components/copilot/chat/__tests__/flow/expected/test4.json +0 -175
- package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +0 -68
- package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +0 -142
- package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +0 -136
- package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +0 -294
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +0 -17
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +0 -49
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +0 -12
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -79
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +0 -50
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +0 -102
- package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +0 -53
- package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +0 -68
- package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +0 -120
- package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +0 -10
- package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/flow/variants/index.js +0 -3
- package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +0 -388
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +0 -45
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +0 -121
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +0 -28
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +0 -96
- package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +0 -32
- package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +0 -130
- package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +0 -45
- package/package/components/copilot/chat/__tests__/shared/baseVariants.js +0 -57
- package/package/components/copilot/chat/__tests__/shared/index.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/shared/index.js +0 -5
- package/package/components/copilot/chat/__tests__/shared/types.d.ts +0 -105
- package/package/components/copilot/chat/__tests__/shared/types.js +0 -9
- package/package/components/copilot/chat/flow/utils.d.ts +0 -14
- package/package/components/copilot/chat/flow/utils.js +0 -108
- package/package/components/flows/agentToolUtils.test.js +0 -55
- /package/package/components/copilot/chat/{__tests__/app/appChat.eval.test.d.ts → app/core.test.d.ts} +0 -0
- /package/package/components/copilot/chat/{__tests__/flow/flowChat.eval.test.d.ts → flow/helperUtils.test.d.ts} +0 -0
- /package/package/components/{flows/agentToolUtils.test.d.ts → copilot/chat/flow/utils.test.d.ts} +0 -0
|
@@ -6,7 +6,6 @@ import { nextId, copyId } from '../flowModuleNextId';
|
|
|
6
6
|
import { push } from '../../../history.svelte';
|
|
7
7
|
import ConfirmationModal from '../../common/confirmationModal/ConfirmationModal.svelte';
|
|
8
8
|
import Portal from '../../Portal.svelte';
|
|
9
|
-
import { getAllModules, getDependentComponents } from '../flowExplorer';
|
|
10
9
|
import { locateModules, groupByParent } from '../multiSelectUtils';
|
|
11
10
|
import { workspaceStore } from '../../../stores';
|
|
12
11
|
import { copilotInfo } from '../../../aiStore';
|
|
@@ -15,18 +14,19 @@ import FlowGraphV2 from '../../graph/FlowGraphV2.svelte';
|
|
|
15
14
|
import { replaceId } from '../flowStore.svelte';
|
|
16
15
|
import { setScheduledPollSchedule } from '../../triggers';
|
|
17
16
|
import { JobService } from '../../../gen';
|
|
18
|
-
import {
|
|
17
|
+
import { findModuleInFlow } from '../flowTree';
|
|
19
18
|
import { MoveManager } from '../../graph/moveManager.svelte';
|
|
20
19
|
import { refreshStateStore } from '../../../svelte5Utils.svelte';
|
|
21
20
|
import FlowStickyNode from './FlowStickyNode.svelte';
|
|
22
21
|
import { getStepHistoryLoaderContext } from '../../stepHistoryLoader.svelte';
|
|
23
22
|
import { ModulesTestStates } from '../../modulesTest.svelte';
|
|
24
|
-
import { flowModuleToAgentTool, createMcpTool, createWebsearchTool, createAiAgentTool, SPECIAL_TOOL_KINDS, agentToolToFlowModule
|
|
23
|
+
import { flowModuleToAgentTool, createMcpTool, createWebsearchTool, createAiAgentTool, SPECIAL_TOOL_KINDS, agentToolToFlowModule } from '../agentToolUtils';
|
|
25
24
|
import { loadFlowModuleState } from '../flowStateUtils.svelte';
|
|
25
|
+
import { executeDeletePlan, prepareDeleteRequest } from '../flowDeleteController';
|
|
26
26
|
import { getNoteEditorContext } from '../../graph/noteEditor.svelte';
|
|
27
27
|
import { GroupedModulesProxy } from '../../graph/groupedModulesProxy.svelte';
|
|
28
28
|
import { GroupDisplayState } from '../../graph/groupEditor.svelte';
|
|
29
|
-
import { matchStructureNode, dfsStructure,
|
|
29
|
+
import { matchStructureNode, dfsStructure, moduleToStructureNode } from '../../graph/flowStructure';
|
|
30
30
|
let { sidebarSize = $bindable(undefined), disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, newFlow = false, smallErrorHandler = false, workspace = $workspaceStore, onTestUpTo, onEditInput, localModuleStates = {}, testModuleStates = new ModulesTestStates(), aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, flowJob = undefined, showJobStatus = false, suspendStatus = $bindable({ val: {} }), onDelete, flowHasChanged } = $props();
|
|
31
31
|
const { customUi, selectionManager, history, flowStateStore, flowStore, pathStore } = getContext('FlowEditorContext');
|
|
32
32
|
const moveManager = new MoveManager();
|
|
@@ -143,67 +143,12 @@ export async function insertNewModuleAtIndex(modules, index, kind, wsScript, wsF
|
|
|
143
143
|
return modules;
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
/**
|
|
147
|
-
* Helper function to remove an AgentTool by id from the tools array
|
|
148
|
-
* Tools are always leaf nodes, so we just need to delete their state directly
|
|
149
|
-
*/
|
|
150
|
-
function removeAgentToolById(tools, id) {
|
|
151
|
-
const index = tools.findIndex((tool) => tool.id === id);
|
|
152
|
-
if (index != -1) {
|
|
153
|
-
const [removed] = tools.splice(index, 1);
|
|
154
|
-
deleteFlowStateById(removed.id, flowStateStore);
|
|
155
|
-
}
|
|
156
|
-
return tools;
|
|
157
|
-
}
|
|
158
|
-
export function removeAtId(modules, id) {
|
|
159
|
-
const index = modules.findIndex((mod) => mod.id == id);
|
|
160
|
-
if (index != -1) {
|
|
161
|
-
const [removed] = modules.splice(index, 1);
|
|
162
|
-
const leaves = dfs([removed], (mod) => mod.id);
|
|
163
|
-
leaves.forEach((leafId) => deleteFlowStateById(leafId, flowStateStore));
|
|
164
|
-
return modules;
|
|
165
|
-
}
|
|
166
|
-
return modules.map((mod) => {
|
|
167
|
-
if (mod.value.type == 'forloopflow' || mod.value.type == 'whileloopflow') {
|
|
168
|
-
mod.value.modules = removeAtId(mod.value.modules, id);
|
|
169
|
-
}
|
|
170
|
-
else if (mod.value.type == 'branchall') {
|
|
171
|
-
mod.value.branches = mod.value.branches.map((branch) => {
|
|
172
|
-
branch.modules = removeAtId(branch.modules, id);
|
|
173
|
-
return branch;
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else if (mod.value.type == 'branchone') {
|
|
177
|
-
mod.value.branches = mod.value.branches.map((branch) => {
|
|
178
|
-
branch.modules = removeAtId(branch.modules, id);
|
|
179
|
-
return branch;
|
|
180
|
-
});
|
|
181
|
-
mod.value.default = removeAtId(mod.value.default, id);
|
|
182
|
-
}
|
|
183
|
-
else if (mod.value.type == 'aiagent') {
|
|
184
|
-
mod.value.tools = removeAgentToolById(mod.value.tools, id);
|
|
185
|
-
}
|
|
186
|
-
return mod;
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
146
|
let sidebarMode = 'graph';
|
|
190
147
|
let minHeight = $state(0);
|
|
191
148
|
let flowPaneWidth = $state(0);
|
|
192
|
-
let compactTopbar = $derived(flowPaneWidth <
|
|
193
|
-
export function selectNextId(id) {
|
|
194
|
-
if (flowStore.val.value.modules) {
|
|
195
|
-
let allIds = dfs(flowStore.val.value.modules, (mod) => mod.id);
|
|
196
|
-
if (allIds.length > 1) {
|
|
197
|
-
const idx = allIds.indexOf(id);
|
|
198
|
-
selectionManager.selectId(idx == 0 ? allIds[0] : allIds[idx - 1]);
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
selectionManager.selectId('settings-metadata');
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
149
|
+
let compactTopbar = $derived(flowPaneWidth < 800);
|
|
205
150
|
function findModuleById(id) {
|
|
206
|
-
return
|
|
151
|
+
return findModuleInFlow(flowStore.val.value, id);
|
|
207
152
|
}
|
|
208
153
|
export async function addBranch(id) {
|
|
209
154
|
push(history, flowStore.val);
|
|
@@ -234,13 +179,8 @@ export function removeBranch(id, index) {
|
|
|
234
179
|
module.value.branches.splice(index - offset, 1);
|
|
235
180
|
}
|
|
236
181
|
}
|
|
237
|
-
let
|
|
238
|
-
let
|
|
239
|
-
/** Confirmation gate for actions that would empty or duplicate groups */
|
|
240
|
-
let affectedGroupsPending = $state([]);
|
|
241
|
-
let affectedGroupsAction = $state(undefined);
|
|
242
|
-
let affectedGroupsCancel = $state(undefined);
|
|
243
|
-
let affectedGroupsActionLabel = $state('delete');
|
|
182
|
+
let pendingDeleteConfirmation = $state(undefined);
|
|
183
|
+
let pendingGroupAction = $state(undefined);
|
|
244
184
|
let graph = $state(undefined);
|
|
245
185
|
let noteMode = $state(false);
|
|
246
186
|
let diffManager = $derived(getDiffManager());
|
|
@@ -256,74 +196,48 @@ export function enableNotes() {
|
|
|
256
196
|
function toggleNoteMode() {
|
|
257
197
|
noteMode = !noteMode;
|
|
258
198
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
}
|
|
199
|
+
function applyDeletePlan(plan) {
|
|
200
|
+
executeDeletePlan(plan, {
|
|
201
|
+
history,
|
|
202
|
+
flowStore,
|
|
203
|
+
flowStateStore,
|
|
204
|
+
selectionManager,
|
|
205
|
+
onDelete
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
function requestDelete(ids) {
|
|
209
|
+
const request = prepareDeleteRequest({
|
|
210
|
+
ids,
|
|
211
|
+
flow: flowStore.val,
|
|
212
|
+
tree: proxy.items,
|
|
213
|
+
proxy,
|
|
214
|
+
displayState: groupDisplayState
|
|
215
|
+
});
|
|
216
|
+
if (!request) {
|
|
217
|
+
return;
|
|
279
218
|
}
|
|
280
|
-
const opts = { displayState: groupDisplayState };
|
|
281
|
-
const { emptiedGroups, duplicateGroups, commit } = structureIds.length > 0
|
|
282
|
-
? proxy.prepareMutation((tree) => {
|
|
283
|
-
for (const id of structureIds) {
|
|
284
|
-
const found = findInStructure(tree, id);
|
|
285
|
-
if (found)
|
|
286
|
-
found.parentChildren.splice(found.index, 1);
|
|
287
|
-
}
|
|
288
|
-
}, opts)
|
|
289
|
-
: {
|
|
290
|
-
emptiedGroups: [],
|
|
291
|
-
duplicateGroups: [],
|
|
292
|
-
commit: () => { }
|
|
293
|
-
};
|
|
294
|
-
const affectedGroups = [...emptiedGroups, ...duplicateGroups];
|
|
295
|
-
const cb = () => {
|
|
296
|
-
push(history, flowStore.val);
|
|
297
|
-
commit({ removeDuplicates: duplicateGroups.length > 0 });
|
|
298
|
-
for (const id of toolIds) {
|
|
299
|
-
removeAgentToolByIdDeep(flowStore.val.value.modules, id, (removed) => {
|
|
300
|
-
deleteFlowStateById(removed.id, flowStateStore);
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
for (const id of ids) {
|
|
304
|
-
delete flowStateStore.val[id];
|
|
305
|
-
}
|
|
306
|
-
selectionManager.clearSelection();
|
|
307
|
-
refreshStateStore(flowStore);
|
|
308
|
-
};
|
|
309
219
|
const proceed = () => {
|
|
310
|
-
if (
|
|
311
|
-
|
|
312
|
-
deleteCallback = cb;
|
|
220
|
+
if (request.needsDependencyConfirmation) {
|
|
221
|
+
pendingDeleteConfirmation = { plan: request.plan };
|
|
313
222
|
}
|
|
314
223
|
else {
|
|
315
|
-
|
|
224
|
+
applyDeletePlan(request.plan);
|
|
316
225
|
}
|
|
317
226
|
};
|
|
318
|
-
if (affectedGroups.length > 0) {
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
227
|
+
if ((request.plan.structureDelete?.affectedGroups.length ?? 0) > 0) {
|
|
228
|
+
pendingGroupAction = {
|
|
229
|
+
groups: request.plan.structureDelete.affectedGroups,
|
|
230
|
+
label: 'delete',
|
|
231
|
+
confirm: proceed
|
|
232
|
+
};
|
|
322
233
|
}
|
|
323
234
|
else {
|
|
324
235
|
proceed();
|
|
325
236
|
}
|
|
326
237
|
}
|
|
238
|
+
export function deleteMultiple(ids) {
|
|
239
|
+
requestDelete(ids);
|
|
240
|
+
}
|
|
327
241
|
// Operates directly on the flat module array (not the structure tree).
|
|
328
242
|
// Cloned modules are inserted after the originals, intentionally outside any group.
|
|
329
243
|
export function duplicateMultiple(ids) {
|
|
@@ -397,7 +311,8 @@ async function loadLastJob(path, moduleId) {
|
|
|
397
311
|
...(flowStateStore.val[moduleId] ?? {}),
|
|
398
312
|
previewResult: getJobResult.result,
|
|
399
313
|
previewJobId: previousJobId[0].id,
|
|
400
|
-
previewSuccess: getJobResult.success
|
|
314
|
+
previewSuccess: getJobResult.success,
|
|
315
|
+
previewLogs: getJobResult['logs']
|
|
401
316
|
};
|
|
402
317
|
if (stepHistoryLoader) {
|
|
403
318
|
stepHistoryLoader.stepStates[moduleId].loadingJobs = false;
|
|
@@ -414,21 +329,21 @@ $effect(() => {
|
|
|
414
329
|
<ConfirmationModal
|
|
415
330
|
title="Confirm deleting step with dependents"
|
|
416
331
|
confirmationText="Delete step"
|
|
417
|
-
open={Boolean(
|
|
332
|
+
open={Boolean(pendingDeleteConfirmation)}
|
|
418
333
|
on:confirmed={() => {
|
|
419
|
-
if (
|
|
420
|
-
|
|
421
|
-
|
|
334
|
+
if (pendingDeleteConfirmation) {
|
|
335
|
+
applyDeletePlan(pendingDeleteConfirmation.plan)
|
|
336
|
+
pendingDeleteConfirmation = undefined
|
|
422
337
|
}
|
|
423
338
|
}}
|
|
424
339
|
on:canceled={() => {
|
|
425
|
-
|
|
340
|
+
pendingDeleteConfirmation = undefined
|
|
426
341
|
}}
|
|
427
342
|
>
|
|
428
343
|
<div class="text-primary pb-2"
|
|
429
344
|
>Found the following steps that will require changes after this step is deleted:</div
|
|
430
345
|
>
|
|
431
|
-
{#each Object.entries(dependents) as [k, v]}
|
|
346
|
+
{#each Object.entries(pendingDeleteConfirmation?.plan.dependents ?? {}) as [k, v]}
|
|
432
347
|
<div class="pb-3">
|
|
433
348
|
<h3 class="text-secondary font-semibold">{k}</h3>
|
|
434
349
|
<ul class="text-sm">
|
|
@@ -441,36 +356,32 @@ $effect(() => {
|
|
|
441
356
|
</ConfirmationModal>
|
|
442
357
|
|
|
443
358
|
<ConfirmationModal
|
|
444
|
-
title={
|
|
445
|
-
confirmationText={
|
|
446
|
-
open={
|
|
359
|
+
title={pendingGroupAction?.groups.length === 1 ? 'Remove group?' : 'Remove groups?'}
|
|
360
|
+
confirmationText={pendingGroupAction?.label === 'delete' ? 'Delete step' : 'Move step'}
|
|
361
|
+
open={Boolean(pendingGroupAction)}
|
|
447
362
|
on:confirmed={() => {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
affectedGroupsAction = undefined
|
|
451
|
-
affectedGroupsCancel = undefined
|
|
363
|
+
pendingGroupAction?.confirm()
|
|
364
|
+
pendingGroupAction = undefined
|
|
452
365
|
}}
|
|
453
366
|
on:canceled={() => {
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
affectedGroupsAction = undefined
|
|
457
|
-
affectedGroupsCancel = undefined
|
|
367
|
+
pendingGroupAction?.cancel?.()
|
|
368
|
+
pendingGroupAction = undefined
|
|
458
369
|
}}
|
|
459
370
|
>
|
|
460
|
-
{#if
|
|
461
|
-
{@const group =
|
|
371
|
+
{#if pendingGroupAction?.groups.length === 1}
|
|
372
|
+
{@const group = pendingGroupAction.groups[0]}
|
|
462
373
|
<p
|
|
463
374
|
>The group{group.summary ? ` "${group.summary}"` : ''} will be removed (empty or duplicate).
|
|
464
|
-
Are you sure you want to {
|
|
375
|
+
Are you sure you want to {pendingGroupAction.label} the step?</p
|
|
465
376
|
>
|
|
466
377
|
{:else}
|
|
467
378
|
<p>The following groups will be removed (empty or duplicate):</p>
|
|
468
379
|
<ul class="list-disc pl-4 mt-1">
|
|
469
|
-
{#each
|
|
380
|
+
{#each pendingGroupAction?.groups ?? [] as group}
|
|
470
381
|
<li>{group.summary || `${group.start_id} → ${group.end_id}`}</li>
|
|
471
382
|
{/each}
|
|
472
383
|
</ul>
|
|
473
|
-
<p class="mt-2">Are you sure you want to {
|
|
384
|
+
<p class="mt-2">Are you sure you want to {pendingGroupAction?.label} the step?</p>
|
|
474
385
|
{/if}
|
|
475
386
|
</ConfirmationModal>
|
|
476
387
|
</Portal>
|
|
@@ -532,78 +443,7 @@ $effect(() => {
|
|
|
532
443
|
suspendStatus={suspendStatus.val}
|
|
533
444
|
{flowHasChanged}
|
|
534
445
|
chatInputEnabled={Boolean(flowStore.val.value?.chat_input_enabled)}
|
|
535
|
-
onDelete={(id) =>
|
|
536
|
-
dependents = getDependentComponents(id, flowStore.val)
|
|
537
|
-
|
|
538
|
-
if (id === 'preprocessor') {
|
|
539
|
-
const cb = () => {
|
|
540
|
-
push(history, flowStore.val)
|
|
541
|
-
selectionManager.selectId('Input')
|
|
542
|
-
flowStore.val.value.preprocessor_module = undefined
|
|
543
|
-
refreshStateStore(flowStore)
|
|
544
|
-
onDelete?.(id)
|
|
545
|
-
delete flowStateStore.val[id]
|
|
546
|
-
}
|
|
547
|
-
if (Object.keys(dependents).length > 0) {
|
|
548
|
-
deleteCallback = cb
|
|
549
|
-
} else {
|
|
550
|
-
cb()
|
|
551
|
-
}
|
|
552
|
-
return
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
if (!findInStructure(proxy.items, id)) {
|
|
556
|
-
const cb = () => {
|
|
557
|
-
push(history, flowStore.val)
|
|
558
|
-
selectNextId(id)
|
|
559
|
-
const removed = removeAgentToolByIdDeep(flowStore.val.value.modules, id, (tool) => {
|
|
560
|
-
deleteFlowStateById(tool.id, flowStateStore)
|
|
561
|
-
})
|
|
562
|
-
if (!removed) return
|
|
563
|
-
refreshStateStore(flowStore)
|
|
564
|
-
onDelete?.(id)
|
|
565
|
-
}
|
|
566
|
-
if (Object.keys(dependents).length > 0) {
|
|
567
|
-
deleteCallback = cb
|
|
568
|
-
} else {
|
|
569
|
-
cb()
|
|
570
|
-
}
|
|
571
|
-
return
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
const dsOpts = { displayState: groupDisplayState }
|
|
575
|
-
const { emptiedGroups, duplicateGroups, commit } = proxy.prepareMutation((tree) => {
|
|
576
|
-
const found = findInStructure(tree, id)
|
|
577
|
-
if (found) found.parentChildren.splice(found.index, 1)
|
|
578
|
-
}, dsOpts)
|
|
579
|
-
|
|
580
|
-
const affectedGroups = [...emptiedGroups, ...duplicateGroups]
|
|
581
|
-
|
|
582
|
-
const cb = () => {
|
|
583
|
-
push(history, flowStore.val)
|
|
584
|
-
selectNextId(id)
|
|
585
|
-
commit({ removeDuplicates: duplicateGroups.length > 0 })
|
|
586
|
-
refreshStateStore(flowStore)
|
|
587
|
-
onDelete?.(id)
|
|
588
|
-
delete flowStateStore.val[id]
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
const proceed = () => {
|
|
592
|
-
if (Object.keys(dependents).length > 0) {
|
|
593
|
-
deleteCallback = cb
|
|
594
|
-
} else {
|
|
595
|
-
cb()
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
if (affectedGroups.length > 0) {
|
|
600
|
-
affectedGroupsPending = affectedGroups
|
|
601
|
-
affectedGroupsActionLabel = 'delete'
|
|
602
|
-
affectedGroupsAction = proceed
|
|
603
|
-
} else {
|
|
604
|
-
proceed()
|
|
605
|
-
}
|
|
606
|
-
}}
|
|
446
|
+
onDelete={(id) => requestDelete([id])}
|
|
607
447
|
onInsert={async (detail) => {
|
|
608
448
|
if (!flowStore.val.value.modules || !Array.isArray(flowStore.val.value.modules)) return
|
|
609
449
|
await tick()
|
|
@@ -682,10 +522,12 @@ $effect(() => {
|
|
|
682
522
|
}
|
|
683
523
|
|
|
684
524
|
if (affectedGroups.length > 0) {
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
525
|
+
pendingGroupAction = {
|
|
526
|
+
groups: affectedGroups,
|
|
527
|
+
label: 'move',
|
|
528
|
+
confirm: doMove,
|
|
529
|
+
cancel: () => moveManager.clearMoving()
|
|
530
|
+
}
|
|
689
531
|
} else {
|
|
690
532
|
doMove()
|
|
691
533
|
}
|
|
@@ -724,9 +566,7 @@ $effect(() => {
|
|
|
724
566
|
|
|
725
567
|
// Agent tool inserts operate on the FlowModule's tools array directly
|
|
726
568
|
if (isAgentInsert) {
|
|
727
|
-
const agentMod =
|
|
728
|
-
(m) => m.id === detail.agentId
|
|
729
|
-
)
|
|
569
|
+
const agentMod = findModuleInFlow(flowStore.val.value, detail.agentId!)
|
|
730
570
|
if (agentMod && (agentMod.value as any).tools) {
|
|
731
571
|
const tools = (agentMod.value as any).tools as AgentTool[]
|
|
732
572
|
await insertNewModuleAtIndex(
|
|
@@ -929,6 +769,9 @@ $effect(() => {
|
|
|
929
769
|
}}
|
|
930
770
|
onUpdateMock={(detail) => {
|
|
931
771
|
let module = findModuleById(detail.id)
|
|
772
|
+
if (!module) {
|
|
773
|
+
throw new Error(`Node ${detail.id} not found`)
|
|
774
|
+
}
|
|
932
775
|
module.mock = $state.snapshot(detail.mock)
|
|
933
776
|
refreshStateStore(flowStore)
|
|
934
777
|
}}
|
|
@@ -64,8 +64,6 @@ declare const FlowModuleSchemaMap: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
64
64
|
path: string;
|
|
65
65
|
summary: string;
|
|
66
66
|
}, inlineScript?: InlineScript, toolKind?: SpecialToolKind | "flowmoduleTool") => Promise<FlowModule[] | AgentTool[]>;
|
|
67
|
-
removeAtId: (modules: FlowModule[], id: string) => FlowModule[];
|
|
68
|
-
selectNextId: (id: any) => void;
|
|
69
67
|
addBranch: (id: string) => Promise<void>;
|
|
70
68
|
removeBranch: (id: string, index: number) => void;
|
|
71
69
|
isNodeVisible: (nodeId: string) => boolean;
|
|
@@ -21,7 +21,7 @@ let listHubScriptsCached = createCache(async ({ filter, kind, appFilter }) => {
|
|
|
21
21
|
|
|
22
22
|
<script lang="ts">import { createEventDispatcher, getContext, untrack } from 'svelte';
|
|
23
23
|
import { Skeleton } from '../../common';
|
|
24
|
-
import { classNames, createCache
|
|
24
|
+
import { classNames, createCache } from '../../../utils';
|
|
25
25
|
import { APP_TO_ICON_COMPONENT } from '../../icons';
|
|
26
26
|
import { IntegrationService, ScriptService } from '../../../gen';
|
|
27
27
|
import { Circle, ExternalLink } from 'lucide-svelte';
|
|
@@ -86,7 +86,7 @@ async function handlePickScript(item) {
|
|
|
86
86
|
await ScriptService.pickHubScriptByPath({ path: item.path });
|
|
87
87
|
}
|
|
88
88
|
catch (error) {
|
|
89
|
-
|
|
89
|
+
console.error('Failed to track hub script pick:', error);
|
|
90
90
|
// Don't block the flow if tracking fails
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { schemaToObject } from '../../schema';
|
|
2
|
-
import {
|
|
2
|
+
import { collectDescendantFlowModules, getChildModuleBranches, getModuleArrayContainer } from './flowTree';
|
|
3
3
|
export function dfs(id, flow, getParents = true) {
|
|
4
4
|
return dfsByModule(id, flow.value.modules, getParents);
|
|
5
5
|
}
|
|
@@ -14,7 +14,7 @@ export function dfsByModule(id, modules, getParents = true) {
|
|
|
14
14
|
return getParents ? [module] : modules.slice(0, i + 1).reverse();
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
const submodules =
|
|
17
|
+
const submodules = getChildModuleBranches(module);
|
|
18
18
|
if (submodules) {
|
|
19
19
|
let found = rec(id, submodules);
|
|
20
20
|
if (found) {
|
|
@@ -85,9 +85,7 @@ export function getPreviousIds(id, flow, include_node) {
|
|
|
85
85
|
}
|
|
86
86
|
return df
|
|
87
87
|
.map((x) => {
|
|
88
|
-
let submodules =
|
|
89
|
-
.flat()
|
|
90
|
-
.map((x) => x.id);
|
|
88
|
+
let submodules = collectDescendantFlowModules(x).map((submodule) => submodule.id);
|
|
91
89
|
if (submodules.includes(id)) {
|
|
92
90
|
return [x.id];
|
|
93
91
|
}
|
|
@@ -264,42 +262,16 @@ export function filterNestedObject(obj, nestedKeys) {
|
|
|
264
262
|
* based on the same logic used in FlowModuleWrapper.svelte
|
|
265
263
|
*/
|
|
266
264
|
export function getPreviousModule(moduleId, flow) {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
const result = searchInModules(module.value.modules);
|
|
277
|
-
if (result !== null)
|
|
278
|
-
return result;
|
|
279
|
-
}
|
|
280
|
-
else if (module.value.type === 'branchone') {
|
|
281
|
-
// Search in default branch
|
|
282
|
-
const defaultResult = searchInModules(module.value.default);
|
|
283
|
-
if (defaultResult !== null)
|
|
284
|
-
return defaultResult;
|
|
285
|
-
// Search in each branch
|
|
286
|
-
for (const branch of module.value.branches) {
|
|
287
|
-
const branchResult = searchInModules(branch.modules);
|
|
288
|
-
if (branchResult !== null)
|
|
289
|
-
return branchResult;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
else if (module.value.type === 'branchall') {
|
|
293
|
-
// Search in each branch
|
|
294
|
-
for (const branch of module.value.branches) {
|
|
295
|
-
const branchResult = searchInModules(branch.modules);
|
|
296
|
-
if (branchResult !== null)
|
|
297
|
-
return branchResult;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
265
|
+
const container = getModuleArrayContainer(flow.value, moduleId);
|
|
266
|
+
if (!container || container.index === 0) {
|
|
267
|
+
return undefined;
|
|
268
|
+
}
|
|
269
|
+
for (let i = container.index - 1; i >= 0; i--) {
|
|
270
|
+
const mod = container.modules[i];
|
|
271
|
+
const toolType = mod.value?.tool_type;
|
|
272
|
+
if (toolType === undefined || toolType === 'flowmodule') {
|
|
273
|
+
return mod;
|
|
300
274
|
}
|
|
301
|
-
return null; // Continue searching (module not found in this branch)
|
|
302
275
|
}
|
|
303
|
-
|
|
304
|
-
return result === null ? undefined : result;
|
|
276
|
+
return undefined;
|
|
305
277
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { dfsByModule, getPreviousIds, getPreviousModule } from './previousResults';
|
|
3
|
+
function makeRawModule(id) {
|
|
4
|
+
return {
|
|
5
|
+
id,
|
|
6
|
+
summary: id,
|
|
7
|
+
value: {
|
|
8
|
+
type: 'rawscript',
|
|
9
|
+
content: '',
|
|
10
|
+
language: 'python3',
|
|
11
|
+
input_transforms: {}
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function makeFlowModuleTool(module) {
|
|
16
|
+
return {
|
|
17
|
+
id: module.id,
|
|
18
|
+
summary: module.summary,
|
|
19
|
+
value: {
|
|
20
|
+
tool_type: 'flowmodule',
|
|
21
|
+
...module.value
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function makeAiAgent(id, tools) {
|
|
26
|
+
return {
|
|
27
|
+
id,
|
|
28
|
+
summary: id,
|
|
29
|
+
value: {
|
|
30
|
+
type: 'aiagent',
|
|
31
|
+
tools,
|
|
32
|
+
input_transforms: {}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
describe('previousResults', () => {
|
|
37
|
+
it('returns real ai agent tools when walking parent chains', () => {
|
|
38
|
+
const setup = makeRawModule('setup');
|
|
39
|
+
const lookup = makeFlowModuleTool(makeRawModule('lookup_user'));
|
|
40
|
+
const sum = makeFlowModuleTool(makeRawModule('sum'));
|
|
41
|
+
const agent = makeAiAgent('agent', [lookup, sum]);
|
|
42
|
+
const path = dfsByModule('sum', [setup, agent]);
|
|
43
|
+
expect(path).toEqual([sum, agent]);
|
|
44
|
+
expect(path[0]).toBe(sum);
|
|
45
|
+
});
|
|
46
|
+
it('keeps previous-id ordering for ai agent flowmodule tools', () => {
|
|
47
|
+
const setup = makeRawModule('setup');
|
|
48
|
+
const lookup = makeFlowModuleTool(makeRawModule('lookup_user'));
|
|
49
|
+
const sum = makeFlowModuleTool(makeRawModule('sum'));
|
|
50
|
+
const agent = makeAiAgent('agent', [lookup, sum]);
|
|
51
|
+
const flow = {
|
|
52
|
+
summary: 'Flow',
|
|
53
|
+
value: {
|
|
54
|
+
modules: [setup, agent]
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
expect(dfsByModule('sum', flow.value.modules, false).map((module) => module.id)).toEqual([
|
|
58
|
+
'sum',
|
|
59
|
+
'lookup_user',
|
|
60
|
+
'setup'
|
|
61
|
+
]);
|
|
62
|
+
expect(getPreviousIds('sum', flow, false)).toEqual(['lookup_user', 'setup']);
|
|
63
|
+
expect(getPreviousModule('sum', flow)?.id).toBe('lookup_user');
|
|
64
|
+
});
|
|
65
|
+
});
|
|
@@ -27,7 +27,7 @@ export function toggleOpen(forceOpen = false) {
|
|
|
27
27
|
if (popover?.isOpened() && !forceOpen) {
|
|
28
28
|
popover?.close();
|
|
29
29
|
}
|
|
30
|
-
else {
|
|
30
|
+
else if (!popover?.isOpened()) {
|
|
31
31
|
popover?.open();
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -148,6 +148,7 @@ onMount(() => {
|
|
|
148
148
|
flip: false
|
|
149
149
|
}}
|
|
150
150
|
usePointerDownOutside
|
|
151
|
+
excludeSelectors={`[data-run-button="${id}"]`}
|
|
151
152
|
closeOnOutsideClick={false}
|
|
152
153
|
on:click={(e) => {
|
|
153
154
|
e.preventDefault()
|