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
|
@@ -1,28 +1,70 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getCurrentModel, workspaceStore } from '../../stores';
|
|
2
2
|
import { buildClientSchema, printSchema } from 'graphql';
|
|
3
|
-
import
|
|
3
|
+
import OpenAI from 'openai';
|
|
4
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
4
5
|
import { get } from 'svelte/store';
|
|
5
6
|
import { OpenAPI, ResourceService } from '../../gen';
|
|
6
7
|
import { EDIT_CONFIG, FIX_CONFIG, GEN_CONFIG } from './prompts';
|
|
7
8
|
import { formatResourceTypes } from './utils';
|
|
8
9
|
import { z } from 'zod';
|
|
10
|
+
import { processToolCall } from './chat/shared';
|
|
11
|
+
import { generateRandomString } from '../../utils';
|
|
9
12
|
export const SUPPORTED_LANGUAGES = new Set(Object.keys(GEN_CONFIG.prompts));
|
|
10
|
-
const OPENAI_MODELS = [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
const OPENAI_MODELS = [
|
|
14
|
+
'gpt-5',
|
|
15
|
+
'gpt-5-mini',
|
|
16
|
+
'gpt-5-nano',
|
|
17
|
+
'gpt-4o',
|
|
18
|
+
'gpt-4o-mini',
|
|
19
|
+
'o4-mini',
|
|
20
|
+
'o3',
|
|
21
|
+
'o3-mini'
|
|
22
|
+
];
|
|
23
|
+
export const AI_PROVIDERS = {
|
|
24
|
+
openai: {
|
|
25
|
+
label: 'OpenAI',
|
|
26
|
+
defaultModels: OPENAI_MODELS
|
|
27
|
+
},
|
|
28
|
+
azure_openai: {
|
|
29
|
+
label: 'Azure OpenAI',
|
|
30
|
+
defaultModels: OPENAI_MODELS
|
|
31
|
+
},
|
|
32
|
+
anthropic: {
|
|
33
|
+
label: 'Anthropic',
|
|
34
|
+
defaultModels: ['claude-sonnet-4-0', 'claude-sonnet-4-0/thinking', 'claude-3-5-haiku-latest']
|
|
35
|
+
},
|
|
36
|
+
mistral: {
|
|
37
|
+
label: 'Mistral',
|
|
38
|
+
defaultModels: ['codestral-latest']
|
|
39
|
+
},
|
|
40
|
+
deepseek: {
|
|
41
|
+
label: 'DeepSeek',
|
|
42
|
+
defaultModels: ['deepseek-chat', 'deepseek-reasoner']
|
|
43
|
+
},
|
|
44
|
+
googleai: {
|
|
45
|
+
label: 'Google AI',
|
|
46
|
+
defaultModels: ['gemini-2.0-flash', 'gemini-1.5-flash', 'gemini-1.5-pro']
|
|
47
|
+
},
|
|
48
|
+
groq: {
|
|
49
|
+
label: 'Groq',
|
|
50
|
+
defaultModels: ['llama-3.3-70b-versatile', 'llama-3.1-8b-instant']
|
|
51
|
+
},
|
|
52
|
+
openrouter: {
|
|
53
|
+
label: 'OpenRouter',
|
|
54
|
+
defaultModels: ['meta-llama/llama-3.2-3b-instruct:free']
|
|
55
|
+
},
|
|
56
|
+
togetherai: {
|
|
57
|
+
label: 'Together AI',
|
|
58
|
+
defaultModels: ['meta-llama/Llama-3.3-70B-Instruct-Turbo']
|
|
59
|
+
},
|
|
60
|
+
customai: {
|
|
61
|
+
label: 'Custom AI',
|
|
62
|
+
defaultModels: []
|
|
63
|
+
}
|
|
23
64
|
};
|
|
24
|
-
export async function fetchAvailableModels(resourcePath, workspace, provider) {
|
|
65
|
+
export async function fetchAvailableModels(resourcePath, workspace, provider, signal) {
|
|
25
66
|
const models = await fetch(`${location.origin}${OpenAPI.BASE}/w/${workspace}/ai/proxy/models`, {
|
|
67
|
+
signal,
|
|
26
68
|
headers: {
|
|
27
69
|
'X-Resource-Path': resourcePath,
|
|
28
70
|
'X-Provider': provider,
|
|
@@ -35,21 +77,34 @@ export async function fetchAvailableModels(resourcePath, workspace, provider) {
|
|
|
35
77
|
}
|
|
36
78
|
const data = (await models.json());
|
|
37
79
|
if (data.data.length > 0) {
|
|
80
|
+
const sortFunc = (provider) => (a, b) => {
|
|
81
|
+
// First prioritize models in defaultModels array
|
|
82
|
+
const defaultModels = AI_PROVIDERS[provider]?.defaultModels || [];
|
|
83
|
+
const aInDefault = defaultModels.includes(a);
|
|
84
|
+
const bInDefault = defaultModels.includes(b);
|
|
85
|
+
if (aInDefault && !bInDefault)
|
|
86
|
+
return -1;
|
|
87
|
+
if (!aInDefault && bInDefault)
|
|
88
|
+
return 1;
|
|
89
|
+
return 0;
|
|
90
|
+
};
|
|
38
91
|
switch (provider) {
|
|
39
92
|
case 'openai':
|
|
40
93
|
return data.data
|
|
41
94
|
.filter((m) => m.id.startsWith('gpt-') || m.id.startsWith('o') || m.id.startsWith('codex'))
|
|
42
|
-
.map((m) => m.id)
|
|
95
|
+
.map((m) => m.id)
|
|
96
|
+
.sort(sortFunc(provider));
|
|
43
97
|
case 'azure_openai':
|
|
44
98
|
return data.data
|
|
45
99
|
.filter((m) => (m.id.startsWith('gpt-') || m.id.startsWith('o') || m.id.startsWith('codex')) &&
|
|
46
100
|
m.lifecycle_status !== 'deprecated' &&
|
|
47
101
|
(m.capabilities.completion || m.capabilities.chat_completion))
|
|
48
|
-
.map((m) => m.id)
|
|
102
|
+
.map((m) => m.id)
|
|
103
|
+
.sort(sortFunc(provider));
|
|
49
104
|
case 'googleai':
|
|
50
|
-
return data.data.map((m) => m.id.split('/')[1]);
|
|
105
|
+
return data.data.map((m) => m.id.split('/')[1]).sort(sortFunc(provider));
|
|
51
106
|
default:
|
|
52
|
-
return data.data.map((m) => m.id);
|
|
107
|
+
return data.data.map((m) => m.id).sort(sortFunc(provider));
|
|
53
108
|
}
|
|
54
109
|
}
|
|
55
110
|
return data?.data.map((m) => m.id) ?? [];
|
|
@@ -61,9 +116,15 @@ function getModelMaxTokens(provider, model) {
|
|
|
61
116
|
else if ((provider === 'azure_openai' || provider === 'openai') && model.startsWith('o')) {
|
|
62
117
|
return 100000;
|
|
63
118
|
}
|
|
119
|
+
else if (model.startsWith('claude-sonnet') || model.startsWith('gemini-2.5')) {
|
|
120
|
+
return 64000;
|
|
121
|
+
}
|
|
64
122
|
else if (model.startsWith('gpt-4.1')) {
|
|
65
123
|
return 32768;
|
|
66
124
|
}
|
|
125
|
+
else if (model.startsWith('claude-opus')) {
|
|
126
|
+
return 32000;
|
|
127
|
+
}
|
|
67
128
|
else if (model.startsWith('gpt-4o') || model.startsWith('codestral')) {
|
|
68
129
|
return 16384;
|
|
69
130
|
}
|
|
@@ -93,12 +154,13 @@ export function getModelContextWindow(model) {
|
|
|
93
154
|
}
|
|
94
155
|
}
|
|
95
156
|
function getModelSpecificConfig(modelProvider, tools) {
|
|
157
|
+
const maxTokens = getModelMaxTokens(modelProvider.provider, modelProvider.model);
|
|
96
158
|
if ((modelProvider.provider === 'openai' || modelProvider.provider === 'azure_openai') &&
|
|
97
159
|
(modelProvider.model.startsWith('o') || modelProvider.model.startsWith('gpt-5'))) {
|
|
98
160
|
return {
|
|
99
161
|
model: modelProvider.model,
|
|
100
162
|
...(tools && tools.length > 0 ? { tools } : {}),
|
|
101
|
-
max_completion_tokens:
|
|
163
|
+
max_completion_tokens: maxTokens
|
|
102
164
|
};
|
|
103
165
|
}
|
|
104
166
|
else {
|
|
@@ -116,7 +178,7 @@ function getModelSpecificConfig(modelProvider, tools) {
|
|
|
116
178
|
temperature: 0
|
|
117
179
|
}),
|
|
118
180
|
...(tools && tools.length > 0 ? { tools } : {}),
|
|
119
|
-
max_tokens:
|
|
181
|
+
max_tokens: maxTokens
|
|
120
182
|
};
|
|
121
183
|
}
|
|
122
184
|
}
|
|
@@ -169,8 +231,10 @@ export const PROVIDER_COMPLETION_CONFIG_MAP = {
|
|
|
169
231
|
};
|
|
170
232
|
class WorkspacedAIClients {
|
|
171
233
|
openaiClient;
|
|
234
|
+
anthropicClient;
|
|
172
235
|
init(workspace) {
|
|
173
236
|
this.initOpenai(workspace);
|
|
237
|
+
this.initAnthropic(workspace);
|
|
174
238
|
}
|
|
175
239
|
getBaseURL(workspace) {
|
|
176
240
|
return `${location.origin}${OpenAPI.BASE}/w/${workspace}/ai/proxy`;
|
|
@@ -186,19 +250,33 @@ class WorkspacedAIClients {
|
|
|
186
250
|
dangerouslyAllowBrowser: true
|
|
187
251
|
});
|
|
188
252
|
}
|
|
253
|
+
initAnthropic(workspace) {
|
|
254
|
+
const baseURL = this.getBaseURL(workspace);
|
|
255
|
+
this.anthropicClient = new Anthropic({
|
|
256
|
+
baseURL,
|
|
257
|
+
apiKey: 'fake-key',
|
|
258
|
+
dangerouslyAllowBrowser: true
|
|
259
|
+
});
|
|
260
|
+
}
|
|
189
261
|
getOpenaiClient() {
|
|
190
262
|
if (!this.openaiClient) {
|
|
191
263
|
throw new Error('OpenAI not initialized');
|
|
192
264
|
}
|
|
193
265
|
return this.openaiClient;
|
|
194
266
|
}
|
|
267
|
+
getAnthropicClient() {
|
|
268
|
+
if (!this.anthropicClient) {
|
|
269
|
+
throw new Error('Anthropic not initialized');
|
|
270
|
+
}
|
|
271
|
+
return this.anthropicClient;
|
|
272
|
+
}
|
|
195
273
|
}
|
|
196
274
|
export const workspaceAIClients = new WorkspacedAIClients();
|
|
197
275
|
export async function testKey({ apiKey, resourcePath, model, abortController, messages, aiProvider }) {
|
|
198
276
|
if (!apiKey && !resourcePath) {
|
|
199
277
|
throw new Error('API key or resource path is required');
|
|
200
278
|
}
|
|
201
|
-
const modelToTest = model ??
|
|
279
|
+
const modelToTest = model ?? AI_PROVIDERS[aiProvider].defaultModels[0];
|
|
202
280
|
if (!modelToTest) {
|
|
203
281
|
throw new Error('Missing a model to test');
|
|
204
282
|
}
|
|
@@ -330,12 +408,8 @@ const PROMPTS_CONFIGS = {
|
|
|
330
408
|
edit: EDIT_CONFIG,
|
|
331
409
|
gen: GEN_CONFIG
|
|
332
410
|
};
|
|
333
|
-
function getProviderAndCompletionConfig({ messages, stream, tools, forceModelProvider }) {
|
|
334
|
-
|
|
335
|
-
const modelProvider = forceModelProvider ?? get(copilotSessionModel) ?? info.defaultModel ?? info.aiModels[0];
|
|
336
|
-
if (!modelProvider) {
|
|
337
|
-
throw new Error('No model selected');
|
|
338
|
-
}
|
|
411
|
+
export function getProviderAndCompletionConfig({ messages, stream, tools, forceModelProvider }) {
|
|
412
|
+
const modelProvider = forceModelProvider ?? getCurrentModel();
|
|
339
413
|
const providerConfig = PROVIDER_COMPLETION_CONFIG_MAP[modelProvider.provider];
|
|
340
414
|
const processedMessages = prepareMessages(modelProvider.provider, messages);
|
|
341
415
|
return {
|
|
@@ -444,7 +518,7 @@ export async function getFimCompletion(prompt, suffix, providerModel, abortContr
|
|
|
444
518
|
export async function getCompletion(messages, abortController, tools) {
|
|
445
519
|
const { provider, config } = getProviderAndCompletionConfig({ messages, stream: true, tools });
|
|
446
520
|
const openaiClient = workspaceAIClients.getOpenaiClient();
|
|
447
|
-
const completion =
|
|
521
|
+
const completion = openaiClient.chat.completions.create(config, {
|
|
448
522
|
signal: abortController.signal,
|
|
449
523
|
headers: {
|
|
450
524
|
'X-Provider': provider
|
|
@@ -452,6 +526,112 @@ export async function getCompletion(messages, abortController, tools) {
|
|
|
452
526
|
});
|
|
453
527
|
return completion;
|
|
454
528
|
}
|
|
529
|
+
function extractFirstJSON(str) {
|
|
530
|
+
let depth = 0, i = 0;
|
|
531
|
+
for (; i < str.length; i++) {
|
|
532
|
+
if (str[i] === '{')
|
|
533
|
+
depth++;
|
|
534
|
+
else if (str[i] === '}' && --depth === 0)
|
|
535
|
+
break;
|
|
536
|
+
}
|
|
537
|
+
return str.slice(0, i + 1);
|
|
538
|
+
}
|
|
539
|
+
export async function parseOpenAICompletion(completion, callbacks, messages, addedMessages, tools, helpers) {
|
|
540
|
+
const finalToolCalls = {};
|
|
541
|
+
let answer = '';
|
|
542
|
+
for await (const chunk of completion) {
|
|
543
|
+
if (!('choices' in chunk && chunk.choices.length > 0 && 'delta' in chunk.choices[0])) {
|
|
544
|
+
continue;
|
|
545
|
+
}
|
|
546
|
+
const c = chunk;
|
|
547
|
+
const delta = c.choices[0].delta.content;
|
|
548
|
+
if (delta) {
|
|
549
|
+
answer += delta;
|
|
550
|
+
callbacks.onNewToken(delta);
|
|
551
|
+
}
|
|
552
|
+
const toolCalls = c.choices[0].delta.tool_calls || [];
|
|
553
|
+
if (toolCalls.length > 0 && answer) {
|
|
554
|
+
// if tool calls are present but we have some textual content already, we need to display it to the user first
|
|
555
|
+
callbacks.onMessageEnd();
|
|
556
|
+
answer = '';
|
|
557
|
+
}
|
|
558
|
+
for (let i = 0; i < toolCalls.length; i++) {
|
|
559
|
+
const toolCall = toolCalls[i];
|
|
560
|
+
// Gemini models are missing the index field
|
|
561
|
+
if (toolCall.index === undefined ||
|
|
562
|
+
(typeof toolCall.index === 'string' && toolCall.index === '')) {
|
|
563
|
+
toolCall.index = i;
|
|
564
|
+
}
|
|
565
|
+
// Gemini models are missing the id field
|
|
566
|
+
if (toolCall.id === undefined || (typeof toolCall.id === 'string' && toolCall.id === '')) {
|
|
567
|
+
toolCall.id = generateRandomString();
|
|
568
|
+
}
|
|
569
|
+
const { index } = toolCall;
|
|
570
|
+
let finalToolCall = finalToolCalls[index];
|
|
571
|
+
if (!finalToolCall) {
|
|
572
|
+
finalToolCalls[index] = toolCall;
|
|
573
|
+
}
|
|
574
|
+
else {
|
|
575
|
+
if (toolCall.function?.arguments) {
|
|
576
|
+
if (!finalToolCall.function) {
|
|
577
|
+
finalToolCall.function = toolCall.function;
|
|
578
|
+
}
|
|
579
|
+
else {
|
|
580
|
+
finalToolCall.function.arguments =
|
|
581
|
+
(finalToolCall.function.arguments ?? '') + toolCall.function.arguments;
|
|
582
|
+
// Make sure we only have one JSON object, else for Gemini models it sometimes results in two JSON objects
|
|
583
|
+
finalToolCall.function.arguments = extractFirstJSON(finalToolCall.function.arguments || '{}');
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
finalToolCall = finalToolCalls[index];
|
|
588
|
+
if (finalToolCall?.function) {
|
|
589
|
+
const { function: { name: funcName }, id: toolCallId } = finalToolCall;
|
|
590
|
+
if (funcName && toolCallId) {
|
|
591
|
+
const tool = tools.find((t) => t.def.function.name === funcName);
|
|
592
|
+
if (tool && tool.preAction) {
|
|
593
|
+
tool.preAction({ toolCallbacks: callbacks, toolId: toolCallId });
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
if (answer) {
|
|
600
|
+
const toAdd = { role: 'assistant', content: answer };
|
|
601
|
+
addedMessages.push(toAdd);
|
|
602
|
+
messages.push(toAdd);
|
|
603
|
+
}
|
|
604
|
+
callbacks.onMessageEnd();
|
|
605
|
+
const toolCalls = Object.values(finalToolCalls).filter((toolCall) => toolCall.id !== undefined && toolCall.function?.arguments !== undefined);
|
|
606
|
+
if (toolCalls.length > 0) {
|
|
607
|
+
const toAdd = {
|
|
608
|
+
role: 'assistant',
|
|
609
|
+
tool_calls: toolCalls.map((t) => ({
|
|
610
|
+
...t,
|
|
611
|
+
function: {
|
|
612
|
+
...t.function,
|
|
613
|
+
arguments: t.function.arguments || '{}'
|
|
614
|
+
}
|
|
615
|
+
}))
|
|
616
|
+
};
|
|
617
|
+
messages.push(toAdd);
|
|
618
|
+
addedMessages.push(toAdd);
|
|
619
|
+
for (const toolCall of toolCalls) {
|
|
620
|
+
const messageToAdd = await processToolCall({
|
|
621
|
+
tools,
|
|
622
|
+
toolCall,
|
|
623
|
+
helpers,
|
|
624
|
+
toolCallbacks: callbacks
|
|
625
|
+
});
|
|
626
|
+
messages.push(messageToAdd);
|
|
627
|
+
addedMessages.push(messageToAdd);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
else {
|
|
631
|
+
return false;
|
|
632
|
+
}
|
|
633
|
+
return true;
|
|
634
|
+
}
|
|
455
635
|
export function getResponseFromEvent(part) {
|
|
456
636
|
return part.choices?.[0]?.delta?.content || '';
|
|
457
637
|
}
|
|
@@ -539,7 +719,7 @@ export async function deltaCodeCompletion(messages, generatedCodeDelta, abortCon
|
|
|
539
719
|
continue;
|
|
540
720
|
}
|
|
541
721
|
if (!match[1].endsWith('`')) {
|
|
542
|
-
// skip
|
|
722
|
+
// skip updating if possible that part of three ticks (end of code block)s
|
|
543
723
|
delta = getStringEndDelta(code, match[1]);
|
|
544
724
|
generatedCodeDelta.set(delta);
|
|
545
725
|
code = match[1];
|
|
@@ -41,7 +41,7 @@ export type VisualChange = {
|
|
|
41
41
|
};
|
|
42
42
|
export declare function setGlobalCSS(id: string, cssCode: string): void;
|
|
43
43
|
export declare let VISUAL_CHANGES_CSS: string;
|
|
44
|
-
export declare function displayVisualChanges(cssId: string, editor: meditor.IStandaloneCodeEditor, visualChanges: VisualChange[]): Promise<{
|
|
44
|
+
export declare function displayVisualChanges(cssId: string, editor: meditor.IStandaloneCodeEditor, visualChanges: VisualChange[], revertMode?: boolean): Promise<{
|
|
45
45
|
collection: meditor.IEditorDecorationsCollection;
|
|
46
46
|
ids: string[];
|
|
47
47
|
}>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLongHash } from '../../editorLangUtils';
|
|
2
2
|
import {} from 'monaco-editor';
|
|
3
|
-
function applyMonacoStyles(targetEl, greenHighlight) {
|
|
3
|
+
function applyMonacoStyles(targetEl, greenHighlight, revertMode) {
|
|
4
4
|
const computedStyles = window.getComputedStyle(document.querySelector('.monaco-editor .view-lines'));
|
|
5
5
|
Object.assign(targetEl.style, {
|
|
6
6
|
fontFamily: computedStyles.fontFamily,
|
|
@@ -10,7 +10,9 @@ function applyMonacoStyles(targetEl, greenHighlight) {
|
|
|
10
10
|
whiteSpace: 'pre'
|
|
11
11
|
});
|
|
12
12
|
if (greenHighlight) {
|
|
13
|
-
targetEl.style.backgroundColor =
|
|
13
|
+
targetEl.style.backgroundColor = revertMode
|
|
14
|
+
? 'var(--vscode-diffEditor-removedTextBackground)'
|
|
15
|
+
: 'var(--vscode-diffEditor-insertedTextBackground)';
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
export function setGlobalCSS(id, cssCode) {
|
|
@@ -22,7 +24,7 @@ export function setGlobalCSS(id, cssCode) {
|
|
|
22
24
|
}
|
|
23
25
|
styleTag.textContent = cssCode;
|
|
24
26
|
}
|
|
25
|
-
function addInlineGhostText(change) {
|
|
27
|
+
function addInlineGhostText(change, revertMode) {
|
|
26
28
|
const cssId = createLongHash();
|
|
27
29
|
const decoration = {
|
|
28
30
|
range: {
|
|
@@ -32,7 +34,11 @@ function addInlineGhostText(change) {
|
|
|
32
34
|
endColumn: change.position.column + change.value.length
|
|
33
35
|
},
|
|
34
36
|
options: {
|
|
35
|
-
beforeContentClassName: `editor-ghost-text editor-ghost-text-content-${cssId} ${change.options?.greenHighlight
|
|
37
|
+
beforeContentClassName: `editor-ghost-text editor-ghost-text-content-${cssId} ${change.options?.greenHighlight
|
|
38
|
+
? revertMode
|
|
39
|
+
? 'editor-ghost-text-removed'
|
|
40
|
+
: 'editor-ghost-text-green'
|
|
41
|
+
: ''}`
|
|
36
42
|
}
|
|
37
43
|
};
|
|
38
44
|
const safeContent = change.value.replaceAll('"', '\\"');
|
|
@@ -90,14 +96,14 @@ function getReviewButtons(editor, acceptFn, rejectFn) {
|
|
|
90
96
|
reviewButtons.append(rejectButton);
|
|
91
97
|
return reviewButtons;
|
|
92
98
|
}
|
|
93
|
-
async function addMultilineGhostText(editor, text, afterLineNumber, heightInLines, options) {
|
|
99
|
+
async function addMultilineGhostText(editor, text, afterLineNumber, heightInLines, options, revertMode) {
|
|
94
100
|
const el = document.createElement('div');
|
|
95
101
|
el.textContent = text;
|
|
96
102
|
if (options?.review) {
|
|
97
103
|
const reviewButtons = getReviewButtons(editor, options.review.acceptFn, options.review.rejectFn);
|
|
98
104
|
el.append(reviewButtons);
|
|
99
105
|
}
|
|
100
|
-
applyMonacoStyles(el, options?.greenHighlight);
|
|
106
|
+
applyMonacoStyles(el, options?.greenHighlight, revertMode);
|
|
101
107
|
const addZonePromise = new Promise((resolve, reject) => {
|
|
102
108
|
editor?.changeViewZones((acc) => {
|
|
103
109
|
const id = acc.addZone({
|
|
@@ -112,13 +118,13 @@ async function addMultilineGhostText(editor, text, afterLineNumber, heightInLine
|
|
|
112
118
|
return addZonePromise;
|
|
113
119
|
}
|
|
114
120
|
export let VISUAL_CHANGES_CSS = `.editor-ghost-text-green { background-color: var(--vscode-diffEditor-insertedTextBackground) !important; }\n.editor-ghost-text-removed { background-color: var(--vscode-diffEditor-removedTextBackground); }\n\n.editor-ghost-text { display: inline-block; background-color: var(--vscode-editor-background); color: gray;}`;
|
|
115
|
-
export async function displayVisualChanges(cssId, editor, visualChanges) {
|
|
121
|
+
export async function displayVisualChanges(cssId, editor, visualChanges, revertMode) {
|
|
116
122
|
let decorations = [];
|
|
117
123
|
let css = '';
|
|
118
124
|
let ids = [];
|
|
119
125
|
for (const change of visualChanges) {
|
|
120
126
|
if (change.type === 'added_inline') {
|
|
121
|
-
const { css: newCss, decoration } = addInlineGhostText(change);
|
|
127
|
+
const { css: newCss, decoration } = addInlineGhostText(change, revertMode);
|
|
122
128
|
decorations.push(decoration);
|
|
123
129
|
css += newCss;
|
|
124
130
|
}
|
|
@@ -131,7 +137,7 @@ export async function displayVisualChanges(cssId, editor, visualChanges) {
|
|
|
131
137
|
endColumn: change.range.endColumn
|
|
132
138
|
},
|
|
133
139
|
options: {
|
|
134
|
-
className: 'editor-ghost-text-removed',
|
|
140
|
+
className: revertMode ? 'editor-ghost-text-green' : 'editor-ghost-text-removed',
|
|
135
141
|
isWholeLine: change.options?.isWholeLine
|
|
136
142
|
}
|
|
137
143
|
};
|
|
@@ -157,7 +163,7 @@ export async function displayVisualChanges(cssId, editor, visualChanges) {
|
|
|
157
163
|
}
|
|
158
164
|
else if (change.type === 'added_block') {
|
|
159
165
|
const id = await addMultilineGhostText(editor, change.value, change.position.afterLineNumber, change.value.split('\n').length, // we know it won't end by \n
|
|
160
|
-
change.options);
|
|
166
|
+
change.options, revertMode);
|
|
161
167
|
ids.push(id);
|
|
162
168
|
}
|
|
163
169
|
}
|
|
@@ -8,8 +8,9 @@ import { writable } from 'svelte/store';
|
|
|
8
8
|
import FlowAIChat from '../copilot/chat/flow/FlowAIChat.svelte';
|
|
9
9
|
import { aiChatManager, AIMode } from '../copilot/chat/AIChatManager.svelte';
|
|
10
10
|
import { triggerableByAI } from '../../actions/triggerableByAI.svelte';
|
|
11
|
+
import { extractAllModules } from '../copilot/chat/shared';
|
|
11
12
|
const { flowStore } = getContext('FlowEditorContext');
|
|
12
|
-
let { loading, disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, disabledFlowInputs = false, smallErrorHandler = false, showJobStatus = false, newFlow = false, savedFlow = undefined, onDeployTrigger = () => { }, onTestUpTo = undefined, onEditInput = undefined, forceTestTab, highlightArg, localModuleStates = {}, testModuleStates = undefined, aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, job, suspendStatus, onDelete, flowHasChanged } = $props();
|
|
13
|
+
let { loading, disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, disabledFlowInputs = false, smallErrorHandler = false, showJobStatus = false, newFlow = false, savedFlow = undefined, onDeployTrigger = () => { }, onTestUpTo = undefined, onEditInput = undefined, forceTestTab, highlightArg, localModuleStates = {}, testModuleStates = undefined, aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, job, suspendStatus, onDelete, flowHasChanged, previewOpen } = $props();
|
|
13
14
|
let flowModuleSchemaMap = $state();
|
|
14
15
|
export function isNodeVisible(nodeId) {
|
|
15
16
|
return flowModuleSchemaMap?.isNodeVisible(nodeId) ?? false;
|
|
@@ -24,7 +25,7 @@ $effect(() => {
|
|
|
24
25
|
lastDeployedFlow: savedFlow,
|
|
25
26
|
lastSavedFlow: savedFlow?.draft,
|
|
26
27
|
path: savedFlow?.path,
|
|
27
|
-
modules: flowStore.val.value.modules
|
|
28
|
+
modules: extractAllModules(flowStore.val.value.modules)
|
|
28
29
|
};
|
|
29
30
|
aiChatManager.flowOptions = options;
|
|
30
31
|
});
|
|
@@ -117,6 +118,7 @@ onDestroy(() => {
|
|
|
117
118
|
{isOwner}
|
|
118
119
|
{suspendStatus}
|
|
119
120
|
onOpenDetails={onOpenPreview}
|
|
121
|
+
{previewOpen}
|
|
120
122
|
/>
|
|
121
123
|
{/if}
|
|
122
124
|
</Pane>
|
|
@@ -40,6 +40,7 @@ interface Props {
|
|
|
40
40
|
}>>;
|
|
41
41
|
onDelete?: (id: string) => void;
|
|
42
42
|
flowHasChanged?: boolean;
|
|
43
|
+
previewOpen: boolean;
|
|
43
44
|
}
|
|
44
45
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
45
46
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -9,19 +9,19 @@ const iconHeight = height || size;
|
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
11
|
{#if module.value.type === 'aiagent'}
|
|
12
|
-
<Bot size={16} />
|
|
12
|
+
<Bot size={16} class="text-violet-800 dark:text-violet-400" />
|
|
13
13
|
{:else if module.value.type === 'rawscript'}
|
|
14
14
|
<LanguageIcon lang={module.value.language} width={iconWidth} height={iconHeight} />
|
|
15
15
|
{:else if module.summary === 'Terminate flow'}
|
|
16
|
-
<Square
|
|
16
|
+
<Square {size} />
|
|
17
17
|
{:else if module.value.type === 'identity'}
|
|
18
|
-
<ArrowDown
|
|
18
|
+
<ArrowDown {size} />
|
|
19
19
|
{:else if module.value.type === 'flow'}
|
|
20
|
-
<BarsStaggered
|
|
20
|
+
<BarsStaggered {size} />
|
|
21
21
|
{:else if module.value.type === 'forloopflow' || module.value.type === 'whileloopflow'}
|
|
22
|
-
<Repeat
|
|
22
|
+
<Repeat {size} />
|
|
23
23
|
{:else if module.value.type === 'branchone' || module.value.type === 'branchall'}
|
|
24
|
-
<GitBranch
|
|
24
|
+
<GitBranch {size} />
|
|
25
25
|
{:else if module.value.type === 'script'}
|
|
26
26
|
{#if module.value.path.startsWith('hub/')}
|
|
27
27
|
<IconedResourceType
|
|
@@ -31,9 +31,9 @@ const iconHeight = height || size;
|
|
|
31
31
|
silent={true}
|
|
32
32
|
/>
|
|
33
33
|
{:else}
|
|
34
|
-
<Building
|
|
34
|
+
<Building {size} />
|
|
35
35
|
{/if}
|
|
36
36
|
{:else}
|
|
37
37
|
<!-- Fallback icon for unknown module types -->
|
|
38
|
-
<BarsStaggered
|
|
38
|
+
<BarsStaggered {size} />
|
|
39
39
|
{/if}
|
|
@@ -47,7 +47,7 @@ $effect.pre(() => {
|
|
|
47
47
|
</script>
|
|
48
48
|
|
|
49
49
|
<div
|
|
50
|
-
class="overflow-x-auto scrollbar-hidden flex items-center justify-between px-4
|
|
50
|
+
class="overflow-x-auto scrollbar-hidden flex items-center justify-between px-4 pt-1 pb-4 flex-nowrap"
|
|
51
51
|
>
|
|
52
52
|
{#if flowModuleValue}
|
|
53
53
|
<span class="text-sm w-full mr-4">
|
|
@@ -129,6 +129,9 @@ $effect.pre(() => {
|
|
|
129
129
|
{:else if flowModuleValue.type === 'flow'}
|
|
130
130
|
<Badge color="indigo" capitalize>flow</Badge>
|
|
131
131
|
<input bind:value={summary} placeholder="Summary" class="w-full grow" />
|
|
132
|
+
{:else if flowModuleValue.type === 'aiagent'}
|
|
133
|
+
<Badge color="indigo">AI Agent</Badge>
|
|
134
|
+
<input bind:value={summary} placeholder="Summary" class="w-full grow" />
|
|
132
135
|
{/if}
|
|
133
136
|
</div>
|
|
134
137
|
</span>
|
|
@@ -12,12 +12,18 @@ import FlowModuleDeleteAfterUse from './FlowModuleDeleteAfterUse.svelte';
|
|
|
12
12
|
import { enterpriseLicense } from '../../../stores';
|
|
13
13
|
import FlowModuleSkip from './FlowModuleSkip.svelte';
|
|
14
14
|
import TabsV2 from '../../common/tabs/TabsV2.svelte';
|
|
15
|
+
import { useUiIntent } from '../../copilot/chat/flow/useUiIntent';
|
|
15
16
|
let { noEditor, flowModule = $bindable(), previousModule, parentModule } = $props();
|
|
16
17
|
let value = $state(flowModule.value);
|
|
17
18
|
$effect(() => {
|
|
18
19
|
value = flowModule.value;
|
|
19
20
|
});
|
|
20
21
|
let selected = $state('early-stop');
|
|
22
|
+
useUiIntent(`branchall-${flowModule.id}`, {
|
|
23
|
+
openTab: (tab) => {
|
|
24
|
+
selected = tab;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
21
27
|
</script>
|
|
22
28
|
|
|
23
29
|
<div class="h-full flex flex-col w-full" id="flow-editor-branch-all-wrapper">
|
|
@@ -12,12 +12,18 @@ import SplitPanesWrapper from '../../splitPanes/SplitPanesWrapper.svelte';
|
|
|
12
12
|
import FlowModuleMock from './FlowModuleMock.svelte';
|
|
13
13
|
import { enterpriseLicense } from '../../../stores';
|
|
14
14
|
import FlowModuleSkip from './FlowModuleSkip.svelte';
|
|
15
|
+
import { useUiIntent } from '../../copilot/chat/flow/useUiIntent';
|
|
15
16
|
let { flowModule = $bindable(), previousModule, parentModule, noEditor, enableAi = false } = $props();
|
|
16
17
|
let value = $state(flowModule.value);
|
|
17
18
|
$effect(() => {
|
|
18
19
|
value = flowModule.value;
|
|
19
20
|
});
|
|
20
21
|
let selected = $state('early-stop');
|
|
22
|
+
useUiIntent(`branchone-${flowModule.id}`, {
|
|
23
|
+
openTab: (tab) => {
|
|
24
|
+
selected = tab;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
21
27
|
</script>
|
|
22
28
|
|
|
23
29
|
<div class="h-full" id="flow-editor-branch-one-wrapper">
|
|
@@ -10,7 +10,7 @@ import TriggersEditor from '../../triggers/TriggersEditor.svelte';
|
|
|
10
10
|
import { handleSelectTriggerFromKind } from '../../triggers/utils';
|
|
11
11
|
import { computeMissingInputWarnings } from '../missingInputWarnings';
|
|
12
12
|
import FlowResult from './FlowResult.svelte';
|
|
13
|
-
let { noEditor = false, enableAi = false, newFlow = false, disabledFlowInputs = false, savedFlow = undefined, onDeployTrigger = () => { }, forceTestTab, highlightArg, onTestFlow, job, isOwner, suspendStatus, onOpenDetails } = $props();
|
|
13
|
+
let { noEditor = false, enableAi = false, newFlow = false, disabledFlowInputs = false, savedFlow = undefined, onDeployTrigger = () => { }, forceTestTab, highlightArg, onTestFlow, job, isOwner, suspendStatus, onOpenDetails, previewOpen = false } = $props();
|
|
14
14
|
const { selectedId, flowStore, flowStateStore, flowInputsStore, pathStore, initialPathStore, fakeInitialPath, previewArgs, flowInputEditorState } = getContext('FlowEditorContext');
|
|
15
15
|
const { showCaptureHint, triggersState, triggersCount } = getContext('TriggerContext');
|
|
16
16
|
function checkDup(modules) {
|
|
@@ -41,6 +41,7 @@ $effect(() => {
|
|
|
41
41
|
}}
|
|
42
42
|
on:applyArgs
|
|
43
43
|
{onTestFlow}
|
|
44
|
+
{previewOpen}
|
|
44
45
|
/>
|
|
45
46
|
{:else if $selectedId === 'Result'}
|
|
46
47
|
<FlowResult {noEditor} {job} {isOwner} {suspendStatus} {onOpenDetails} />
|
|
@@ -20,6 +20,7 @@ interface Props {
|
|
|
20
20
|
nb: number;
|
|
21
21
|
}>>;
|
|
22
22
|
onOpenDetails?: () => void;
|
|
23
|
+
previewOpen?: boolean;
|
|
23
24
|
}
|
|
24
25
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
25
26
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|