windmill-components 1.542.5 → 1.555.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/aiStore.d.ts +13 -0
- package/package/aiStore.js +70 -0
- package/package/common.d.ts +6 -2
- package/package/components/AIAgentLogViewer.svelte +1 -1
- package/package/components/AIProviderPicker.svelte +25 -8
- package/package/components/ArgEnum.svelte +17 -7
- package/package/components/ArgEnum.svelte.d.ts +1 -0
- package/package/components/ArgInput.svelte +257 -188
- package/package/components/ArgInput.svelte.d.ts +4 -1
- package/package/components/ArrayTypeNarrowing.svelte +38 -32
- package/package/components/AutoscalingEvents.svelte +21 -5
- package/package/components/AutoscalingEvents.svelte.d.ts +4 -18
- package/package/components/ChannelSelector.svelte +92 -18
- package/package/components/ChannelSelector.svelte.d.ts +2 -0
- package/package/components/ConnectionSection.svelte +12 -1
- package/package/components/DateTimeInput.svelte +8 -6
- package/package/components/DeployButton.svelte +1 -1
- package/package/components/Dev.svelte +24 -9
- package/package/components/Dev.svelte.d.ts +23 -1
- package/package/components/DisplayResult.svelte +36 -23
- package/package/components/DropdownV2.svelte +8 -2
- package/package/components/DropdownV2.svelte.d.ts +1 -0
- package/package/components/DynamicInput.svelte +10 -10
- package/package/components/EditableSchemaForm.svelte +28 -13
- package/package/components/Editor.svelte +2 -1
- package/package/components/EditorSettings.svelte +5 -5
- package/package/components/EditorSettings.svelte.d.ts +4 -18
- package/package/components/ErrorOrRecoveryHandler.svelte +14 -20
- package/package/components/FakeMonacoPlaceHolder.svelte +4 -2
- package/package/components/FakeMonacoPlaceHolder.svelte.d.ts +1 -0
- package/package/components/FieldHeader.svelte +5 -7
- package/package/components/FirstStepInputs.svelte +1 -1
- package/package/components/FlowHistoryJobPicker.svelte +3 -0
- package/package/components/FlowHistoryJobPicker.svelte.d.ts +1 -0
- package/package/components/FlowJobResult.svelte +5 -5
- package/package/components/FlowLogRow.svelte +2 -2
- package/package/components/FlowLogViewer.svelte +228 -57
- package/package/components/FlowLogViewer.svelte.d.ts +16 -5
- package/package/components/FlowLogViewerWrapper.svelte +56 -3
- package/package/components/FlowLogViewerWrapper.svelte.d.ts +4 -3
- package/package/components/FlowLoopIterationPreview.svelte +4 -4
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowMetadata.svelte +3 -4
- package/package/components/FlowMetadata.svelte.d.ts +4 -18
- package/package/components/FlowPlugConnect.svelte +8 -2
- package/package/components/FlowPlugConnect.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +121 -94
- package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
- package/package/components/FlowStatusViewer.svelte +63 -59
- package/package/components/FlowStatusViewer.svelte.d.ts +2 -2
- package/package/components/FlowStatusViewerInner.svelte +186 -94
- package/package/components/FlowStatusViewerInner.svelte.d.ts +10 -3
- package/package/components/FlowTimeline.svelte +110 -131
- package/package/components/FlowTimeline.svelte.d.ts +13 -4
- package/package/components/FlowTimelineBar.svelte +227 -0
- package/package/components/FlowTimelineBar.svelte.d.ts +24 -0
- package/package/components/FolderEditor.svelte +6 -7
- package/package/components/GroupEditor.svelte +148 -141
- package/package/components/GroupEditor.svelte.d.ts +5 -4
- package/package/components/InputTransformForm.svelte +193 -71
- package/package/components/InputTransformForm.svelte.d.ts +3 -0
- package/package/components/InputTransformSchemaForm.svelte +10 -5
- package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
- package/package/components/InstanceSetting.svelte +34 -51
- package/package/components/InstanceSettings.svelte +12 -21
- package/package/components/JobArgs.svelte +15 -16
- package/package/components/JobArgs.svelte.d.ts +4 -18
- package/package/components/JobLoader.svelte +23 -42
- package/package/components/JobLoader.svelte.d.ts +2 -0
- package/package/components/JobStatus.svelte +1 -1
- package/package/components/JobStatus.svelte.d.ts +4 -18
- package/package/components/JsonEditor.svelte +18 -9
- package/package/components/JsonEditor.svelte.d.ts +1 -1
- package/package/components/JsonInputs.svelte +1 -1
- package/package/components/ModulePreviewForm.svelte +23 -19
- package/package/components/ModulePreviewResultViewer.svelte +1 -7
- package/package/components/NextcloudSetting.svelte +6 -1
- package/package/components/NumberTypeNarrowing.svelte +32 -16
- package/package/components/ObjectStoreConfigSettings.svelte +27 -19
- package/package/components/Password.svelte +7 -11
- package/package/components/Password.svelte.d.ts +5 -20
- package/package/components/PasswordArgInput.svelte +35 -15
- package/package/components/PasswordArgInput.svelte.d.ts +4 -18
- package/package/components/Path.svelte +2 -8
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/QueuePosition.svelte +6 -2
- package/package/components/ResourceEditor.svelte +3 -10
- package/package/components/ResourcePicker.svelte +85 -72
- package/package/components/ResourcePicker.svelte.d.ts +2 -0
- package/package/components/RunChart.svelte +1 -1
- package/package/components/RunForm.svelte +16 -21
- package/package/components/S3ArrayHelperButton.svelte +18 -0
- package/package/components/S3ArrayHelperButton.svelte.d.ts +9 -0
- package/package/components/S3FilePicker.svelte +1 -1
- package/package/components/SchemaForm.svelte +18 -10
- package/package/components/SchemaForm.svelte.d.ts +7 -1
- package/package/components/SchemaFormWithArgPicker.svelte +1 -1
- package/package/components/ScriptBuilder.svelte +2 -2
- package/package/components/ScriptEditor.svelte +9 -9
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ShareModal.svelte +4 -4
- package/package/components/SimpleEditor.svelte +6 -2
- package/package/components/SimpleEditor.svelte.d.ts +3 -0
- package/package/components/StringTypeNarrowing.svelte +44 -25
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/SuperadminSettingsInner.svelte +3 -3
- package/package/components/TeamSelector.svelte +83 -37
- package/package/components/TeamSelector.svelte.d.ts +0 -1
- package/package/components/TemplateEditor.svelte +18 -9
- package/package/components/Toast.svelte +2 -7
- package/package/components/Toast.svelte.d.ts +4 -18
- package/package/components/Toggle.svelte +17 -7
- package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
- package/package/components/WorkerGroup.svelte +2 -14
- package/package/components/apps/components/buttons/AppButton.svelte +66 -38
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -2
- package/package/components/apps/components/display/dbtable/queries/insert.js +2 -1
- package/package/components/apps/components/display/dbtable/utils.d.ts +8 -8
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +13 -4
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +2 -2
- package/package/components/apps/components/display/table/utils.js +14 -4
- package/package/components/apps/components/helpers/RefreshButton.svelte +5 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -5
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -1
- package/package/components/apps/components/layout/AppTabs.svelte +116 -71
- package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
- package/package/components/apps/editor/AppEditorHeader.svelte +33 -271
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +233 -0
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +18 -0
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +47 -0
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +8 -0
- package/package/components/apps/editor/GridEditor.svelte +7 -2
- package/package/components/apps/editor/appDeploy.svelte.d.ts +1 -0
- package/package/components/apps/editor/appDeploy.svelte.js +6 -0
- package/package/components/apps/editor/appUtils.d.ts +1 -0
- package/package/components/apps/editor/appUtils.js +30 -1
- package/package/components/apps/editor/component/ComponentInner.svelte +1 -0
- package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -1
- package/package/components/apps/editor/component/components.d.ts +19 -4
- package/package/components/apps/editor/component/components.js +23 -3
- package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -4
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +2 -0
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +19 -1
- package/package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +3 -1
- package/package/components/apps/editor/settingsPanel/GridTabHidden.svelte +52 -0
- package/package/components/apps/editor/settingsPanel/GridTabHidden.svelte.d.ts +9 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +58 -8
- package/package/components/auditLogs/AuditLogsFilters.svelte +7 -1
- package/package/components/auditLogs/AuditLogsTable.svelte +17 -7
- package/package/components/auditLogs/AuditLogsTable.svelte.d.ts +1 -0
- package/package/components/common/CloseButton.svelte +2 -2
- package/package/components/common/CloseButton.svelte.d.ts +1 -0
- package/package/components/common/ResizeTransitionWrapper.svelte +39 -0
- package/package/components/common/ResizeTransitionWrapper.svelte.d.ts +12 -0
- package/package/components/common/badge/CountBadge.svelte +29 -0
- package/package/components/common/badge/CountBadge.svelte.d.ts +8 -0
- package/package/components/common/button/Button.svelte +1 -0
- package/package/components/common/button/ConnectionButton.svelte +6 -1
- package/package/components/common/button/ConnectionButton.svelte.d.ts +2 -0
- package/package/components/common/button/RefreshButton.svelte +8 -4
- package/package/components/common/button/RefreshButton.svelte.d.ts +3 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte +1 -1
- package/package/components/common/fileInput/FileInput.svelte +7 -6
- package/package/components/common/fileUpload/S3ArgInput.svelte +11 -9
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +1 -0
- package/package/components/common/layout/List.svelte +3 -7
- package/package/components/common/layout/List.svelte.d.ts +7 -29
- package/package/components/common/popup/PopupV2.svelte +14 -25
- package/package/components/common/popup/PopupV2.svelte.d.ts +4 -2
- package/package/components/common/table/ScriptRow.svelte +22 -2
- package/package/components/common/toggleButton-v2/ToggleButton.svelte +17 -26
- package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +16 -30
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +3 -3
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
- package/package/components/copilot/CodeCompletionStatus.svelte +2 -1
- package/package/components/copilot/CronGen.svelte +1 -1
- package/package/components/copilot/FlowCopilotInputsModal.svelte +26 -23
- package/package/components/copilot/FlowInlineScriptAIButton.svelte +2 -2
- package/package/components/copilot/IteratorGen.svelte +30 -25
- package/package/components/copilot/IteratorGen.svelte.d.ts +8 -7
- package/package/components/copilot/MetadataGen.svelte +4 -3
- package/package/components/copilot/PredicateGen.svelte +15 -12
- package/package/components/copilot/PredicateGen.svelte.d.ts +5 -4
- package/package/components/copilot/RegexGen.svelte +1 -1
- package/package/components/copilot/ScriptFix.svelte +1 -1
- package/package/components/copilot/ScriptGen.svelte +2 -1
- package/package/components/copilot/StepGenQuick.svelte +15 -16
- package/package/components/copilot/StepGenQuick.svelte.d.ts +14 -13
- package/package/components/copilot/StepInputGen.svelte +50 -36
- package/package/components/copilot/StepInputGen.svelte.d.ts +13 -10
- package/package/components/copilot/StepInputsGen.svelte +18 -19
- package/package/components/copilot/StepInputsGen.svelte.d.ts +4 -18
- package/package/components/copilot/autocomplete/Autocompletor.js +1 -1
- package/package/components/copilot/autocomplete/request.js +1 -1
- package/package/components/copilot/chat/AIChat.svelte +2 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +5 -3
- package/package/components/copilot/chat/AiChatLayout.svelte +2 -1
- package/package/components/copilot/chat/ProviderModelSelector.svelte +11 -10
- package/package/components/copilot/chat/ProviderModelSelector.svelte.d.ts +2 -17
- package/package/components/copilot/chat/flow/FlowAIButton.svelte +1 -1
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -2
- package/package/components/copilot/chat/script/core.d.ts +4 -4
- package/package/components/copilot/chat/script/core.js +95 -35
- package/package/components/copilot/chat/shared.js +2 -1
- package/package/components/copilot/lib.d.ts +1 -0
- package/package/components/copilot/lib.js +7 -3
- package/package/components/custom_ui.d.ts +1 -0
- package/package/components/details/DetailPageLayout.svelte +3 -2
- package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
- package/package/components/flows/CreateActionsFlow.svelte +1 -1
- package/package/components/flows/FlowChatInterface.svelte +404 -0
- package/package/components/flows/FlowChatInterface.svelte.d.ts +19 -0
- package/package/components/flows/FlowChatMessage.svelte +41 -0
- package/package/components/flows/FlowChatMessage.svelte.d.ts +9 -0
- package/package/components/flows/FlowConversationsSidebar.svelte +213 -0
- package/package/components/flows/FlowConversationsSidebar.svelte.d.ts +15 -0
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -1
- package/package/components/flows/FlowModuleIcon.svelte +10 -10
- package/package/components/flows/FlowProgressBar.svelte +16 -16
- package/package/components/flows/FlowProgressBar.svelte.d.ts +7 -22
- package/package/components/flows/common/FlowCard.svelte +10 -2
- package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCardHeader.svelte +2 -1
- package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
- package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -4
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowInput.svelte +381 -259
- package/package/components/flows/content/FlowInput.svelte.d.ts +1 -1
- package/package/components/flows/content/FlowInputsQuick.svelte +56 -34
- package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +3 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +29 -11
- package/package/components/flows/flowInfers.d.ts +60 -0
- package/package/components/flows/flowInfers.js +72 -40
- package/package/components/flows/{flowStore.d.ts → flowStore.svelte.d.ts} +5 -1
- package/package/components/flows/header/FlowPreviewButtons.svelte +1 -1
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +4 -2
- package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -2
- package/package/components/flows/map/FlowStickyNode.svelte +2 -2
- package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
- package/package/components/flows/map/InsertModuleButton.svelte +8 -15
- package/package/components/flows/map/InsertModuleButton.svelte.d.ts +4 -4
- package/package/components/flows/map/InsertModuleInner.svelte +19 -20
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +2 -2
- package/package/components/flows/map/MapItem.svelte +1 -1
- package/package/components/flows/map/VirtualItem.svelte +1 -2
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +43 -52
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +2 -1
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +41 -26
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +1 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +2 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -15
- package/package/components/git_sync/DetectionFlow.svelte +33 -44
- package/package/components/git_sync/DetectionFlow.svelte.d.ts +1 -0
- package/package/components/git_sync/GitSyncContext.svelte.d.ts +22 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +145 -5
- package/package/components/git_sync/GitSyncModeDisplay.svelte +14 -0
- package/package/components/git_sync/GitSyncModeDisplay.svelte.d.ts +9 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +365 -253
- package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +10 -1
- package/package/components/git_sync/GitSyncSection.svelte +134 -14
- package/package/components/git_sync/PullWorkspaceModal.svelte +24 -32
- package/package/components/git_sync/PushWorkspaceModal.svelte +24 -32
- package/package/components/graph/FlowGraphV2.svelte +2 -1
- package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
- package/package/components/graph/graphBuilder.svelte.d.ts +2 -0
- package/package/components/graph/graphBuilder.svelte.js +1 -0
- package/package/components/graph/model.d.ts +5 -5
- package/package/components/graph/renderers/edges/BaseEdge.svelte +1 -0
- package/package/components/graph/renderers/edges/EmptyEdge.svelte +3 -10
- package/package/components/graph/renderers/edges/EmptyEdge.svelte.d.ts +4 -18
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +2 -2
- package/package/components/graph/renderers/nodes/InputNode.svelte +13 -2
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +5 -10
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -27
- package/package/components/home/ItemsList.svelte +1 -1
- package/package/components/instanceSettings.js +17 -0
- package/package/components/jobs/JobProgressBar.svelte +27 -21
- package/package/components/jobs/JobProgressBar.svelte.d.ts +9 -24
- package/package/components/meltComponents/MenuSingleItem.svelte +3 -8
- package/package/components/meltComponents/MenuSingleItem.svelte.d.ts +0 -3
- package/package/components/meltComponents/Popover.svelte +3 -2
- package/package/components/meltComponents/Popover.svelte.d.ts +1 -0
- package/package/components/meltComponents/Tooltip.svelte +1 -1
- package/package/components/progressBar/ProgressBar.svelte +39 -53
- package/package/components/progressBar/ProgressBar.svelte.d.ts +11 -26
- package/package/components/raw_apps/FileEditorIcon.svelte +1 -1
- package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +4 -18
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +2 -8
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +4 -18
- package/package/components/raw_apps/RawAppEditor.svelte +6 -7
- package/package/components/raw_apps/RawAppEditorHeader.svelte +48 -301
- package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +18 -19
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +10 -16
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +13 -13
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +8 -11
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -2
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +0 -1
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +7 -13
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +8 -8
- package/package/components/raw_apps/RawAppPreview.svelte +3 -7
- package/package/components/raw_apps/RawAppPreview.svelte.d.ts +5 -19
- package/package/components/raw_apps/utils.d.ts +1 -1
- package/package/components/raw_apps/utils.js +3 -3
- package/package/components/runs/JobsLoader.svelte +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -1
- package/package/components/runs/RunOption.svelte +2 -2
- package/package/components/runs/RunsFilter.svelte +15 -12
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/schema/AddPropertyV2.svelte +7 -4
- package/package/components/schema/EditableSchemaDrawer.svelte +19 -18
- package/package/components/schema/FlowPropertyEditor.svelte +9 -2
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +22 -26
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/SchemaFormDND.svelte +3 -2
- package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
- package/package/components/select/DraggableTags.svelte +2 -2
- package/package/components/select/MultiSelect.svelte +15 -9
- package/package/components/select/MultiSelect.svelte.d.ts +1 -0
- package/package/components/select/Select.svelte +12 -5
- package/package/components/select/Select.svelte.d.ts +11 -0
- package/package/components/select/SelectDropdown.svelte +98 -46
- package/package/components/select/SelectDropdown.svelte.d.ts +10 -0
- package/package/components/select/utils.svelte.js +2 -0
- package/package/components/settings/CreateToken.svelte +76 -49
- package/package/components/settings/WorkspaceUserSettings.svelte +111 -17
- package/package/components/sidebar/CriticalAlertTable.svelte +2 -1
- package/package/components/sidebar/Linkify.svelte +14 -0
- package/package/components/sidebar/Linkify.svelte.d.ts +5 -0
- package/package/components/sidebar/MenuLink.svelte +2 -1
- package/package/components/sidebar/MenuLink.svelte.d.ts +1 -0
- package/package/components/sidebar/SidebarContent.svelte +27 -27
- package/package/components/sidebar/WorkspaceMenu.svelte +8 -3
- package/package/components/table/Cell.svelte +7 -14
- package/package/components/table/Cell.svelte.d.ts +13 -35
- package/package/components/table/tableUtils.js +1 -1
- package/package/components/text_input/TextInput.svelte +30 -0
- package/package/components/text_input/TextInput.svelte.d.ts +17 -0
- package/package/components/triggers/AddTriggersButton.svelte +1 -0
- package/package/components/triggers/TriggersEditor.svelte +11 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +28 -5
- package/package/components/triggers/gcp/utils.js +1 -0
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +1 -0
- package/package/components/triggers/triggers.svelte.d.ts +1 -1
- package/package/components/triggers/triggers.svelte.js +8 -4
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +143 -63
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +22 -0
- package/package/components/triggers/websocket/utils.js +1 -0
- package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +2 -2
- package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +3 -0
- package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +49 -17
- package/package/components/tutorials/Tutorial.svelte +9 -0
- package/package/components/tutorials/Tutorial.svelte.d.ts +1 -0
- package/package/components/tutorials/app/AppTutorial.svelte +41 -57
- package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte +3 -5
- package/package/components/tutorials/app/ConnectionTutorial.svelte +2 -2
- package/package/components/tutorials/utils.js +2 -154
- package/package/components/vscode.js +16 -8
- package/package/components/workspaceSettings/AISettings.svelte +12 -5
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/CreateWorkspace.svelte +2 -2
- package/package/components/workspaceSettings/DucklakeSettings.svelte +64 -7
- package/package/components/workspaceSettings/ModelTokenLimits.svelte +165 -0
- package/package/components/workspaceSettings/ModelTokenLimits.svelte.d.ts +8 -0
- package/package/components/workspaceSettings/StorageSettings.svelte +147 -77
- package/package/editorUtils.d.ts +1 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +223 -17
- package/package/gen/schemas.gen.js +226 -17
- package/package/gen/services.gen.d.ts +221 -27
- package/package/gen/services.gen.js +440 -48
- package/package/gen/types.gen.d.ts +1067 -218
- package/package/hubPaths.json +2 -1
- package/package/script_helpers.js +5 -5
- package/package/services/JobManager.js +14 -9
- package/package/stores.d.ts +4 -12
- package/package/stores.js +5 -65
- package/package/timelineCompute.svelte.d.ts +21 -0
- package/package/timelineCompute.svelte.js +113 -0
- package/package/toast.js +2 -1
- package/package/utils.d.ts +16 -8
- package/package/utils.js +65 -12
- package/package/workspace_settings.d.ts +13 -8
- package/package/workspace_settings.js +46 -11
- package/package.json +4 -4
- /package/package/components/flows/{flowStore.js → flowStore.svelte.js} +0 -0
|
@@ -6,7 +6,8 @@ import CloseButton from '../common/CloseButton.svelte';
|
|
|
6
6
|
import DraggableTags from './DraggableTags.svelte';
|
|
7
7
|
import { Search } from 'lucide-svelte';
|
|
8
8
|
import { twMerge } from 'tailwind-merge';
|
|
9
|
-
|
|
9
|
+
import TextInput, { inputBorderClass } from '../text_input/TextInput.svelte';
|
|
10
|
+
let { items, placeholder = 'Select items', value = $bindable(), class: className = '', style, listAutoWidth = true, disabled = false, disablePortal = false, createText, reorderable = true, noItemsMsg, selectedUlClass = '', placeholderClass = '', allowClear = true, hideMainClearBtn = false, onOpen, groupBy, sortBy, onCreateItem } = $props();
|
|
10
11
|
let filterText = $state('');
|
|
11
12
|
let open = $state(false);
|
|
12
13
|
let wrapperEl = $state();
|
|
@@ -44,7 +45,8 @@ function clearValue() {
|
|
|
44
45
|
<div
|
|
45
46
|
bind:this={wrapperEl}
|
|
46
47
|
class={twMerge(
|
|
47
|
-
'relative min-h-
|
|
48
|
+
'relative min-h-10 flex items-center w-full bg-surface-secondary !text-secondary rounded-md',
|
|
49
|
+
inputBorderClass({ forceFocus: open && !disabled }),
|
|
48
50
|
disabled ? 'pointer-events-none' : '',
|
|
49
51
|
open && !disabled ? 'open' : '',
|
|
50
52
|
disabled ? 'disabled' : '',
|
|
@@ -58,7 +60,9 @@ function clearValue() {
|
|
|
58
60
|
<!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
|
|
59
61
|
|
|
60
62
|
{#if value.length === 0}
|
|
61
|
-
<span
|
|
63
|
+
<span
|
|
64
|
+
class={twMerge('text-sm ml-4 h-full flex items-center flex-1 text-hint', placeholderClass)}
|
|
65
|
+
>
|
|
62
66
|
{placeholder}
|
|
63
67
|
</span>
|
|
64
68
|
{:else}
|
|
@@ -79,10 +83,10 @@ function clearValue() {
|
|
|
79
83
|
/>
|
|
80
84
|
</ul>
|
|
81
85
|
{/if}
|
|
82
|
-
{#if allowClear}
|
|
86
|
+
{#if allowClear && !hideMainClearBtn && !!value?.length}
|
|
83
87
|
<CloseButton
|
|
84
88
|
noBg
|
|
85
|
-
class="mr-1 remove-all"
|
|
89
|
+
class="mr-1 remove-all bg-transparent text-hint"
|
|
86
90
|
small
|
|
87
91
|
on:close={(e) => (clearValue(), e.stopPropagation())}
|
|
88
92
|
/>
|
|
@@ -108,12 +112,14 @@ function clearValue() {
|
|
|
108
112
|
{#snippet header()}
|
|
109
113
|
{#if processedItems.length - value.length > 0 || onCreateItem}
|
|
110
114
|
<div class="mx-2 mb-1 mt-2 flex items-center relative">
|
|
111
|
-
<
|
|
115
|
+
<TextInput
|
|
112
116
|
bind:this={searchInputEl}
|
|
113
117
|
bind:value={filterText}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
118
|
+
inputProps={{
|
|
119
|
+
onblur: (e) => (e.preventDefault(), searchInputEl?.focus()),
|
|
120
|
+
placeholder: 'Search...'
|
|
121
|
+
}}
|
|
122
|
+
class="!pr-7 !bg-surface"
|
|
117
123
|
/>
|
|
118
124
|
<Search size={16} class="absolute right-2 text-tertiary" />
|
|
119
125
|
</div>
|
|
@@ -6,7 +6,8 @@ import { untrack } from 'svelte';
|
|
|
6
6
|
import { getLabel, processItems } from './utils.svelte';
|
|
7
7
|
import SelectDropdown from './SelectDropdown.svelte';
|
|
8
8
|
import { deepEqual } from 'fast-equals';
|
|
9
|
-
|
|
9
|
+
import { inputBaseClass, inputBorderClass } from '../text_input/TextInput.svelte';
|
|
10
|
+
let { items, placeholder = 'Please select', value = $bindable(), filterText = $bindable(''), class: className = '', clearable = false, listAutoWidth = true, disabled: _disabled = false, containerStyle = '', inputClass = '', disablePortal = false, loading = false, error = false, autofocus, RightIcon, createText, noItemsMsg, open = $bindable(false), id, itemLabelWrapperClasses, itemButtonWrapperClasses, groupBy, sortBy, onFocus, onBlur, onClear, onCreateItem, startSnippet, endSnippet, bottomSnippet } = $props();
|
|
10
11
|
let disabled = $derived(_disabled || (loading && !value));
|
|
11
12
|
let inputEl = $state();
|
|
12
13
|
let processedItems = $derived.by(() => {
|
|
@@ -54,7 +55,7 @@ function clearValue() {
|
|
|
54
55
|
</div>
|
|
55
56
|
{:else if clearable && !disabled && value}
|
|
56
57
|
<div class="absolute z-10 right-2 h-full flex items-center">
|
|
57
|
-
<CloseButton class="text-
|
|
58
|
+
<CloseButton class="bg-transparent text-hint" noBg small on:close={clearValue} />
|
|
58
59
|
</div>
|
|
59
60
|
{:else if RightIcon}
|
|
60
61
|
<div class="absolute z-10 right-2 h-full flex items-center">
|
|
@@ -72,10 +73,12 @@ function clearValue() {
|
|
|
72
73
|
: (valueEntry?.label ?? getLabel({ value }) ?? placeholder)}
|
|
73
74
|
style={containerStyle}
|
|
74
75
|
class={twMerge(
|
|
75
|
-
|
|
76
|
+
inputBaseClass,
|
|
77
|
+
inputBorderClass({ error, forceFocus: open }),
|
|
78
|
+
'w-full',
|
|
76
79
|
open ? '' : 'cursor-pointer',
|
|
77
|
-
!loading && value ? '!placeholder-
|
|
78
|
-
(clearable || RightIcon) && !disabled && value ? '
|
|
80
|
+
!loading && value && !disabled ? '!placeholder-secondary' : 'placeholder-hint',
|
|
81
|
+
(clearable || RightIcon) && !disabled && value ? 'pr-8' : '',
|
|
79
82
|
inputClass ?? ''
|
|
80
83
|
)}
|
|
81
84
|
autocomplete="off"
|
|
@@ -94,6 +97,10 @@ function clearValue() {
|
|
|
94
97
|
getInputRect={inputEl && (() => inputEl!.getBoundingClientRect())}
|
|
95
98
|
{listAutoWidth}
|
|
96
99
|
{noItemsMsg}
|
|
100
|
+
{itemLabelWrapperClasses}
|
|
101
|
+
{itemButtonWrapperClasses}
|
|
97
102
|
{startSnippet}
|
|
103
|
+
{endSnippet}
|
|
104
|
+
{bottomSnippet}
|
|
98
105
|
/>
|
|
99
106
|
</div>
|
|
@@ -18,12 +18,15 @@ declare function $$render<Item extends {
|
|
|
18
18
|
inputClass?: string;
|
|
19
19
|
disablePortal?: boolean;
|
|
20
20
|
loading?: boolean;
|
|
21
|
+
error?: boolean;
|
|
21
22
|
autofocus?: boolean;
|
|
22
23
|
RightIcon?: any;
|
|
23
24
|
createText?: string;
|
|
24
25
|
noItemsMsg?: string;
|
|
25
26
|
open?: boolean;
|
|
26
27
|
id?: string;
|
|
28
|
+
itemLabelWrapperClasses?: string;
|
|
29
|
+
itemButtonWrapperClasses?: string;
|
|
27
30
|
groupBy?: (item: Item) => string;
|
|
28
31
|
sortBy?: (a: Item, b: Item) => number;
|
|
29
32
|
onFocus?: () => void;
|
|
@@ -32,6 +35,14 @@ declare function $$render<Item extends {
|
|
|
32
35
|
onCreateItem?: (value: string) => void;
|
|
33
36
|
startSnippet?: Snippet<[{
|
|
34
37
|
item: ProcessedItem<Item["value"]>;
|
|
38
|
+
close: () => void;
|
|
39
|
+
}]>;
|
|
40
|
+
endSnippet?: Snippet<[{
|
|
41
|
+
item: ProcessedItem<Item["value"]>;
|
|
42
|
+
close: () => void;
|
|
43
|
+
}]>;
|
|
44
|
+
bottomSnippet?: Snippet<[{
|
|
45
|
+
close: () => void;
|
|
35
46
|
}]>;
|
|
36
47
|
};
|
|
37
48
|
exports: {};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import ConditionalPortal from '../common/drawer/ConditionalPortal.svelte';
|
|
3
3
|
import { untrack } from 'svelte';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
|
-
let { processedItems: _processedItems, value, filterText, listAutoWidth = true, disabled, disablePortal = false, open, noItemsMsg = 'No items found', class: className = '', ulClass = '', header, getInputRect, onSelectValue, startSnippet } = $props();
|
|
5
|
+
let { processedItems: _processedItems, value, filterText, listAutoWidth = true, disabled, disablePortal = false, open, noItemsMsg = 'No items found', class: className = '', ulClass = '', itemLabelWrapperClasses = '', itemButtonWrapperClasses = '', header, getInputRect, onSelectValue, startSnippet, endSnippet, bottomSnippet } = $props();
|
|
6
6
|
let processedItems = $derived(!filterText
|
|
7
7
|
? _processedItems
|
|
8
8
|
: _processedItems?.filter((item) => item.__is_create || item?.label?.toLowerCase().includes(filterText?.toLowerCase())));
|
|
@@ -11,15 +11,15 @@ let dropdownPos = $state(computeDropdownPos());
|
|
|
11
11
|
let keyArrowPos = $state();
|
|
12
12
|
function computeDropdownPos() {
|
|
13
13
|
if (!getInputRect || !listEl)
|
|
14
|
-
return { width: 0, x: 0, y: 0 };
|
|
14
|
+
return { width: 0, height: 0, x: 0, y: 0, isBelow: true };
|
|
15
15
|
let inputR = getInputRect();
|
|
16
16
|
const listR = listEl.getBoundingClientRect();
|
|
17
|
-
const
|
|
17
|
+
const isBelow = inputR.y + inputR.height + listR.height <= window.innerHeight;
|
|
18
18
|
let [x, y] = disablePortal ? [0, 0] : [inputR.x, inputR.y];
|
|
19
|
-
if (
|
|
20
|
-
return { width: inputR.width, x: x, y: y + inputR.height };
|
|
19
|
+
if (isBelow)
|
|
20
|
+
return { width: inputR.width, height: listR.height, x: x, y: y + inputR.height, isBelow };
|
|
21
21
|
else {
|
|
22
|
-
return { width: inputR.width, x: x, y: y - listR.height };
|
|
22
|
+
return { width: inputR.width, height: listR.height, x: x, y: y - listR.height, isBelow };
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
$effect(() => {
|
|
@@ -38,11 +38,47 @@ $effect(() => {
|
|
|
38
38
|
[open, processedItems];
|
|
39
39
|
untrack(() => (keyArrowPos = open && filterText ? 0 : undefined));
|
|
40
40
|
});
|
|
41
|
+
// We do not want to render the dropdown when it is closed for performance reasons
|
|
42
|
+
// but we want to keep it in the DOM for a short time to allow for transitions to finish
|
|
43
|
+
//
|
|
44
|
+
// We do not use Svelte transitions because they can not animate in the opposite direction
|
|
45
|
+
// when the dropdown is opens above the input
|
|
46
|
+
// Also CSS transitions are smoother because they do not rely on JS / animation frames
|
|
47
|
+
let uiState = $state({ domExists: open, visible: open, timeout: null });
|
|
48
|
+
let initial = true;
|
|
49
|
+
$effect(() => {
|
|
50
|
+
let isOpen = open && !disabled;
|
|
51
|
+
untrack(() => {
|
|
52
|
+
if (initial) {
|
|
53
|
+
initial = false;
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (uiState.timeout)
|
|
57
|
+
clearTimeout(uiState.timeout);
|
|
58
|
+
uiState = {
|
|
59
|
+
domExists: true,
|
|
60
|
+
visible: !isOpen,
|
|
61
|
+
timeout: setTimeout(() => {
|
|
62
|
+
if (isOpen) {
|
|
63
|
+
uiState.visible = true;
|
|
64
|
+
uiState.timeout = null;
|
|
65
|
+
}
|
|
66
|
+
else if (!isOpen) {
|
|
67
|
+
uiState.visible = false;
|
|
68
|
+
uiState.timeout = setTimeout(() => {
|
|
69
|
+
uiState.domExists = false;
|
|
70
|
+
uiState.timeout = null;
|
|
71
|
+
}, 500); // leave time for transition to finish
|
|
72
|
+
}
|
|
73
|
+
}, 0) // We need the height to be 0 then change immediately for the transition to play
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
});
|
|
41
77
|
</script>
|
|
42
78
|
|
|
43
79
|
<svelte:window
|
|
44
80
|
on:keydown={(e) => {
|
|
45
|
-
if (!
|
|
81
|
+
if (!uiState.visible || !processedItems?.length) return
|
|
46
82
|
if (e.key === 'ArrowUp' && keyArrowPos !== undefined && processedItems.length > 0) {
|
|
47
83
|
keyArrowPos = keyArrowPos <= 0 ? undefined : keyArrowPos - 1
|
|
48
84
|
} else if (e.key === 'ArrowDown') {
|
|
@@ -62,55 +98,71 @@ $effect(() => {
|
|
|
62
98
|
/>
|
|
63
99
|
|
|
64
100
|
<ConditionalPortal condition={!disablePortal} name="select-dropdown-portal">
|
|
65
|
-
{#if
|
|
101
|
+
{#if uiState.domExists}
|
|
66
102
|
<div
|
|
67
103
|
class={twMerge(
|
|
68
104
|
disablePortal ? 'absolute' : 'fixed',
|
|
69
|
-
'
|
|
105
|
+
'z-[5001] text-tertiary text-sm select-none',
|
|
106
|
+
dropdownPos.isBelow ? '' : 'flex flex-col justify-end',
|
|
107
|
+
uiState.visible ? '' : 'pointer-events-none',
|
|
70
108
|
className
|
|
71
109
|
)}
|
|
72
110
|
style="{`top: ${dropdownPos.y}px; left: ${dropdownPos.x}px;`} {listAutoWidth
|
|
73
|
-
? `min-width: ${dropdownPos.width}px;`
|
|
111
|
+
? `min-width: ${dropdownPos.width}px; height: ${dropdownPos.height}px;`
|
|
74
112
|
: ''}"
|
|
75
|
-
bind:this={listEl}
|
|
76
113
|
>
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
{
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
)}
|
|
89
|
-
>
|
|
90
|
-
{item.__select_group}
|
|
91
|
-
</li>
|
|
114
|
+
<div
|
|
115
|
+
class={twMerge(
|
|
116
|
+
'overflow-clip rounded-md bg-surface-secondary shadow-lg transition-height',
|
|
117
|
+
dropdownPos.isBelow ? '' : 'flex flex-col justify-end'
|
|
118
|
+
)}
|
|
119
|
+
style="height: {uiState.visible ? dropdownPos.height : 0}px;"
|
|
120
|
+
>
|
|
121
|
+
<div bind:this={listEl} class="flex flex-col max-h-64 border rounded-md overflow-clip">
|
|
122
|
+
{@render header?.()}
|
|
123
|
+
{#if processedItems?.length === 0}
|
|
124
|
+
<div class="py-8 px-4 text-center text-primary">{noItemsMsg}</div>
|
|
92
125
|
{/if}
|
|
93
|
-
<
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
>
|
|
105
|
-
{@render startSnippet?.({ item })}
|
|
106
|
-
{item.label || '\xa0'}
|
|
107
|
-
{#if item.subtitle}
|
|
108
|
-
<div class="text-xs text-tertiary">{item.subtitle}</div>
|
|
126
|
+
<ul class={twMerge('flex-1 overflow-y-auto flex flex-col', ulClass)}>
|
|
127
|
+
{#each processedItems ?? [] as item, itemIndex}
|
|
128
|
+
{#if (item.__select_group && itemIndex === 0) || processedItems?.[itemIndex - 1]?.__select_group !== item.__select_group}
|
|
129
|
+
<li
|
|
130
|
+
class={twMerge(
|
|
131
|
+
'mx-4 pb-1 mb-2 text-xs font-semibold text-primary border-b',
|
|
132
|
+
itemIndex === 0 ? 'mt-3' : 'mt-6'
|
|
133
|
+
)}
|
|
134
|
+
>
|
|
135
|
+
{item.__select_group}
|
|
136
|
+
</li>
|
|
109
137
|
{/if}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
138
|
+
<li>
|
|
139
|
+
<button
|
|
140
|
+
class={twMerge(
|
|
141
|
+
'py-2 px-4 w-full font-normal text-left text-primary',
|
|
142
|
+
itemIndex === keyArrowPos ? 'bg-surface-hover' : '',
|
|
143
|
+
item.value === value ? 'bg-surface-selected' : 'hover:bg-surface-hover',
|
|
144
|
+
itemButtonWrapperClasses
|
|
145
|
+
)}
|
|
146
|
+
onclick={(e) => {
|
|
147
|
+
e.stopImmediatePropagation()
|
|
148
|
+
onSelectValue(item)
|
|
149
|
+
}}
|
|
150
|
+
>
|
|
151
|
+
{@render startSnippet?.({ item, close: () => (open = false) })}
|
|
152
|
+
<span class={itemLabelWrapperClasses}>
|
|
153
|
+
{item.label || '\xa0'}
|
|
154
|
+
</span>
|
|
155
|
+
{@render endSnippet?.({ item, close: () => (open = false) })}
|
|
156
|
+
{#if item.subtitle}
|
|
157
|
+
<div class="text-xs text-tertiary">{item.subtitle}</div>
|
|
158
|
+
{/if}
|
|
159
|
+
</button>
|
|
160
|
+
</li>
|
|
161
|
+
{/each}
|
|
162
|
+
</ul>
|
|
163
|
+
{@render bottomSnippet?.({ close: () => (open = false) })}
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
114
166
|
</div>
|
|
115
167
|
{/if}
|
|
116
168
|
</ConditionalPortal>
|
|
@@ -12,11 +12,21 @@ declare function $$render<T>(): {
|
|
|
12
12
|
noItemsMsg?: string;
|
|
13
13
|
class?: string;
|
|
14
14
|
ulClass?: string;
|
|
15
|
+
itemLabelWrapperClasses?: string;
|
|
16
|
+
itemButtonWrapperClasses?: string;
|
|
15
17
|
header?: Snippet;
|
|
16
18
|
getInputRect?: () => DOMRect;
|
|
17
19
|
onSelectValue: (item: ProcessedItem<T>) => void;
|
|
18
20
|
startSnippet?: Snippet<[{
|
|
19
21
|
item: ProcessedItem<T>;
|
|
22
|
+
close: () => void;
|
|
23
|
+
}]>;
|
|
24
|
+
endSnippet?: Snippet<[{
|
|
25
|
+
item: ProcessedItem<T>;
|
|
26
|
+
close: () => void;
|
|
27
|
+
}]>;
|
|
28
|
+
bottomSnippet?: Snippet<[{
|
|
29
|
+
close: () => void;
|
|
20
30
|
}]>;
|
|
21
31
|
};
|
|
22
32
|
exports: {};
|
|
@@ -11,7 +11,11 @@ import TokenDisplay from './TokenDisplay.svelte';
|
|
|
11
11
|
import ScopeSelector from './ScopeSelector.svelte';
|
|
12
12
|
import Alert from '../common/alert/Alert.svelte';
|
|
13
13
|
import FolderPicker from '../FolderPicker.svelte';
|
|
14
|
+
import TextInput from '../text_input/TextInput.svelte';
|
|
15
|
+
import Select from '../select/Select.svelte';
|
|
14
16
|
let { showMcpMode = false, defaultNewTokenWorkspace, scopes, onTokenCreated, newTokenLabel = $bindable(undefined) } = $props();
|
|
17
|
+
// MCP clients do not allow names longer than 60 characters, here we use 55 because final tool name server side will add ~5 characters
|
|
18
|
+
const MAX_PATH_LENGTH = 55;
|
|
15
19
|
let newToken = $state(undefined);
|
|
16
20
|
let newMcpToken = $state(undefined);
|
|
17
21
|
let newTokenExpiration = $state(undefined);
|
|
@@ -83,8 +87,15 @@ async function createToken(mcpMode = false) {
|
|
|
83
87
|
}
|
|
84
88
|
const workspaces = $derived(ensureCurrentWorkspaceIncluded($userWorkspaces, $workspaceStore));
|
|
85
89
|
const mcpBaseUrl = $derived(`${window.location.origin}/api/mcp/w/${newTokenWorkspace}/sse?token=`);
|
|
86
|
-
const warning = $derived(newMcpScope === 'favorites'
|
|
90
|
+
const warning = $derived(newMcpScope === 'favorites'
|
|
91
|
+
? `You do not have any favorite scripts or flows. You can favorite some scripts and flows to include them, or change the scope to "All scripts/flows" to include all your scripts and flows.`
|
|
92
|
+
: 'Create your first scripts or flows to make them available via MCP.');
|
|
87
93
|
const noScriptsOrFlowsAvailableWarning = $derived(includedRunnables.length === 0 ? warning : '');
|
|
94
|
+
const longPathRunnables = $derived(includedRunnables.filter((path) => path.length > MAX_PATH_LENGTH));
|
|
95
|
+
const validRunnables = $derived(includedRunnables.filter((path) => path.length <= MAX_PATH_LENGTH));
|
|
96
|
+
const longPathWarning = $derived(longPathRunnables.length > 0
|
|
97
|
+
? `${longPathRunnables.length} script(s)/flow(s) have paths longer than 60 characters and will be excluded from MCP tools. Consider shortening the paths: ${longPathRunnables.slice(0, 3).join(', ')}${longPathRunnables.length > 3 ? ` and ${longPathRunnables.length - 3} more` : ''}`
|
|
98
|
+
: '');
|
|
88
99
|
$effect(() => {
|
|
89
100
|
if (mcpCreationMode) {
|
|
90
101
|
getAllApps();
|
|
@@ -144,7 +155,10 @@ async function getScriptsAndFlows(favoriteOnly = false, workspace, folder) {
|
|
|
144
155
|
}
|
|
145
156
|
try {
|
|
146
157
|
loadingRunnables = true;
|
|
147
|
-
const [scripts, flows] = await Promise.all([
|
|
158
|
+
const [scripts, flows] = await Promise.all([
|
|
159
|
+
getScripts(favoriteOnly, workspace, folder),
|
|
160
|
+
getFlows(favoriteOnly, workspace, folder)
|
|
161
|
+
]);
|
|
148
162
|
const combined = [...scripts, ...flows];
|
|
149
163
|
runnablesCache.set(cacheKey, combined);
|
|
150
164
|
includedRunnables = combined;
|
|
@@ -301,7 +315,11 @@ $effect(() => {
|
|
|
301
315
|
|
|
302
316
|
<div>
|
|
303
317
|
<span class="block mb-1">Label <span class="text-xs text-tertiary">(optional)</span></span>
|
|
304
|
-
<
|
|
318
|
+
<TextInput
|
|
319
|
+
inputProps={{ type: 'text' }}
|
|
320
|
+
bind:value={newTokenLabel}
|
|
321
|
+
class="w-full !bg-surface"
|
|
322
|
+
/>
|
|
305
323
|
</div>
|
|
306
324
|
|
|
307
325
|
{#if !mcpCreationMode}
|
|
@@ -309,58 +327,66 @@ $effect(() => {
|
|
|
309
327
|
<span class="block mb-1"
|
|
310
328
|
>Expires In <span class="text-xs text-tertiary">(optional)</span></span
|
|
311
329
|
>
|
|
312
|
-
<
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
330
|
+
<Select
|
|
331
|
+
bind:value={newTokenExpiration}
|
|
332
|
+
placeholder="No expiration"
|
|
333
|
+
inputClass="!bg-surface"
|
|
334
|
+
items={[
|
|
335
|
+
{ label: 'No expiration', value: undefined },
|
|
336
|
+
{ label: '15 minutes', value: 15 * 60 },
|
|
337
|
+
{ label: '30 minutes', value: 30 * 60 },
|
|
338
|
+
{ label: '1 hour', value: 1 * 60 * 60 },
|
|
339
|
+
{ label: '1 day', value: 1 * 24 * 60 * 60 },
|
|
340
|
+
{ label: '7 days', value: 7 * 24 * 60 * 60 },
|
|
341
|
+
{ label: '30 days', value: 30 * 24 * 60 * 60 },
|
|
342
|
+
{ label: '90 days', value: 90 * 24 * 60 * 60 }
|
|
343
|
+
]}
|
|
344
|
+
/>
|
|
322
345
|
</div>
|
|
323
346
|
{/if}
|
|
324
347
|
{#if mcpCreationMode && (newMcpScope !== 'folder' || selectedFolder.length > 0)}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
</div>
|
|
331
|
-
</div>
|
|
332
|
-
{:else}
|
|
333
|
-
<div class="flex flex-col gap-2 col-span-2 pr-4">
|
|
334
|
-
{#if noScriptsOrFlowsAvailableWarning}
|
|
335
|
-
<Alert type="info" title="No scripts or flows available" size="xs">
|
|
336
|
-
{noScriptsOrFlowsAvailableWarning}
|
|
337
|
-
</Alert>
|
|
338
|
-
{:else}
|
|
339
|
-
<span class="block text-xs text-tertiary">Scripts & Flows that will be available via MCP</span>
|
|
348
|
+
{#if loadingRunnables}
|
|
349
|
+
<div class="flex flex-col gap-2 col-span-2 pr-4">
|
|
350
|
+
<span class="block text-xs text-tertiary"
|
|
351
|
+
>Scripts & Flows that will be available via MCP</span
|
|
352
|
+
>
|
|
340
353
|
<div class="flex flex-wrap gap-1">
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
354
|
+
<Badge rounded small color="dark-gray" baseClass="animate-skeleton">Loading...</Badge>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
{:else}
|
|
358
|
+
<div class="flex flex-col gap-2 col-span-2 pr-4">
|
|
359
|
+
{#if noScriptsOrFlowsAvailableWarning}
|
|
360
|
+
<Alert type="info" title="No scripts or flows available" size="xs">
|
|
361
|
+
{noScriptsOrFlowsAvailableWarning}
|
|
362
|
+
</Alert>
|
|
346
363
|
{:else}
|
|
347
|
-
{#
|
|
348
|
-
<
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
rounded
|
|
352
|
-
small
|
|
353
|
-
color="dark-gray"
|
|
354
|
-
>
|
|
355
|
-
+{includedRunnables.length - 3} more
|
|
356
|
-
</Badge>
|
|
364
|
+
{#if longPathWarning}
|
|
365
|
+
<Alert type="warning" title="Some paths are too long" size="xs">
|
|
366
|
+
{longPathWarning}
|
|
367
|
+
</Alert>
|
|
357
368
|
{/if}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
369
|
+
<span class="block text-xs text-tertiary"
|
|
370
|
+
>Scripts & Flows that will be available via MCP</span
|
|
371
|
+
>
|
|
372
|
+
<div class="flex flex-wrap gap-1">
|
|
373
|
+
{#if validRunnables.length <= 5}
|
|
374
|
+
{#each validRunnables as scriptOrFlow}
|
|
375
|
+
<Badge rounded small color="blue">{scriptOrFlow}</Badge>
|
|
376
|
+
{/each}
|
|
377
|
+
{:else}
|
|
378
|
+
{#each validRunnables.slice(0, 3) as scriptOrFlow}
|
|
379
|
+
<Badge rounded small color="blue">{scriptOrFlow}</Badge>
|
|
380
|
+
{/each}
|
|
381
|
+
<Badge rounded small color="dark-gray">
|
|
382
|
+
+{validRunnables.length - 3} more
|
|
383
|
+
</Badge>
|
|
384
|
+
{/if}
|
|
385
|
+
</div>
|
|
386
|
+
{/if}
|
|
387
|
+
</div>
|
|
388
|
+
{/if}
|
|
362
389
|
{/if}
|
|
363
|
-
|
|
364
390
|
</div>
|
|
365
391
|
|
|
366
392
|
<div class="mt-4 flex justify-end gap-2 flex-row">
|
|
@@ -373,7 +399,8 @@ $effect(() => {
|
|
|
373
399
|
</Button>
|
|
374
400
|
<Button
|
|
375
401
|
on:click={() => createToken(mcpCreationMode)}
|
|
376
|
-
disabled={mcpCreationMode &&
|
|
402
|
+
disabled={mcpCreationMode &&
|
|
403
|
+
(newTokenWorkspace == undefined || (newMcpScope === 'folder' && !selectedFolder))}
|
|
377
404
|
>
|
|
378
405
|
New token
|
|
379
406
|
</Button>
|