windmill-components 1.532.0 → 1.542.4
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/AIProviderPicker.svelte +181 -0
- package/package/components/AIProviderPicker.svelte.d.ts +15 -0
- package/package/components/ArgInfo.svelte +2 -2
- package/package/components/ArgInput.svelte +60 -27
- package/package/components/ArgInput.svelte.d.ts +3 -3
- package/package/components/AssignableTagsInner.svelte +89 -3
- package/package/components/Auth0Setting.svelte +8 -3
- package/package/components/ConcurrentJobsChart.svelte +36 -48
- package/package/components/ConcurrentJobsChart.svelte.d.ts +8 -20
- package/package/components/CustomPopover.svelte.d.ts +1 -1
- package/package/components/Dev.svelte +5 -4
- package/package/components/DiffDrawer.svelte +2 -2
- package/package/components/DiffEditor.svelte +34 -37
- package/package/components/DiffEditor.svelte.d.ts +23 -39
- package/package/components/DropdownSelect.svelte +26 -0
- package/package/components/DropdownSelect.svelte.d.ts +11 -0
- package/package/components/DropdownV2Inner.svelte +1 -1
- package/package/components/{DynSelect.svelte → DynamicInput.svelte} +47 -15
- package/package/components/DynamicInput.svelte.d.ts +11 -0
- package/package/components/EditableSchemaForm.svelte +155 -140
- package/package/components/EditableSchemaForm.svelte.d.ts +6 -7
- package/package/components/Editor.svelte +101 -87
- package/package/components/Editor.svelte.d.ts +7 -1
- package/package/components/EditorBar.svelte +2 -5
- package/package/components/FlowBuilder.svelte +10 -7
- package/package/components/FlowLogRow.svelte +64 -0
- package/package/components/FlowLogRow.svelte.d.ts +15 -0
- package/package/components/FlowLogViewer.svelte +406 -373
- package/package/components/FlowLogViewer.svelte.d.ts +5 -1
- package/package/components/FlowLogViewerWrapper.svelte +44 -1
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPreviewContent.svelte +3 -3
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowStatusViewer.svelte +28 -0
- package/package/components/FlowStatusViewerInner.svelte +106 -23
- package/package/components/FlowStatusViewerInner.svelte.d.ts +7 -0
- package/package/components/FolderPicker.svelte +1 -1
- package/package/components/InputTransformForm.svelte +20 -10
- package/package/components/JobArgs.svelte +1 -1
- package/package/components/JobLoader.svelte.d.ts +1 -1
- package/package/components/JobStatus.svelte +2 -0
- package/package/components/LogSnippetViewer.svelte +3 -3
- package/package/components/LogSnippetViewer.svelte.d.ts +1 -1
- package/package/components/LogViewer.svelte +87 -71
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/ModulePreview.svelte +2 -1
- package/package/components/ModulePreview.svelte.d.ts +1 -0
- package/package/components/ModulePreviewForm.svelte +72 -65
- package/package/components/ModulePreviewResultViewer.svelte +13 -18
- package/package/components/ModuleTest.svelte +6 -5
- package/package/components/ModuleTest.svelte.d.ts +1 -0
- package/package/components/OktaSetting.svelte +8 -3
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/Portal.svelte +11 -7
- package/package/components/Portal.svelte.d.ts +19 -39
- package/package/components/PrefixedInput.svelte +120 -0
- package/package/components/PrefixedInput.svelte.d.ts +8 -0
- package/package/components/QueuePosition.svelte +81 -0
- package/package/components/QueuePosition.svelte.d.ts +8 -0
- package/package/components/ResourceNarrowing.svelte +13 -0
- package/package/components/ResourceNarrowing.svelte.d.ts +6 -0
- package/package/components/ResourceTypePicker.svelte +49 -74
- package/package/components/RunChart.svelte +74 -89
- package/package/components/RunChart.svelte.d.ts +10 -22
- package/package/components/RunForm.svelte +2 -2
- package/package/components/RunForm.svelte.d.ts +1 -1
- package/package/components/RunFormAdvancedPopup.svelte +13 -1
- package/package/components/S3FilePicker.svelte +1 -1
- package/package/components/SchemaForm.svelte +1 -2
- package/package/components/SchemaForm.svelte.d.ts +2 -2
- package/package/components/ScriptBuilder.svelte +3 -2
- package/package/components/ScriptEditor.svelte +25 -10
- package/package/components/ScriptEditor.svelte.d.ts +2 -1
- package/package/components/ServiceLogsInner.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleEditor.svelte +4 -68
- package/package/components/StringTypeNarrowing.svelte +5 -10
- package/package/components/TemplateEditor.svelte +2 -16
- package/package/components/TimeAgo.svelte +1 -1
- package/package/components/TimeAgo.svelte.d.ts +1 -0
- package/package/components/Toggle.svelte +2 -1
- package/package/components/Toggle.svelte.d.ts +2 -1
- package/package/components/WorkerRepl.svelte +1 -1
- package/package/components/apps/components/display/AppNavbarItem.svelte +2 -1
- package/package/components/apps/components/display/table/AppAggridTable.svelte +44 -48
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +101 -19
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +5 -2
- package/package/components/apps/components/display/table/utils.js +36 -5
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +10 -5
- package/package/components/apps/components/layout/AppModal.svelte +2 -2
- package/package/components/apps/editor/AppEditor.svelte +4 -3
- package/package/components/apps/editor/AppEditorHeader.svelte +0 -1
- package/package/components/apps/editor/GridViewer.svelte.d.ts +11 -4
- package/package/components/apps/editor/SettingsPanel.svelte +2 -2
- package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -2
- package/package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +1 -1
- 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 +0 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +29 -4
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +55 -53
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -5
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +30 -11
- package/package/components/assets/JobAssetsViewer.svelte +28 -24
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -6
- package/package/components/chartjs-wrappers/Chart.svelte.d.ts +14 -7
- package/package/components/common/OnChange.svelte.d.ts +11 -4
- package/package/components/common/badge/Badge.svelte +9 -2
- package/package/components/common/badge/Badge.svelte.d.ts +2 -1
- package/package/components/common/button/model.d.ts +1 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +5 -4
- package/package/components/common/drawer/Disposable.svelte +45 -26
- package/package/components/common/drawer/Disposable.svelte.d.ts +12 -44
- package/package/components/common/drawer/Drawer.svelte +17 -14
- package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/package/components/common/menu/MenuItem.svelte.d.ts +2 -2
- package/package/components/common/modal/Modal.svelte.d.ts +1 -1
- package/package/components/common/tabs/TabContent.svelte +2 -7
- package/package/components/common/tabs/TabContent.svelte.d.ts +5 -27
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +9 -3
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +8 -4
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
- package/package/components/copilot/MetadataGen.svelte +14 -3
- package/package/components/copilot/chat/AIChatInput.svelte +0 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +26 -104
- package/package/components/copilot/chat/AssistantMessage.svelte +0 -4
- package/package/components/copilot/chat/AvailableContextList.svelte +192 -66
- package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +2 -2
- package/package/components/copilot/chat/ContextElementBadge.svelte +3 -3
- package/package/components/copilot/chat/ContextManager.svelte.js +36 -13
- package/package/components/copilot/chat/ContextTextarea.svelte +21 -48
- package/package/components/copilot/chat/ToolContentDisplay.svelte +10 -1
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +3 -3
- package/package/components/copilot/chat/anthropic.d.ts +15 -0
- package/package/components/copilot/chat/anthropic.js +208 -0
- package/package/components/copilot/chat/api/apiTools.d.ts +2 -2
- package/package/components/copilot/chat/api/apiTools.js +10 -7
- package/package/components/copilot/chat/api/core.d.ts +1 -1
- package/package/components/copilot/chat/api/core.js +7 -2
- package/package/components/copilot/chat/ask/core.d.ts +1 -1
- package/package/components/copilot/chat/ask/core.js +7 -2
- package/package/components/copilot/chat/context.d.ts +7 -2
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +110 -8
- package/package/components/copilot/chat/flow/core.d.ts +12 -1
- package/package/components/copilot/chat/flow/core.js +133 -5
- package/package/components/copilot/chat/flow/uiIntents.d.ts +8 -0
- package/package/components/copilot/chat/flow/uiIntents.js +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.d.ts +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.js +12 -0
- package/package/components/copilot/chat/monaco-adapter.d.ts +23 -4
- package/package/components/copilot/chat/monaco-adapter.js +55 -16
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +7 -2
- package/package/components/copilot/chat/script/CodeDisplay.svelte +10 -111
- package/package/components/copilot/chat/script/core.d.ts +5 -4
- package/package/components/copilot/chat/script/core.js +134 -21
- package/package/components/copilot/chat/shared.d.ts +10 -9
- package/package/components/copilot/chat/shared.js +24 -12
- package/package/components/copilot/lib.d.ts +29 -8
- package/package/components/copilot/lib.js +211 -31
- package/package/components/copilot/shared.d.ts +1 -1
- package/package/components/copilot/shared.js +16 -10
- package/package/components/flows/FlowEditor.svelte +4 -2
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
- package/package/components/flows/FlowModuleIcon.svelte +8 -8
- package/package/components/flows/common/FlowCardHeader.svelte +4 -1
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +6 -0
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +6 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +2 -1
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowInput.svelte +36 -39
- package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowLoop.svelte +7 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +42 -46
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +47 -17
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +4 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +15 -18
- package/package/components/flows/content/FlowModuleTimeout.svelte +50 -10
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowRetries.svelte +108 -3
- package/package/components/flows/content/FlowRetries.svelte.d.ts +3 -2
- package/package/components/flows/content/FlowWhileLoop.svelte +6 -0
- package/package/components/flows/content/ScriptEditorDrawer.svelte +9 -11
- package/package/components/flows/dfs.d.ts +1 -1
- package/package/components/flows/dfs.js +6 -6
- package/package/components/flows/flowInfers.js +15 -42
- package/package/components/flows/flowStateUtils.svelte.js +1 -2
- package/package/components/flows/flowStore.d.ts +45 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +73 -80
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -1
- package/package/components/flows/map/InsertModuleButton.svelte +1 -0
- package/package/components/flows/map/InsertModuleInner.svelte +12 -15
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +10 -9
- package/package/components/flows/map/MapItem.svelte +8 -4
- package/package/components/flows/map/VirtualItem.svelte +1 -1
- package/package/components/flows/pickers/TopLevelNode.svelte +1 -1
- package/package/components/flows/propPicker/InputPickerInner.svelte +5 -5
- package/package/components/flows/propPicker/OutputPickerInner.svelte +143 -118
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +7 -16
- package/package/components/flows/{testSteps.svelte.d.ts → stepsInputArgs.svelte.d.ts} +2 -1
- package/package/components/flows/{testSteps.svelte.js → stepsInputArgs.svelte.js} +15 -3
- package/package/components/flows/types.d.ts +16 -3
- package/package/components/flows/utils.js +3 -0
- package/package/components/git_sync/DetectionFlow.svelte +15 -17
- package/package/components/git_sync/GitSyncContext.svelte.js +1 -1
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +0 -1
- package/package/components/graph/FlowGraphV2.svelte +1 -1
- package/package/components/graph/graphBuilder.svelte.d.ts +5 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte +9 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +4 -1
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +4 -4
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +2 -3
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +2 -3
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +71 -54
- package/package/components/graph/renderers/triggers/TriggerButton.svelte.d.ts +1 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -1
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +34 -24
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +1 -2
- package/package/components/home/ItemsList.svelte +17 -13
- package/package/components/home/TreeView.svelte +21 -27
- package/package/components/home/TreeView.svelte.d.ts +2 -29
- package/package/components/home/TreeViewRoot.svelte +11 -23
- package/package/components/home/TreeViewRoot.svelte.d.ts +15 -13
- package/package/components/icons/GitIcon.svelte +10 -2
- package/package/components/icons/GitIcon.svelte.d.ts +1 -0
- package/package/components/meltComponents/MeltButton.svelte.d.ts +1 -1
- package/package/components/meltComponents/Popover.svelte +23 -3
- package/package/components/meltComponents/Popover.svelte.d.ts +2 -1
- package/package/components/monacoLanguagesOptions.d.ts +3 -0
- package/package/components/monacoLanguagesOptions.js +109 -0
- package/package/components/propertyPicker/ObjectViewer.svelte +18 -5
- package/package/components/propertyPicker/PropPicker.svelte +1 -1
- package/package/components/propertyPicker/utils.js +14 -7
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +1 -1
- package/package/components/runs/JobRunsPreview.svelte +212 -177
- package/package/components/runs/JobsLoader.svelte +2 -2
- package/package/components/runs/JobsLoader.svelte.d.ts +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +18 -5
- package/package/components/runs/RunBadges.svelte +100 -0
- package/package/components/runs/RunBadges.svelte.d.ts +12 -0
- package/package/components/runs/RunLabels.svelte +86 -0
- package/package/components/runs/RunLabels.svelte.d.ts +10 -0
- package/package/components/runs/RunOption.svelte +20 -0
- package/package/components/runs/RunOption.svelte.d.ts +10 -0
- package/package/components/runs/RunRow.svelte +239 -151
- package/package/components/runs/RunRow.svelte.d.ts +12 -9
- package/package/components/runs/RunsBatchActionsDropdown.svelte +13 -17
- package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +5 -18
- package/package/components/runs/RunsFilter.svelte +369 -243
- package/package/components/runs/RunsFilter.svelte.d.ts +2 -0
- package/package/components/runs/RunsQueue.svelte +96 -25
- package/package/components/runs/RunsQueue.svelte.d.ts +7 -21
- package/package/components/runs/RunsTable.svelte +62 -71
- package/package/components/runs/RunsTable.svelte.d.ts +2 -1
- package/package/components/runs/runs-grid.css +95 -0
- package/package/components/schema/AddPropertyV2.svelte +2 -7
- package/package/components/schema/AddPropertyV2.svelte.d.ts +3 -20
- package/package/components/schema/EditableSchemaDrawer.svelte +121 -127
- package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +2 -1
- package/package/components/schema/EditableSchemaSdkWrapper.svelte +16 -3
- package/package/components/schema/EditableSchemaSdkWrapper.svelte.d.ts +4 -1
- package/package/components/schema/EditableSchemaWrapper.svelte +3 -10
- package/package/components/schema/FlowPropertyEditor.svelte +195 -236
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +33 -35
- package/package/components/schema/SchemaFormDND.svelte +11 -10
- package/package/components/schema/SchemaFormDND.svelte.d.ts +4 -3
- package/package/components/schema/editable_schema_wrapper.d.ts +0 -3
- package/package/components/search/GlobalSearchModal.svelte +8 -1
- package/package/components/select/DraggableTags.svelte.d.ts +17 -7
- package/package/components/select/MultiSelect.svelte.d.ts +21 -11
- package/package/components/select/Select.svelte +2 -1
- package/package/components/select/Select.svelte.d.ts +25 -13
- package/package/components/select/SelectDropdown.svelte.d.ts +14 -7
- package/package/components/settings/PremiumInfo.svelte +7 -2
- package/package/components/settings/TokenDisplay.svelte +1 -1
- package/package/components/sidebar/OperatorMenu.svelte +5 -0
- package/package/components/sidebar/SidebarContent.svelte +48 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +116 -17
- package/package/components/toast.js +6 -3
- package/package/components/triggers/AddTriggersButton.svelte +7 -6
- package/package/components/triggers/CaptureWrapper.svelte +21 -16
- package/package/components/triggers/CaptureWrapper.svelte.d.ts +1 -1
- package/package/components/triggers/TriggerLabel.svelte +8 -0
- package/package/components/triggers/TriggerTokens.svelte +1 -1
- package/package/components/triggers/TriggersEditor.svelte +9 -5
- package/package/components/triggers/TriggersTable.svelte +2 -2
- package/package/components/triggers/TriggersWrapper.svelte +17 -5
- package/package/components/triggers/TriggersWrapper.svelte.d.ts +3 -19
- package/package/components/{details/EmailTriggerCaptures.svelte → triggers/email/DefaultEmailCapture.svelte} +5 -5
- package/package/components/{details/EmailTriggerCaptures.svelte.d.ts → triggers/email/DefaultEmailCapture.svelte.d.ts} +4 -4
- package/package/components/{details/EmailTriggerConfigSection.svelte → triggers/email/DefaultEmailConfigSection.svelte} +24 -14
- package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +13 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte +71 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailCapture.svelte +39 -0
- package/package/components/triggers/email/EmailCapture.svelte.d.ts +43 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte +20 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte +133 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte.d.ts +14 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +335 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte.d.ts +22 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte +61 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte.d.ts +14 -0
- package/package/components/triggers/email/utils.d.ts +4 -0
- package/package/components/triggers/email/utils.js +52 -0
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +1 -1
- package/package/components/triggers/http/RouteEditorInner.svelte +1 -1
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +23 -20
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte +15 -27
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte.d.ts +7 -5
- package/package/components/triggers/triggers.svelte.d.ts +1 -0
- package/package/components/triggers/triggers.svelte.js +24 -2
- package/package/components/triggers/utils.js +19 -5
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +16 -16
- package/package/components/triggers.d.ts +1 -1
- package/package/components/triggers.js +2 -0
- package/package/components/wizards/AgGridWizard.svelte +85 -80
- package/package/components/workspaceSettings/AISettings.svelte +74 -22
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/CreateWorkspace.svelte +395 -0
- package/package/components/workspaceSettings/CreateWorkspace.svelte.d.ts +6 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte +3 -1
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +1 -1
- package/package/components/workspaceSettings/StorageSettings.svelte +69 -48
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +142 -3
- package/package/gen/schemas.gen.js +144 -3
- package/package/gen/services.gen.d.ts +129 -1
- package/package/gen/services.gen.js +267 -1
- package/package/gen/types.gen.d.ts +434 -8
- package/package/hubPaths.json +6 -2
- package/package/infer.js +1 -1
- package/package/keyboardChain.d.ts +5 -0
- package/package/keyboardChain.js +40 -0
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +2 -0
- package/package/services/JobManager.js +2 -2
- package/package/stores.d.ts +4 -1
- package/package/stores.js +16 -6
- package/package/utils/workspaceHierarchy.d.ts +27 -0
- package/package/utils/workspaceHierarchy.js +101 -0
- package/package/utils.d.ts +6 -3
- package/package/utils.js +30 -15
- package/package/workspace_settings.js +2 -3
- package/package.json +10 -12
- package/package/components/DynSelect.svelte.d.ts +0 -11
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +0 -28
- package/package/components/ObjectTypeNarrowing.svelte +0 -18
- package/package/components/ObjectTypeNarrowing.svelte.d.ts +0 -22
- package/package/components/details/DetailPageTriggerPanel.svelte +0 -121
- package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +0 -20
- package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +0 -12
- package/package/components/details/EmailTriggerPanel.svelte +0 -76
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +0 -26
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
<script lang="ts">import {} from 'svelte';
|
|
2
|
+
import Select from './select/Select.svelte';
|
|
3
|
+
import { fetchAvailableModels, AI_PROVIDERS } from './copilot/lib';
|
|
4
|
+
import { workspaceStore } from '../stores';
|
|
5
|
+
import { get } from 'svelte/store';
|
|
6
|
+
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
7
|
+
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
8
|
+
import ResourcePicker from './ResourcePicker.svelte';
|
|
9
|
+
let { value = $bindable(), disabled = false, actions } = $props();
|
|
10
|
+
// Initialize value if undefined
|
|
11
|
+
if (!value) {
|
|
12
|
+
const providers = Object.keys(AI_PROVIDERS);
|
|
13
|
+
value = {
|
|
14
|
+
kind: providers.length > 0 ? providers[0] : undefined,
|
|
15
|
+
resource: undefined,
|
|
16
|
+
model: undefined
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
let loading = $state(false);
|
|
20
|
+
let availableModels = $state([]);
|
|
21
|
+
let filterText = $state('');
|
|
22
|
+
let modelsCache = new Map();
|
|
23
|
+
// Reactive items for the Select component
|
|
24
|
+
let items = $derived.by(() => {
|
|
25
|
+
const r = availableModels.map((model) => ({
|
|
26
|
+
label: model,
|
|
27
|
+
value: model
|
|
28
|
+
}));
|
|
29
|
+
if (value?.model && !availableModels.find((model) => model === value.model)) {
|
|
30
|
+
r.push({
|
|
31
|
+
label: value.model,
|
|
32
|
+
value: value.model
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return r;
|
|
36
|
+
});
|
|
37
|
+
// Provider options for the toggle button group
|
|
38
|
+
const providerOptions = Object.entries(AI_PROVIDERS).map(([key, details]) => ({
|
|
39
|
+
value: key,
|
|
40
|
+
label: details.label
|
|
41
|
+
}));
|
|
42
|
+
async function loadModels(signal) {
|
|
43
|
+
const provider = value?.kind;
|
|
44
|
+
const resourceValue = value?.resource;
|
|
45
|
+
const resourcePath = resourceValueToPath(resourceValue);
|
|
46
|
+
if (!provider || !resourcePath) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
loading = true;
|
|
50
|
+
if (modelsCache.has(provider)) {
|
|
51
|
+
availableModels = modelsCache.get(provider) || [];
|
|
52
|
+
loading = false;
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
const workspace = get(workspaceStore) || '';
|
|
57
|
+
const models = await fetchAvailableModels(resourcePath, workspace, provider, signal);
|
|
58
|
+
if (signal?.aborted) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
availableModels = models;
|
|
62
|
+
modelsCache.set(provider, models);
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
if (signal?.aborted) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// Fall back to default models for this provider
|
|
69
|
+
const defaultModels = AI_PROVIDERS[provider]?.defaultModels || [];
|
|
70
|
+
availableModels = defaultModels;
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
if (!signal?.aborted) {
|
|
74
|
+
loading = false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Reload models when provider or resourcePath changes
|
|
79
|
+
$effect(() => {
|
|
80
|
+
const abortController = new AbortController();
|
|
81
|
+
const provider = value?.kind;
|
|
82
|
+
const resourceValue = value?.resource;
|
|
83
|
+
const resourcePath = resourceValueToPath(resourceValue);
|
|
84
|
+
filterText = '';
|
|
85
|
+
if (provider && resourcePath) {
|
|
86
|
+
loadModels(abortController.signal);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
const defaultModels = provider ? AI_PROVIDERS[provider]?.defaultModels || [] : [];
|
|
90
|
+
availableModels = defaultModels;
|
|
91
|
+
loading = false;
|
|
92
|
+
}
|
|
93
|
+
return () => {
|
|
94
|
+
abortController.abort();
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
// Handle provider selection
|
|
98
|
+
function onProviderChange(selectedProvider) {
|
|
99
|
+
if (value) {
|
|
100
|
+
value.kind = selectedProvider;
|
|
101
|
+
value.resource = undefined;
|
|
102
|
+
value.model = undefined;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Helper functions to handle $res: prefix like ObjectResourceInput does
|
|
106
|
+
function isResource(resourceValue) {
|
|
107
|
+
return (typeof resourceValue === 'string' &&
|
|
108
|
+
resourceValue.length >= '$res:'.length &&
|
|
109
|
+
resourceValue.startsWith('$res:'));
|
|
110
|
+
}
|
|
111
|
+
function resourceValueToPath(resourceValue) {
|
|
112
|
+
if (isResource(resourceValue)) {
|
|
113
|
+
return resourceValue.substring('$res:'.length);
|
|
114
|
+
}
|
|
115
|
+
return resourceValue;
|
|
116
|
+
}
|
|
117
|
+
function pathToResourceValue(path) {
|
|
118
|
+
if (path == undefined) {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return `$res:${path}`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
</script>
|
|
126
|
+
|
|
127
|
+
<div class="w-full flex flex-col gap-3">
|
|
128
|
+
<!-- Provider Selection -->
|
|
129
|
+
<div class="flex flex-col gap-2">
|
|
130
|
+
<ToggleButtonGroup selected={value?.kind} onSelected={onProviderChange} {disabled} wrap>
|
|
131
|
+
{#snippet children({ item })}
|
|
132
|
+
{#each providerOptions as option}
|
|
133
|
+
<ToggleButton value={option.value} label={option.label} {item} />
|
|
134
|
+
{/each}
|
|
135
|
+
{/snippet}
|
|
136
|
+
</ToggleButtonGroup>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<!-- Resource Selection -->
|
|
140
|
+
<div class="flex flex-col border border-gray-200 rounded-md p-2 gap-2">
|
|
141
|
+
<div class="flex flex-col gap-1">
|
|
142
|
+
<p class="text-sm font-medium text-primary">resource</p>
|
|
143
|
+
<ResourcePicker
|
|
144
|
+
bind:value={
|
|
145
|
+
() => resourceValueToPath(value?.resource),
|
|
146
|
+
(v) => {
|
|
147
|
+
if (value) {
|
|
148
|
+
value.resource = pathToResourceValue(v)
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
resourceType={value?.kind}
|
|
153
|
+
disabled={disabled || !value?.kind}
|
|
154
|
+
placeholder="Select resource"
|
|
155
|
+
selectFirst={true}
|
|
156
|
+
/>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<!-- Model Selection -->
|
|
160
|
+
<div class="flex flex-col gap-1">
|
|
161
|
+
<p class="text-sm font-medium text-primary">model</p>
|
|
162
|
+
<Select
|
|
163
|
+
{items}
|
|
164
|
+
bind:value={value.model}
|
|
165
|
+
placeholder="Select model"
|
|
166
|
+
disabled={disabled || !value?.kind || !resourceValueToPath(value?.resource)}
|
|
167
|
+
onCreateItem={(r) => {
|
|
168
|
+
availableModels.push(r)
|
|
169
|
+
value.model = r
|
|
170
|
+
}}
|
|
171
|
+
createText="Press enter to use custom model"
|
|
172
|
+
{loading}
|
|
173
|
+
clearable={false}
|
|
174
|
+
noItemsMsg={'No models available'}
|
|
175
|
+
bind:filterText
|
|
176
|
+
/>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
{@render actions?.()}
|
|
181
|
+
</div>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Snippet } from 'svelte';
|
|
2
|
+
import type { AIProvider } from '../gen';
|
|
3
|
+
interface ProviderValue {
|
|
4
|
+
kind?: AIProvider;
|
|
5
|
+
resource?: string;
|
|
6
|
+
model?: string;
|
|
7
|
+
}
|
|
8
|
+
interface Props {
|
|
9
|
+
value: ProviderValue | undefined;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
actions?: Snippet;
|
|
12
|
+
}
|
|
13
|
+
declare const AiProviderPicker: import("svelte").Component<Props, {}, "value">;
|
|
14
|
+
type AiProviderPicker = ReturnType<typeof AiProviderPicker>;
|
|
15
|
+
export default AiProviderPicker;
|
|
@@ -86,14 +86,14 @@ async function getVariable(path) {
|
|
|
86
86
|
<div class="relative">
|
|
87
87
|
{#if JSON.stringify(value).length > 120}
|
|
88
88
|
<button
|
|
89
|
-
class="text-xs absolute top-0 right-
|
|
89
|
+
class="text-xs absolute top-0 right-8 text-tertiary"
|
|
90
90
|
onclick={() => {
|
|
91
91
|
jsonViewerContent = value
|
|
92
92
|
jsonViewer?.toggleDrawer()
|
|
93
93
|
}}><Expand size={18} /></button
|
|
94
94
|
>
|
|
95
95
|
{/if}
|
|
96
|
-
<div class="max-h-60 overflow-auto">
|
|
96
|
+
<div class="max-h-60 overflow-auto" style="scrollbar-gutter: stable">
|
|
97
97
|
<ObjectViewer collapsed={false} topBrackets={true} pureViewer={true} json={value} />
|
|
98
98
|
</div>
|
|
99
99
|
</div>
|
|
@@ -23,13 +23,14 @@ import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
|
23
23
|
import SchemaFormDnd from './schema/SchemaFormDND.svelte';
|
|
24
24
|
import SchemaForm from './SchemaForm.svelte';
|
|
25
25
|
import { deepEqual } from 'fast-equals';
|
|
26
|
-
import
|
|
26
|
+
import DynamicInput from './DynamicInput.svelte';
|
|
27
27
|
import MultiSelect from './select/MultiSelect.svelte';
|
|
28
28
|
import { safeSelectItems } from './select/utils.svelte';
|
|
29
29
|
import S3ArgInput from './common/fileUpload/S3ArgInput.svelte';
|
|
30
30
|
import { base } from '../base';
|
|
31
31
|
import { workspaceStore } from '../stores';
|
|
32
32
|
import { getJsonSchemaFromResource } from './schema/jsonSchemaResource.svelte';
|
|
33
|
+
import AIProviderPicker from './AIProviderPicker.svelte';
|
|
33
34
|
let { label = '', value = $bindable(), defaultValue = $bindable(undefined), description = $bindable(undefined), format = $bindable(undefined), contentEncoding = undefined, type = undefined, oneOf = $bindable(undefined), required = false, pattern = $bindable(undefined), valid = $bindable(undefined), enum_ = $bindable(undefined), disabled = false, itemsType = $bindable(undefined), displayHeader = true, properties = $bindable(undefined), nestedRequired = undefined, autofocus = null, compact = false, password = false, pickForField = $bindable(undefined), variableEditor = undefined, itemPicker = undefined, noMargin = false, extra = {}, minW = true, prettifyHeader = false, resourceTypes, disablePortal = false, showSchemaExplorer = false, simpleTooltip = undefined, customErrorMessage = undefined, onlyMaskPassword = false, nullable = false, title = $bindable(undefined), placeholder = $bindable(undefined), order = $bindable(undefined), editor = $bindable(undefined), orderEditable = false, shouldDispatchChanges = false, noDefaultOnSelectFirst = false, helperScript = undefined, otherArgs = {}, lightHeader = false, diffStatus = undefined, hideNested = false, nestedParent = undefined, nestedClasses = '', displayType = true, css = undefined, appPath = undefined, computeS3ForceViewerPolicies = undefined, workspace = undefined, actions } = $props();
|
|
34
35
|
$effect(() => {
|
|
35
36
|
if (description == undefined) {
|
|
@@ -206,6 +207,10 @@ export function focus() {
|
|
|
206
207
|
el.style.height = el.scrollHeight + 50 + 'px';
|
|
207
208
|
}
|
|
208
209
|
}
|
|
210
|
+
const EMAIL_PATTERN = '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$';
|
|
211
|
+
const IPV4_PATTERN = '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$';
|
|
212
|
+
const UUID_PATTERN = '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$';
|
|
213
|
+
const IPV6_PATTERN = '^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$';
|
|
209
214
|
function validateInput(pattern, v, required) {
|
|
210
215
|
if (nullable && emptyString(v)) {
|
|
211
216
|
error = '';
|
|
@@ -232,6 +237,18 @@ function validateInput(pattern, v, required) {
|
|
|
232
237
|
!valid && (valid = true);
|
|
233
238
|
}
|
|
234
239
|
}
|
|
240
|
+
else if (type == 'string' && format == 'email' && !testRegex(EMAIL_PATTERN, v)) {
|
|
241
|
+
error = 'invalid email address';
|
|
242
|
+
}
|
|
243
|
+
else if (type == 'string' && format == 'ipv4' && !testRegex(IPV4_PATTERN, v)) {
|
|
244
|
+
error = 'invalid IPv4 address';
|
|
245
|
+
}
|
|
246
|
+
else if (type == 'string' && format == 'ipv6' && !testRegex(IPV6_PATTERN, v)) {
|
|
247
|
+
error = 'invalid IPv6 address';
|
|
248
|
+
}
|
|
249
|
+
else if (type == 'string' && format == 'uuid' && !testRegex(UUID_PATTERN, v)) {
|
|
250
|
+
error = 'invalid UUID';
|
|
251
|
+
}
|
|
235
252
|
else if (pattern && !testRegex(pattern, v)) {
|
|
236
253
|
if (!emptyString(customErrorMessage)) {
|
|
237
254
|
error = customErrorMessage ?? '';
|
|
@@ -506,6 +523,19 @@ onDestroy(() => {
|
|
|
506
523
|
editTab="inputEditor"
|
|
507
524
|
noPreview
|
|
508
525
|
addPropertyInEditorTab
|
|
526
|
+
on:delete={(e) => {
|
|
527
|
+
// Handle property deletion
|
|
528
|
+
if (value && value.properties && value.properties[e.detail]) {
|
|
529
|
+
delete value.properties[e.detail]
|
|
530
|
+
// Also remove from order array if it exists
|
|
531
|
+
if (value.order) {
|
|
532
|
+
value.order = value.order.filter((key) => key !== e.detail)
|
|
533
|
+
}
|
|
534
|
+
// Update the value to trigger reactivity
|
|
535
|
+
value = { ...value }
|
|
536
|
+
dispatch('change')
|
|
537
|
+
}
|
|
538
|
+
}}
|
|
509
539
|
/>
|
|
510
540
|
{/await}
|
|
511
541
|
{:else if inputCat == 'object' && format?.startsWith('jsonschema-')}
|
|
@@ -733,14 +763,8 @@ onDestroy(() => {
|
|
|
733
763
|
/>
|
|
734
764
|
</div>
|
|
735
765
|
</div>
|
|
736
|
-
{:else if inputCat == '
|
|
737
|
-
<
|
|
738
|
-
name={label}
|
|
739
|
-
{otherArgs}
|
|
740
|
-
{helperScript}
|
|
741
|
-
bind:value
|
|
742
|
-
entrypoint={format?.substring('dynselect_'.length) ?? ''}
|
|
743
|
-
/>
|
|
766
|
+
{:else if inputCat == 'dynamic'}
|
|
767
|
+
<DynamicInput name={label} {otherArgs} {helperScript} bind:value format={format ?? ''} />
|
|
744
768
|
{:else if inputCat == 'resource-object' && resourceTypes == undefined}
|
|
745
769
|
<span class="text-2xs text-tertiary">Loading resource types...</span>
|
|
746
770
|
{:else if inputCat == 'resource-object' && (resourceTypes == undefined || (format && format?.split('-').length > 1 && resourceTypes.includes(format?.substring('resource-'.length))))}
|
|
@@ -766,11 +790,21 @@ onDestroy(() => {
|
|
|
766
790
|
selected={oneOfSelected}
|
|
767
791
|
on:selected={({ detail }) => {
|
|
768
792
|
oneOfSelected = detail
|
|
769
|
-
const
|
|
793
|
+
const selectedObjProperties =
|
|
770
794
|
oneOf?.find((o) => o.title == detail)?.properties ?? {}
|
|
771
|
-
)
|
|
795
|
+
const newValueKeys = Object.keys(selectedObjProperties)
|
|
772
796
|
const toKeep = {}
|
|
773
|
-
for (const key of
|
|
797
|
+
for (const key of newValueKeys) {
|
|
798
|
+
// Check if there is a select (enum) in the newly selected oneOf and if the current value is not in the enum, skip it
|
|
799
|
+
if (
|
|
800
|
+
!['kind', 'label'].includes(key) &&
|
|
801
|
+
selectedObjProperties[key]?.enum &&
|
|
802
|
+
value &&
|
|
803
|
+
value[key] !== undefined &&
|
|
804
|
+
!selectedObjProperties[key].enum.includes(value[key])
|
|
805
|
+
) {
|
|
806
|
+
continue
|
|
807
|
+
}
|
|
774
808
|
toKeep[key] = value[key]
|
|
775
809
|
}
|
|
776
810
|
const tagKey = oneOf.find((o) => Object.keys(o.properties ?? {}).includes('kind'))
|
|
@@ -811,8 +845,11 @@ onDestroy(() => {
|
|
|
811
845
|
}
|
|
812
846
|
}
|
|
813
847
|
bind:args={value}
|
|
814
|
-
|
|
815
|
-
|
|
848
|
+
hiddenArgs={[
|
|
849
|
+
oneOf?.find((o) => Object.keys(o.properties ?? {}).includes('kind'))
|
|
850
|
+
? 'kind'
|
|
851
|
+
: 'label'
|
|
852
|
+
]}
|
|
816
853
|
on:reorder={(e) => {
|
|
817
854
|
if (oneOf && oneOf[objIdx]) {
|
|
818
855
|
const keys = e.detail
|
|
@@ -905,20 +942,14 @@ onDestroy(() => {
|
|
|
905
942
|
{disablePortal}
|
|
906
943
|
{disabled}
|
|
907
944
|
{prettifyHeader}
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
}),
|
|
916
|
-
(newSchema) => {
|
|
917
|
-
dispatch('nestedChange')
|
|
918
|
-
}
|
|
919
|
-
}
|
|
945
|
+
schema={{
|
|
946
|
+
properties,
|
|
947
|
+
$schema: '',
|
|
948
|
+
required: nestedRequired ?? [],
|
|
949
|
+
type: 'object',
|
|
950
|
+
order
|
|
951
|
+
}}
|
|
920
952
|
bind:args={value}
|
|
921
|
-
dndType={`nested-${title}`}
|
|
922
953
|
on:reorder={(e) => {
|
|
923
954
|
const keys = e.detail
|
|
924
955
|
order = keys
|
|
@@ -1077,6 +1108,8 @@ onDestroy(() => {
|
|
|
1077
1108
|
: undefined}
|
|
1078
1109
|
{showSchemaExplorer}
|
|
1079
1110
|
/>
|
|
1111
|
+
{:else if inputCat == 'ai-provider'}
|
|
1112
|
+
<AIProviderPicker bind:value {disabled} {actions} />
|
|
1080
1113
|
{:else if inputCat == 'email'}
|
|
1081
1114
|
<input
|
|
1082
1115
|
{autofocus}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EnumType, SchemaProperty } from '../common';
|
|
2
|
-
import { type
|
|
2
|
+
import { type DynamicInput as DynamicInputTypes } from '../utils';
|
|
3
3
|
import type ItemPicker from './ItemPicker.svelte';
|
|
4
4
|
import type SimpleEditor from './SimpleEditor.svelte';
|
|
5
5
|
import type VariableEditor from './VariableEditor.svelte';
|
|
@@ -58,7 +58,7 @@ interface Props {
|
|
|
58
58
|
orderEditable?: boolean;
|
|
59
59
|
shouldDispatchChanges?: boolean;
|
|
60
60
|
noDefaultOnSelectFirst?: boolean;
|
|
61
|
-
helperScript?:
|
|
61
|
+
helperScript?: DynamicInputTypes.HelperScript;
|
|
62
62
|
otherArgs?: Record<string, any>;
|
|
63
63
|
lightHeader?: boolean;
|
|
64
64
|
diffStatus?: SchemaDiff | undefined;
|
|
@@ -99,8 +99,8 @@ declare const ArgInput: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
99
99
|
acceptChange: CustomEvent<any>;
|
|
100
100
|
rejectChange: CustomEvent<any>;
|
|
101
101
|
blur: CustomEvent<any>;
|
|
102
|
-
keydownCmdEnter: CustomEvent<any>;
|
|
103
102
|
change: CustomEvent<any>;
|
|
103
|
+
keydownCmdEnter: CustomEvent<any>;
|
|
104
104
|
} & {
|
|
105
105
|
[evt: string]: CustomEvent<any>;
|
|
106
106
|
}, {}, {
|
|
@@ -23,6 +23,33 @@ async function loadCustomTags() {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
const dispatch = createEventDispatcher();
|
|
26
|
+
const customTagRegex = /^([\w-]+)\(((?:[\w-]+\+)*[\w-]+|(?:\^[\w-]+)+)\)$/;
|
|
27
|
+
const dynamicTagRegex = /\$args\[((?:\w+\.)*\w+)\]/;
|
|
28
|
+
let dynamicTag = $derived.by(() => {
|
|
29
|
+
let r = newTag.trim();
|
|
30
|
+
if (r == '')
|
|
31
|
+
return undefined;
|
|
32
|
+
let matched = r.match(dynamicTagRegex);
|
|
33
|
+
return matched?.[1];
|
|
34
|
+
});
|
|
35
|
+
let extractedCustomTag = $derived.by(() => {
|
|
36
|
+
let r = newTag.trim();
|
|
37
|
+
if (r == '')
|
|
38
|
+
return undefined;
|
|
39
|
+
let matched = r.match(customTagRegex);
|
|
40
|
+
console.log(matched);
|
|
41
|
+
let tag = matched?.[1];
|
|
42
|
+
let workspaces_raw = matched?.[2];
|
|
43
|
+
let tag_type = workspaces_raw?.includes('^') ? 'exclude' : 'include';
|
|
44
|
+
if (tag_type == 'exclude') {
|
|
45
|
+
workspaces_raw = workspaces_raw?.slice(1);
|
|
46
|
+
}
|
|
47
|
+
let workspaces = workspaces_raw?.split(tag_type == 'include' ? '+' : '^');
|
|
48
|
+
if (!workspaces_raw || workspaces_raw?.length == 0) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return { tag, workspaces, tag_type };
|
|
52
|
+
});
|
|
26
53
|
loadCustomTags();
|
|
27
54
|
</script>
|
|
28
55
|
|
|
@@ -55,6 +82,53 @@ loadCustomTags();
|
|
|
55
82
|
{/each}
|
|
56
83
|
</div>
|
|
57
84
|
<input type="text" bind:value={newTag} />
|
|
85
|
+
{#if extractedCustomTag}
|
|
86
|
+
<div class="text-2xs text-tertiary p-2 bg-gray-50 rounded border">
|
|
87
|
+
<div class="font-medium mb-1">Workspace specific tag</div>
|
|
88
|
+
<div>
|
|
89
|
+
<b>Tag:</b>
|
|
90
|
+
{extractedCustomTag.tag}
|
|
91
|
+
</div>
|
|
92
|
+
<div>
|
|
93
|
+
<b>Workspaces:</b>
|
|
94
|
+
{#if extractedCustomTag.tag_type == 'include'}
|
|
95
|
+
{extractedCustomTag.workspaces?.join(', ')}
|
|
96
|
+
{:else}
|
|
97
|
+
All workspaces except {extractedCustomTag.workspaces?.join(', ')}
|
|
98
|
+
{/if}
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
{:else if newTag.trim()}
|
|
102
|
+
{#if newTag.includes('(') || newTag.includes(')') || newTag.includes('+') || newTag.includes('^') || ((newTag.includes('.') || newTag.includes('$args[')) && !dynamicTag)}
|
|
103
|
+
<div class="text-2xs text-tertiary p-2 bg-gray-50 rounded border">
|
|
104
|
+
<div class="font-medium mb-1 text-red-500">Invalid tag</div>
|
|
105
|
+
<div>
|
|
106
|
+
<b>Tag:</b>
|
|
107
|
+
{newTag.trim()}
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
{:else}
|
|
111
|
+
<div class="text-2xs text-tertiary p-2 bg-gray-50 rounded border">
|
|
112
|
+
<div class="font-medium mb-1">
|
|
113
|
+
{#if newTag.includes('$workspace') || newTag.includes('$args')}
|
|
114
|
+
Dynamic tag
|
|
115
|
+
{:else}
|
|
116
|
+
Simple tag
|
|
117
|
+
{/if}
|
|
118
|
+
</div>
|
|
119
|
+
<div>
|
|
120
|
+
<b>Tag:</b>
|
|
121
|
+
{newTag.trim()}
|
|
122
|
+
</div>
|
|
123
|
+
{#if newTag.includes('$workspace') && !dynamicTag}
|
|
124
|
+
<div>Interpolated tag based on workspace id the job was created in </div>
|
|
125
|
+
{/if}
|
|
126
|
+
{#if dynamicTag}
|
|
127
|
+
<div>Interpolated tag based on args input of <b>{dynamicTag}</b></div>
|
|
128
|
+
{/if}
|
|
129
|
+
</div>
|
|
130
|
+
{/if}
|
|
131
|
+
{/if}
|
|
58
132
|
|
|
59
133
|
<Button
|
|
60
134
|
variant="contained"
|
|
@@ -87,13 +161,25 @@ loadCustomTags();
|
|
|
87
161
|
></span
|
|
88
162
|
>
|
|
89
163
|
<span class="text-2xs text-tertiary"
|
|
90
|
-
>To exclude 'workspace1' and 'workspace2' from a tag, use <pre
|
|
91
|
-
|
|
164
|
+
>To exclude 'workspace1' and 'workspace2' from a tag, use <pre class="inline"
|
|
165
|
+
>tag(^workspace1^workspace2)</pre
|
|
92
166
|
></span
|
|
93
167
|
>
|
|
94
168
|
<span class="text-2xs text-tertiary"
|
|
95
|
-
>For
|
|
169
|
+
>For <a
|
|
170
|
+
href="https://www.windmill.dev/docs/core_concepts/worker_groups#dynamic-tag"
|
|
171
|
+
target="_blank">dynamic tags</a
|
|
172
|
+
>
|
|
173
|
+
based on the workspace, use <pre class="inline">$workspace</pre>, e.g:
|
|
96
174
|
<pre class="inline">tag-$workspace</pre></span
|
|
97
175
|
>
|
|
176
|
+
<span class="text-2xs text-tertiary"
|
|
177
|
+
>For <a
|
|
178
|
+
href="https://www.windmill.dev/docs/core_concepts/worker_groups#dynamic-tag"
|
|
179
|
+
target="_blank">dynamic tags</a
|
|
180
|
+
>
|
|
181
|
+
based on args input, use <pre class="inline">$args[a.b.c]</pre> where
|
|
182
|
+
<pre class="inline">a.b.c</pre> is the path to the value in the args object</span
|
|
183
|
+
>
|
|
98
184
|
{/if}
|
|
99
185
|
</div>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
<script lang="ts">import
|
|
1
|
+
<script lang="ts">import { untrack } from 'svelte';
|
|
2
|
+
import CollapseLink from './CollapseLink.svelte';
|
|
2
3
|
import IconedResourceType from './IconedResourceType.svelte';
|
|
3
4
|
import Toggle from './Toggle.svelte';
|
|
4
5
|
import Tooltip from './Tooltip.svelte';
|
|
@@ -25,8 +26,12 @@ function changeDomain(domain, custom) {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
let enabled = $derived(value != undefined);
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
let lastValues = { domain: undefined, custom: undefined };
|
|
30
|
+
$effect.pre(() => {
|
|
31
|
+
if (value?.['domain'] != lastValues.domain || value?.['custom'] != lastValues.custom) {
|
|
32
|
+
lastValues = { domain: value?.['domain'], custom: value?.['custom'] };
|
|
33
|
+
untrack(() => changeDomain(value?.['domain'], value?.['custom']));
|
|
34
|
+
}
|
|
30
35
|
});
|
|
31
36
|
</script>
|
|
32
37
|
|