windmill-components 1.511.1 → 1.531.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/components/AIAgentLogViewer.svelte +123 -0
- package/package/components/AIAgentLogViewer.svelte.d.ts +13 -0
- package/package/components/AppConnectInner.svelte +10 -10
- package/package/components/AppConnectInner.svelte.d.ts +1 -1
- package/package/components/ArgInput.svelte +42 -14
- package/package/components/ArgInput.svelte.d.ts +2 -10
- package/package/components/AssignableTagsInner.svelte +5 -0
- package/package/components/AuthSettings.svelte +4 -2
- package/package/components/AuthSettings.svelte.d.ts +1 -0
- package/package/components/AutoscalingConfigEditor.svelte +76 -2
- package/package/components/DBManagerDrawer.svelte +154 -151
- package/package/components/DBManagerDrawer.svelte.d.ts +2 -2
- package/package/components/DBTable.svelte +3 -3
- package/package/components/DBTable.svelte.d.ts +1 -0
- package/package/components/DBTableEditor.svelte +7 -7
- package/package/components/DBTableEditor.svelte.d.ts +1 -1
- package/package/components/DeployWorkspace.svelte +1 -1
- package/package/components/Dev.svelte +12 -28
- package/package/components/DiffEditor.svelte +6 -3
- package/package/components/DiffEditor.svelte.d.ts +1 -0
- package/package/components/DisplayResult.svelte +46 -14
- package/package/components/DisplayResult.svelte.d.ts +5 -1
- package/package/components/DynSelect.svelte +58 -34
- package/package/components/DynSelect.svelte.d.ts +3 -11
- package/package/components/EditableSchemaForm.svelte +131 -8
- package/package/components/EditableSchemaForm.svelte.d.ts +5 -1
- package/package/components/Editor.svelte +27 -9
- package/package/components/Editor.svelte.d.ts +1 -1
- package/package/components/EditorBar.svelte +105 -7
- package/package/components/EditorSettings.svelte +6 -0
- package/package/components/ErrorOrRecoveryHandler.svelte +76 -8
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -1
- package/package/components/ExploreAssetButton.svelte +14 -4
- package/package/components/ExploreAssetButton.svelte.d.ts +1 -0
- package/package/components/FirstStepInputs.svelte +2 -2
- package/package/components/FlowBuilder.svelte +18 -36
- package/package/components/FlowGraphViewerStep.svelte +7 -0
- package/package/components/FlowJobResult.svelte +16 -64
- package/package/components/FlowJobResult.svelte.d.ts +11 -4
- package/package/components/FlowLogViewer.svelte +660 -0
- package/package/components/FlowLogViewer.svelte.d.ts +34 -0
- package/package/components/FlowLogViewerWrapper.svelte +52 -0
- package/package/components/FlowLogViewerWrapper.svelte.d.ts +21 -0
- package/package/components/FlowLoopIterationPreview.svelte +3 -3
- package/package/components/FlowPreviewContent.svelte +13 -6
- package/package/components/FlowPreviewContent.svelte.d.ts +7 -7
- package/package/components/FlowPreviewResult.svelte +7 -5
- package/package/components/FlowPreviewResult.svelte.d.ts +4 -5
- package/package/components/FlowStatusViewer.svelte +28 -16
- package/package/components/FlowStatusViewer.svelte.d.ts +19 -27
- package/package/components/FlowStatusViewerInner.svelte +500 -295
- package/package/components/FlowStatusViewerInner.svelte.d.ts +34 -34
- package/package/components/FlowTimeline.svelte +11 -13
- package/package/components/FlowTimeline.svelte.d.ts +6 -5
- package/package/components/FolderEditor.svelte +1 -1
- package/package/components/GitDiffPreview.svelte +14 -18
- package/package/components/GitDiffPreview.svelte.d.ts +2 -8
- package/package/components/GitHubAppIntegration.svelte +3 -1
- package/package/components/HighlightCode.svelte +4 -1
- package/package/components/IconedResourceType.svelte +9 -5
- package/package/components/IdEditorInput.svelte +25 -22
- package/package/components/IdEditorInput.svelte.d.ts +11 -23
- package/package/components/InstanceSetting.svelte +7 -2
- package/package/components/InstanceSettings.svelte +1 -0
- package/package/components/JobLoader.svelte +108 -12
- package/package/components/JobLoader.svelte.d.ts +16 -3
- package/package/components/LogViewer.svelte +8 -2
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/LogViewerHeader.svelte +32 -0
- package/package/components/LogViewerHeader.svelte.d.ts +8 -0
- package/package/components/Login.svelte +8 -2
- package/package/components/MemoryFootprintViewer.svelte +1 -1
- package/package/components/ModulePreviewForm.svelte +10 -6
- package/package/components/ModulePreviewResultViewer.svelte +18 -2
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -1
- package/package/components/ModuleTest.svelte +59 -16
- package/package/components/MoveDrawer.svelte.d.ts +2 -2
- package/package/components/NextcloudSetting.svelte +84 -0
- package/package/components/NextcloudSetting.svelte.d.ts +7 -0
- package/package/components/ObjectResourceInput.svelte +3 -2
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/ParqetCsvTableRenderer.svelte +1 -1
- package/package/components/RelativeLineNumbers.svelte +16 -0
- package/package/components/RelativeLineNumbers.svelte.d.ts +18 -0
- package/package/components/ResourceEditor.svelte +10 -5
- package/package/components/ResourcePicker.svelte +8 -1
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/ResultStreamDisplay.svelte +5 -0
- package/package/components/ResultStreamDisplay.svelte.d.ts +5 -0
- package/package/components/RunForm.svelte +9 -1
- package/package/components/SchemaForm.svelte +2 -2
- package/package/components/SchemaForm.svelte.d.ts +2 -10
- package/package/components/ScriptBuilder.svelte +26 -19
- package/package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/package/components/ScriptEditor.svelte +2 -2
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ScriptWrapper.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleAgTable.svelte +2 -0
- package/package/components/SimpleAgTable.svelte.d.ts +2 -0
- package/package/components/SimpleEditor.svelte +10 -4
- package/package/components/SimpleEditor.svelte.d.ts +1 -0
- package/package/components/SqlRepl.svelte +21 -7
- package/package/components/SqlRepl.svelte.d.ts +2 -2
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/TemplateEditor.svelte +1 -1
- package/package/components/UserSettings.svelte +4 -4
- package/package/components/WorkerTagSelect.svelte +70 -1
- package/package/components/apps/components/display/AppAccordionList.svelte +1 -1
- package/package/components/apps/components/display/AppCarouselList.svelte +10 -8
- package/package/components/apps/components/display/AppDisplayComponent.svelte +13 -1
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +3 -3
- package/package/components/apps/components/display/AppText.svelte +2 -2
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +8 -1
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +5 -4
- package/package/components/apps/components/display/dbtable/queries/count.js +11 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.js +3 -3
- package/package/components/apps/components/display/dbtable/queries/delete.js +7 -0
- package/package/components/apps/components/display/dbtable/queries/insert.js +2 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +14 -0
- package/package/components/apps/components/display/dbtable/queries/update.js +7 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +6 -5
- package/package/components/apps/components/display/dbtable/utils.js +52 -28
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +7 -6
- package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/utils.js +7 -4
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -3
- package/package/components/apps/components/helpers/InputValue.svelte +6 -1
- package/package/components/apps/components/helpers/NonRunnableComponent.svelte +8 -4
- package/package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +10 -8
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -2
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +12 -3
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -1
- package/package/components/apps/components/inputs/AppCodeInputComponent.svelte +0 -5
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +2 -2
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +1 -1
- package/package/components/apps/components/layout/AppContainer.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -21
- package/package/components/apps/components/layout/AppDrawer.svelte +1 -1
- package/package/components/apps/components/layout/AppList.svelte +9 -8
- package/package/components/apps/components/layout/AppModal.svelte +1 -1
- package/package/components/apps/components/layout/AppSplitpanes.svelte +5 -2
- package/package/components/apps/components/layout/AppStepper.svelte +10 -6
- package/package/components/apps/components/layout/AppTabs.svelte +3 -3
- package/package/components/apps/editor/AppEditorHeader.svelte +13 -2
- package/package/components/apps/editor/AppJobsDrawer.svelte +2 -2
- package/package/components/apps/editor/GridEditor.svelte +24 -19
- package/package/components/apps/editor/GridEditor.svelte.d.ts +4 -1
- package/package/components/apps/editor/GridViewer.svelte +1 -0
- package/package/components/apps/editor/RunnableJobPanelInner.svelte +2 -1
- package/package/components/apps/editor/SubGridEditor.svelte +7 -11
- package/package/components/apps/editor/SubGridEditor.svelte.d.ts +3 -19
- package/package/components/apps/editor/appUtils.js +17 -68
- package/package/components/apps/editor/component/ComponentInner.svelte +845 -694
- package/package/components/apps/editor/component/componentCallbacks.svelte.js +8 -1
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +7 -7
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +7 -19
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +14 -55
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +31 -45
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +1 -3
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +1 -0
- package/package/components/apps/svelte-grid/Grid.svelte +23 -25
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +21 -9
- package/package/components/apps/svelte-grid/MoveResize.svelte +13 -15
- package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +17 -24
- package/package/components/apps/utils.d.ts +2 -0
- package/package/components/apps/utils.js +22 -0
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/assets/JobAssetsViewer.svelte +2 -2
- package/package/components/assets/lib.js +4 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte +7 -9
- package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
- package/package/components/common/button/Button.svelte +4 -3
- package/package/components/common/button/Button.svelte.d.ts +1 -0
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +6 -5
- package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +6 -11
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +26 -0
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.js +50 -0
- package/package/components/common/fileDownload/FileDownload.svelte +1 -3
- package/package/components/common/fileDownload/FileDownload.svelte.d.ts +4 -18
- package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
- package/package/components/common/modal/Modal.svelte +2 -5
- package/package/components/common/tabs/TabsV2.svelte +2 -1
- package/package/components/common/tabs/TabsV2.svelte.d.ts +1 -0
- package/package/components/copilot/FlowInlineScriptAIButton.svelte +58 -0
- package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +3 -0
- package/package/components/copilot/MetadataGen.svelte +19 -1
- package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
- package/package/components/copilot/ScriptGen.svelte +23 -31
- package/package/components/copilot/ScriptGen.svelte.d.ts +0 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +2 -0
- package/package/components/copilot/chat/AIChatDisplay.svelte +4 -4
- package/package/components/copilot/chat/AIChatInput.svelte +29 -6
- package/package/components/copilot/chat/AIChatManager.svelte.js +171 -33
- package/package/components/copilot/chat/AIChatMessage.svelte +3 -0
- package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
- package/package/components/copilot/chat/ToolContentDisplay.svelte +84 -0
- package/package/components/copilot/chat/ToolContentDisplay.svelte.d.ts +11 -0
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +105 -0
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte.d.ts +7 -0
- package/package/components/copilot/chat/api/apiTools.d.ts +7 -0
- package/package/components/copilot/chat/api/apiTools.js +192 -0
- package/package/components/copilot/chat/api/core.d.ts +7 -0
- package/package/components/copilot/chat/api/core.js +61 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -6
- package/package/components/copilot/chat/flow/core.js +213 -42
- package/package/components/copilot/chat/flow/utils.js +3 -0
- package/package/components/copilot/chat/monaco-adapter.d.ts +1 -1
- package/package/components/copilot/chat/monaco-adapter.js +10 -4
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +20 -22
- package/package/components/copilot/chat/script/core.d.ts +11 -3
- package/package/components/copilot/chat/script/core.js +120 -44
- package/package/components/copilot/chat/shared.d.ts +31 -4
- package/package/components/copilot/chat/shared.js +235 -10
- package/package/components/copilot/lib.d.ts +1 -1
- package/package/components/copilot/lib.js +15 -6
- package/package/components/custom_ui.d.ts +4 -0
- package/package/components/dbOps.d.ts +20 -8
- package/package/components/dbOps.js +85 -40
- package/package/components/details/DetailPageHeader.svelte +0 -2
- package/package/components/details/DetailPageLayout.svelte +34 -33
- package/package/components/flow_builder.d.ts +1 -2
- package/package/components/flows/FlowEditor.svelte +3 -3
- package/package/components/flows/FlowEditor.svelte.d.ts +7 -6
- package/package/components/flows/common/FlowCard.svelte +2 -2
- package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCardHeader.svelte +13 -4
- package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
- package/package/components/flows/content/BranchPredicateEditor.svelte +4 -7
- package/package/components/flows/content/BranchPredicateEditor.svelte.d.ts +12 -11
- package/package/components/flows/content/FlowConstants.svelte +3 -3
- package/package/components/flows/content/FlowEditorPanel.svelte +3 -3
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -4
- package/package/components/flows/content/FlowInput.svelte +5 -0
- package/package/components/flows/content/FlowInputsQuick.svelte +2 -1
- package/package/components/flows/content/FlowLoop.svelte +2 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +130 -108
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
- package/package/components/flows/content/FlowModuleScript.svelte +0 -1
- package/package/components/flows/content/FlowModuleSkip.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +1 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
- package/package/components/flows/content/FlowModuleWrapper.svelte +15 -5
- package/package/components/flows/content/FlowModuleWrapper.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowResult.svelte +2 -3
- package/package/components/flows/content/FlowResult.svelte.d.ts +2 -4
- package/package/components/flows/content/FlowWhileLoop.svelte +1 -1
- package/package/components/flows/dfs.d.ts +3 -1
- package/package/components/flows/dfs.js +5 -1
- package/package/components/flows/flowInfers.js +78 -0
- package/package/components/flows/flowState.d.ts +2 -3
- package/package/components/flows/flowState.js +2 -2
- package/package/components/flows/flowStateUtils.svelte.d.ts +4 -4
- package/package/components/flows/flowStateUtils.svelte.js +14 -13
- package/package/components/flows/flowStore.d.ts +3 -4
- package/package/components/flows/header/FlowPreviewButtons.svelte +2 -1
- package/package/components/flows/header/FlowYamlEditor.svelte +10 -1
- package/package/components/flows/idUtils.js +2 -1
- package/package/components/flows/map/FlowGraphPreviewButton.svelte +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +7 -3
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +15 -15
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +27 -15
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +6 -4
- package/package/components/flows/map/InsertModuleButton.svelte +4 -1
- package/package/components/flows/map/InsertModuleInner.svelte +9 -1
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +1 -0
- package/package/components/flows/map/MapItem.svelte +4 -2
- package/package/components/flows/pickers/TopLevelNode.svelte +4 -1
- package/package/components/flows/propPicker/InputPickerInner.svelte +5 -4
- package/package/components/flows/propPicker/OutputBadge.svelte +16 -10
- package/package/components/flows/propPicker/OutputPickerInner.svelte +19 -6
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +6 -2
- package/package/components/flows/propPicker/StepHistory.svelte +4 -1
- package/package/components/flows/testSteps.svelte.d.ts +3 -2
- package/package/components/flows/testSteps.svelte.js +26 -23
- package/package/components/flows/types.d.ts +1 -1
- package/package/components/flows/utils.d.ts +3 -5
- package/package/components/flows/utils.js +3 -4
- package/package/components/git_sync/DetectionFlow.svelte +202 -0
- package/package/components/git_sync/DetectionFlow.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncContext.svelte.d.ts +82 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +462 -0
- package/package/components/git_sync/GitSyncModalManager.svelte +99 -0
- package/package/components/git_sync/GitSyncModalManager.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +339 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte +17 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncSection.svelte +89 -0
- package/package/components/git_sync/GitSyncSection.svelte.d.ts +3 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte +58 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte.d.ts +7 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte +575 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte.d.ts +15 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte +320 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte.d.ts +12 -0
- package/package/components/graph/FlowGraphV2.svelte +49 -25
- package/package/components/graph/FlowGraphV2.svelte.d.ts +5 -2
- package/package/components/graph/graphBuilder.svelte.d.ts +49 -17
- package/package/components/graph/graphBuilder.svelte.js +31 -15
- package/package/components/graph/model.d.ts +9 -6
- package/package/components/graph/renderers/edges/BaseEdge.svelte +3 -3
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +2 -3
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +234 -0
- package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +24 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +19 -14
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +18 -1
- package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +2 -2
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +21 -21
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +64 -0
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte.d.ts +7 -0
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +1 -1
- package/package/components/icons/AssetDucklakeIcon.svelte +28 -0
- package/package/components/icons/AssetDucklakeIcon.svelte.d.ts +9 -0
- package/package/components/icons/AssetGenericIcon.svelte +3 -0
- package/package/components/icons/DucklakeIcon.svelte +18 -0
- package/package/components/icons/DucklakeIcon.svelte.d.ts +6 -0
- package/package/components/icons/RubyIcon.svelte +656 -0
- package/package/components/icons/RubyIcon.svelte.d.ts +7 -0
- package/package/components/instanceSettings.js +20 -3
- package/package/components/modulesTest.svelte.d.ts +6 -3
- package/package/components/modulesTest.svelte.js +32 -0
- package/package/components/preview/FlowPreviewStatus.svelte +3 -1
- package/package/components/raw_apps/RawAppEditor.svelte +27 -26
- package/package/components/raw_apps/RawAppEditor.svelte.d.ts +17 -17
- package/package/components/runs/{JobPreview.svelte → JobRunsPreview.svelte} +2 -5
- package/package/components/runs/{JobPreview.svelte.d.ts → JobRunsPreview.svelte.d.ts} +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
- package/package/components/runs/RunRow.svelte +5 -1
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/schema/AddProperty.svelte +41 -36
- package/package/components/schema/AddProperty.svelte.d.ts +2 -2
- package/package/components/schema/AddPropertyV2.svelte +41 -37
- package/package/components/schema/AddPropertyV2.svelte.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +11 -8
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +0 -2
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/SchemaFormDND.svelte +2 -1
- package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -0
- package/package/components/scriptEditor/LogPanel.svelte +5 -3
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +5 -1
- package/package/components/search/RunsSearch.svelte +1 -1
- package/package/components/select/Select.svelte +7 -4
- package/package/components/select/Select.svelte.d.ts +5 -0
- package/package/components/select/SelectDropdown.svelte +2 -1
- package/package/components/select/SelectDropdown.svelte.d.ts +3 -0
- package/package/components/settings/CreateToken.svelte +132 -12
- package/package/components/settings/CreateToken.svelte.d.ts +3 -20
- package/package/components/settings/TokenDisplay.svelte +18 -42
- package/package/components/settings/TokenDisplay.svelte.d.ts +0 -1
- package/package/components/settings/TokensTable.svelte +2 -4
- package/package/components/settings/TokensTable.svelte.d.ts +3 -19
- package/package/components/settings/WorkspaceUserSettings.svelte +428 -69
- package/package/components/sidebar/MenuButton.svelte +12 -10
- package/package/components/sidebar/changelogs.js +5 -0
- package/package/components/stepHistoryLoader.svelte.d.ts +2 -2
- package/package/components/stepHistoryLoader.svelte.js +7 -12
- package/package/components/table/AutoDataTable.svelte +6 -4
- package/package/components/table/AutoDataTable.svelte.d.ts +1 -0
- package/package/components/table/DataTable.svelte +12 -10
- package/package/components/table/DataTable.svelte.d.ts +1 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +50 -11
- package/package/components/triggers/gcp/utils.js +1 -0
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +2 -2
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/kafka/utils.js +1 -1
- package/package/components/triggers/mqtt/utils.js +1 -1
- package/package/components/triggers/nats/utils.js +1 -1
- package/package/components/triggers/postgres/utils.js +1 -1
- package/package/components/triggers/sqs/utils.js +1 -1
- package/package/components/triggers/utils.js +2 -1
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +24 -26
- package/package/components/triggers/webhook/WebhooksPanel.svelte +1 -15
- package/package/components/triggers/websocket/utils.js +1 -1
- package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte +1 -1
- package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +4 -4
- package/package/components/tutorials/utils.js +3 -0
- package/package/components/worker_group.d.ts +4 -1
- package/package/components/worker_group.js +3 -2
- package/package/components/workspaceSettings/AISettings.svelte +52 -36
- package/package/components/workspaceSettings/DucklakeSettings.svelte +321 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +23 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +122 -499
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +8 -10
- package/package/consts.js +2 -1
- package/package/editorLangUtils.d.ts +1 -1
- package/package/editorLangUtils.js +2 -0
- package/package/editorUtils.d.ts +2 -1
- package/package/editorUtils.js +2 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +303 -14
- package/package/gen/schemas.gen.js +371 -76
- package/package/gen/services.gen.d.ts +136 -16
- package/package/gen/services.gen.js +264 -19
- package/package/gen/types.gen.d.ts +736 -17
- package/package/git-sync.d.ts +36 -0
- package/package/git-sync.js +1 -0
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +9 -3
- package/package/infer.js +13 -3
- package/package/monaco_workers/graphql.worker.bundle.js +144 -110
- package/package/script_helpers.d.ts +5 -2
- package/package/script_helpers.js +87 -14
- package/package/scripts.d.ts +1 -1
- package/package/scripts.js +3 -2
- package/package/services/JobManager.d.ts +28 -0
- package/package/services/JobManager.js +114 -0
- package/package/stores.d.ts +3 -1
- package/package/stores.js +2 -0
- package/package/svelte5Utils.svelte.d.ts +16 -0
- package/package/svelte5Utils.svelte.js +26 -0
- package/package/utils.d.ts +19 -2
- package/package/utils.js +55 -2
- package/package.json +24 -22
- package/package/components/AllFlowLogs.svelte +0 -31
- package/package/components/AllFlowLogs.svelte.d.ts +0 -8
- package/package/components/InitGitRepoPopover.svelte +0 -410
- package/package/components/InitGitRepoPopover.svelte.d.ts +0 -13
- package/package/components/PullGitRepoPopover.svelte +0 -355
- package/package/components/PullGitRepoPopover.svelte.d.ts +0 -18
- package/package/components/copilot/chat/navigator/apiTools.d.ts +0 -68
- package/package/components/copilot/chat/navigator/apiTools.js +0 -258
- package/package/inferArgSig.d.ts +0 -42
- package/package/inferArgSig.js +0 -198
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
<script module lang="ts">import pLimit from 'p-limit';
|
|
2
|
+
const plimit = pLimit(5);
|
|
3
|
+
</script>
|
|
4
|
+
|
|
1
5
|
<script lang="ts">import { JobService } from '../gen';
|
|
2
6
|
import { workspaceStore } from '../stores';
|
|
3
7
|
import { onDestroy, tick, untrack } from 'svelte';
|
|
4
8
|
import { sendUserToast } from '../toast';
|
|
5
9
|
import { isScriptPreview } from '../utils';
|
|
6
|
-
let { isLoading = $bindable(false), job = $bindable(undefined), noCode = false, allowConcurentRequests = false, workspaceOverride = undefined, notfound = $bindable(false), jobUpdateLastFetch = $bindable(undefined), toastError = false,
|
|
10
|
+
let { isLoading = $bindable(false), job = $bindable(undefined), noCode = false, allowConcurentRequests = false, workspaceOverride = undefined, notfound = $bindable(false), jobUpdateLastFetch = $bindable(undefined), toastError = false, onlyResult = false, loadPlaceholderJobOnStart = undefined, scriptProgress = $bindable(undefined), noLogs = false, children } = $props();
|
|
7
11
|
/// Last time asked for job progress
|
|
8
12
|
let lastTimeCheckedProgress = undefined;
|
|
9
13
|
/// Will try to poll progress every 5s and if once progress returned was not undefined, will be ignored
|
|
@@ -15,6 +19,7 @@ let workspace = $derived(workspaceOverride ?? $workspaceStore);
|
|
|
15
19
|
let syncIteration = 0;
|
|
16
20
|
let errorIteration = 0;
|
|
17
21
|
let logOffset = 0;
|
|
22
|
+
let resultStreamOffset = 0;
|
|
18
23
|
let lastCallbacks = undefined;
|
|
19
24
|
let finished = [];
|
|
20
25
|
let ITERATIONS_BEFORE_SLOW_REFRESH = 10;
|
|
@@ -22,6 +27,8 @@ let ITERATIONS_BEFORE_SUPER_SLOW_REFRESH = 100;
|
|
|
22
27
|
let lastStartedAt = Date.now();
|
|
23
28
|
let currentId = $state(undefined);
|
|
24
29
|
let noPingTimeout = undefined;
|
|
30
|
+
let lastNoLogs = $state(noLogs);
|
|
31
|
+
let lastCompletedJobId = $state(undefined);
|
|
25
32
|
$effect(() => {
|
|
26
33
|
let newIsLoading = currentId !== undefined;
|
|
27
34
|
untrack(() => {
|
|
@@ -30,6 +37,29 @@ $effect(() => {
|
|
|
30
37
|
}
|
|
31
38
|
});
|
|
32
39
|
});
|
|
40
|
+
const noLogsChangeRestartEvent = 'SSE restart after no logs change';
|
|
41
|
+
$effect(() => {
|
|
42
|
+
if (noLogs != lastNoLogs) {
|
|
43
|
+
lastNoLogs = noLogs;
|
|
44
|
+
if (!noLogs) {
|
|
45
|
+
currentEventSource?.onerror?.(new Event(noLogsChangeRestartEvent));
|
|
46
|
+
const lastJobId = lastCompletedJobId;
|
|
47
|
+
if (lastJobId && (job || lastCallbacks?.loadExtraLogs)) {
|
|
48
|
+
plimit(() => JobService.getCompletedJobLogsTail({
|
|
49
|
+
workspace: $workspaceStore,
|
|
50
|
+
id: lastJobId
|
|
51
|
+
})).then((res) => {
|
|
52
|
+
if (res && job) {
|
|
53
|
+
job.logs = res;
|
|
54
|
+
}
|
|
55
|
+
if (res && lastCallbacks?.loadExtraLogs) {
|
|
56
|
+
lastCallbacks.loadExtraLogs({ id: lastJobId, logs: res });
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
33
63
|
function clearCurrentId() {
|
|
34
64
|
if (currentId) {
|
|
35
65
|
if (allowConcurentRequests) {
|
|
@@ -43,6 +73,7 @@ function clearCurrentId() {
|
|
|
43
73
|
export async function abstractRun(fn, callbacks) {
|
|
44
74
|
try {
|
|
45
75
|
isLoading = true;
|
|
76
|
+
lastCompletedJobId = undefined;
|
|
46
77
|
clearCurrentJob();
|
|
47
78
|
lastCallbacks = callbacks;
|
|
48
79
|
noPingTimeout = undefined;
|
|
@@ -100,10 +131,23 @@ export async function runFlowByPath(path, args, callbacks) {
|
|
|
100
131
|
skipPreprocessor: true
|
|
101
132
|
}), callbacks);
|
|
102
133
|
}
|
|
134
|
+
export async function runFlowPreview(args, flow, callbacks) {
|
|
135
|
+
return abstractRun(() => JobService.runFlowPreview({
|
|
136
|
+
workspace: $workspaceStore,
|
|
137
|
+
requestBody: {
|
|
138
|
+
args,
|
|
139
|
+
value: flow.value,
|
|
140
|
+
tag: flow.tag
|
|
141
|
+
}
|
|
142
|
+
}), callbacks);
|
|
143
|
+
}
|
|
103
144
|
function refreshLogOffset() {
|
|
104
145
|
if (logOffset == 0) {
|
|
105
146
|
logOffset = job?.logs?.length ? job.logs?.length + 1 : 0;
|
|
106
147
|
}
|
|
148
|
+
if (resultStreamOffset == 0) {
|
|
149
|
+
resultStreamOffset = job?.result_stream?.length ? job.result_stream?.length + 1 : 0;
|
|
150
|
+
}
|
|
107
151
|
}
|
|
108
152
|
export async function getLogs() {
|
|
109
153
|
if (job) {
|
|
@@ -141,7 +185,6 @@ export async function cancelJob() {
|
|
|
141
185
|
const id = currentId;
|
|
142
186
|
if (id) {
|
|
143
187
|
lastCallbacks?.cancel?.({ id });
|
|
144
|
-
lastCallbacks = undefined;
|
|
145
188
|
clearCurrentId();
|
|
146
189
|
// Clean up SSE connection
|
|
147
190
|
currentEventSource?.close();
|
|
@@ -162,7 +205,6 @@ export async function clearCurrentJob() {
|
|
|
162
205
|
if (currentId && !allowConcurentRequests) {
|
|
163
206
|
job = undefined;
|
|
164
207
|
lastCallbacks?.cancel?.({ id: currentId });
|
|
165
|
-
lastCallbacks = undefined;
|
|
166
208
|
await cancelJob();
|
|
167
209
|
}
|
|
168
210
|
}
|
|
@@ -176,14 +218,21 @@ function supportsSSE() {
|
|
|
176
218
|
let startedWatchingJob = undefined;
|
|
177
219
|
export async function watchJob(testId, callbacks) {
|
|
178
220
|
logOffset = 0;
|
|
221
|
+
resultStreamOffset = 0;
|
|
179
222
|
syncIteration = 0;
|
|
180
223
|
errorIteration = 0;
|
|
181
224
|
currentId = testId;
|
|
182
|
-
|
|
225
|
+
if (loadPlaceholderJobOnStart) {
|
|
226
|
+
job = structuredClone(loadPlaceholderJobOnStart);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
job = undefined;
|
|
230
|
+
}
|
|
183
231
|
startedWatchingJob = Date.now();
|
|
184
232
|
// Clean up any existing SSE connection
|
|
185
233
|
currentEventSource?.close();
|
|
186
234
|
currentEventSource = undefined;
|
|
235
|
+
lastCallbacks = callbacks;
|
|
187
236
|
// Try SSE first, fall back to polling if needed
|
|
188
237
|
if (supportsSSE()) {
|
|
189
238
|
await loadTestJobWithSSE(testId, 0, callbacks);
|
|
@@ -237,9 +286,24 @@ function updateJobFromProgress(previewJobUpdates, job, callbacks) {
|
|
|
237
286
|
job.logs = (job?.logs ?? '').concat(previewJobUpdates.new_logs);
|
|
238
287
|
}
|
|
239
288
|
}
|
|
289
|
+
if (previewJobUpdates.new_result_stream) {
|
|
290
|
+
if (!job.result_stream) {
|
|
291
|
+
job.result_stream = previewJobUpdates.new_result_stream;
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
job.result_stream = job.result_stream.concat(previewJobUpdates.new_result_stream);
|
|
295
|
+
}
|
|
296
|
+
callbacks?.resultStreamUpdate?.({
|
|
297
|
+
id: job.id,
|
|
298
|
+
result_stream: job.result_stream
|
|
299
|
+
});
|
|
300
|
+
}
|
|
240
301
|
if (previewJobUpdates.log_offset) {
|
|
241
302
|
logOffset = previewJobUpdates.log_offset ?? 0;
|
|
242
303
|
}
|
|
304
|
+
if (previewJobUpdates.stream_offset) {
|
|
305
|
+
resultStreamOffset = previewJobUpdates.stream_offset ?? 0;
|
|
306
|
+
}
|
|
243
307
|
if (previewJobUpdates.flow_status) {
|
|
244
308
|
job.flow_status = previewJobUpdates.flow_status;
|
|
245
309
|
}
|
|
@@ -252,9 +316,10 @@ function updateJobFromProgress(previewJobUpdates, job, callbacks) {
|
|
|
252
316
|
if (job &&
|
|
253
317
|
(previewJobUpdates.running ||
|
|
254
318
|
previewJobUpdates.progress ||
|
|
255
|
-
previewJobUpdates.
|
|
319
|
+
previewJobUpdates.log_offset ||
|
|
256
320
|
previewJobUpdates.flow_status ||
|
|
257
|
-
previewJobUpdates.mem_peak
|
|
321
|
+
previewJobUpdates.mem_peak ||
|
|
322
|
+
previewJobUpdates.stream_offset)) {
|
|
258
323
|
callbacks?.change?.(job);
|
|
259
324
|
}
|
|
260
325
|
}
|
|
@@ -288,7 +353,7 @@ async function loadTestJob(id, callbacks) {
|
|
|
288
353
|
job = await JobService.getJob({
|
|
289
354
|
workspace: workspace,
|
|
290
355
|
id,
|
|
291
|
-
noLogs:
|
|
356
|
+
noLogs: onlyResult || noLogs,
|
|
292
357
|
noCode
|
|
293
358
|
});
|
|
294
359
|
}
|
|
@@ -343,6 +408,7 @@ async function onJobCompleted(id, job, callbacks) {
|
|
|
343
408
|
}
|
|
344
409
|
callbacks?.change?.(job);
|
|
345
410
|
clearCurrentId();
|
|
411
|
+
lastCompletedJobId = id;
|
|
346
412
|
}
|
|
347
413
|
}
|
|
348
414
|
function setNoPingTimeout(id, attempt, callbacks) {
|
|
@@ -364,16 +430,24 @@ function isCurrentJob(id) {
|
|
|
364
430
|
}
|
|
365
431
|
async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
366
432
|
let isCompleted = false;
|
|
433
|
+
let resultOnlyResultStream = '';
|
|
367
434
|
if (isCurrentJob(id)) {
|
|
368
435
|
try {
|
|
369
436
|
// First load the job to get initial state
|
|
370
|
-
if (!job && !onlyResult) {
|
|
437
|
+
if ((!job || job.id == '') && !onlyResult) {
|
|
371
438
|
job = await JobService.getJob({
|
|
372
439
|
workspace: workspace,
|
|
373
440
|
id,
|
|
374
|
-
noLogs:
|
|
441
|
+
noLogs: noLogs,
|
|
375
442
|
noCode
|
|
376
443
|
});
|
|
444
|
+
callbacks?.change?.(job);
|
|
445
|
+
}
|
|
446
|
+
if (!onlyResult) {
|
|
447
|
+
callbacks?.resultStreamUpdate?.({
|
|
448
|
+
id,
|
|
449
|
+
result_stream: undefined
|
|
450
|
+
});
|
|
377
451
|
}
|
|
378
452
|
// If job is already completed, don't start SSE
|
|
379
453
|
if (job?.type === 'CompletedJob') {
|
|
@@ -411,6 +485,12 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
|
411
485
|
if (startedWatchingJob && startedWatchingJob > Date.now() - 5000) {
|
|
412
486
|
params.set('fast', 'true');
|
|
413
487
|
}
|
|
488
|
+
if (noLogs) {
|
|
489
|
+
params.set('no_logs', 'true');
|
|
490
|
+
}
|
|
491
|
+
if (resultStreamOffset) {
|
|
492
|
+
params.set('stream_offset', resultStreamOffset.toString());
|
|
493
|
+
}
|
|
414
494
|
const sseUrl = `/api/w/${workspace}/jobs_u/getupdate_sse/${id}?${params.toString()}`;
|
|
415
495
|
currentEventSource = new EventSource(sseUrl);
|
|
416
496
|
setNoPingTimeout(id, attempt, callbacks);
|
|
@@ -452,6 +532,14 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
|
452
532
|
else if (onlyResult && callbacks?.running && previewJobUpdates.running) {
|
|
453
533
|
callbacks?.running?.({ id });
|
|
454
534
|
}
|
|
535
|
+
if (onlyResult && previewJobUpdates.new_result_stream) {
|
|
536
|
+
resultOnlyResultStream = resultOnlyResultStream.concat(previewJobUpdates.new_result_stream);
|
|
537
|
+
// console.log('resultOnlyResultStream', resultOnlyResultStream)
|
|
538
|
+
callbacks?.resultStreamUpdate?.({
|
|
539
|
+
id,
|
|
540
|
+
result_stream: resultOnlyResultStream
|
|
541
|
+
});
|
|
542
|
+
}
|
|
455
543
|
// Check if job is completed
|
|
456
544
|
if (previewJobUpdates.completed) {
|
|
457
545
|
currentEventSource?.close();
|
|
@@ -468,6 +556,7 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
|
468
556
|
else {
|
|
469
557
|
const njob = previewJobUpdates.job;
|
|
470
558
|
njob.logs = job?.logs ?? '';
|
|
559
|
+
njob.result_stream = job?.result_stream ?? '';
|
|
471
560
|
job = njob;
|
|
472
561
|
onJobCompleted(id, job, callbacks);
|
|
473
562
|
}
|
|
@@ -481,9 +570,16 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
|
481
570
|
console.warn('SSE error:', error);
|
|
482
571
|
currentEventSource?.close();
|
|
483
572
|
currentEventSource = undefined;
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
573
|
+
let delay = 1000;
|
|
574
|
+
let isNoLogsChange = error.type == noLogsChangeRestartEvent;
|
|
575
|
+
if (isNoLogsChange) {
|
|
576
|
+
delay = 0;
|
|
577
|
+
}
|
|
578
|
+
if (attempt < 3 || isNoLogsChange) {
|
|
579
|
+
if (!isNoLogsChange) {
|
|
580
|
+
console.log(`SSE error (1), retrying ... attempt: ${attempt + 1}/3`);
|
|
581
|
+
}
|
|
582
|
+
setTimeout(() => loadTestJobWithSSE(id, attempt + 1, callbacks), delay);
|
|
487
583
|
}
|
|
488
584
|
else {
|
|
489
585
|
// Fall back to polling on error
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Job } from '../gen';
|
|
1
|
+
import { type Job, type OpenFlow } from '../gen';
|
|
2
2
|
import type { SupportedLanguage } from '../common';
|
|
3
3
|
export type Callbacks = {
|
|
4
4
|
done?: (x: Job & {
|
|
@@ -22,10 +22,20 @@ export type Callbacks = {
|
|
|
22
22
|
running?: ({ id }: {
|
|
23
23
|
id: string;
|
|
24
24
|
}) => void;
|
|
25
|
+
resultStreamUpdate?: ({ id, result_stream }: {
|
|
26
|
+
id: string;
|
|
27
|
+
result_stream?: string;
|
|
28
|
+
}) => void;
|
|
29
|
+
loadExtraLogs?: ({ id, logs }: {
|
|
30
|
+
id: string;
|
|
31
|
+
logs: string;
|
|
32
|
+
}) => void;
|
|
25
33
|
};
|
|
26
34
|
interface Props {
|
|
27
35
|
isLoading?: boolean;
|
|
28
|
-
job?: Job
|
|
36
|
+
job?: (Job & {
|
|
37
|
+
result_stream?: string;
|
|
38
|
+
}) | undefined;
|
|
29
39
|
noCode?: boolean;
|
|
30
40
|
noLogs?: boolean;
|
|
31
41
|
workspaceOverride?: string | undefined;
|
|
@@ -33,8 +43,8 @@ interface Props {
|
|
|
33
43
|
allowConcurentRequests?: boolean;
|
|
34
44
|
jobUpdateLastFetch?: Date | undefined;
|
|
35
45
|
toastError?: boolean;
|
|
36
|
-
lazyLogs?: boolean;
|
|
37
46
|
onlyResult?: boolean;
|
|
47
|
+
loadPlaceholderJobOnStart?: Job;
|
|
38
48
|
scriptProgress?: number | undefined;
|
|
39
49
|
children?: import('svelte').Snippet<[any]>;
|
|
40
50
|
}
|
|
@@ -43,6 +53,9 @@ declare const JobLoader: import("svelte").Component<Props, {
|
|
|
43
53
|
runScriptByPath: (path: string, args: Record<string, any>, callbacks?: Callbacks) => Promise<string>;
|
|
44
54
|
runScriptByHash: (hash: string, args: Record<string, any>, callbacks?: Callbacks) => Promise<string>;
|
|
45
55
|
runFlowByPath: (path: string, args: Record<string, any>, callbacks?: Callbacks) => Promise<string>;
|
|
56
|
+
runFlowPreview: (args: Record<string, any>, flow: OpenFlow & {
|
|
57
|
+
tag?: string;
|
|
58
|
+
}, callbacks?: Callbacks) => Promise<string>;
|
|
46
59
|
getLogs: () => Promise<void>;
|
|
47
60
|
runPreview: (path: string | undefined, code: string, lang: SupportedLanguage | undefined, args: Record<string, any>, tag: string | undefined, lock?: string, hash?: string, callbacks?: Callbacks) => Promise<string>;
|
|
48
61
|
cancelJob: () => Promise<void>;
|
|
@@ -15,7 +15,8 @@ import AnsiUp from 'ansi_up';
|
|
|
15
15
|
import NoWorkerWithTagWarning from './runs/NoWorkerWithTagWarning.svelte';
|
|
16
16
|
import { JobService } from '../gen';
|
|
17
17
|
import Tooltip from './Tooltip.svelte';
|
|
18
|
-
|
|
18
|
+
import { twMerge } from 'tailwind-merge';
|
|
19
|
+
let { content, isLoading, duration = undefined, mem = undefined, wrapperClass = '', jobId = undefined, tag, small = false, drawerOpen = $bindable(false), noMaxH = false, noAutoScroll = false, download = true, customEmptyMessage = 'No logs are available yet', tagLabel = undefined, noPadding = false } = $props();
|
|
19
20
|
// @ts-ignore
|
|
20
21
|
const ansi_up = $state(new AnsiUp());
|
|
21
22
|
ansi_up.use_classes = true;
|
|
@@ -213,7 +214,12 @@ let html = $derived(ansi_up.ansi_to_html(downloadStartUrl && prefixIndex != unde
|
|
|
213
214
|
: 'top-2'} left-36">mem peak: {(mem / 1024).toPrecision(4)}MB</span
|
|
214
215
|
>
|
|
215
216
|
{/if}
|
|
216
|
-
<pre
|
|
217
|
+
<pre
|
|
218
|
+
class={twMerge(
|
|
219
|
+
'whitespace-pre break-words w-full',
|
|
220
|
+
small ? '!text-2xs' : '!text-xs',
|
|
221
|
+
noPadding ? '' : 'p-2'
|
|
222
|
+
)}
|
|
217
223
|
>{#if content}{@const len =
|
|
218
224
|
(content?.length ?? 0) +
|
|
219
225
|
(loadedFromObjectStore?.length ?? 0)}{#if downloadStartUrl}<button onclick={getStoreLogs}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script lang="ts">import { FoldVertical, UnfoldVertical } from 'lucide-svelte';
|
|
2
|
+
let { showResultsInputs = $bindable(), toggleExpandAll, allExpanded } = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<div class="flex justify-end gap-4 items-center p-2 bg-surface-secondary border-b">
|
|
6
|
+
<div class="flex items-center gap-2 whitespace-nowrap">
|
|
7
|
+
<label
|
|
8
|
+
for="showResultsInputs"
|
|
9
|
+
class="text-xs text-tertiary hover:text-primary transition-colors">Show inputs/results</label
|
|
10
|
+
>
|
|
11
|
+
<div class="flex-shrink-0">
|
|
12
|
+
<input
|
|
13
|
+
type="checkbox"
|
|
14
|
+
name="showResultsInputs"
|
|
15
|
+
id="showResultsInputs"
|
|
16
|
+
bind:checked={showResultsInputs}
|
|
17
|
+
class="w-3 h-4 accent-primary -my-1"
|
|
18
|
+
/>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
<button
|
|
22
|
+
onclick={toggleExpandAll}
|
|
23
|
+
class="text-xs text-tertiary hover:text-primary transition-colors flex items-center gap-2 min-w-24 justify-end"
|
|
24
|
+
>
|
|
25
|
+
{allExpanded ? 'Collapse All' : 'Expand All'}
|
|
26
|
+
{#if allExpanded}
|
|
27
|
+
<FoldVertical size={16} />
|
|
28
|
+
{:else}
|
|
29
|
+
<UnfoldVertical size={16} />
|
|
30
|
+
{/if}
|
|
31
|
+
</button>
|
|
32
|
+
</div>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
showResultsInputs: boolean | undefined;
|
|
3
|
+
toggleExpandAll: () => void;
|
|
4
|
+
allExpanded: boolean | undefined;
|
|
5
|
+
}
|
|
6
|
+
declare const LogViewerHeader: import("svelte").Component<Props, {}, "showResultsInputs">;
|
|
7
|
+
type LogViewerHeader = ReturnType<typeof LogViewerHeader>;
|
|
8
|
+
export default LogViewerHeader;
|
|
@@ -5,9 +5,10 @@ import Google from './icons/brands/Google.svelte';
|
|
|
5
5
|
import Microsoft from './icons/brands/Microsoft.svelte';
|
|
6
6
|
import Okta from './icons/brands/Okta.svelte';
|
|
7
7
|
import Auth0 from './icons/brands/Auth0.svelte';
|
|
8
|
+
import NextcloudIcon from './icons/NextcloudIcon.svelte';
|
|
8
9
|
import { OauthService, UserService, WorkspaceService } from '../gen';
|
|
9
10
|
import { usersWorkspaceStore, workspaceStore, userStore } from '../stores';
|
|
10
|
-
import { classNames, emptyString, parseQueryParams } from '../utils';
|
|
11
|
+
import { classNames, emptyString, escapeHtml, parseQueryParams } from '../utils';
|
|
11
12
|
import { base } from '../base';
|
|
12
13
|
import { getUserExt } from '../user';
|
|
13
14
|
import { sendUserToast } from '../toast';
|
|
@@ -47,6 +48,11 @@ const providers = [
|
|
|
47
48
|
type: 'auth0',
|
|
48
49
|
name: 'Auth0',
|
|
49
50
|
icon: Auth0
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: 'nextcloud',
|
|
54
|
+
name: 'Nextcloud',
|
|
55
|
+
icon: NextcloudIcon
|
|
50
56
|
}
|
|
51
57
|
];
|
|
52
58
|
const providersType = providers.map((p) => p.type);
|
|
@@ -227,7 +233,7 @@ function storeRedirect(provider) {
|
|
|
227
233
|
}
|
|
228
234
|
}
|
|
229
235
|
$effect(() => {
|
|
230
|
-
error && sendUserToast(error, true);
|
|
236
|
+
error && sendUserToast(escapeHtml(error), true);
|
|
231
237
|
});
|
|
232
238
|
</script>
|
|
233
239
|
|
|
@@ -49,7 +49,7 @@ $: jobUpdateLastFetch && loadMetricsData();
|
|
|
49
49
|
|
|
50
50
|
<div class="relative max-h-100">
|
|
51
51
|
{#if !$enterpriseLicense}
|
|
52
|
-
<Alert type="
|
|
52
|
+
<Alert type="warning" title="Enterprise Edition only feature">
|
|
53
53
|
Job metrics are only available on Windmill Enterprise Edition.
|
|
54
54
|
</Alert>
|
|
55
55
|
{:else if (jobMemoryStats?.length ?? 0) === 0}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import { allTrue } from '../utils';
|
|
1
|
+
<script lang="ts">import { allTrue, sendUserToast } from '../utils';
|
|
2
2
|
import { RefreshCw } from 'lucide-svelte';
|
|
3
3
|
import ArgInput from './ArgInput.svelte';
|
|
4
4
|
import { Button } from './common';
|
|
@@ -53,10 +53,11 @@ async function loadResourceTypes() {
|
|
|
53
53
|
resourceTypes = await getResourceTypes();
|
|
54
54
|
}
|
|
55
55
|
loadResourceTypes();
|
|
56
|
-
let args = $state({});
|
|
57
56
|
onMount(() => {
|
|
58
|
-
testSteps
|
|
59
|
-
|
|
57
|
+
if (!testSteps) {
|
|
58
|
+
sendUserToast('testSteps module not initialized. Preview will not work.', true);
|
|
59
|
+
}
|
|
60
|
+
testSteps?.updateStepArgs(mod.id, flowStateStore.val, flowStore?.val, previewArgs?.val);
|
|
60
61
|
});
|
|
61
62
|
</script>
|
|
62
63
|
|
|
@@ -71,14 +72,17 @@ onMount(() => {
|
|
|
71
72
|
)}
|
|
72
73
|
data-arg={argName}
|
|
73
74
|
>
|
|
74
|
-
{#if
|
|
75
|
+
{#if schema?.properties?.[argName]}
|
|
75
76
|
<ArgInput
|
|
76
77
|
{resourceTypes}
|
|
77
78
|
minW={false}
|
|
78
79
|
autofocus={autofocus && !focusArg && i == 0}
|
|
79
80
|
label={argName}
|
|
80
81
|
description={schema.properties[argName].description}
|
|
81
|
-
bind:value={
|
|
82
|
+
bind:value={
|
|
83
|
+
() => testSteps?.getStepInputArgs(mod.id, argName),
|
|
84
|
+
(v) => testSteps?.setStepInputArgs(mod.id, argName, v)
|
|
85
|
+
}
|
|
82
86
|
type={schema.properties[argName].type}
|
|
83
87
|
oneOf={schema.properties[argName].oneOf}
|
|
84
88
|
required={schema?.required?.includes(argName)}
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
<script lang="ts">import LogViewer from './LogViewer.svelte';
|
|
2
2
|
import JobProgressBar from './jobs/JobProgressBar.svelte';
|
|
3
3
|
import ScriptFix from './copilot/ScriptFix.svelte';
|
|
4
|
+
import {} from '../gen';
|
|
4
5
|
import OutputPickerInner from './flows/propPicker/OutputPickerInner.svelte';
|
|
5
6
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
6
7
|
import { getContext } from 'svelte';
|
|
7
8
|
import { getStringError } from './copilot/chat/utils';
|
|
9
|
+
import AiAgentLogViewer from './AIAgentLogViewer.svelte';
|
|
8
10
|
let { lang, editor, diffEditor, loopStatus = undefined, lastJob = undefined, scriptProgress = $bindable(undefined), testJob = undefined, mod, testIsLoading = false, disableMock = false, disableHistory = false, onUpdateMock, loadingJob = false, tagLabel = undefined } = $props();
|
|
9
11
|
const { testSteps } = getContext('FlowEditorContext');
|
|
10
12
|
let selectedJob = $state(undefined);
|
|
11
13
|
let preview = $state(undefined);
|
|
12
14
|
let jobProgressReset = $state(() => { });
|
|
15
|
+
$effect(() => {
|
|
16
|
+
if (preview != undefined && testJob) {
|
|
17
|
+
preview = undefined;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
13
20
|
let forceJson = $state(false);
|
|
14
21
|
const logJob = $derived(testJob ?? selectedJob);
|
|
15
22
|
</script>
|
|
16
23
|
|
|
17
24
|
<Splitpanes horizontal>
|
|
18
|
-
<Pane size={
|
|
25
|
+
<Pane size={65} minSize={10} class="text-sm text-tertiary">
|
|
19
26
|
{#if scriptProgress}
|
|
20
27
|
<JobProgressBar
|
|
21
28
|
job={testJob}
|
|
@@ -50,7 +57,7 @@ const logJob = $derived(testJob ?? selectedJob);
|
|
|
50
57
|
{/snippet}
|
|
51
58
|
</OutputPickerInner>
|
|
52
59
|
</Pane>
|
|
53
|
-
<Pane size={
|
|
60
|
+
<Pane size={35} minSize={10}>
|
|
54
61
|
{#if (mod.mock?.enabled && preview != 'job') || preview == 'mock'}
|
|
55
62
|
<LogViewer
|
|
56
63
|
small
|
|
@@ -60,6 +67,15 @@ const logJob = $derived(testJob ?? selectedJob);
|
|
|
60
67
|
customEmptyMessage="Using pinned data"
|
|
61
68
|
{tagLabel}
|
|
62
69
|
/>
|
|
70
|
+
{:else if mod.value.type === 'aiagent' && logJob?.type === 'CompletedJob'}
|
|
71
|
+
<AiAgentLogViewer
|
|
72
|
+
tools={mod.value.tools}
|
|
73
|
+
agentJob={{
|
|
74
|
+
...logJob,
|
|
75
|
+
type: 'CompletedJob'
|
|
76
|
+
}}
|
|
77
|
+
workspaceId={logJob.workspace_id}
|
|
78
|
+
/>
|
|
63
79
|
{:else}
|
|
64
80
|
<LogViewer
|
|
65
81
|
small
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type DiffEditor from './DiffEditor.svelte';
|
|
2
2
|
import type Editor from './Editor.svelte';
|
|
3
|
-
import type
|
|
3
|
+
import { type Script, type Job, type FlowModule } from '../gen';
|
|
4
4
|
interface Props {
|
|
5
5
|
lang: Script['language'];
|
|
6
6
|
editor: Editor | undefined;
|
|
@@ -4,17 +4,18 @@ import { getScriptByPath } from '../scripts';
|
|
|
4
4
|
import { getContext } from 'svelte';
|
|
5
5
|
import JobLoader, {} from './JobLoader.svelte';
|
|
6
6
|
import { getStepHistoryLoaderContext } from './stepHistoryLoader.svelte';
|
|
7
|
+
import { loadSchemaFromModule } from './flows/flowInfers';
|
|
7
8
|
let { mod, testJob = $bindable(undefined), testIsLoading = $bindable(false), noEditor = false, scriptProgress = $bindable(undefined) } = $props();
|
|
8
9
|
const { flowStore, flowStateStore, pathStore, testSteps, previewArgs, modulesTestStates } = getContext('FlowEditorContext');
|
|
9
10
|
let jobLoader = $state(undefined);
|
|
10
11
|
let jobProgressReset = () => { };
|
|
11
12
|
let stepHistoryLoader = getStepHistoryLoaderContext();
|
|
12
13
|
export function runTestWithStepArgs() {
|
|
13
|
-
runTest(testSteps.getStepArgs(mod.id)
|
|
14
|
+
runTest(testSteps.getStepArgs(mod.id));
|
|
14
15
|
}
|
|
15
16
|
export function loadArgsAndRunTest() {
|
|
16
|
-
testSteps?.updateStepArgs(mod.id,
|
|
17
|
-
runTest(testSteps.getStepArgs(mod.id)
|
|
17
|
+
testSteps?.updateStepArgs(mod.id, flowStateStore.val, flowStore?.val, previewArgs?.val);
|
|
18
|
+
runTest(testSteps.getStepArgs(mod.id));
|
|
18
19
|
}
|
|
19
20
|
export async function runTest(args) {
|
|
20
21
|
// Not defined if JobProgressBar not loaded
|
|
@@ -46,36 +47,65 @@ export async function runTest(args) {
|
|
|
46
47
|
else if (val.type == 'flow') {
|
|
47
48
|
await jobLoader?.runFlowByPath(val.path, args, callbacks);
|
|
48
49
|
}
|
|
50
|
+
else if (val.type == 'aiagent') {
|
|
51
|
+
const { schema } = await loadSchemaFromModule(mod);
|
|
52
|
+
const inputTransforms = Object.fromEntries(Object.keys(args).map((key) => [
|
|
53
|
+
key,
|
|
54
|
+
{
|
|
55
|
+
expr: `flow_input.${key}`,
|
|
56
|
+
type: 'javascript'
|
|
57
|
+
}
|
|
58
|
+
]));
|
|
59
|
+
await jobLoader?.runFlowPreview(args, {
|
|
60
|
+
value: {
|
|
61
|
+
modules: [
|
|
62
|
+
{
|
|
63
|
+
...mod,
|
|
64
|
+
value: {
|
|
65
|
+
type: 'aiagent',
|
|
66
|
+
tools: mod.value.type == 'aiagent' ? mod.value.tools : [],
|
|
67
|
+
input_transforms: inputTransforms
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
summary: '',
|
|
73
|
+
schema
|
|
74
|
+
}, callbacks);
|
|
75
|
+
}
|
|
49
76
|
else {
|
|
50
77
|
throw Error('Not supported module type');
|
|
51
78
|
}
|
|
52
79
|
}
|
|
53
80
|
function jobDone(testJob) {
|
|
54
81
|
if (testJob && !testJob.canceled && testJob.type == 'CompletedJob') {
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
82
|
+
if (flowStateStore.val[mod.id]) {
|
|
83
|
+
flowStateStore.val[mod.id] = {
|
|
84
|
+
...flowStateStore.val[mod.id],
|
|
85
|
+
previewResult: testJob.result,
|
|
86
|
+
previewSuccess: testJob.success,
|
|
87
|
+
previewJobId: testJob.id
|
|
88
|
+
};
|
|
61
89
|
}
|
|
62
90
|
stepHistoryLoader?.resetInitial(mod.id);
|
|
63
91
|
}
|
|
64
|
-
modulesTestStates.states[mod.id]
|
|
92
|
+
if (modulesTestStates.states[mod.id]) {
|
|
93
|
+
modulesTestStates.states[mod.id].testJob = testJob;
|
|
94
|
+
}
|
|
65
95
|
}
|
|
66
96
|
export function cancelJob() {
|
|
67
97
|
modulesTestStates.states[mod.id]?.cancel?.();
|
|
68
98
|
}
|
|
69
99
|
$effect(() => {
|
|
70
100
|
// Update testIsLoading to read the state from parent components
|
|
71
|
-
testIsLoading = modulesTestStates.states[mod.id]?.loading ?? false;
|
|
101
|
+
testIsLoading = modulesTestStates.states?.[mod.id]?.loading ?? false;
|
|
72
102
|
});
|
|
73
103
|
$effect(() => {
|
|
74
104
|
// Update testJob to read the state from parent components
|
|
75
|
-
testJob = modulesTestStates.states[mod.id]?.testJob;
|
|
105
|
+
testJob = modulesTestStates.states?.[mod.id]?.testJob;
|
|
76
106
|
});
|
|
77
107
|
modulesTestStates.states[mod.id] = {
|
|
78
|
-
...(modulesTestStates.states[mod.id] ?? { loading: false }),
|
|
108
|
+
...(modulesTestStates.states?.[mod.id] ?? { loading: false }),
|
|
79
109
|
loading: testIsLoading,
|
|
80
110
|
testJob: testJob
|
|
81
111
|
};
|
|
@@ -90,13 +120,26 @@ modulesTestStates.states[mod.id] = {
|
|
|
90
120
|
() => modulesTestStates.states[mod.id]?.loading ?? false,
|
|
91
121
|
(v) => {
|
|
92
122
|
let newLoading = v ?? false
|
|
93
|
-
if (modulesTestStates.states[mod.id]?.loading !== newLoading) {
|
|
123
|
+
if (modulesTestStates.states && modulesTestStates.states?.[mod.id]?.loading !== newLoading) {
|
|
94
124
|
modulesTestStates.states[mod.id] = {
|
|
95
|
-
...(modulesTestStates.states[mod.id] ?? {}),
|
|
96
|
-
loading: newLoading
|
|
125
|
+
...(modulesTestStates.states?.[mod.id] ?? {}),
|
|
126
|
+
loading: newLoading,
|
|
127
|
+
hiddenInGraph: false
|
|
97
128
|
}
|
|
98
129
|
}
|
|
99
130
|
}
|
|
100
131
|
}
|
|
101
132
|
bind:job={modulesTestStates.states[mod.id].testJob}
|
|
133
|
+
loadPlaceholderJobOnStart={{
|
|
134
|
+
type: 'QueuedJob',
|
|
135
|
+
id: '',
|
|
136
|
+
running: false,
|
|
137
|
+
canceled: false,
|
|
138
|
+
job_kind: 'preview',
|
|
139
|
+
permissioned_as: '',
|
|
140
|
+
is_flow_step: false,
|
|
141
|
+
email: '',
|
|
142
|
+
visible_to_owner: true,
|
|
143
|
+
tag: ''
|
|
144
|
+
}}
|
|
102
145
|
/>
|