windmill-components 1.677.0 → 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/flowStore.svelte.d.ts +1 -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/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
- 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/MqttEditorConfigSection.svelte.d.ts +1 -1
- 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 +1172 -164
- package/package/gen/schemas.gen.js +1168 -157
- package/package/gen/services.gen.d.ts +511 -6
- package/package/gen/services.gen.js +1023 -23
- package/package/gen/types.gen.d.ts +2278 -151
- 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_deployable.d.ts +11 -7
- package/package/utils_workspace_deploy.d.ts +8 -8
- package/package/utils_workspace_deploy.js +86 -420
- package/package.json +4 -4
- 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
|
@@ -124,6 +124,9 @@ export async function openNew(nis_flow, fixedScriptPath_, defaultValues) {
|
|
|
124
124
|
retry = defaultValues?.retry ?? undefined;
|
|
125
125
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
126
126
|
mode = defaultValues?.mode ?? 'enabled';
|
|
127
|
+
permissionedAs = undefined;
|
|
128
|
+
selectedPermissionedAs = undefined;
|
|
129
|
+
preservePermissionedAs = false;
|
|
127
130
|
originalConfig = undefined;
|
|
128
131
|
}
|
|
129
132
|
finally {
|
|
@@ -147,8 +150,8 @@ function loadTriggerConfig(cfg) {
|
|
|
147
150
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
148
151
|
mode = cfg?.mode ?? 'enabled';
|
|
149
152
|
permissionedAs = cfg?.permissioned_as;
|
|
150
|
-
selectedPermissionedAs =
|
|
151
|
-
preservePermissionedAs =
|
|
153
|
+
selectedPermissionedAs = cfg?.permissioned_as;
|
|
154
|
+
preservePermissionedAs = !!cfg?.permissioned_as;
|
|
152
155
|
}
|
|
153
156
|
async function loadTrigger(defaultConfig) {
|
|
154
157
|
if (defaultConfig) {
|
|
@@ -259,15 +262,14 @@ $effect(() => {
|
|
|
259
262
|
<Loader2 class="animate-spin" />
|
|
260
263
|
{/if}
|
|
261
264
|
{:else}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
{/if}
|
|
265
|
+
<PermissionedAsLine
|
|
266
|
+
{permissionedAs}
|
|
267
|
+
{path}
|
|
268
|
+
onPermissionedAsChange={(pa, preserve) => {
|
|
269
|
+
selectedPermissionedAs = pa
|
|
270
|
+
preservePermissionedAs = preserve
|
|
271
|
+
}}
|
|
272
|
+
/>
|
|
271
273
|
<div class="flex flex-col gap-12">
|
|
272
274
|
{#if mode === 'suspended'}
|
|
273
275
|
<TriggerSuspendedJobsAlert {suspendedJobsModal} />
|
|
@@ -112,6 +112,9 @@ export async function openNew(nis_flow, fixedScriptPath_, defaultValues) {
|
|
|
112
112
|
auto_acknowledge_msg = defaultValues?.auto_acknowledge_msg ?? true;
|
|
113
113
|
ack_deadline = defaultValues?.ack_deadline;
|
|
114
114
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
115
|
+
permissionedAs = undefined;
|
|
116
|
+
selectedPermissionedAs = undefined;
|
|
117
|
+
preservePermissionedAs = false;
|
|
115
118
|
originalConfig = undefined;
|
|
116
119
|
}
|
|
117
120
|
finally {
|
|
@@ -155,8 +158,8 @@ async function loadTriggerConfig(cfg) {
|
|
|
155
158
|
ack_deadline = cfg?.ack_deadline;
|
|
156
159
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
157
160
|
permissionedAs = cfg?.permissioned_as;
|
|
158
|
-
selectedPermissionedAs =
|
|
159
|
-
preservePermissionedAs =
|
|
161
|
+
selectedPermissionedAs = cfg?.permissioned_as;
|
|
162
|
+
preservePermissionedAs = !!cfg?.permissioned_as;
|
|
160
163
|
}
|
|
161
164
|
async function updateTrigger() {
|
|
162
165
|
deploymentLoading = true;
|
|
@@ -313,15 +316,14 @@ $effect(() => {
|
|
|
313
316
|
<p>Loading...</p>
|
|
314
317
|
</div>
|
|
315
318
|
{:else}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
{/if}
|
|
319
|
+
<PermissionedAsLine
|
|
320
|
+
{permissionedAs}
|
|
321
|
+
{path}
|
|
322
|
+
onPermissionedAsChange={(pa, preserve) => {
|
|
323
|
+
selectedPermissionedAs = pa
|
|
324
|
+
preservePermissionedAs = preserve
|
|
325
|
+
}}
|
|
326
|
+
/>
|
|
325
327
|
<div class="flex flex-col gap-5">
|
|
326
328
|
{#if mode === 'suspended'}
|
|
327
329
|
<TriggerSuspendedJobsAlert {suspendedJobsModal} />
|
|
@@ -63,8 +63,9 @@ $effect.pre(() => {
|
|
|
63
63
|
route_path === undefined && (route_path = '');
|
|
64
64
|
});
|
|
65
65
|
let userIsAdmin = $derived($userStore?.is_admin || $userStore?.is_super_admin);
|
|
66
|
-
let userCanEditConfig = $derived(userIsAdmin || isDraftOnly); // User can edit config if they are admin or if the trigger is a draft which will not be saved
|
|
67
66
|
let globalHttpWorkspacedRoute = $state(false);
|
|
67
|
+
let effectiveWorkspaced = $derived(workspaced_route || globalHttpWorkspacedRoute);
|
|
68
|
+
let userCanEditConfig = $derived(userIsAdmin || isDraftOnly || effectiveWorkspaced);
|
|
68
69
|
async function loadGlobalHttpWorkspacedRouteSetting() {
|
|
69
70
|
try {
|
|
70
71
|
const setting = await SettingService.getGlobal({ key: 'http_route_workspaced_route' });
|
|
@@ -76,7 +77,11 @@ async function loadGlobalHttpWorkspacedRouteSetting() {
|
|
|
76
77
|
}
|
|
77
78
|
loadGlobalHttpWorkspacedRouteSetting();
|
|
78
79
|
$effect.pre(() => {
|
|
79
|
-
|
|
80
|
+
// Force workspaced route for non-admins on new triggers only.
|
|
81
|
+
// Existing non-workspaced triggers created by admins can still be edited by non-admins
|
|
82
|
+
// (with restricted fields), so we don't override their workspaced_route value.
|
|
83
|
+
const isNewTrigger = !initialTriggerPath;
|
|
84
|
+
if ((globalHttpWorkspacedRoute || (!userIsAdmin && isNewTrigger)) && !workspaced_route) {
|
|
80
85
|
workspaced_route = true;
|
|
81
86
|
dirtyRoutePath = true;
|
|
82
87
|
}
|
|
@@ -90,9 +95,10 @@ $effect.pre(() => {
|
|
|
90
95
|
<TestingBadge />
|
|
91
96
|
{/if}
|
|
92
97
|
{/snippet}
|
|
93
|
-
{#if !userCanEditConfig
|
|
94
|
-
<Alert type="info" title="
|
|
95
|
-
Route
|
|
98
|
+
{#if !userCanEditConfig}
|
|
99
|
+
<Alert type="info" title="Route config restricted" collapsible size="xs">
|
|
100
|
+
Route path, HTTP method, and workspace prefix can only be changed by workspace admins on
|
|
101
|
+
non-workspaced routes
|
|
96
102
|
</Alert>
|
|
97
103
|
<div class="my-2"></div>
|
|
98
104
|
{/if}
|
|
@@ -147,7 +153,7 @@ $effect.pre(() => {
|
|
|
147
153
|
<Toggle
|
|
148
154
|
size="sm"
|
|
149
155
|
checked={workspaced_route}
|
|
150
|
-
disabled={!can_write || !
|
|
156
|
+
disabled={!can_write || !userIsAdmin || globalHttpWorkspacedRoute}
|
|
151
157
|
on:change={() => {
|
|
152
158
|
workspaced_route = !workspaced_route
|
|
153
159
|
dirtyRoutePath = true
|
|
@@ -155,7 +161,9 @@ $effect.pre(() => {
|
|
|
155
161
|
options={{
|
|
156
162
|
right: globalHttpWorkspacedRoute
|
|
157
163
|
? 'Prefix with workspace (enforced by instance setting)'
|
|
158
|
-
:
|
|
164
|
+
: !userIsAdmin
|
|
165
|
+
? 'Prefix with workspace (required for non-admin users)'
|
|
166
|
+
: 'Prefix with workspace',
|
|
159
167
|
rightTooltip:
|
|
160
168
|
'Prefixes the route with the workspace ID (e.g., {base_url}/api/r/{workspace_id}/{route}). Note: deploying the HTTP trigger to another workspace updates the route workspace prefix accordingly.',
|
|
161
169
|
rightDocumentationLink:
|
|
@@ -98,7 +98,6 @@ let originalConfig = $state(undefined);
|
|
|
98
98
|
let userSettings = $state(undefined);
|
|
99
99
|
let hasChanged = $derived(!deepEqual(getRouteConfig(), originalConfig ?? {}));
|
|
100
100
|
let scopes = $derived(['http_triggers:read:' + path]);
|
|
101
|
-
const isAdmin = $derived($userStore?.is_admin || $userStore?.is_super_admin);
|
|
102
101
|
const routeConfig = $derived.by(getRouteConfig);
|
|
103
102
|
const captureConfig = $derived.by(untrack(() => isEditor) ? getCaptureConfig : () => ({}));
|
|
104
103
|
const saveDisabled = $derived(drawerLoading ||
|
|
@@ -213,6 +212,9 @@ export async function openNew(nis_flow, fixedScriptPath_, defaultValues) {
|
|
|
213
212
|
error_handler_args = defaultValues?.error_handler_args ?? {};
|
|
214
213
|
retry = defaultValues?.retry ?? undefined;
|
|
215
214
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
215
|
+
permissionedAs = undefined;
|
|
216
|
+
selectedPermissionedAs = undefined;
|
|
217
|
+
preservePermissionedAs = false;
|
|
216
218
|
originalConfig = undefined;
|
|
217
219
|
}
|
|
218
220
|
finally {
|
|
@@ -256,8 +258,8 @@ function loadTriggerConfig(cfg) {
|
|
|
256
258
|
retry = cfg?.retry;
|
|
257
259
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
258
260
|
permissionedAs = cfg?.permissioned_as;
|
|
259
|
-
selectedPermissionedAs =
|
|
260
|
-
preservePermissionedAs =
|
|
261
|
+
selectedPermissionedAs = cfg?.permissioned_as;
|
|
262
|
+
preservePermissionedAs = !!cfg?.permissioned_as;
|
|
261
263
|
}
|
|
262
264
|
async function loadTrigger(defaultConfig) {
|
|
263
265
|
if (defaultConfig) {
|
|
@@ -409,15 +411,14 @@ $effect(() => {
|
|
|
409
411
|
<Loader2 class="animate-spin" />
|
|
410
412
|
{/if}
|
|
411
413
|
{:else}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
{/if}
|
|
414
|
+
<PermissionedAsLine
|
|
415
|
+
{permissionedAs}
|
|
416
|
+
{path}
|
|
417
|
+
onPermissionedAsChange={(pa, preserve) => {
|
|
418
|
+
selectedPermissionedAs = pa
|
|
419
|
+
preservePermissionedAs = preserve
|
|
420
|
+
}}
|
|
421
|
+
/>
|
|
421
422
|
<div class="flex flex-col gap-8">
|
|
422
423
|
{#if mode === 'suspended'}
|
|
423
424
|
<TriggerSuspendedJobsAlert {suspendedJobsModal} />
|
|
@@ -446,7 +447,6 @@ $effect(() => {
|
|
|
446
447
|
checkInitialPathExistence={!edit}
|
|
447
448
|
namePlaceholder="route"
|
|
448
449
|
kind="http_trigger"
|
|
449
|
-
hideUser
|
|
450
450
|
disableEditing={!can_write}
|
|
451
451
|
/>
|
|
452
452
|
</Label>
|
|
@@ -874,7 +874,7 @@ $effect(() => {
|
|
|
874
874
|
{#if !drawerLoading}
|
|
875
875
|
<TriggerEditorToolbar
|
|
876
876
|
{trigger}
|
|
877
|
-
permissions={drawerLoading || !can_write ? 'none' :
|
|
877
|
+
permissions={drawerLoading || !can_write ? 'none' : 'create'}
|
|
878
878
|
{saveDisabled}
|
|
879
879
|
{allowDraft}
|
|
880
880
|
{edit}
|
|
@@ -9,7 +9,7 @@ import Subsection from '../../Subsection.svelte';
|
|
|
9
9
|
import RouteEditor from './RouteEditor.svelte';
|
|
10
10
|
import { generateHttpTriggerFromOpenApi } from './utils';
|
|
11
11
|
import { isCloudHosted } from '../../../cloud';
|
|
12
|
-
import { usedTriggerKinds, workspaceStore } from '../../../stores';
|
|
12
|
+
import { usedTriggerKinds, userStore, workspaceStore } from '../../../stores';
|
|
13
13
|
import FileInput from '../../common/fileInput/FileInput.svelte';
|
|
14
14
|
import { emptyStringTrimmed, sendUserToast } from '../../../utils';
|
|
15
15
|
import FolderPicker from '../../FolderPicker.svelte';
|
|
@@ -113,10 +113,15 @@ async function saveHttpTrigger() {
|
|
|
113
113
|
isCreating = false;
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
+
let userIsAdmin = $derived($userStore?.is_admin || $userStore?.is_super_admin);
|
|
116
117
|
async function generateHttpTrigger() {
|
|
117
118
|
try {
|
|
118
119
|
isGeneratingHttpRoutes = true;
|
|
119
120
|
httpTriggers = await generateHttpTriggerFromOpenApi(code, folderName);
|
|
121
|
+
// Force workspaced routes for non-admins or when the global setting is enabled
|
|
122
|
+
if (!userIsAdmin || globalHttpWorkspacedRoute) {
|
|
123
|
+
httpTriggers = httpTriggers.map((t) => ({ ...t, workspaced_route: true }));
|
|
124
|
+
}
|
|
120
125
|
if (httpTriggers.length === 0) {
|
|
121
126
|
sendUserToast('No paths defined in the OpenAPI spec. Cannot generate HTTP routes.', true);
|
|
122
127
|
}
|
|
@@ -38,7 +38,7 @@ onMount(() => {
|
|
|
38
38
|
>
|
|
39
39
|
|
|
40
40
|
{#if !$userStore?.is_admin && !$userStore?.is_super_admin && selectedTrigger.isDraft}
|
|
41
|
-
<Alert title="
|
|
41
|
+
<Alert title="Non-admin users are limited to workspaced routes" type="info" size="xs" />
|
|
42
42
|
{/if}
|
|
43
43
|
</div>
|
|
44
44
|
{/snippet}
|
|
@@ -6,6 +6,6 @@ export declare const SIGNATURE_TEMPLATE_SCRIPT_HUB_PATH: string;
|
|
|
6
6
|
export declare const SIGNATURE_TEMPLATE_FLOW_HUB_ID = "67";
|
|
7
7
|
export declare function getHttpRoute(route_prefix: string, route_path: string | undefined, workspaced_route: boolean, workspace_id: string): string;
|
|
8
8
|
export declare function replacePlaceholderForSignatureScriptTemplate(content: string): string;
|
|
9
|
-
export declare function saveHttpRouteFromCfg(initialPath: string, routeCfg: Record<string, any>, edit: boolean, workspace: string,
|
|
9
|
+
export declare function saveHttpRouteFromCfg(initialPath: string, routeCfg: Record<string, any>, edit: boolean, workspace: string, _isAdmin: boolean, usedTriggerKinds: Writable<string[]>): Promise<boolean>;
|
|
10
10
|
export type Source = 'OpenAPI' | 'OpenAPI_File' | 'OpenAPI_URL';
|
|
11
11
|
export declare function generateHttpTriggerFromOpenApi(api: string, folderName: string): Promise<NewHttpTrigger[]>;
|
|
@@ -18,7 +18,7 @@ export function replacePlaceholderForSignatureScriptTemplate(content) {
|
|
|
18
18
|
const secret_key_path = params.get(SECRET_KEY_PATH) ?? '';
|
|
19
19
|
return content.replace(/(const\s+SECRET_KEY_VARIABLE_PATH\s*=\s*")[^"]*(";)/, `$1${secret_key_path}$2`);
|
|
20
20
|
}
|
|
21
|
-
export async function saveHttpRouteFromCfg(initialPath, routeCfg, edit, workspace,
|
|
21
|
+
export async function saveHttpRouteFromCfg(initialPath, routeCfg, edit, workspace, _isAdmin, usedTriggerKinds) {
|
|
22
22
|
const requestBody = {
|
|
23
23
|
path: routeCfg.path,
|
|
24
24
|
script_path: routeCfg.script_path,
|
|
@@ -49,7 +49,7 @@ export async function saveHttpRouteFromCfg(initialPath, routeCfg, edit, workspac
|
|
|
49
49
|
path: initialPath,
|
|
50
50
|
requestBody: {
|
|
51
51
|
...requestBody,
|
|
52
|
-
route_path:
|
|
52
|
+
route_path: routeCfg.route_path
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
55
|
sendUserToast(`Route ${routeCfg.path} updated`);
|
|
@@ -141,6 +141,9 @@ export async function openNew(nis_flow, fixedScriptPath_, nDefaultValues) {
|
|
|
141
141
|
filterLogic = 'and';
|
|
142
142
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
143
143
|
mode = nDefaultValues?.mode ?? 'enabled';
|
|
144
|
+
permissionedAs = undefined;
|
|
145
|
+
selectedPermissionedAs = undefined;
|
|
146
|
+
preservePermissionedAs = false;
|
|
144
147
|
originalConfig = undefined;
|
|
145
148
|
}
|
|
146
149
|
finally {
|
|
@@ -171,8 +174,8 @@ function loadTriggerConfig(cfg) {
|
|
|
171
174
|
filterLogic = cfg?.filter_logic ?? 'and';
|
|
172
175
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
173
176
|
permissionedAs = cfg?.permissioned_as;
|
|
174
|
-
selectedPermissionedAs =
|
|
175
|
-
preservePermissionedAs =
|
|
177
|
+
selectedPermissionedAs = cfg?.permissioned_as;
|
|
178
|
+
preservePermissionedAs = !!cfg?.permissioned_as;
|
|
176
179
|
}
|
|
177
180
|
async function loadTrigger(defaultConfig) {
|
|
178
181
|
if (defaultConfig) {
|
|
@@ -360,15 +363,14 @@ $effect(() => {
|
|
|
360
363
|
<Loader2 class="animate-spin" />
|
|
361
364
|
{/if}
|
|
362
365
|
{:else}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
{/if}
|
|
366
|
+
<PermissionedAsLine
|
|
367
|
+
{permissionedAs}
|
|
368
|
+
{path}
|
|
369
|
+
onPermissionedAsChange={(pa, preserve) => {
|
|
370
|
+
selectedPermissionedAs = pa
|
|
371
|
+
preservePermissionedAs = preserve
|
|
372
|
+
}}
|
|
373
|
+
/>
|
|
372
374
|
<div class="flex flex-col gap-4">
|
|
373
375
|
{#if description}
|
|
374
376
|
{@render description()}
|
|
@@ -8,6 +8,6 @@ interface Props {
|
|
|
8
8
|
client_id?: string;
|
|
9
9
|
showTestingBadge?: boolean;
|
|
10
10
|
}
|
|
11
|
-
declare const MqttEditorConfigSection: import("svelte").Component<Props, {}, "
|
|
11
|
+
declare const MqttEditorConfigSection: import("svelte").Component<Props, {}, "client_id" | "subscribe_topics" | "mqtt_resource_path" | "client_version" | "isValid">;
|
|
12
12
|
type MqttEditorConfigSection = ReturnType<typeof MqttEditorConfigSection>;
|
|
13
13
|
export default MqttEditorConfigSection;
|
|
@@ -128,6 +128,9 @@ export async function openNew(nis_flow, fixedScriptPath_, defaultValues) {
|
|
|
128
128
|
v5_config = defaultValues?.v5_config ?? DEFAULT_V5_CONFIG;
|
|
129
129
|
activateV5Options.topic_alias_maximum = Boolean(defaultValues?.v5_config?.topic_alias_maximum);
|
|
130
130
|
activateV5Options.session_expiry_interval = Boolean(defaultValues?.v5_config?.session_expiry_interval);
|
|
131
|
+
permissionedAs = undefined;
|
|
132
|
+
selectedPermissionedAs = undefined;
|
|
133
|
+
preservePermissionedAs = false;
|
|
131
134
|
originalConfig = undefined;
|
|
132
135
|
}
|
|
133
136
|
finally {
|
|
@@ -157,8 +160,8 @@ async function loadTriggerConfig(cfg) {
|
|
|
157
160
|
activateV5Options.topic_alias_maximum = Boolean(v5_config.topic_alias_maximum);
|
|
158
161
|
activateV5Options.session_expiry_interval = Boolean(v5_config.session_expiry_interval);
|
|
159
162
|
permissionedAs = cfg?.permissioned_as;
|
|
160
|
-
selectedPermissionedAs =
|
|
161
|
-
preservePermissionedAs =
|
|
163
|
+
selectedPermissionedAs = cfg?.permissioned_as;
|
|
164
|
+
preservePermissionedAs = !!cfg?.permissioned_as;
|
|
162
165
|
}
|
|
163
166
|
catch (error) {
|
|
164
167
|
sendUserToast(`Could not load mqtt trigger config: ${error.body}`, true);
|
|
@@ -327,15 +330,14 @@ $effect(() => {
|
|
|
327
330
|
<Loader2 class="animate-spin" />
|
|
328
331
|
{/if}
|
|
329
332
|
{:else}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
{/if}
|
|
333
|
+
<PermissionedAsLine
|
|
334
|
+
{permissionedAs}
|
|
335
|
+
{path}
|
|
336
|
+
onPermissionedAsChange={(pa, preserve) => {
|
|
337
|
+
selectedPermissionedAs = pa
|
|
338
|
+
preservePermissionedAs = preserve
|
|
339
|
+
}}
|
|
340
|
+
/>
|
|
339
341
|
<div class="flex flex-col gap-4">
|
|
340
342
|
{#if description}
|
|
341
343
|
{@render description()}
|
|
@@ -12,6 +12,7 @@ import Section from '../../Section.svelte';
|
|
|
12
12
|
import Required from '../../Required.svelte';
|
|
13
13
|
import NextcloudTriggerForm from './services/nextcloud/NextcloudTriggerForm.svelte';
|
|
14
14
|
import GoogleTriggerForm from './services/google/GoogleTriggerForm.svelte';
|
|
15
|
+
import GitHubTriggerForm from './services/github/GitHubTriggerForm.svelte';
|
|
15
16
|
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte';
|
|
16
17
|
import { handleConfigChange } from '../utils';
|
|
17
18
|
import { deepEqual } from 'fast-equals';
|
|
@@ -32,6 +33,8 @@ const ServiceFormComponent = $derived.by(() => {
|
|
|
32
33
|
return NextcloudTriggerForm;
|
|
33
34
|
case 'google':
|
|
34
35
|
return GoogleTriggerForm;
|
|
36
|
+
case 'github':
|
|
37
|
+
return GitHubTriggerForm;
|
|
35
38
|
default:
|
|
36
39
|
return null;
|
|
37
40
|
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
<script lang="ts">import Section from '../../../../Section.svelte';
|
|
2
|
+
import Select from '../../../../select/Select.svelte';
|
|
3
|
+
import MultiSelect from '../../../../select/MultiSelect.svelte';
|
|
4
|
+
import { NativeTriggerService } from '../../../../../gen/services.gen';
|
|
5
|
+
import { workspaceStore } from '../../../../../stores';
|
|
6
|
+
import { sendUserToast } from '../../../../../toast';
|
|
7
|
+
import { Loader2 } from 'lucide-svelte';
|
|
8
|
+
let { serviceConfig = $bindable(), errors = $bindable(), loading = $bindable(), disabled = false, externalData } = $props();
|
|
9
|
+
const GITHUB_EVENTS = [
|
|
10
|
+
{ label: 'Push', value: 'push' },
|
|
11
|
+
{ label: 'Pull Request', value: 'pull_request' },
|
|
12
|
+
{ label: 'Issues', value: 'issues' },
|
|
13
|
+
{ label: 'Issue Comment', value: 'issue_comment' },
|
|
14
|
+
{ label: 'Create (branch/tag)', value: 'create' },
|
|
15
|
+
{ label: 'Delete (branch/tag)', value: 'delete' },
|
|
16
|
+
{ label: 'Release', value: 'release' },
|
|
17
|
+
{ label: 'Workflow Run', value: 'workflow_run' },
|
|
18
|
+
{ label: 'Pull Request Review', value: 'pull_request_review' },
|
|
19
|
+
{ label: 'Fork', value: 'fork' },
|
|
20
|
+
{ label: 'Star', value: 'star' },
|
|
21
|
+
{ label: 'Deployment', value: 'deployment' },
|
|
22
|
+
{ label: 'Deployment Status', value: 'deployment_status' }
|
|
23
|
+
];
|
|
24
|
+
let repos = $state([]);
|
|
25
|
+
let selectedRepo = $state(externalData?.owner && externalData?.repo
|
|
26
|
+
? `${externalData.owner}/${externalData.repo}`
|
|
27
|
+
: serviceConfig.owner && serviceConfig.repo
|
|
28
|
+
? `${serviceConfig.owner}/${serviceConfig.repo}`
|
|
29
|
+
: '');
|
|
30
|
+
let selectedEvents = $state(externalData?.events ?? serviceConfig.events ?? ['push']);
|
|
31
|
+
async function loadRepos() {
|
|
32
|
+
if (!$workspaceStore) {
|
|
33
|
+
repos = [];
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
loading = true;
|
|
37
|
+
try {
|
|
38
|
+
repos = await NativeTriggerService.listGithubRepos({
|
|
39
|
+
workspace: $workspaceStore
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
console.error('Failed to load GitHub repositories:', err);
|
|
44
|
+
sendUserToast(`Failed to load repositories: ${err.body || err.message}`, true);
|
|
45
|
+
repos = [];
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
loading = false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
$effect(() => {
|
|
52
|
+
if ($workspaceStore) {
|
|
53
|
+
loadRepos();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
$effect(() => {
|
|
57
|
+
const parts = selectedRepo.split('/');
|
|
58
|
+
const owner = parts[0] ?? '';
|
|
59
|
+
const repo = parts.slice(1).join('/') ?? '';
|
|
60
|
+
serviceConfig = {
|
|
61
|
+
owner,
|
|
62
|
+
repo,
|
|
63
|
+
events: selectedEvents
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
let repoItems = $derived(repos.map((r) => ({
|
|
67
|
+
label: `${r.full_name}${r.private ? ' (private)' : ''}`,
|
|
68
|
+
value: r.full_name
|
|
69
|
+
})));
|
|
70
|
+
export function validate() {
|
|
71
|
+
let serviceErrors = {};
|
|
72
|
+
if (!selectedRepo?.trim()) {
|
|
73
|
+
serviceErrors.repo = 'Repository is required';
|
|
74
|
+
}
|
|
75
|
+
if (!selectedEvents || selectedEvents.length === 0) {
|
|
76
|
+
serviceErrors.events = 'At least one event is required';
|
|
77
|
+
}
|
|
78
|
+
return serviceErrors;
|
|
79
|
+
}
|
|
80
|
+
</script>
|
|
81
|
+
|
|
82
|
+
<Section label="GitHub Trigger Configuration">
|
|
83
|
+
<div class="flex flex-col gap-4">
|
|
84
|
+
<div class="flex flex-col gap-1">
|
|
85
|
+
<p class="block text-xs font-semibold text-primary">Repository</p>
|
|
86
|
+
{#if loading}
|
|
87
|
+
<div class="flex items-center gap-2 text-secondary text-xs">
|
|
88
|
+
<Loader2 class="animate-spin" size={14} />
|
|
89
|
+
Loading repositories...
|
|
90
|
+
</div>
|
|
91
|
+
{:else}
|
|
92
|
+
<Select
|
|
93
|
+
items={repoItems}
|
|
94
|
+
bind:value={selectedRepo}
|
|
95
|
+
placeholder="Select a repository"
|
|
96
|
+
{disabled}
|
|
97
|
+
/>
|
|
98
|
+
{/if}
|
|
99
|
+
{#if errors.repo}
|
|
100
|
+
<p class="text-red-500 text-xs">{errors.repo}</p>
|
|
101
|
+
{/if}
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<div class="flex flex-col gap-1">
|
|
105
|
+
<p class="block text-xs font-semibold text-primary">Events</p>
|
|
106
|
+
<MultiSelect
|
|
107
|
+
items={GITHUB_EVENTS}
|
|
108
|
+
bind:value={selectedEvents}
|
|
109
|
+
placeholder="Select events"
|
|
110
|
+
{disabled}
|
|
111
|
+
reorderable={false}
|
|
112
|
+
/>
|
|
113
|
+
{#if errors.events}
|
|
114
|
+
<p class="text-red-500 text-xs">{errors.events}</p>
|
|
115
|
+
{/if}
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
</Section>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
serviceConfig: Record<string, any>;
|
|
3
|
+
errors: Record<string, string>;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
externalData?: any;
|
|
6
|
+
loading: boolean;
|
|
7
|
+
path?: string;
|
|
8
|
+
isFlow?: boolean;
|
|
9
|
+
token?: string;
|
|
10
|
+
triggerTokens?: any;
|
|
11
|
+
scopes?: any[];
|
|
12
|
+
}
|
|
13
|
+
declare const GitHubTriggerForm: import("svelte").Component<Props, {
|
|
14
|
+
validate: () => Record<string, string>;
|
|
15
|
+
}, "loading" | "errors" | "serviceConfig">;
|
|
16
|
+
type GitHubTriggerForm = ReturnType<typeof GitHubTriggerForm>;
|
|
17
|
+
export default GitHubTriggerForm;
|
|
@@ -23,6 +23,16 @@ export const NATIVE_TRIGGER_SERVICES = {
|
|
|
23
23
|
script: '/scripts/add?hub=hub%2F28135',
|
|
24
24
|
flow: '/flows/add?hub=75'
|
|
25
25
|
}
|
|
26
|
+
},
|
|
27
|
+
github: {
|
|
28
|
+
serviceDisplayName: 'GitHub',
|
|
29
|
+
serviceKey: 'github',
|
|
30
|
+
supportsSync: true,
|
|
31
|
+
isCloudCompatible: true,
|
|
32
|
+
templates: {
|
|
33
|
+
script: '/scripts/add?hub=hub%2F28202',
|
|
34
|
+
flow: '/flows/add?hub=80'
|
|
35
|
+
}
|
|
26
36
|
}
|
|
27
37
|
};
|
|
28
38
|
export async function isServiceAvailable(service, workspace) {
|
|
@@ -77,6 +87,8 @@ export function getTriggerIconName(service) {
|
|
|
77
87
|
return 'NextcloudIcon';
|
|
78
88
|
case 'google':
|
|
79
89
|
return 'GoogleIcon';
|
|
90
|
+
case 'github':
|
|
91
|
+
return 'GithubIcon';
|
|
80
92
|
default:
|
|
81
93
|
return 'NextcloudIcon';
|
|
82
94
|
}
|
|
@@ -87,6 +99,8 @@ export async function getServiceIcon(service) {
|
|
|
87
99
|
return (await import('../../icons/NextcloudIcon.svelte')).default;
|
|
88
100
|
case 'google':
|
|
89
101
|
return (await import('../../icons/GoogleIcon.svelte')).default;
|
|
102
|
+
case 'github':
|
|
103
|
+
return (await import('../../icons/GithubIcon.svelte')).default;
|
|
90
104
|
}
|
|
91
105
|
}
|
|
92
106
|
export function getServiceTemplates(service) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
onUpdate
|
|
3
|
-
}
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
onUpdate?: (path?: string) => void;
|
|
3
|
+
};
|
|
4
|
+
declare const NatsTriggerEditor: import("svelte").Component<$$ComponentProps, {
|
|
4
5
|
openEdit: (ePath: string, isFlow: boolean) => Promise<void>;
|
|
5
6
|
openNew: (is_flow: boolean, initial_script_path?: string, defaultValues?: Record<string, any>) => Promise<void>;
|
|
6
7
|
}, "">;
|
|
@@ -121,6 +121,9 @@ export async function openNew(nis_flow, fixedScriptPath_, nDefaultValues) {
|
|
|
121
121
|
error_handler_args = nDefaultValues?.error_handler_args ?? {};
|
|
122
122
|
retry = nDefaultValues?.retry ?? undefined;
|
|
123
123
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
124
|
+
permissionedAs = undefined;
|
|
125
|
+
selectedPermissionedAs = undefined;
|
|
126
|
+
preservePermissionedAs = false;
|
|
124
127
|
originalConfig = undefined;
|
|
125
128
|
}
|
|
126
129
|
finally {
|
|
@@ -149,8 +152,8 @@ async function loadTriggerConfig(cfg) {
|
|
|
149
152
|
retry = cfg?.retry;
|
|
150
153
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
151
154
|
permissionedAs = cfg?.permissioned_as;
|
|
152
|
-
selectedPermissionedAs =
|
|
153
|
-
preservePermissionedAs =
|
|
155
|
+
selectedPermissionedAs = cfg?.permissioned_as;
|
|
156
|
+
preservePermissionedAs = !!cfg?.permissioned_as;
|
|
154
157
|
}
|
|
155
158
|
async function loadTrigger(defaultConfig) {
|
|
156
159
|
if (defaultConfig) {
|
|
@@ -312,15 +315,14 @@ $effect(() => {
|
|
|
312
315
|
<Loader2 class="animate-spin" />
|
|
313
316
|
{/if}
|
|
314
317
|
{:else}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
{/if}
|
|
318
|
+
<PermissionedAsLine
|
|
319
|
+
{permissionedAs}
|
|
320
|
+
{path}
|
|
321
|
+
onPermissionedAsChange={(pa, preserve) => {
|
|
322
|
+
selectedPermissionedAs = pa
|
|
323
|
+
preservePermissionedAs = preserve
|
|
324
|
+
}}
|
|
325
|
+
/>
|
|
324
326
|
<div class="flex flex-col gap-4">
|
|
325
327
|
{#if description}
|
|
326
328
|
{@render description()}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
onUpdate
|
|
3
|
-
}
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
onUpdate?: (path?: string) => void;
|
|
3
|
+
};
|
|
4
|
+
declare const PostgresTriggerEditor: import("svelte").Component<$$ComponentProps, {
|
|
4
5
|
openEdit: (ePath: string, isFlow: boolean) => Promise<void>;
|
|
5
6
|
openNew: (is_flow: boolean, initial_script_path?: string, defaultValues?: Record<string, any>) => Promise<void>;
|
|
6
7
|
}, "">;
|