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
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
17
|
<script lang="ts">import Button from '../../common/button/Button.svelte';
|
|
18
|
-
import { Pin, History, Pen, Check, X, Loader2, Pencil } from 'lucide-svelte';
|
|
18
|
+
import { Pin, History, Pen, Check, X, Loader2, Pencil, ScrollText } from 'lucide-svelte';
|
|
19
19
|
import ObjectViewer from '../../propertyPicker/ObjectViewer.svelte';
|
|
20
20
|
import StepHistory from './StepHistory.svelte';
|
|
21
21
|
import { Popover } from '../../meltComponents';
|
|
@@ -25,6 +25,7 @@ import DisplayResult from '../../DisplayResult.svelte';
|
|
|
25
25
|
import OutputBadge from './OutputBadge.svelte';
|
|
26
26
|
import { twMerge } from 'tailwind-merge';
|
|
27
27
|
import DisplayResultControlBar from '../../DisplayResultControlBar.svelte';
|
|
28
|
+
import LogViewer from '../../LogViewer.svelte';
|
|
28
29
|
import { base } from '../../../base';
|
|
29
30
|
import { fade } from 'svelte/transition';
|
|
30
31
|
let { testJob, prefix = '', allowCopy = false, connectingData = undefined, mock = $bindable({ enabled: false }), moduleId = '', fullResult = false, closeOnOutsideClick = false, getLogs = false, isLoading = $bindable(false), hideHeaderBar = false, simpleViewer = undefined, path = '', loopStatus = undefined, customHeight = undefined, rightMargin = false, disableMock = false, disableHistory = false, historyOffset = { mainAxis: 8, crossAxis: -4.5 }, clazz, copilot_fix, onSelect, onUpdateMock, onEditInput, selectionId, initial, customEmptyJobMessage } = $props();
|
|
@@ -38,6 +39,7 @@ let contentEl = $state(undefined);
|
|
|
38
39
|
let hasOverflow = $state(false);
|
|
39
40
|
let preview = $state(undefined);
|
|
40
41
|
let selectedJob = $state(undefined);
|
|
42
|
+
let showLogs = $state(false);
|
|
41
43
|
function checkOverflow() {
|
|
42
44
|
if (contentEl) {
|
|
43
45
|
hasOverflow = contentEl.scrollHeight > contentEl.clientHeight;
|
|
@@ -146,7 +148,8 @@ function updateLastJob() {
|
|
|
146
148
|
id: flowStateStore.val[moduleId]?.previewJobId ?? '',
|
|
147
149
|
result: flowStateStore.val[moduleId]?.previewResult,
|
|
148
150
|
type: 'CompletedJob',
|
|
149
|
-
success: flowStateStore.val[moduleId]?.previewSuccess ?? undefined
|
|
151
|
+
success: flowStateStore.val[moduleId]?.previewSuccess ?? undefined,
|
|
152
|
+
logs: flowStateStore.val[moduleId]?.previewLogs
|
|
150
153
|
};
|
|
151
154
|
}
|
|
152
155
|
const lastJob = $derived.by(updateLastJob);
|
|
@@ -262,6 +265,11 @@ const noHistory = $derived(loopStatus ? (loopStatus.type === 'self' ? 'isLoop' :
|
|
|
262
265
|
preview ? 'bg-surface shadow-sm' : ''
|
|
263
266
|
)}
|
|
264
267
|
/>
|
|
268
|
+
{:else if isLoadingAndNotMock && !mock?.enabled}
|
|
269
|
+
<div class="flex flex-row w-fit items-center justify-between gap-2 rounded-md bg-surface-secondary p-1 px-2 min-w-16 min-h-[23px]">
|
|
270
|
+
<Loader2 size={12} class="animate-spin text-secondary shrink-0" />
|
|
271
|
+
<span class="text-xs text-secondary w-[56px]"> </span>
|
|
272
|
+
</div>
|
|
265
273
|
{:else if !isLoadingAndNotMock || mock?.enabled}
|
|
266
274
|
<div
|
|
267
275
|
class={twMerge(
|
|
@@ -323,7 +331,7 @@ const noHistory = $derived(loopStatus ? (loopStatus.type === 'self' ? 'isLoop' :
|
|
|
323
331
|
{/if}
|
|
324
332
|
|
|
325
333
|
<!-- Pin button -->
|
|
326
|
-
{#if !disableMock
|
|
334
|
+
{#if !disableMock}
|
|
327
335
|
<Tooltip disablePopup={mock?.enabled}>
|
|
328
336
|
<Button
|
|
329
337
|
color="light"
|
|
@@ -410,6 +418,25 @@ const noHistory = $derived(loopStatus ? (loopStatus.type === 'self' ? 'isLoop' :
|
|
|
410
418
|
{/snippet}
|
|
411
419
|
</Tooltip>
|
|
412
420
|
{/if}
|
|
421
|
+
|
|
422
|
+
<!-- Logs button -->
|
|
423
|
+
{#if selectedJob?.type === 'CompletedJob' && selectedJob?.['logs']}
|
|
424
|
+
<Tooltip>
|
|
425
|
+
<Button
|
|
426
|
+
size="xs2"
|
|
427
|
+
color="light"
|
|
428
|
+
variant="contained"
|
|
429
|
+
btnClasses={twMerge('h-[27px]', showLogs ? 'bg-blue-500/10 text-blue-800 dark:text-blue-200' : 'bg-transparent')}
|
|
430
|
+
startIcon={{ icon: ScrollText }}
|
|
431
|
+
on:click={() => {
|
|
432
|
+
showLogs = !showLogs
|
|
433
|
+
}}
|
|
434
|
+
/>
|
|
435
|
+
{#snippet text()}
|
|
436
|
+
{showLogs ? 'Show result' : 'Show logs'}
|
|
437
|
+
{/snippet}
|
|
438
|
+
</Tooltip>
|
|
439
|
+
{/if}
|
|
413
440
|
</div>
|
|
414
441
|
|
|
415
442
|
<div class="px-2">
|
|
@@ -491,7 +518,17 @@ const noHistory = $derived(loopStatus ? (loopStatus.type === 'self' ? 'isLoop' :
|
|
|
491
518
|
hoveringResult = false
|
|
492
519
|
}}
|
|
493
520
|
>
|
|
494
|
-
{#if
|
|
521
|
+
{#if showLogs && selectedJob?.type === 'CompletedJob' && selectedJob?.['logs']}
|
|
522
|
+
<LogViewer
|
|
523
|
+
small
|
|
524
|
+
jobId={selectedJob.id}
|
|
525
|
+
duration={selectedJob['duration_ms']}
|
|
526
|
+
mem={selectedJob['mem_peak']}
|
|
527
|
+
content={selectedJob['logs']}
|
|
528
|
+
isLoading={false}
|
|
529
|
+
tag={selectedJob['tag']}
|
|
530
|
+
/>
|
|
531
|
+
{:else if isLoadingAndNotMock}
|
|
495
532
|
<div class="flex flex-col items-center justify-center">
|
|
496
533
|
<Loader2 class="animate-spin" />
|
|
497
534
|
</div>
|
|
@@ -9,7 +9,7 @@ import { Pin } from 'lucide-svelte';
|
|
|
9
9
|
import { Cell } from '../../table';
|
|
10
10
|
import JobPickerLight from './JobPickerLight.svelte';
|
|
11
11
|
let { selected = $bindable(undefined), moduleId = '', getLogs = false, mockValue = undefined, mockEnabled = false, path = '', staticInputs = undefined, noHistory = undefined } = $props();
|
|
12
|
-
const { pathStore } = getContext('FlowEditorContext') ?? {};
|
|
12
|
+
const { pathStore, flowStateStore } = getContext('FlowEditorContext') ?? {};
|
|
13
13
|
const dispatch = createEventDispatcher();
|
|
14
14
|
let infiniteList = $state(undefined);
|
|
15
15
|
let loadInputsPageFn = undefined;
|
|
@@ -57,6 +57,14 @@ async function getJobResultAndLogs(jobId, noLogs) {
|
|
|
57
57
|
$effect(() => {
|
|
58
58
|
infiniteList && !noHistory && untrack(() => initLoadInputs());
|
|
59
59
|
});
|
|
60
|
+
let lastSeenJobId = $state(undefined);
|
|
61
|
+
$effect(() => {
|
|
62
|
+
const jobId = flowStateStore?.val[moduleId]?.previewJobId;
|
|
63
|
+
if (jobId && jobId !== lastSeenJobId) {
|
|
64
|
+
lastSeenJobId = jobId;
|
|
65
|
+
untrack(() => infiniteList?.loadData('forceRefresh'));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
60
68
|
function handleSelect(e) {
|
|
61
69
|
if (e.detail === 'extraRow') {
|
|
62
70
|
if (selected === 'extraRow') {
|
|
@@ -113,7 +113,7 @@ export function createGitSyncContext(workspace) {
|
|
|
113
113
|
include_path: ['f/**'],
|
|
114
114
|
exclude_path: [],
|
|
115
115
|
extra_include_path: [],
|
|
116
|
-
include_type: ['script', 'flow', 'app', 'folder']
|
|
116
|
+
include_type: ['script', 'flow', 'app', 'folder', 'workspacedependencies']
|
|
117
117
|
},
|
|
118
118
|
exclude_types_override: [],
|
|
119
119
|
legacyImported: false,
|
|
@@ -286,7 +286,7 @@ export function createGitSyncContext(workspace) {
|
|
|
286
286
|
// Determine default types - use workspace legacy or fallback
|
|
287
287
|
const defaultTypes = workspaceLegacyIncludeType.length > 0
|
|
288
288
|
? [...workspaceLegacyIncludeType]
|
|
289
|
-
: ['script', 'flow', 'app', 'folder'];
|
|
289
|
+
: ['script', 'flow', 'app', 'folder', 'workspacedependencies'];
|
|
290
290
|
let repoSettings;
|
|
291
291
|
if (isRepoLegacy) {
|
|
292
292
|
// Legacy repo: inherit from workspace-level settings and apply exclude_types_override
|
|
@@ -307,7 +307,13 @@ export function createGitSyncContext(workspace) {
|
|
|
307
307
|
include_path: repo.settings?.include_path ?? ['f/**'],
|
|
308
308
|
exclude_path: repo.settings?.exclude_path ?? [],
|
|
309
309
|
extra_include_path: repo.settings?.extra_include_path ?? [],
|
|
310
|
-
include_type: repo.settings?.include_type ?? [
|
|
310
|
+
include_type: repo.settings?.include_type ?? [
|
|
311
|
+
'script',
|
|
312
|
+
'flow',
|
|
313
|
+
'app',
|
|
314
|
+
'folder',
|
|
315
|
+
'workspacedependencies'
|
|
316
|
+
]
|
|
311
317
|
};
|
|
312
318
|
}
|
|
313
319
|
return {
|
|
@@ -512,7 +518,7 @@ export function createGitSyncContext(workspace) {
|
|
|
512
518
|
include_path: ['f/**'],
|
|
513
519
|
exclude_path: [],
|
|
514
520
|
extra_include_path: [],
|
|
515
|
-
include_type: ['script', 'flow', 'app', 'folder']
|
|
521
|
+
include_type: ['script', 'flow', 'app', 'folder', 'workspacedependencies']
|
|
516
522
|
},
|
|
517
523
|
exclude_types_override: [],
|
|
518
524
|
legacyImported: false,
|
|
@@ -538,7 +544,7 @@ export function createGitSyncContext(workspace) {
|
|
|
538
544
|
include_path: ['f/**'],
|
|
539
545
|
exclude_path: [],
|
|
540
546
|
extra_include_path: [],
|
|
541
|
-
include_type: ['script', 'flow', 'app', 'folder']
|
|
547
|
+
include_type: ['script', 'flow', 'app', 'folder', 'workspacedependencies']
|
|
542
548
|
},
|
|
543
549
|
exclude_types_override: [],
|
|
544
550
|
legacyImported: false,
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
<script lang="ts">import { Save, Trash, XCircle, CheckCircle2, RotateCw, RotateCcw, Download, Upload, Plus } from 'lucide-svelte';
|
|
2
2
|
import { Button, Alert } from '../common';
|
|
3
|
-
import TextInput from '../text_input/TextInput.svelte';
|
|
4
|
-
import Section from '../Section.svelte';
|
|
5
3
|
import { getGitSyncContext } from './GitSyncContext.svelte';
|
|
6
4
|
import ResourcePicker from '../ResourcePicker.svelte';
|
|
7
5
|
import GitSyncFilterSettings from '../workspaceSettings/GitSyncFilterSettings.svelte';
|
|
8
6
|
import DetectionFlow from './DetectionFlow.svelte';
|
|
9
7
|
import { sendUserToast } from '../../toast';
|
|
10
|
-
import Toggle from '../Toggle.svelte';
|
|
11
8
|
import { fade } from 'svelte/transition';
|
|
12
9
|
import { workspaceStore } from '../../stores';
|
|
13
10
|
import GitSyncModeDisplay from './GitSyncModeDisplay.svelte';
|
|
@@ -387,8 +384,8 @@ function handlePullSettings() {
|
|
|
387
384
|
|
|
388
385
|
{#if repo.script_path}
|
|
389
386
|
<Alert type="warning" title="Pinned git sync script version">
|
|
390
|
-
This repository uses a pinned sync script: <code>{repo.script_path}</code>.
|
|
391
|
-
|
|
387
|
+
This repository uses a pinned sync script: <code>{repo.script_path}</code>. Switch to
|
|
388
|
+
auto-managed to always use the latest version bundled with Windmill.
|
|
392
389
|
<div class="flex mt-2">
|
|
393
390
|
<Button
|
|
394
391
|
size="xs"
|
|
@@ -460,30 +457,6 @@ function handlePullSettings() {
|
|
|
460
457
|
</div>
|
|
461
458
|
{/if}
|
|
462
459
|
</div>
|
|
463
|
-
|
|
464
|
-
<!-- Advanced settings (collapsible) -->
|
|
465
|
-
<Section label="Advanced" small collapsable initiallyCollapsed={!repo.force_branch}>
|
|
466
|
-
<Toggle
|
|
467
|
-
checked={!!repo.force_branch}
|
|
468
|
-
on:change={(e) => {
|
|
469
|
-
if (e.detail) {
|
|
470
|
-
repo.force_branch = $workspaceStore ?? ''
|
|
471
|
-
} else {
|
|
472
|
-
repo.force_branch = undefined
|
|
473
|
-
}
|
|
474
|
-
}}
|
|
475
|
-
options={{
|
|
476
|
-
right: 'Environment (experimental)',
|
|
477
|
-
rightTooltip:
|
|
478
|
-
'Made for monobranch setups. Passes the value as --branch/--env to the wmill CLI, which selects the matching branch/env configuration from wmill.yaml and includes the branch/env in the item paths.'
|
|
479
|
-
}}
|
|
480
|
-
/>
|
|
481
|
-
{#if repo.force_branch != null && repo.force_branch !== undefined}
|
|
482
|
-
<div class="w-48 mt-2">
|
|
483
|
-
<TextInput size="sm" bind:value={repo.force_branch} />
|
|
484
|
-
</div>
|
|
485
|
-
{/if}
|
|
486
|
-
</Section>
|
|
487
460
|
{/if}
|
|
488
461
|
{/if}
|
|
489
462
|
{:else}
|
|
@@ -565,17 +565,16 @@ git pull
|
|
|
565
565
|
|
|
566
566
|
{#if !settingsOnly}# Push from git repository to workspace
|
|
567
567
|
wmill sync push --workspace {$workspaceStore} --repository {gitRepoResourcePath}
|
|
568
|
-
{:else}# Edit wmill.yaml file
|
|
568
|
+
{:else}# Edit wmill.yaml file
|
|
569
569
|
vim wmill.yaml
|
|
570
570
|
git add wmill.yaml
|
|
571
|
-
|
|
572
|
-
{/if}# Commit changes
|
|
571
|
+
{/if}# Commit changes
|
|
573
572
|
git commit
|
|
574
573
|
git push
|
|
575
574
|
{#if settingsOnly}
|
|
576
|
-
# Push settings only from git repository or click the pull settings button above{#if currentGitSyncSettings?.repositories?.[repoIndex!]?.use_individual_branch}
|
|
577
|
-
wmill gitsync-settings push --workspace {$workspaceStore} --repository {gitRepoResourcePath} --promotion main{:else}
|
|
578
|
-
wmill gitsync-settings push --workspace {$workspaceStore} --repository {gitRepoResourcePath}{/if}{/if}</pre
|
|
575
|
+
# Push settings only from git repository or click the pull settings button above{#if currentGitSyncSettings?.repositories?.[repoIndex!]?.use_individual_branch}
|
|
576
|
+
wmill gitsync-settings push --workspace {$workspaceStore} --repository {gitRepoResourcePath} --promotion main{:else}
|
|
577
|
+
wmill gitsync-settings push --workspace {$workspaceStore} --repository {gitRepoResourcePath}{/if}{/if}</pre
|
|
579
578
|
>
|
|
580
579
|
{#if currentGitSyncSettings?.repositories?.[repoIndex!]?.use_individual_branch && settingsOnly}
|
|
581
580
|
<div class="text-xs text-primary mt-3">
|
|
@@ -588,7 +587,7 @@ wmill gitsync-settings push --workspace {$workspaceStore} --repository {gitRepoR
|
|
|
588
587
|
>
|
|
589
588
|
</div>
|
|
590
589
|
<pre class="text-xs bg-surface p-2 rounded mt-2 overflow-x-auto"
|
|
591
|
-
>
|
|
590
|
+
>workspaces:
|
|
592
591
|
main:
|
|
593
592
|
promotionOverrides:
|
|
594
593
|
# Add your promotion-specific settings here
|
|
@@ -71,7 +71,7 @@ const diffManager = createFlowDiffManager();
|
|
|
71
71
|
let fullWidth = 0;
|
|
72
72
|
let width = $state(0);
|
|
73
73
|
let simplifiableFlow = $state(undefined);
|
|
74
|
-
let { onInsert = undefined, onDelete = undefined, onMove = undefined, onDuplicate = undefined, onDeleteBranch = undefined, onNewBranch = undefined, onSelect = undefined, onChangeId = undefined, onUpdateMock = undefined, onSelectedIteration = undefined, success = undefined, modules = [], groupedModules: groupedModulesProp = undefined, groupError = undefined, failureModule = undefined, preprocessorModule = undefined, minHeight = 0, maxHeight = undefined, notSelectable = false, flowModuleStates = undefined, testModuleStates = undefined, moduleActions = undefined, selectionManager: selectionManagerProp = undefined, path = undefined, newFlow = false, insertable = false, earlyStop = false, cache = false, scroll = false, moveManager = undefined, download = false, fullSize = false, disableAi = false, triggerNode = false, workspace = $workspaceStore ?? 'NO_WORKSPACE', editMode = false, allowSimplifiedPoll = true, expandedSubflows = $bindable({}), onTestUpTo = undefined, onEditInput = undefined, isOwner = false, onTestFlow = undefined, isRunning = false, onCancelTestFlow = undefined, onOpenPreview = undefined, onHideJobStatus = undefined, individualStepTests = false, flowJob = undefined, showJobStatus = false, suspendStatus = {}, flowHasChanged = false, noteMode = false, notes = undefined, groups = undefined, groupDisplayState: groupDisplayStateProp = undefined, exitNoteMode = undefined, onNotePositionUpdate = undefined, chatInputEnabled = false, sharedViewport = undefined, onViewportChange = undefined, leftHeader = undefined, diffBeforeFlow = undefined, currentInputSchema = undefined, markRemovedAsShadowed = false, multiSelectEnabled = false, onDeleteMultiple = undefined, onDuplicateMultiple = undefined, onMoveMultiple = undefined, movingIds = undefined } = $props();
|
|
74
|
+
let { onInsert = undefined, onDelete = undefined, onMove = undefined, onDuplicate = undefined, onDeleteBranch = undefined, onNewBranch = undefined, onSelect = undefined, onChangeId = undefined, onUpdateMock = undefined, onSelectedIteration = undefined, success = undefined, modules = [], groupedModules: groupedModulesProp = undefined, groupError = undefined, failureModule = undefined, preprocessorModule = undefined, minHeight = 0, maxHeight = undefined, notSelectable = false, flowModuleStates = undefined, testModuleStates = undefined, moduleActions = undefined, selectionManager: selectionManagerProp = undefined, path = undefined, newFlow = false, insertable = false, earlyStop = false, cache = false, scroll = false, moveManager = undefined, download = false, fullSize = false, disableAi = false, triggerNode = false, workspace = $workspaceStore ?? 'NO_WORKSPACE', editMode = false, allowSimplifiedPoll = true, expandedSubflows = $bindable({}), onTestUpTo = undefined, onEditInput = undefined, isOwner = false, onTestFlow = undefined, isRunning = false, onCancelTestFlow = undefined, onOpenPreview = undefined, onHideJobStatus = undefined, individualStepTests = false, flowJob = undefined, showJobStatus = false, suspendStatus = {}, flowHasChanged = false, noteMode = false, notes = undefined, groups = undefined, groupDisplayState: groupDisplayStateProp = undefined, exitNoteMode = undefined, onNotePositionUpdate = undefined, chatInputEnabled = false, sharedViewport = undefined, onViewportChange = undefined, leftHeader = undefined, diffBeforeFlow = undefined, currentInputSchema = undefined, markRemovedAsShadowed = false, multiSelectEnabled = false, onDeleteMultiple = undefined, onDuplicateMultiple = undefined, onMoveMultiple = undefined, movingIds = undefined, outerDivClass = '' } = $props();
|
|
75
75
|
// Initialize note manager with fine-grained reactivity
|
|
76
76
|
const noteManager = new NoteManager(() => notes ?? [], (newNodes) => {
|
|
77
77
|
nodes = newNodes;
|
|
@@ -700,7 +700,7 @@ const modifierKey = isMac() ? 'Meta' : 'Control';
|
|
|
700
700
|
{/if}
|
|
701
701
|
<div
|
|
702
702
|
style={`height: ${height}px; max-height: ${maxHeight}px;`}
|
|
703
|
-
class="overflow-clip relative"
|
|
703
|
+
class="overflow-clip relative {outerDivClass}"
|
|
704
704
|
bind:clientWidth={debouncedWidth}
|
|
705
705
|
bind:this={flowContainer}
|
|
706
706
|
>
|
|
@@ -126,6 +126,7 @@ interface Props {
|
|
|
126
126
|
diffBeforeFlow?: OpenFlow;
|
|
127
127
|
currentInputSchema?: Record<string, any>;
|
|
128
128
|
markRemovedAsShadowed?: boolean;
|
|
129
|
+
outerDivClass?: string;
|
|
129
130
|
}
|
|
130
131
|
declare const FlowGraphV2: import("svelte").Component<Props, {
|
|
131
132
|
isNodeVisible: (nodeId: string) => boolean;
|
|
@@ -10,6 +10,13 @@ export type ExtendedOpenFlow = {
|
|
|
10
10
|
};
|
|
11
11
|
[key: string]: any;
|
|
12
12
|
};
|
|
13
|
+
export type PreparedStructureDelete = {
|
|
14
|
+
affectedGroups: FlowGroup[];
|
|
15
|
+
duplicateGroups: FlowGroup[];
|
|
16
|
+
commit: (commitOpts?: {
|
|
17
|
+
removeDuplicates?: boolean;
|
|
18
|
+
}) => void;
|
|
19
|
+
};
|
|
13
20
|
/**
|
|
14
21
|
* Reactive read-only view of the flow structure tree.
|
|
15
22
|
* The tree is always derived from flowStore (single source of truth).
|
|
@@ -41,6 +48,9 @@ export declare class GroupedModulesProxy {
|
|
|
41
48
|
removeDuplicates?: boolean;
|
|
42
49
|
}) => void;
|
|
43
50
|
};
|
|
51
|
+
prepareDelete(ids: string[], opts?: {
|
|
52
|
+
displayState?: import('./groupEditor.svelte').GroupDisplayState;
|
|
53
|
+
}): PreparedStructureDelete;
|
|
44
54
|
/**
|
|
45
55
|
* Convenience: prepare + auto-commit. Only use for mutations that cannot
|
|
46
56
|
* empty groups (e.g. inserts). Throws if groups are unexpectedly emptied.
|
|
@@ -3,7 +3,7 @@ import { groupKey } from './groupEditor.svelte';
|
|
|
3
3
|
import { getAllModules } from '../flows/flowExplorer';
|
|
4
4
|
import { computeGroupModuleIds } from './groupDetectionUtils';
|
|
5
5
|
import { stateSnapshot } from '../../svelte5Utils.svelte';
|
|
6
|
-
import { buildStructureTree, deriveGroupsFromStructure, applyStructureToModules, removeEmptyGroups, findDuplicateGroups, removeDuplicateGroups, flattenStructureIds } from './flowStructure';
|
|
6
|
+
import { buildStructureTree, deriveGroupsFromStructure, applyStructureToModules, removeEmptyGroups, findDuplicateGroups, removeDuplicateGroups, flattenStructureIds, findInStructure } from './flowStructure';
|
|
7
7
|
/**
|
|
8
8
|
* Reactive read-only view of the flow structure tree.
|
|
9
9
|
* The tree is always derived from flowStore (single source of truth).
|
|
@@ -70,6 +70,22 @@ export class GroupedModulesProxy {
|
|
|
70
70
|
};
|
|
71
71
|
return { emptiedGroups, duplicateGroups, commit };
|
|
72
72
|
}
|
|
73
|
+
prepareDelete(ids, opts) {
|
|
74
|
+
const { emptiedGroups, duplicateGroups, commit } = this.prepareMutation((tree) => {
|
|
75
|
+
for (const id of ids) {
|
|
76
|
+
const found = findInStructure(tree, id);
|
|
77
|
+
if (!found) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
found.parentChildren.splice(found.index, 1);
|
|
81
|
+
}
|
|
82
|
+
}, opts);
|
|
83
|
+
return {
|
|
84
|
+
affectedGroups: [...emptiedGroups, ...duplicateGroups],
|
|
85
|
+
duplicateGroups,
|
|
86
|
+
commit
|
|
87
|
+
};
|
|
88
|
+
}
|
|
73
89
|
/**
|
|
74
90
|
* Convenience: prepare + auto-commit. Only use for mutations that cannot
|
|
75
91
|
* empty groups (e.g. inserts). Throws if groups are unexpectedly emptied.
|
|
@@ -13,6 +13,7 @@ import TriggerLabel from '../../../triggers/TriggerLabel.svelte';
|
|
|
13
13
|
import CountBadge from '../../../common/badge/CountBadge.svelte';
|
|
14
14
|
import NextcloudIcon from '../../../icons/NextcloudIcon.svelte';
|
|
15
15
|
import GoogleIcon from '../../../icons/GoogleIcon.svelte';
|
|
16
|
+
import GithubIcon from '../../../icons/GithubIcon.svelte';
|
|
16
17
|
const { triggersState, triggersCount } = getContext('TriggerContext');
|
|
17
18
|
let { selected, showOnlyWithCount,
|
|
18
19
|
// @ts-ignore - This is an output-only prop used with bind:
|
|
@@ -36,7 +37,8 @@ let triggerTypeConfig = $derived(() => {
|
|
|
36
37
|
poll: { icon: SchedulePollIcon },
|
|
37
38
|
cli: { icon: Terminal },
|
|
38
39
|
nextcloud: { icon: NextcloudIcon, countKey: 'nextcloud_count' },
|
|
39
|
-
google: { icon: GoogleIcon, countKey: 'google_count' }
|
|
40
|
+
google: { icon: GoogleIcon, countKey: 'google_count' },
|
|
41
|
+
github: { icon: GithubIcon, countKey: 'github_count' }
|
|
40
42
|
};
|
|
41
43
|
// Add native trigger services that are available
|
|
42
44
|
for (const { service, icon } of availableNativeServices) {
|
|
@@ -60,7 +62,8 @@ let allTypes = $derived([
|
|
|
60
62
|
'poll',
|
|
61
63
|
'cli',
|
|
62
64
|
'nextcloud',
|
|
63
|
-
'google'
|
|
65
|
+
'google',
|
|
66
|
+
'github'
|
|
64
67
|
]);
|
|
65
68
|
function camelCaseToWords(s) {
|
|
66
69
|
const result = s.replace(/([A-Z])/g, ' $1');
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<script lang="ts">import { workspaceStore } from '../../stores';
|
|
2
|
+
import { Button, Drawer, DrawerContent, Tab, TabContent, Tabs } from '../common';
|
|
3
|
+
import CreateToken from '../settings/CreateToken.svelte';
|
|
4
|
+
import CopyableCodeBlock from '../details/CopyableCodeBlock.svelte';
|
|
5
|
+
import { Bot, ExternalLink, Terminal } from 'lucide-svelte';
|
|
6
|
+
import { shell } from 'svelte-highlight/languages';
|
|
7
|
+
let drawer = $state();
|
|
8
|
+
let selectedTab = $state('cli');
|
|
9
|
+
let openVersion = $state(0);
|
|
10
|
+
const origin = $derived(typeof window === 'undefined' ? '' : window.location.origin);
|
|
11
|
+
const workspaceId = $derived($workspaceStore ?? '<workspace>');
|
|
12
|
+
const cliCommands = $derived(`npm install -g windmill-cli
|
|
13
|
+
wmill workspace add ${workspaceId} ${workspaceId} ${origin}
|
|
14
|
+
wmill init
|
|
15
|
+
wmill sync pull`);
|
|
16
|
+
function noop() { }
|
|
17
|
+
export function openDrawer(tab = 'cli') {
|
|
18
|
+
selectedTab = tab;
|
|
19
|
+
openVersion += 1;
|
|
20
|
+
drawer?.openDrawer();
|
|
21
|
+
}
|
|
22
|
+
function closeDrawer() {
|
|
23
|
+
drawer?.closeDrawer();
|
|
24
|
+
}
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<Drawer bind:this={drawer} size="720px">
|
|
28
|
+
<DrawerContent title="Connect this workspace" on:close={closeDrawer}>
|
|
29
|
+
<div class="flex flex-col gap-5 pb-4">
|
|
30
|
+
<div class="flex flex-col gap-2">
|
|
31
|
+
<div class="w-full">
|
|
32
|
+
<Tabs values={['cli', 'mcp']} bind:selected={selectedTab} wrapperClass="scrollbar-hidden">
|
|
33
|
+
<Tab value="cli" label="CLI" icon={Terminal} />
|
|
34
|
+
<Tab value="mcp" label="MCP" icon={Bot} />
|
|
35
|
+
{#snippet content()}
|
|
36
|
+
<div class="pt-4">
|
|
37
|
+
<TabContent value="cli">
|
|
38
|
+
<div class="flex flex-col gap-4">
|
|
39
|
+
<div class="flex items-start justify-between gap-3 flex-wrap">
|
|
40
|
+
<div class="flex flex-col gap-1">
|
|
41
|
+
<h3 class="text-sm font-semibold text-emphasis">Local setup</h3>
|
|
42
|
+
<p class="text-xs text-secondary max-w-xl">
|
|
43
|
+
Run this in your local repo to bind the current workspace, create
|
|
44
|
+
<code class="rounded bg-surface-secondary px-1 py-0.5 font-mono text-2xs text-emphasis"
|
|
45
|
+
>wmill.yaml</code
|
|
46
|
+
>, and pull the latest files.
|
|
47
|
+
</p>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<Button
|
|
51
|
+
variant="subtle"
|
|
52
|
+
unifiedSize="sm"
|
|
53
|
+
href="https://www.windmill.dev/docs/advanced/cli"
|
|
54
|
+
target="_blank"
|
|
55
|
+
startIcon={{ icon: ExternalLink }}
|
|
56
|
+
>
|
|
57
|
+
CLI docs
|
|
58
|
+
</Button>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<CopyableCodeBlock
|
|
62
|
+
code={cliCommands}
|
|
63
|
+
language={shell}
|
|
64
|
+
wrap
|
|
65
|
+
copyOnClick={false}
|
|
66
|
+
/>
|
|
67
|
+
|
|
68
|
+
<p class="text-2xs text-secondary">
|
|
69
|
+
<code class="rounded bg-surface-secondary px-1 py-0.5 font-mono text-2xs text-emphasis"
|
|
70
|
+
>wmill workspace add</code
|
|
71
|
+
>
|
|
72
|
+
will handle authentication,
|
|
73
|
+
<code class="rounded bg-surface-secondary px-1 py-0.5 font-mono text-2xs text-emphasis"
|
|
74
|
+
>wmill init</code
|
|
75
|
+
>
|
|
76
|
+
bootstraps the local config, and
|
|
77
|
+
<code class="rounded bg-surface-secondary px-1 py-0.5 font-mono text-2xs text-emphasis"
|
|
78
|
+
>wmill sync pull</code
|
|
79
|
+
>
|
|
80
|
+
fetches the workspace content.
|
|
81
|
+
</p>
|
|
82
|
+
</div>
|
|
83
|
+
</TabContent>
|
|
84
|
+
|
|
85
|
+
<TabContent value="mcp">
|
|
86
|
+
<div class="flex flex-col gap-4">
|
|
87
|
+
<div class="flex items-start justify-between gap-3 flex-wrap">
|
|
88
|
+
<div class="flex flex-col gap-1">
|
|
89
|
+
<h3 class="text-sm font-semibold text-emphasis">MCP URL</h3>
|
|
90
|
+
<p class="text-xs text-secondary max-w-xl">
|
|
91
|
+
Generate an MCP server URL for the current workspace and choose which
|
|
92
|
+
scripts, flows, and endpoints the client can access.
|
|
93
|
+
</p>
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
<Button
|
|
97
|
+
variant="subtle"
|
|
98
|
+
unifiedSize="sm"
|
|
99
|
+
href="https://www.windmill.dev/docs/core_concepts/mcp"
|
|
100
|
+
target="_blank"
|
|
101
|
+
startIcon={{ icon: ExternalLink }}
|
|
102
|
+
>
|
|
103
|
+
MCP docs
|
|
104
|
+
</Button>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
{#key openVersion}
|
|
108
|
+
<CreateToken
|
|
109
|
+
mcpOnly
|
|
110
|
+
lockWorkspace
|
|
111
|
+
title="Generate MCP URL"
|
|
112
|
+
defaultNewTokenWorkspace={$workspaceStore}
|
|
113
|
+
onTokenCreated={noop}
|
|
114
|
+
/>
|
|
115
|
+
{/key}
|
|
116
|
+
</div>
|
|
117
|
+
</TabContent>
|
|
118
|
+
</div>
|
|
119
|
+
{/snippet}
|
|
120
|
+
</Tabs>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</DrawerContent>
|
|
125
|
+
</Drawer>
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<script lang="ts">"use strict";
|
|
2
|
-
let { height =
|
|
2
|
+
let { size = undefined, height: heightProp = 24, width: widthProp = 24, color = undefined, class: clazz = '' } = $props();
|
|
3
|
+
const { width, height } = $derived(size ? { width: size, height: size } : { width: widthProp, height: heightProp });
|
|
3
4
|
</script>
|
|
4
5
|
|
|
5
6
|
<svg
|
|
6
7
|
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
-
x="0px"
|
|
8
|
-
y="0px"
|
|
9
8
|
{width}
|
|
10
9
|
{height}
|
|
11
10
|
viewBox="0 0 30 30"
|
|
12
|
-
|
|
11
|
+
fill={color ?? 'currentColor'}
|
|
12
|
+
class={clazz}
|
|
13
13
|
>
|
|
14
14
|
<path
|
|
15
15
|
d="M15,3C8.373,3,3,8.373,3,15c0,5.623,3.872,10.328,9.092,11.63C12.036,26.468,12,26.28,12,26.047v-2.051 c-0.487,0-1.303,0-1.508,0c-0.821,0-1.551-0.353-1.905-1.009c-0.393-0.729-0.461-1.844-1.435-2.526 c-0.289-0.227-0.069-0.486,0.264-0.451c0.615,0.174,1.125,0.596,1.605,1.222c0.478,0.627,0.703,0.769,1.596,0.769 c0.433,0,1.081-0.025,1.691-0.121c0.328-0.833,0.895-1.6,1.588-1.962c-3.996-0.411-5.903-2.399-5.903-5.098 c0-1.162,0.495-2.286,1.336-3.233C9.053,10.647,8.706,8.73,9.435,8c1.798,0,2.885,1.166,3.146,1.481C13.477,9.174,14.461,9,15.495,9 c1.036,0,2.024,0.174,2.922,0.483C18.675,9.17,19.763,8,21.565,8c0.732,0.731,0.381,2.656,0.102,3.594 c0.836,0.945,1.328,2.066,1.328,3.226c0,2.697-1.904,4.684-5.894,5.097C18.199,20.49,19,22.1,19,23.313v2.734 c0,0.104-0.023,0.179-0.035,0.268C23.641,24.676,27,20.236,27,15C27,8.373,21.627,3,15,3z"
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
interface Props {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
size?: number;
|
|
3
|
+
height?: number;
|
|
4
|
+
width?: number;
|
|
5
|
+
color?: string | undefined;
|
|
6
|
+
class?: string;
|
|
4
7
|
}
|
|
5
8
|
declare const GithubIcon: import("svelte").Component<Props, {}, "">;
|
|
6
9
|
type GithubIcon = ReturnType<typeof GithubIcon>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<script lang="ts">import DataTable from '../table/DataTable.svelte';
|
|
2
|
+
import Head from '../table/Head.svelte';
|
|
3
|
+
import Cell from '../table/Cell.svelte';
|
|
4
|
+
import SettingsPageHeader from '../settings/SettingsPageHeader.svelte';
|
|
5
|
+
import Toggle from '../Toggle.svelte';
|
|
6
|
+
import { displayDate } from '../../utils';
|
|
7
|
+
import { Check, X } from 'lucide-svelte';
|
|
8
|
+
let { tokens, hasMore, loading, activeOnly, onLoadMore, onActiveOnlyChange } = $props();
|
|
9
|
+
const loadMoreSize = 50;
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<SettingsPageHeader
|
|
13
|
+
title="External JWTs"
|
|
14
|
+
description="External JWT tokens that have authenticated against this instance, deduplicated by their claims."
|
|
15
|
+
/>
|
|
16
|
+
|
|
17
|
+
<div class="flex flex-row gap-2 items-center mb-2">
|
|
18
|
+
<Toggle
|
|
19
|
+
checked={activeOnly}
|
|
20
|
+
on:change={(e) => onActiveOnlyChange(e.detail)}
|
|
21
|
+
options={{
|
|
22
|
+
left: 'Recently active only',
|
|
23
|
+
leftTooltip: 'Show only tokens used in the last 30 days'
|
|
24
|
+
}}
|
|
25
|
+
/>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<DataTable
|
|
29
|
+
shouldLoadMore={hasMore}
|
|
30
|
+
loadMore={loadMoreSize}
|
|
31
|
+
{loading}
|
|
32
|
+
on:loadMore={() => onLoadMore()}
|
|
33
|
+
>
|
|
34
|
+
<Head>
|
|
35
|
+
<tr>
|
|
36
|
+
<Cell head first>Email</Cell>
|
|
37
|
+
<Cell head>Username</Cell>
|
|
38
|
+
<Cell head>Admin</Cell>
|
|
39
|
+
<Cell head>Operator</Cell>
|
|
40
|
+
<Cell head>Workspace</Cell>
|
|
41
|
+
<Cell head>Label</Cell>
|
|
42
|
+
<Cell head>Scopes</Cell>
|
|
43
|
+
<Cell head last>Last Used</Cell>
|
|
44
|
+
</tr>
|
|
45
|
+
</Head>
|
|
46
|
+
<tbody>
|
|
47
|
+
{#each tokens as token, i (token.jwt_hash)}
|
|
48
|
+
<tr class={i % 2 === 0 ? 'bg-surface-tertiary' : 'bg-surface'}>
|
|
49
|
+
{#if token.email === ''}
|
|
50
|
+
<Cell first colspan={7}>
|
|
51
|
+
<span class="text-tertiary italic">Legacy entry — details unavailable</span>
|
|
52
|
+
</Cell>
|
|
53
|
+
<Cell last><span class="whitespace-nowrap">{displayDate(token.last_used_at)}</span></Cell>
|
|
54
|
+
{:else}
|
|
55
|
+
<Cell first><span class="font-mono text-xs">{token.email}</span></Cell>
|
|
56
|
+
<Cell>{token.username}</Cell>
|
|
57
|
+
<Cell>
|
|
58
|
+
{#if token.is_admin}
|
|
59
|
+
<Check size={14} class="text-green-600" />
|
|
60
|
+
{:else}
|
|
61
|
+
<X size={14} class="text-tertiary" />
|
|
62
|
+
{/if}
|
|
63
|
+
</Cell>
|
|
64
|
+
<Cell>
|
|
65
|
+
{#if token.is_operator}
|
|
66
|
+
<Check size={14} class="text-green-600" />
|
|
67
|
+
{:else}
|
|
68
|
+
<X size={14} class="text-tertiary" />
|
|
69
|
+
{/if}
|
|
70
|
+
</Cell>
|
|
71
|
+
<Cell>{token.workspace_id ?? '-'}</Cell>
|
|
72
|
+
<Cell>{token.label ?? '-'}</Cell>
|
|
73
|
+
<Cell>
|
|
74
|
+
{#if token.scopes && token.scopes.length > 0}
|
|
75
|
+
{token.scopes.join(', ')}
|
|
76
|
+
{:else}
|
|
77
|
+
-
|
|
78
|
+
{/if}
|
|
79
|
+
</Cell>
|
|
80
|
+
<Cell last><span class="whitespace-nowrap">{displayDate(token.last_used_at)}</span></Cell>
|
|
81
|
+
{/if}
|
|
82
|
+
</tr>
|
|
83
|
+
{/each}
|
|
84
|
+
</tbody>
|
|
85
|
+
</DataTable>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ExternalJwtToken } from '../../gen';
|
|
2
|
+
interface Props {
|
|
3
|
+
tokens: ExternalJwtToken[];
|
|
4
|
+
hasMore: boolean;
|
|
5
|
+
loading: boolean;
|
|
6
|
+
activeOnly: boolean;
|
|
7
|
+
onLoadMore: () => void;
|
|
8
|
+
onActiveOnlyChange: (v: boolean) => void;
|
|
9
|
+
}
|
|
10
|
+
declare const ExternalJwtTokens: import("svelte").Component<Props, {}, "">;
|
|
11
|
+
type ExternalJwtTokens = ReturnType<typeof ExternalJwtTokens>;
|
|
12
|
+
export default ExternalJwtTokens;
|