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
|
@@ -1,683 +1,22 @@
|
|
|
1
|
-
<script lang="ts">import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { logoutWithRedirect } from '../../logoutKit';
|
|
1
|
+
<script lang="ts">import CenteredModal from '../CenteredModal.svelte';
|
|
2
|
+
import { GitForkIcon } from 'lucide-svelte';
|
|
3
|
+
import CreateWorkspaceInner from './CreateWorkspaceInner.svelte';
|
|
4
|
+
import { workspaceStore } from '../../stores';
|
|
5
|
+
import { goto } from '$app/navigation';
|
|
7
6
|
import { page } from '$app/state';
|
|
8
|
-
import { usersWorkspaceStore, workspaceStore } from '../../stores';
|
|
9
|
-
import CenteredModal from '../CenteredModal.svelte';
|
|
10
|
-
import { Button } from '../common';
|
|
11
|
-
import Toggle from '../Toggle.svelte';
|
|
12
|
-
import Tooltip from '../Tooltip.svelte';
|
|
13
|
-
import { onMount } from 'svelte';
|
|
14
|
-
import { sendUserToast } from '../../toast';
|
|
15
|
-
import TestAIKey from '../copilot/TestAIKey.svelte';
|
|
16
|
-
import { switchWorkspace } from '../../storeUtils';
|
|
17
|
-
import { isCloudHosted } from '../../cloud';
|
|
18
|
-
import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
19
|
-
import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
|
|
20
|
-
import { AI_PROVIDERS } from '../copilot/lib';
|
|
21
|
-
import { GitFork, LoaderCircle } from 'lucide-svelte';
|
|
22
|
-
import PrefixedInput from '../PrefixedInput.svelte';
|
|
23
|
-
import TextInput from '../text_input/TextInput.svelte';
|
|
24
|
-
import { jobManager } from '../../services/JobManager';
|
|
25
|
-
import Alert from '../common/alert/Alert.svelte';
|
|
26
7
|
let { isFork = false } = $props();
|
|
27
8
|
const rd = page.url.searchParams.get('rd');
|
|
28
|
-
let id = $state('');
|
|
29
|
-
let name = $state('');
|
|
30
|
-
let username = $state('');
|
|
31
|
-
let errorId = $state('');
|
|
32
|
-
let errorUser = $state('');
|
|
33
|
-
let aiKey = $state('');
|
|
34
|
-
let codeCompletionEnabled = $state(true);
|
|
35
|
-
let checking = $state(false);
|
|
36
|
-
let createLoading = $state(false);
|
|
37
|
-
let aiSetupLoading = $state(false);
|
|
38
|
-
let creationStep = $state('details');
|
|
39
|
-
let createdWorkspaceId = $state(undefined);
|
|
40
|
-
let workspaceColor = $state(undefined);
|
|
41
|
-
let colorEnabled = $state(false);
|
|
42
|
-
function generateRandomColor() {
|
|
43
|
-
const randomColor = '#' +
|
|
44
|
-
Math.floor(Math.random() * 16777215)
|
|
45
|
-
.toString(16)
|
|
46
|
-
.padStart(6, '0');
|
|
47
|
-
workspaceColor = randomColor;
|
|
48
|
-
}
|
|
49
|
-
async function validateName(id) {
|
|
50
|
-
checking = true;
|
|
51
|
-
let exists = await WorkspaceService.existsWorkspace({ requestBody: { id } });
|
|
52
|
-
if (exists) {
|
|
53
|
-
errorId = 'ID already exists';
|
|
54
|
-
}
|
|
55
|
-
else if (id != '' && !/^\w+(-\w+)*$/.test(id)) {
|
|
56
|
-
errorId = 'ID can only contain letters, numbers and dashes and must not finish by a dash';
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
errorId = '';
|
|
60
|
-
}
|
|
61
|
-
checking = false;
|
|
62
|
-
}
|
|
63
|
-
const WM_FORK_PREFIX = 'wm-fork-';
|
|
64
|
-
let forkCreationLoading = $state(false);
|
|
65
|
-
let forkCreationError = $state('');
|
|
66
|
-
let errorMsgs = $state([]);
|
|
67
|
-
let failedSyncJobs = $state([]);
|
|
68
|
-
function getErrorMessage(error) {
|
|
69
|
-
return (error?.body?.error?.message ||
|
|
70
|
-
error?.body?.message ||
|
|
71
|
-
(typeof error?.body === 'string' ? error.body : null) ||
|
|
72
|
-
error?.message ||
|
|
73
|
-
'Unknown error');
|
|
74
|
-
}
|
|
75
|
-
function hasEffectiveAi(copilotInfo) {
|
|
76
|
-
return Object.keys(copilotInfo.providers ?? {}).length > 0;
|
|
77
|
-
}
|
|
78
|
-
async function finishWorkspaceSetup(workspaceId) {
|
|
79
|
-
usersWorkspaceStore.set(await WorkspaceService.listUserWorkspaces());
|
|
80
|
-
switchWorkspace(workspaceId);
|
|
81
|
-
goto(rd ?? '/');
|
|
82
|
-
}
|
|
83
|
-
async function getWorkspaceUsername(workspaceId) {
|
|
84
|
-
if (!automateUsernameCreation) {
|
|
85
|
-
return username;
|
|
86
|
-
}
|
|
87
|
-
const user = await UserService.whoami({
|
|
88
|
-
workspace: workspaceId
|
|
89
|
-
});
|
|
90
|
-
return user.username;
|
|
91
|
-
}
|
|
92
|
-
async function maybeShowAiSetupStep(workspaceId) {
|
|
93
|
-
try {
|
|
94
|
-
const copilotInfo = await WorkspaceService.getCopilotInfo({
|
|
95
|
-
workspace: workspaceId
|
|
96
|
-
});
|
|
97
|
-
if (hasEffectiveAi(copilotInfo)) {
|
|
98
|
-
await finishWorkspaceSetup(workspaceId);
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
catch (error) {
|
|
103
|
-
console.error('Failed to check effective AI configuration for new workspace', error);
|
|
104
|
-
sendUserToast('Workspace created, but Windmill AI availability could not be verified. You can configure it later in Workspace settings.', true);
|
|
105
|
-
await finishWorkspaceSetup(workspaceId);
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
createdWorkspaceId = workspaceId;
|
|
109
|
-
creationStep = 'ai';
|
|
110
|
-
aiKey = '';
|
|
111
|
-
codeCompletionEnabled = true;
|
|
112
|
-
selected = 'openai';
|
|
113
|
-
}
|
|
114
|
-
async function fetchFailedSyncJobs(jobs) {
|
|
115
|
-
let ret = [];
|
|
116
|
-
for (const job of jobs) {
|
|
117
|
-
let j = await JobService.getCompletedJob({
|
|
118
|
-
id: job,
|
|
119
|
-
workspace: $workspaceStore
|
|
120
|
-
});
|
|
121
|
-
ret.push(j);
|
|
122
|
-
}
|
|
123
|
-
return ret;
|
|
124
|
-
}
|
|
125
|
-
function isPathVersionLessThan(path, version) {
|
|
126
|
-
if (!path || !path.startsWith('hub/')) {
|
|
127
|
-
return false;
|
|
128
|
-
}
|
|
129
|
-
const parts = path.split('/');
|
|
130
|
-
if (parts.length < 2) {
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
const embeddedVersion = parseInt(parts[1], 10);
|
|
134
|
-
if (isNaN(embeddedVersion)) {
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
return embeddedVersion < version;
|
|
138
|
-
}
|
|
139
|
-
async function createOrForkWorkspace() {
|
|
140
|
-
const prefixed_id = `${WM_FORK_PREFIX}${id}`;
|
|
141
|
-
if (isFork) {
|
|
142
|
-
if ($workspaceStore) {
|
|
143
|
-
forkCreationLoading = true;
|
|
144
|
-
errorMsgs = [];
|
|
145
|
-
failedSyncJobs = [];
|
|
146
|
-
forkCreationError = '';
|
|
147
|
-
let gitSyncJobIds = await WorkspaceService.createWorkspaceForkGitBranch({
|
|
148
|
-
workspace: $workspaceStore,
|
|
149
|
-
requestBody: {
|
|
150
|
-
id: prefixed_id,
|
|
151
|
-
name,
|
|
152
|
-
color: colorEnabled && workspaceColor ? workspaceColor : undefined
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
try {
|
|
156
|
-
await Promise.all(gitSyncJobIds.map((jobId) => jobManager.runWithProgress(() => Promise.resolve(jobId), {
|
|
157
|
-
workspace: $workspaceStore,
|
|
158
|
-
timeout: 60000,
|
|
159
|
-
timeoutMessage: `Deploy fork job timed out after 60s`,
|
|
160
|
-
onProgress: (status) => {
|
|
161
|
-
if (status.status === 'failure') {
|
|
162
|
-
errorMsgs.push(status.error ?? 'Deploy fork job failed');
|
|
163
|
-
failedSyncJobs.push(jobId);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
})));
|
|
167
|
-
}
|
|
168
|
-
catch (error) {
|
|
169
|
-
forkCreationLoading = false;
|
|
170
|
-
sendUserToast(`Could not fork workspace ${$workspaceStore} because branch creation failed: ${errorMsgs} - ${error}`, true);
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
if (errorMsgs.length != 0) {
|
|
174
|
-
forkCreationError = 'Failed to create a branch for this fork on the git sync repo(s)';
|
|
175
|
-
forkCreationLoading = false;
|
|
176
|
-
sendUserToast(`Could not fork workspace ${$workspaceStore} because branch creation failed: ${errorMsgs}`, true);
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
try {
|
|
180
|
-
await WorkspaceService.createWorkspaceFork({
|
|
181
|
-
workspace: $workspaceStore,
|
|
182
|
-
requestBody: {
|
|
183
|
-
id: prefixed_id,
|
|
184
|
-
name,
|
|
185
|
-
color: colorEnabled && workspaceColor ? workspaceColor : undefined
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
catch (e) {
|
|
190
|
-
forkCreationError = `Failed to create fork '${prefixed_id}'`;
|
|
191
|
-
errorMsgs.push(e?.body ?? e ?? 'Unknown error');
|
|
192
|
-
forkCreationLoading = false;
|
|
193
|
-
sendUserToast(`Could not create fork '${prefixed_id}' ${e}`, true);
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
forkCreationLoading = false;
|
|
197
|
-
sendUserToast(`Successfully forked workspace ${$workspaceStore} as: wm-fork-${id}`);
|
|
198
|
-
await finishWorkspaceSetup(prefixed_id);
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
sendUserToast('No workspace selected, cannot fork non-existent workspace', true);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
createLoading = true;
|
|
206
|
-
try {
|
|
207
|
-
const workspaceId = await createWorkspace();
|
|
208
|
-
await maybeShowAiSetupStep(workspaceId);
|
|
209
|
-
}
|
|
210
|
-
finally {
|
|
211
|
-
createLoading = false;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
async function createWorkspace() {
|
|
216
|
-
await WorkspaceService.createWorkspace({
|
|
217
|
-
requestBody: {
|
|
218
|
-
id,
|
|
219
|
-
name,
|
|
220
|
-
color: colorEnabled && workspaceColor ? workspaceColor : undefined,
|
|
221
|
-
username: automateUsernameCreation ? undefined : username
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
if (auto_invite) {
|
|
225
|
-
await WorkspaceService.editAutoInvite({
|
|
226
|
-
workspace: id,
|
|
227
|
-
requestBody: { operator: operatorOnly, invite_all: !isCloudHosted(), auto_add: autoAdd }
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
sendUserToast(`Created workspace id: ${id}`);
|
|
231
|
-
return id;
|
|
232
|
-
}
|
|
233
|
-
async function saveWorkspaceAiSetup() {
|
|
234
|
-
if (!createdWorkspaceId || !aiKey) {
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
aiSetupLoading = true;
|
|
238
|
-
try {
|
|
239
|
-
const actualUsername = await getWorkspaceUsername(createdWorkspaceId);
|
|
240
|
-
const path = `u/${actualUsername}/${selected}_windmill_codegen`;
|
|
241
|
-
await VariableService.createVariable({
|
|
242
|
-
workspace: createdWorkspaceId,
|
|
243
|
-
requestBody: {
|
|
244
|
-
path,
|
|
245
|
-
value: aiKey,
|
|
246
|
-
is_secret: true,
|
|
247
|
-
description: 'Ai token'
|
|
248
|
-
}
|
|
249
|
-
});
|
|
250
|
-
await ResourceService.createResource({
|
|
251
|
-
workspace: createdWorkspaceId,
|
|
252
|
-
requestBody: {
|
|
253
|
-
path,
|
|
254
|
-
value: {
|
|
255
|
-
api_key: '$var:' + path
|
|
256
|
-
},
|
|
257
|
-
resource_type: selected
|
|
258
|
-
}
|
|
259
|
-
});
|
|
260
|
-
await WorkspaceService.editCopilotConfig({
|
|
261
|
-
workspace: createdWorkspaceId,
|
|
262
|
-
requestBody: {
|
|
263
|
-
providers: {
|
|
264
|
-
[selected]: {
|
|
265
|
-
resource_path: path,
|
|
266
|
-
models: [AI_PROVIDERS[selected].defaultModels[0]]
|
|
267
|
-
}
|
|
268
|
-
},
|
|
269
|
-
default_model: {
|
|
270
|
-
model: AI_PROVIDERS[selected].defaultModels[0],
|
|
271
|
-
provider: selected
|
|
272
|
-
},
|
|
273
|
-
code_completion_model: codeCompletionEnabled
|
|
274
|
-
? { model: AI_PROVIDERS[selected].defaultModels[0], provider: selected }
|
|
275
|
-
: undefined
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
sendUserToast('Windmill AI configured');
|
|
279
|
-
await finishWorkspaceSetup(createdWorkspaceId);
|
|
280
|
-
}
|
|
281
|
-
catch (error) {
|
|
282
|
-
sendUserToast(`Failed to configure Windmill AI: ${getErrorMessage(error)}`, true);
|
|
283
|
-
}
|
|
284
|
-
finally {
|
|
285
|
-
aiSetupLoading = false;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
function handleCreateKeyUp(event) {
|
|
289
|
-
const key = event.key;
|
|
290
|
-
if (key === 'Enter') {
|
|
291
|
-
event.preventDefault();
|
|
292
|
-
createOrForkWorkspace();
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
function handleAiKeyUp(event) {
|
|
296
|
-
const key = event.key;
|
|
297
|
-
if (key === 'Enter' && aiKey) {
|
|
298
|
-
event.preventDefault();
|
|
299
|
-
saveWorkspaceAiSetup();
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
async function loadWorkspaces() {
|
|
303
|
-
if (!$usersWorkspaceStore) {
|
|
304
|
-
try {
|
|
305
|
-
usersWorkspaceStore.set(await WorkspaceService.listUserWorkspaces());
|
|
306
|
-
}
|
|
307
|
-
catch { }
|
|
308
|
-
}
|
|
309
|
-
if (!$usersWorkspaceStore) {
|
|
310
|
-
const url = page.url;
|
|
311
|
-
console.log('logout 2');
|
|
312
|
-
await logoutWithRedirect(url.href.replace(url.origin, ''));
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
let automateUsernameCreation = $state(true);
|
|
316
|
-
async function getAutomateUsernameCreationSetting() {
|
|
317
|
-
automateUsernameCreation =
|
|
318
|
-
(await SettingService.getGlobal({ key: 'automate_username_creation' })) ?? true;
|
|
319
|
-
if (!automateUsernameCreation) {
|
|
320
|
-
UserService.globalWhoami().then((x) => {
|
|
321
|
-
let uname = '';
|
|
322
|
-
if (x.name) {
|
|
323
|
-
uname = x.name.split(' ')[0];
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
326
|
-
uname = x.email.split('@')[0];
|
|
327
|
-
}
|
|
328
|
-
uname = uname.replace(/\./gi, '');
|
|
329
|
-
username = uname.toLowerCase();
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
getAutomateUsernameCreationSetting();
|
|
334
|
-
onMount(() => {
|
|
335
|
-
loadWorkspaces();
|
|
336
|
-
WorkspaceService.isDomainAllowed().then((x) => {
|
|
337
|
-
isDomainAllowed = x;
|
|
338
|
-
});
|
|
339
|
-
});
|
|
340
|
-
let isDomainAllowed = $state(undefined);
|
|
341
|
-
let auto_invite = $state(false);
|
|
342
|
-
let operatorOnly = $state(false);
|
|
343
|
-
let autoAdd = $state(true);
|
|
344
|
-
let selected = $state('openai');
|
|
345
|
-
let modalTitle = $derived(isFork ? 'Fork Workspace' : creationStep === 'ai' ? 'Set up Windmill AI' : 'New Workspace');
|
|
346
|
-
run(() => {
|
|
347
|
-
id = name.toLowerCase().replace(/\s/gi, '-');
|
|
348
|
-
});
|
|
349
|
-
run(() => {
|
|
350
|
-
validateName(id);
|
|
351
|
-
});
|
|
352
|
-
run(() => {
|
|
353
|
-
errorUser = validateUsername(username);
|
|
354
|
-
});
|
|
355
|
-
run(() => {
|
|
356
|
-
colorEnabled && !workspaceColor && generateRandomColor();
|
|
357
|
-
});
|
|
358
|
-
let domain = $derived($usersWorkspaceStore?.email.split('@')[1]);
|
|
359
9
|
</script>
|
|
360
10
|
|
|
361
|
-
<CenteredModal title={
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
<
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
{#if errorMsgs.length != 0}
|
|
373
|
-
<Alert class="p-2" title={forkCreationError} type="error">
|
|
374
|
-
<ul class="pl-2 pr-4 break-words pb-5">
|
|
375
|
-
{#each errorMsgs as errorMsg}
|
|
376
|
-
<li><pre class="whitespace-pre-wrap">- {errorMsg}</pre></li>
|
|
377
|
-
{/each}
|
|
378
|
-
</ul>
|
|
379
|
-
{#if failedSyncJobs.length != 0}
|
|
380
|
-
More details on the jobs that failed:
|
|
381
|
-
{#await fetchFailedSyncJobs(failedSyncJobs)}
|
|
382
|
-
<LoaderCircle class="animate-spin" />
|
|
383
|
-
{:then failedJobs}
|
|
384
|
-
<ul class="pl-2 pr-4 break-words">
|
|
385
|
-
{#each failedJobs as job}
|
|
386
|
-
<li>
|
|
387
|
-
-
|
|
388
|
-
<a
|
|
389
|
-
target="_blank"
|
|
390
|
-
class="underline"
|
|
391
|
-
href={`/run/${job.id}?workspace=${$workspaceStore}`}
|
|
392
|
-
>
|
|
393
|
-
{job.id}
|
|
394
|
-
</a>
|
|
395
|
-
</li>
|
|
396
|
-
<!-- This 28073 is the version where git sync on fork was introduced -->
|
|
397
|
-
{#if isPathVersionLessThan(job.script_path, 28073)}
|
|
398
|
-
<div class="font-bold">
|
|
399
|
-
This job was not running the latest version of the git sync script available on
|
|
400
|
-
the hub. You might be able to solve this issue by going to `Workspace Settings`
|
|
401
|
-
-> `Git Sync` and updating the script.
|
|
402
|
-
</div>
|
|
403
|
-
{/if}
|
|
404
|
-
{/each}
|
|
405
|
-
</ul>
|
|
406
|
-
{:catch error}
|
|
407
|
-
Tried to fetch jobs to get more information, but failed: {error}. Here are the failed
|
|
408
|
-
job ids:
|
|
409
|
-
<ul class="pl-2 pr-4 break-words">
|
|
410
|
-
{#each failedSyncJobs as jobId}
|
|
411
|
-
<li>
|
|
412
|
-
-
|
|
413
|
-
<a
|
|
414
|
-
target="_blank"
|
|
415
|
-
class="underline"
|
|
416
|
-
href={`/run/${jobId}?workspace=${$workspaceStore}`}
|
|
417
|
-
>
|
|
418
|
-
{jobId}
|
|
419
|
-
</a>
|
|
420
|
-
</li>
|
|
421
|
-
{/each}
|
|
422
|
-
</ul>
|
|
423
|
-
{/await}
|
|
424
|
-
{/if}
|
|
425
|
-
</Alert>
|
|
426
|
-
{/if}
|
|
427
|
-
|
|
428
|
-
{#if isFork || creationStep === 'details'}
|
|
429
|
-
<label class="flex flex-col gap-1">
|
|
430
|
-
{#if isFork}
|
|
431
|
-
<span class="text-xs font-semibold text-emphasis">Fork name</span>
|
|
432
|
-
<span class="text-xs text-secondary">Displayable name of the forked workspace</span>
|
|
433
|
-
{:else}
|
|
434
|
-
<span class="text-xs font-semibold text-emphasis">Workspace name</span>
|
|
435
|
-
<span class="text-xs text-secondary">Displayable name</span>
|
|
436
|
-
{/if}
|
|
437
|
-
<!-- svelte-ignore a11y_autofocus -->
|
|
438
|
-
<TextInput inputProps={{ autofocus: true }} bind:value={name} />
|
|
439
|
-
</label>
|
|
440
|
-
<label class="flex flex-col gap-1">
|
|
441
|
-
<span class="text-xs font-semibold text-emphasis">Workspace ID</span>
|
|
442
|
-
{#if isFork}
|
|
443
|
-
<span class="text-xs text-secondary"
|
|
444
|
-
>Slug to uniquely identify your fork (this will also set the branch name)</span
|
|
445
|
-
>
|
|
446
|
-
{:else}
|
|
447
|
-
<span class="text-xs text-secondary">Slug to uniquely identify your workspace</span>
|
|
448
|
-
{/if}
|
|
449
|
-
|
|
450
|
-
{#if isFork}
|
|
451
|
-
<PrefixedInput
|
|
452
|
-
prefix={WM_FORK_PREFIX}
|
|
453
|
-
type="text"
|
|
454
|
-
bind:value={id}
|
|
455
|
-
placeholder="example.com"
|
|
456
|
-
class={errorId != '' ? 'input-error' : ''}
|
|
457
|
-
/>
|
|
458
|
-
{:else}
|
|
459
|
-
<TextInput bind:value={id} error={errorId} />
|
|
460
|
-
{/if}
|
|
461
|
-
{#if errorId}
|
|
462
|
-
<span class="text-red-500 text-2xs font-normal">{errorId}</span>
|
|
463
|
-
{/if}
|
|
464
|
-
</label>
|
|
465
|
-
<label class="flex flex-col gap-1">
|
|
466
|
-
<span class="text-xs font-semibold text-emphasis">Workspace color</span>
|
|
467
|
-
<span class="text-xs text-secondary"
|
|
468
|
-
>Color to identify the current workspace in the list of workspaces</span
|
|
469
|
-
>
|
|
470
|
-
<div class="flex items-center gap-4">
|
|
471
|
-
<Toggle bind:checked={colorEnabled} options={{ right: 'Enable' }} />
|
|
472
|
-
{#if colorEnabled}
|
|
473
|
-
<div class="flex items-center gap-1 grow">
|
|
474
|
-
<input
|
|
475
|
-
class="grow min-w-10"
|
|
476
|
-
type="color"
|
|
477
|
-
bind:value={workspaceColor}
|
|
478
|
-
disabled={!colorEnabled}
|
|
479
|
-
/>
|
|
480
|
-
|
|
481
|
-
<TextInput
|
|
482
|
-
class="w-24"
|
|
483
|
-
bind:value={workspaceColor}
|
|
484
|
-
inputProps={{ disabled: !colorEnabled }}
|
|
485
|
-
/>
|
|
486
|
-
<Button
|
|
487
|
-
on:click={generateRandomColor}
|
|
488
|
-
size="xs"
|
|
489
|
-
variant="default"
|
|
490
|
-
disabled={!colorEnabled}>Random</Button
|
|
491
|
-
>
|
|
492
|
-
</div>
|
|
493
|
-
{/if}
|
|
494
|
-
</div>
|
|
495
|
-
</label>
|
|
496
|
-
{#if !automateUsernameCreation}
|
|
497
|
-
<label class="flex flex-col gap-1">
|
|
498
|
-
<span class="text-xs font-semibold text-emphasis">Your username in that workspace</span>
|
|
499
|
-
<TextInput
|
|
500
|
-
bind:value={username}
|
|
501
|
-
inputProps={{ onkeyup: handleCreateKeyUp }}
|
|
502
|
-
error={errorUser}
|
|
503
|
-
/>
|
|
504
|
-
{#if errorUser}
|
|
505
|
-
<span class="text-red-500 text-2xs">{errorUser}</span>
|
|
506
|
-
{/if}
|
|
507
|
-
</label>
|
|
508
|
-
{/if}
|
|
509
|
-
{#if !isFork}
|
|
510
|
-
<div class="flex flex-col gap-1">
|
|
511
|
-
<label for="auto-invite" class="text-xs font-semibold text-emphasis"
|
|
512
|
-
>{isCloudHosted()
|
|
513
|
-
? `Auto-${autoAdd ? 'add' : 'invite'} anyone from ${domain}`
|
|
514
|
-
: `Auto-${autoAdd ? 'add' : 'invite'} anyone joining the instance`}</label
|
|
515
|
-
>
|
|
516
|
-
<Toggle
|
|
517
|
-
id="auto-invite"
|
|
518
|
-
disabled={isCloudHosted() && !isDomainAllowed}
|
|
519
|
-
bind:checked={auto_invite}
|
|
520
|
-
/>
|
|
521
|
-
{#if isCloudHosted() && isDomainAllowed == false}
|
|
522
|
-
<div class="text-secondary text-2xs">{domain} domain not allowed for auto-invite</div>
|
|
523
|
-
{/if}
|
|
524
|
-
|
|
525
|
-
{#if auto_invite}
|
|
526
|
-
<div class="bg-surface-tertiary p-4 rounded-md flex flex-col gap-8">
|
|
527
|
-
<!-- svelte-ignore a11y_label_has_associated_control -->
|
|
528
|
-
{#if isCloudHosted()}
|
|
529
|
-
<label class="flex flex-col gap-1">
|
|
530
|
-
<span class="text-xs font-semibold text-emphasis">Mode</span>
|
|
531
|
-
<span class="text-xs text-secondary font-normal"
|
|
532
|
-
>Whether to invite or add users directly to the workspace.</span
|
|
533
|
-
>
|
|
534
|
-
<ToggleButtonGroup
|
|
535
|
-
selected={autoAdd ? 'add' : 'invite'}
|
|
536
|
-
on:selected={async (e) => {
|
|
537
|
-
autoAdd = e.detail === 'add'
|
|
538
|
-
}}
|
|
539
|
-
>
|
|
540
|
-
{#snippet children({ item })}
|
|
541
|
-
<ToggleButton value="invite" label="Auto-invite" {item} />
|
|
542
|
-
<ToggleButton value="add" label="Auto-add" {item} />
|
|
543
|
-
{/snippet}
|
|
544
|
-
</ToggleButtonGroup>
|
|
545
|
-
</label>
|
|
546
|
-
{/if}
|
|
547
|
-
|
|
548
|
-
<label class="font-semibold flex flex-col gap-1">
|
|
549
|
-
<span class="text-xs font-semibold text-emphasis">Role</span>
|
|
550
|
-
<span class="text-xs text-secondary font-normal">Role of the auto-invited users</span>
|
|
551
|
-
<ToggleButtonGroup
|
|
552
|
-
selected={operatorOnly ? 'operator' : 'developer'}
|
|
553
|
-
on:selected={(e) => {
|
|
554
|
-
operatorOnly = e.detail == 'operator'
|
|
555
|
-
}}
|
|
556
|
-
>
|
|
557
|
-
{#snippet children({ item })}
|
|
558
|
-
<ToggleButton value="operator" label="Operator" {item} />
|
|
559
|
-
<ToggleButton value="developer" label="Developer" {item} />
|
|
560
|
-
{/snippet}
|
|
561
|
-
</ToggleButtonGroup>
|
|
562
|
-
</label>
|
|
563
|
-
</div>
|
|
564
|
-
{/if}
|
|
565
|
-
</div>
|
|
566
|
-
{/if}
|
|
567
|
-
|
|
568
|
-
<div class="flex flex-wrap flex-row justify-between gap-4 pt-4">
|
|
569
|
-
<Button
|
|
570
|
-
disabled={forkCreationLoading || createLoading}
|
|
571
|
-
variant="default"
|
|
572
|
-
size="sm"
|
|
573
|
-
href="{base}/user/workspaces">← Back to workspaces</Button
|
|
574
|
-
>
|
|
575
|
-
{#if !forkCreationLoading}
|
|
576
|
-
<Button
|
|
577
|
-
variant="accent"
|
|
578
|
-
loading={createLoading}
|
|
579
|
-
disabled={createLoading ||
|
|
580
|
-
checking ||
|
|
581
|
-
errorId != '' ||
|
|
582
|
-
!name ||
|
|
583
|
-
(!automateUsernameCreation && (errorUser != '' || !username)) ||
|
|
584
|
-
!id}
|
|
585
|
-
on:click={createOrForkWorkspace}
|
|
586
|
-
>
|
|
587
|
-
{#if isFork}
|
|
588
|
-
Fork workspace
|
|
589
|
-
{:else}
|
|
590
|
-
Create workspace
|
|
591
|
-
{/if}
|
|
592
|
-
</Button>
|
|
593
|
-
{:else}
|
|
594
|
-
<Button variant="accent" disabled={true}>
|
|
595
|
-
<LoaderCircle class="animate-spin" /> Creating branch
|
|
596
|
-
</Button>
|
|
597
|
-
{/if}
|
|
598
|
-
</div>
|
|
599
|
-
{:else}
|
|
600
|
-
<div class="flex flex-col gap-4">
|
|
601
|
-
<div class="flex flex-col gap-1">
|
|
602
|
-
<label for="ai-key" class="flex flex-row gap-2">
|
|
603
|
-
<span class="text-xs font-semibold text-emphasis">
|
|
604
|
-
Set up Windmill AI
|
|
605
|
-
<Tooltip>
|
|
606
|
-
Find out how it can help you <a
|
|
607
|
-
href="https://www.windmill.dev/docs/core_concepts/ai_generation"
|
|
608
|
-
target="_blank"
|
|
609
|
-
rel="noopener noreferrer">in the docs</a
|
|
610
|
-
>
|
|
611
|
-
</Tooltip>
|
|
612
|
-
</span>
|
|
613
|
-
</label>
|
|
614
|
-
<span class="text-xs text-secondary">
|
|
615
|
-
Windmill AI powers the chat, code generation, flow creation, and code completion. Set
|
|
616
|
-
it up now or configure it later in Workspace settings.
|
|
617
|
-
<a
|
|
618
|
-
href="https://www.windmill.dev/docs/core_concepts/ai_generation"
|
|
619
|
-
target="_blank"
|
|
620
|
-
rel="noopener noreferrer"
|
|
621
|
-
class="underline"
|
|
622
|
-
>
|
|
623
|
-
Learn more
|
|
624
|
-
</a>
|
|
625
|
-
</span>
|
|
626
|
-
|
|
627
|
-
<ToggleButtonGroup bind:selected class="mt-4">
|
|
628
|
-
{#snippet children({ item })}
|
|
629
|
-
<ToggleButton value="openai" label="OpenAI" {item} />
|
|
630
|
-
<ToggleButton value="anthropic" label="Anthropic" {item} />
|
|
631
|
-
<ToggleButton value="mistral" label="Mistral" {item} />
|
|
632
|
-
<ToggleButton value="deepseek" label="DeepSeek" {item} />
|
|
633
|
-
{/snippet}
|
|
634
|
-
</ToggleButtonGroup>
|
|
635
|
-
<div class="flex flex-row gap-1">
|
|
636
|
-
<input
|
|
637
|
-
id="ai-key"
|
|
638
|
-
type="password"
|
|
639
|
-
autocomplete="new-password"
|
|
640
|
-
bind:value={aiKey}
|
|
641
|
-
onkeyup={handleAiKeyUp}
|
|
642
|
-
/>
|
|
643
|
-
<TestAIKey
|
|
644
|
-
apiKey={aiKey}
|
|
645
|
-
disabled={!aiKey}
|
|
646
|
-
aiProvider={selected}
|
|
647
|
-
model={AI_PROVIDERS[selected].defaultModels[0]}
|
|
648
|
-
/>
|
|
649
|
-
</div>
|
|
650
|
-
</div>
|
|
651
|
-
|
|
652
|
-
{#if aiKey}
|
|
653
|
-
<div class="flex flex-col gap-2">
|
|
654
|
-
<Toggle
|
|
655
|
-
disabled={!aiKey}
|
|
656
|
-
bind:checked={codeCompletionEnabled}
|
|
657
|
-
options={{ right: 'Enable code completion' }}
|
|
658
|
-
/>
|
|
659
|
-
</div>
|
|
660
|
-
{/if}
|
|
661
|
-
</div>
|
|
662
|
-
|
|
663
|
-
<div class="flex flex-wrap flex-row justify-between gap-4 pt-4">
|
|
664
|
-
<Button
|
|
665
|
-
variant="default"
|
|
666
|
-
size="sm"
|
|
667
|
-
disabled={aiSetupLoading || !createdWorkspaceId}
|
|
668
|
-
on:click={() => createdWorkspaceId && finishWorkspaceSetup(createdWorkspaceId)}
|
|
669
|
-
>
|
|
670
|
-
Skip for now
|
|
671
|
-
</Button>
|
|
672
|
-
<Button
|
|
673
|
-
variant="accent"
|
|
674
|
-
loading={aiSetupLoading}
|
|
675
|
-
disabled={aiSetupLoading || !aiKey}
|
|
676
|
-
on:click={saveWorkspaceAiSetup}
|
|
677
|
-
>
|
|
678
|
-
Set up AI
|
|
679
|
-
</Button>
|
|
680
|
-
</div>
|
|
681
|
-
{/if}
|
|
682
|
-
</div>
|
|
11
|
+
<CenteredModal title="{isFork ? 'Forking' : 'New'} Workspace" centerVertically={false}>
|
|
12
|
+
{#if isFork}
|
|
13
|
+
<div class="flex flex-block gap-2">
|
|
14
|
+
<GitForkIcon size={16} />
|
|
15
|
+
<span class="text-xs text-normal">Forking </span>
|
|
16
|
+
<span class="text-xs text-emphasis font-semibold">
|
|
17
|
+
{$workspaceStore}
|
|
18
|
+
</span>
|
|
19
|
+
</div>
|
|
20
|
+
{/if}
|
|
21
|
+
<CreateWorkspaceInner {isFork} onFinish={() => goto(rd ?? '/')} />
|
|
683
22
|
</CenteredModal>
|