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,6 +1,7 @@
|
|
|
1
1
|
import FlowLogViewer from './FlowLogViewer.svelte';
|
|
2
2
|
import type { FlowModule, FlowStatusModule, Job } from '../gen';
|
|
3
3
|
import type { GraphModuleState } from './graph/model';
|
|
4
|
+
import type { NavigationChain } from '../keyboardChain';
|
|
4
5
|
type RootJobData = Partial<Job>;
|
|
5
6
|
interface Props {
|
|
6
7
|
modules: FlowModule[];
|
|
@@ -28,7 +29,10 @@ interface Props {
|
|
|
28
29
|
getSelectedIteration: (stepId: string) => number;
|
|
29
30
|
flowSummary?: string;
|
|
30
31
|
mode?: 'flow' | 'aiagent';
|
|
32
|
+
currentId?: string | null;
|
|
33
|
+
navigationChain?: NavigationChain;
|
|
34
|
+
select: (id: string) => void;
|
|
31
35
|
}
|
|
32
|
-
declare const FlowLogViewer: import("svelte").Component<Props, {}, "">;
|
|
36
|
+
declare const FlowLogViewer: import("svelte").Component<Props, {}, "navigationChain">;
|
|
33
37
|
type FlowLogViewer = ReturnType<typeof FlowLogViewer>;
|
|
34
38
|
export default FlowLogViewer;
|
|
@@ -7,6 +7,9 @@ let { job, localModuleStates, workspaceId, render, onSelectedIteration, mode = '
|
|
|
7
7
|
let expandedRows = $state({});
|
|
8
8
|
let allExpanded = $state(false);
|
|
9
9
|
let showResultsInputs = $state(true);
|
|
10
|
+
// Keyboard navigation state - incremental like expandedRows
|
|
11
|
+
let currentId = $state('flow-root');
|
|
12
|
+
let navigationChain = $state({});
|
|
10
13
|
let moduleTracker = new ChangeTracker($state.snapshot(job.raw_flow?.modules ?? []));
|
|
11
14
|
$effect(() => {
|
|
12
15
|
readFieldsRecursively(job.raw_flow?.modules ?? []);
|
|
@@ -29,9 +32,46 @@ function toggleExpandAll() {
|
|
|
29
32
|
allExpanded = !allExpanded;
|
|
30
33
|
expandedRows = {};
|
|
31
34
|
}
|
|
35
|
+
// Keyboard event handler using navigation links
|
|
36
|
+
function handleKeydown(event) {
|
|
37
|
+
if (!currentId && job.raw_flow?.modules) {
|
|
38
|
+
currentId = 'flow-root';
|
|
39
|
+
}
|
|
40
|
+
else if (!currentId) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
switch (event.key) {
|
|
44
|
+
case 'ArrowDown':
|
|
45
|
+
event.preventDefault();
|
|
46
|
+
const downId = navigationChain[currentId]?.downId;
|
|
47
|
+
if (downId) {
|
|
48
|
+
currentId = downId;
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
case 'ArrowUp':
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
const upId = navigationChain[currentId]?.upId;
|
|
54
|
+
if (upId) {
|
|
55
|
+
currentId = upId;
|
|
56
|
+
}
|
|
57
|
+
break;
|
|
58
|
+
case 'Enter':
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
toggleExpanded(currentId);
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function select(id) {
|
|
65
|
+
currentId = id;
|
|
66
|
+
}
|
|
32
67
|
</script>
|
|
33
68
|
|
|
34
|
-
<div
|
|
69
|
+
<div
|
|
70
|
+
class="w-full rounded-md overflow-hidden border focus:border-gray-400 dark:focus:border-gray-400"
|
|
71
|
+
role="tree"
|
|
72
|
+
tabindex="0"
|
|
73
|
+
onkeydown={handleKeydown}
|
|
74
|
+
>
|
|
35
75
|
<FlowLogViewer
|
|
36
76
|
{modules}
|
|
37
77
|
{localModuleStates}
|
|
@@ -48,5 +88,8 @@ function toggleExpandAll() {
|
|
|
48
88
|
flowId="root"
|
|
49
89
|
flowStatus={undefined}
|
|
50
90
|
{mode}
|
|
91
|
+
{currentId}
|
|
92
|
+
bind:navigationChain
|
|
93
|
+
{select}
|
|
51
94
|
/>
|
|
52
95
|
</div>
|
|
@@ -30,6 +30,6 @@ declare const FlowLoopIterationPreview: $$__sveltets_2_IsomorphicComponent<Props
|
|
|
30
30
|
whileLoopSchema: Schema;
|
|
31
31
|
test: () => void;
|
|
32
32
|
runPreview: (args: Record<string, any>, restartedFrom: RestartedFrom | undefined) => Promise<void>;
|
|
33
|
-
}, "job" | "
|
|
33
|
+
}, "job" | "previewArgs" | "jobId">;
|
|
34
34
|
type FlowLoopIterationPreview = InstanceType<typeof FlowLoopIterationPreview>;
|
|
35
35
|
export default FlowLoopIterationPreview;
|
|
@@ -67,7 +67,7 @@ export async function runPreview(args, restartedFrom) {
|
|
|
67
67
|
jobId = await runFlowPreview(args, newFlow, $pathStore, restartedFrom);
|
|
68
68
|
isRunning = true;
|
|
69
69
|
if (inputSelected) {
|
|
70
|
-
savedArgs = previewArgs.val;
|
|
70
|
+
savedArgs = $state.snapshot(previewArgs.val);
|
|
71
71
|
inputSelected = undefined;
|
|
72
72
|
}
|
|
73
73
|
onRunPreview?.();
|
|
@@ -92,7 +92,7 @@ function onKeyDown(event) {
|
|
|
92
92
|
if (preventEscape) {
|
|
93
93
|
selectInput(undefined);
|
|
94
94
|
event.preventDefault();
|
|
95
|
-
event.stopPropagation;
|
|
95
|
+
event.stopPropagation();
|
|
96
96
|
}
|
|
97
97
|
break;
|
|
98
98
|
}
|
|
@@ -423,7 +423,7 @@ export function flowHasChanged() {
|
|
|
423
423
|
schema={flowStore.val.schema}
|
|
424
424
|
bind:args={previewArgs.val}
|
|
425
425
|
on:change={() => {
|
|
426
|
-
savedArgs = previewArgs.val
|
|
426
|
+
savedArgs = $state.snapshot(previewArgs.val)
|
|
427
427
|
}}
|
|
428
428
|
bind:isValid
|
|
429
429
|
helperScript={flowStore.val.schema?.['x-windmill-dyn-select-code'] &&
|
|
@@ -57,6 +57,6 @@ declare const FlowPreviewContent: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
57
57
|
getIsOwner: () => boolean;
|
|
58
58
|
getJob: () => Job | undefined;
|
|
59
59
|
flowHasChanged: () => boolean;
|
|
60
|
-
}, "initial" | "preventEscape" | "job" | "
|
|
60
|
+
}, "initial" | "preventEscape" | "job" | "scrollTop" | "jobId" | "localModuleStates" | "rightColumnSelect" | "localDurationStatuses" | "selectedJobStep" | "previewMode" | "selectedJobStepIsTopLevel" | "selectedJobStepType" | "branchOrIterationN">;
|
|
61
61
|
type FlowPreviewContent = InstanceType<typeof FlowPreviewContent>;
|
|
62
62
|
export default FlowPreviewContent;
|
|
@@ -43,6 +43,8 @@ let refreshGlobal = async (moduleId, clear, root) => {
|
|
|
43
43
|
let updateGlobalRefresh = (moduleId, updateFn) => {
|
|
44
44
|
globalRefreshes[moduleId] = [...(globalRefreshes[moduleId] ?? []), updateFn];
|
|
45
45
|
};
|
|
46
|
+
let storedToolCallJobs = $state({});
|
|
47
|
+
let toolCallIndicesToLoad = $state([]);
|
|
46
48
|
</script>
|
|
47
49
|
|
|
48
50
|
<FlowStatusViewerInner
|
|
@@ -74,4 +76,30 @@ let updateGlobalRefresh = (moduleId, updateFn) => {
|
|
|
74
76
|
isNodeSelected={true}
|
|
75
77
|
{refreshGlobal}
|
|
76
78
|
{updateGlobalRefresh}
|
|
79
|
+
toolCallStore={{
|
|
80
|
+
getStoredToolCallJob: (storeKey: string) => storedToolCallJobs[storeKey],
|
|
81
|
+
setStoredToolCallJob: (storeKey: string, job: Job) => {
|
|
82
|
+
storedToolCallJobs[storeKey] = job
|
|
83
|
+
},
|
|
84
|
+
getLocalToolCallJobs: (prefix: string) => {
|
|
85
|
+
// we return a map from tool call index to job
|
|
86
|
+
// to do so, we filter the storedToolCallJobs object by the prefix and we make sure what's left in the key is a tool call index: 2 part of format agentModuleId-toolCallIndex
|
|
87
|
+
// and not a further nested tool call index
|
|
88
|
+
return Object.fromEntries(
|
|
89
|
+
Object.entries(storedToolCallJobs)
|
|
90
|
+
.filter(
|
|
91
|
+
([key]) => key.startsWith(prefix) && key.replace(prefix, '').split('-').length === 2
|
|
92
|
+
)
|
|
93
|
+
.map(([key, job]) => [Number(key.replace(prefix, '').split('-').pop()), job])
|
|
94
|
+
)
|
|
95
|
+
},
|
|
96
|
+
isToolCallToBeLoaded: (storeKey: string) => {
|
|
97
|
+
return toolCallIndicesToLoad.includes(storeKey)
|
|
98
|
+
},
|
|
99
|
+
addToolCallToLoad: (storeKey: string) => {
|
|
100
|
+
if (!toolCallIndicesToLoad.includes(storeKey)) {
|
|
101
|
+
toolCallIndicesToLoad.push(storeKey)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}}
|
|
77
105
|
/>
|
|
@@ -16,6 +16,7 @@ import { ChevronDown, Hourglass } from 'lucide-svelte';
|
|
|
16
16
|
import { deepEqual } from 'fast-equals';
|
|
17
17
|
import FlowTimeline from './FlowTimeline.svelte';
|
|
18
18
|
import { dfs } from './flows/dfs';
|
|
19
|
+
import { dfs as dfsPreviousResults } from './flows/previousResults';
|
|
19
20
|
import Alert from './common/alert/Alert.svelte';
|
|
20
21
|
import FlowGraphViewerStep from './FlowGraphViewerStep.svelte';
|
|
21
22
|
import FlowGraphV2 from './graph/FlowGraphV2.svelte';
|
|
@@ -27,8 +28,9 @@ import { createState } from '../svelte5Utils.svelte';
|
|
|
27
28
|
import JobLoader from './JobLoader.svelte';
|
|
28
29
|
import { writable } from 'svelte/store';
|
|
29
30
|
import { AI_TOOL_CALL_PREFIX, AI_TOOL_MESSAGE_PREFIX, getToolCallId } from './graph/renderers/nodes/AIToolNode.svelte';
|
|
31
|
+
import JobAssetsViewer from './assets/JobAssetsViewer.svelte';
|
|
30
32
|
let { flowStateStore, retryStatus, suspendStatus, hideDownloadInGraph, hideTimeline, hideNodeDefinition, hideDownloadLogs, hideJobId } = getContext('FlowStatusViewer');
|
|
31
|
-
let { jobId, initialJob = undefined, workspaceId = undefined, flowJobIds = undefined, innerModule = undefined, render = true, isOwner = false, selectedNode = $bindable(undefined), globalModuleStates, globalDurationStatuses = [], globalIterationBounds, updateRecursiveRefreshFn = undefined, isSelectedBranch = true, isSubflow = false, reducedPolling = false, wideResults = false, hideFlowResult = false, workspace = $workspaceStore, prefix = undefined, topModuleStates = undefined, refreshGlobal, updateGlobalRefresh, subflowParentsGlobalModuleStates = [], subflowParentsDurationStatuses = [], isForloopSelected = false, job = $bindable(undefined), rightColumnSelect = $bindable('timeline'), localModuleStates = $bindable({}), localDurationStatuses = $bindable({}), customUi, onResultStreamUpdate = undefined, graphTabOpen, isNodeSelected, loadExtraLogs = undefined, onStart = undefined, onJobsLoaded = undefined, onDone = undefined } = $props();
|
|
33
|
+
let { jobId, initialJob = undefined, workspaceId = undefined, flowJobIds = undefined, innerModule = undefined, render = true, isOwner = false, selectedNode = $bindable(undefined), globalModuleStates, globalDurationStatuses = [], globalIterationBounds, updateRecursiveRefreshFn = undefined, isSelectedBranch = true, isSubflow = false, reducedPolling = false, wideResults = false, hideFlowResult = false, workspace = $workspaceStore, prefix = undefined, topModuleStates = undefined, refreshGlobal, updateGlobalRefresh, subflowParentsGlobalModuleStates = [], subflowParentsDurationStatuses = [], isForloopSelected = false, job = $bindable(undefined), rightColumnSelect = $bindable('timeline'), localModuleStates = $bindable({}), localDurationStatuses = $bindable({}), customUi, onResultStreamUpdate = undefined, graphTabOpen, isNodeSelected, loadExtraLogs = undefined, onStart = undefined, onJobsLoaded = undefined, onDone = undefined, toolCallStore } = $props();
|
|
32
34
|
let getTopModuleStates = $derived(topModuleStates ?? localModuleStates);
|
|
33
35
|
let resultStreams = $state({});
|
|
34
36
|
if (onResultStreamUpdate == undefined) {
|
|
@@ -660,9 +662,7 @@ function loadPreviousIters(innerKey, lenToAdd) {
|
|
|
660
662
|
}
|
|
661
663
|
let stepDetail = $state(undefined);
|
|
662
664
|
let storedListJobs = $state({});
|
|
663
|
-
let storedToolCallJobs = $state({});
|
|
664
665
|
let selectedToolCall = $state(undefined);
|
|
665
|
-
let toolCallIndicesToLoad = $state([]);
|
|
666
666
|
let wrapperHeight = $state(0);
|
|
667
667
|
function removeFailureNode(id, parent_module) {
|
|
668
668
|
if (id?.startsWith('failure-') && parent_module) {
|
|
@@ -689,7 +689,7 @@ function allModulesForTimeline(modules, expandedSubflows) {
|
|
|
689
689
|
}
|
|
690
690
|
let nprefix = buildPrefix(prefix, oid);
|
|
691
691
|
return fms
|
|
692
|
-
? rec(dfs(fms, (x) => x.id.startsWith('subflow:') ? x.id : buildSubflowKey(x.id, nprefix)), nprefix)
|
|
692
|
+
? rec(dfs(fms, (x) => (x.id.startsWith('subflow:') ? x.id : buildSubflowKey(x.id, nprefix)), { skipToolNodes: true }), nprefix)
|
|
693
693
|
: [];
|
|
694
694
|
}));
|
|
695
695
|
}
|
|
@@ -734,6 +734,11 @@ async function onSelectedIteration(detail) {
|
|
|
734
734
|
selectedForLoopSetManually: false
|
|
735
735
|
});
|
|
736
736
|
}
|
|
737
|
+
if (selectedNode?.startsWith(AI_TOOL_CALL_PREFIX)) {
|
|
738
|
+
const [, agentModuleId, toolCallIndex, _] = selectedNode.split('-');
|
|
739
|
+
const parentLoopsPrefix = getParentLoopsPrefix(agentModuleId);
|
|
740
|
+
toolCallStore?.addToolCallToLoad(parentLoopsPrefix + agentModuleId + '-' + toolCallIndex);
|
|
741
|
+
}
|
|
737
742
|
}
|
|
738
743
|
$effect(() => {
|
|
739
744
|
flowJobIds?.moduleId && untrack(() => onFlowModuleId());
|
|
@@ -761,6 +766,35 @@ $effect(() => {
|
|
|
761
766
|
let selected = $derived(isListJob ? 'sequence' : 'graph');
|
|
762
767
|
let animateLogsTab = $state(false);
|
|
763
768
|
let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
769
|
+
/**
|
|
770
|
+
* Returns a string like "forloopmodid1-{iter1}-forloopmodid2-{iter2}-forloopmodid3-{iter3}-"
|
|
771
|
+
* that can be used to prefix tool call store keys for nested tool calls.
|
|
772
|
+
*/
|
|
773
|
+
function getParentLoopsPrefix(modId) {
|
|
774
|
+
if (job?.raw_flow) {
|
|
775
|
+
const indices = [];
|
|
776
|
+
const parents = dfsPreviousResults(modId, { value: job?.raw_flow, summary: '' }, true);
|
|
777
|
+
for (const parent of parents) {
|
|
778
|
+
if (parent.value.type === 'forloopflow' || parent.value.type === 'whileloopflow') {
|
|
779
|
+
const state = localModuleStates[parent.id];
|
|
780
|
+
if (state?.selectedForloopIndex !== undefined) {
|
|
781
|
+
indices.push(parent.id + '-' + state.selectedForloopIndex.toString());
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
indices.reverse();
|
|
786
|
+
return indices.length > 0 ? indices.join('-') + '-' : '';
|
|
787
|
+
}
|
|
788
|
+
return '';
|
|
789
|
+
}
|
|
790
|
+
// Set all tabs content to the same height to prevent layout jumps
|
|
791
|
+
let tabsHeight = $state({
|
|
792
|
+
sequenceHeight: 0,
|
|
793
|
+
logsHeight: 0,
|
|
794
|
+
assetsHeight: 0,
|
|
795
|
+
graphHeight: 0
|
|
796
|
+
});
|
|
797
|
+
let minTabHeight = $derived(Math.max(tabsHeight.sequenceHeight, tabsHeight.logsHeight, tabsHeight.assetsHeight, tabsHeight.graphHeight));
|
|
764
798
|
</script>
|
|
765
799
|
|
|
766
800
|
<JobLoader workspaceOverride={workspaceId} {noLogs} noCode bind:this={jobLoader} />
|
|
@@ -839,12 +873,17 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
839
873
|
: ''}><span class="font-semibold">Logs</span></Tab
|
|
840
874
|
>
|
|
841
875
|
<Tab value="sequence"><span class="font-semibold">Details</span></Tab>
|
|
876
|
+
<Tab value="assets"><span class="font-semibold">Assets</span></Tab>
|
|
842
877
|
</Tabs>
|
|
843
878
|
{:else}
|
|
844
879
|
<div class="h-[30px]"></div>
|
|
845
880
|
{/if}
|
|
846
881
|
{/if}
|
|
847
|
-
<div
|
|
882
|
+
<div
|
|
883
|
+
class="{selected != 'sequence' ? 'hidden' : ''} max-w-7xl mx-auto"
|
|
884
|
+
bind:clientHeight={tabsHeight.sequenceHeight}
|
|
885
|
+
style="min-height: {minTabHeight}px"
|
|
886
|
+
>
|
|
848
887
|
{#if isListJob}
|
|
849
888
|
{@const sliceFrom =
|
|
850
889
|
globalIterationBounds[buildSubflowKey(flowJobIds?.moduleId ?? '', prefix)]
|
|
@@ -895,6 +934,10 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
895
934
|
{@const forloopIsSelected =
|
|
896
935
|
forloop_selected == loopJobId ||
|
|
897
936
|
(innerModule?.type != 'forloopflow' && innerModule?.type != 'whileloopflow')}
|
|
937
|
+
{@const forLoopStoreKeyPrefix =
|
|
938
|
+
innerModule?.type == 'forloopflow' || innerModule?.type == 'whileloopflow'
|
|
939
|
+
? (flowJobIds?.moduleId ?? '') + '-' + j + '-'
|
|
940
|
+
: ''}
|
|
898
941
|
<!-- <LogId id={loopJobId} /> -->
|
|
899
942
|
<div class="border p-6" class:hidden={forloop_selected != loopJobId}>
|
|
900
943
|
<FlowStatusViewerInner
|
|
@@ -929,6 +972,18 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
929
972
|
graphTabOpen={selected == 'graph' && graphTabOpen}
|
|
930
973
|
isNodeSelected={forloop_selected == loopJobId}
|
|
931
974
|
{globalIterationBounds}
|
|
975
|
+
toolCallStore={{
|
|
976
|
+
getStoredToolCallJob: (storeKey: string) =>
|
|
977
|
+
toolCallStore?.getStoredToolCallJob(forLoopStoreKeyPrefix + storeKey),
|
|
978
|
+
setStoredToolCallJob: (storeKey: string, job: Job) =>
|
|
979
|
+
toolCallStore?.setStoredToolCallJob(forLoopStoreKeyPrefix + storeKey, job),
|
|
980
|
+
getLocalToolCallJobs: (prefix: string) =>
|
|
981
|
+
toolCallStore?.getLocalToolCallJobs(forLoopStoreKeyPrefix + prefix) ?? {},
|
|
982
|
+
addToolCallToLoad: (storeKey: string) =>
|
|
983
|
+
toolCallStore?.addToolCallToLoad(forLoopStoreKeyPrefix + storeKey),
|
|
984
|
+
isToolCallToBeLoaded: (storeKey: string) =>
|
|
985
|
+
toolCallStore?.isToolCallToBeLoaded(forLoopStoreKeyPrefix + storeKey) ?? false
|
|
986
|
+
}}
|
|
932
987
|
/>
|
|
933
988
|
</div>
|
|
934
989
|
{/if}
|
|
@@ -1088,12 +1143,17 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1088
1143
|
graphTabOpen={selected == 'graph' && graphTabOpen}
|
|
1089
1144
|
isNodeSelected={localModuleStates?.[selectedNode ?? '']?.job_id == mod.job}
|
|
1090
1145
|
{globalIterationBounds}
|
|
1146
|
+
{toolCallStore}
|
|
1091
1147
|
/>
|
|
1092
|
-
{#if mod.agent_actions && mod.agent_actions.length > 0}
|
|
1148
|
+
{#if mod.agent_actions && mod.agent_actions.length > 0 && mod.id}
|
|
1149
|
+
{@const storeKeyPrefix = getParentLoopsPrefix(mod.id)}
|
|
1093
1150
|
{#each mod.agent_actions as agentAction, j}
|
|
1094
|
-
{#if agentAction.type === 'tool_call'
|
|
1151
|
+
{#if agentAction.type === 'tool_call'}
|
|
1095
1152
|
{@const toolCallId = getToolCallId(j, mod.id, agentAction.module_id)}
|
|
1096
|
-
{@const
|
|
1153
|
+
{@const localToolCallKey = mod.id + '-' + j}
|
|
1154
|
+
{@const storeKey = storeKeyPrefix + localToolCallKey}
|
|
1155
|
+
{@const storedToolCallJob = toolCallStore?.getStoredToolCallJob(storeKey)}
|
|
1156
|
+
{@const isSelected = localToolCallKey === selectedToolCall}
|
|
1097
1157
|
<Button
|
|
1098
1158
|
variant={isSelected ? 'contained' : 'border'}
|
|
1099
1159
|
color={mod.agent_actions_success?.[j] === false
|
|
@@ -1103,10 +1163,10 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1103
1163
|
: 'light'}
|
|
1104
1164
|
btnClasses="w-full flex justify-start"
|
|
1105
1165
|
on:click={async () => {
|
|
1106
|
-
if (
|
|
1166
|
+
if (isSelected) {
|
|
1107
1167
|
selectedToolCall = undefined
|
|
1108
1168
|
} else {
|
|
1109
|
-
selectedToolCall =
|
|
1169
|
+
selectedToolCall = localToolCallKey
|
|
1110
1170
|
}
|
|
1111
1171
|
}}
|
|
1112
1172
|
endIcon={{
|
|
@@ -1118,7 +1178,7 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1118
1178
|
Tool call: {agentAction.function_name}
|
|
1119
1179
|
</span>
|
|
1120
1180
|
</Button>
|
|
1121
|
-
{#if isSelected ||
|
|
1181
|
+
{#if isSelected || storedToolCallJob || toolCallStore?.isToolCallToBeLoaded(storeKey)}
|
|
1122
1182
|
<FlowStatusViewerInner
|
|
1123
1183
|
topModuleStates={getTopModuleStates}
|
|
1124
1184
|
{refreshGlobal}
|
|
@@ -1136,11 +1196,11 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1136
1196
|
{subflowParentsDurationStatuses}
|
|
1137
1197
|
{isSelectedBranch}
|
|
1138
1198
|
jobId={agentAction.job_id}
|
|
1139
|
-
job={
|
|
1140
|
-
initialJob={
|
|
1199
|
+
job={storedToolCallJob}
|
|
1200
|
+
initialJob={storedToolCallJob}
|
|
1141
1201
|
{reducedPolling}
|
|
1142
1202
|
onJobsLoaded={({ job, force }) => {
|
|
1143
|
-
|
|
1203
|
+
toolCallStore?.setStoredToolCallJob(storeKey, job)
|
|
1144
1204
|
onJobsLoadedInner({ id: toolCallId } as FlowStatusModule, job, force)
|
|
1145
1205
|
}}
|
|
1146
1206
|
loadExtraLogs={(logs) => {
|
|
@@ -1172,7 +1232,11 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1172
1232
|
<div class="p-2 text-tertiary text-sm italic">Empty flow</div>
|
|
1173
1233
|
{/if}
|
|
1174
1234
|
</div>
|
|
1175
|
-
<div
|
|
1235
|
+
<div
|
|
1236
|
+
class="{selected != 'logs' ? 'hidden' : ''} mx-auto"
|
|
1237
|
+
bind:clientHeight={tabsHeight.logsHeight}
|
|
1238
|
+
style="min-height: {minTabHeight}px"
|
|
1239
|
+
>
|
|
1176
1240
|
<FlowLogViewerWrapper
|
|
1177
1241
|
{job}
|
|
1178
1242
|
{localModuleStates}
|
|
@@ -1181,10 +1245,23 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1181
1245
|
{onSelectedIteration}
|
|
1182
1246
|
/>
|
|
1183
1247
|
</div>
|
|
1248
|
+
{#if selected == 'assets' && render}
|
|
1249
|
+
<div
|
|
1250
|
+
class="p-2"
|
|
1251
|
+
bind:clientHeight={tabsHeight.assetsHeight}
|
|
1252
|
+
style="min-height: {minTabHeight}px"
|
|
1253
|
+
>
|
|
1254
|
+
<JobAssetsViewer {job} />
|
|
1255
|
+
</div>
|
|
1256
|
+
{/if}
|
|
1184
1257
|
</div>
|
|
1185
1258
|
{#if render}
|
|
1186
1259
|
{#if job.raw_flow && !isListJob}
|
|
1187
|
-
<div
|
|
1260
|
+
<div
|
|
1261
|
+
class="{selected != 'graph' ? 'hidden' : ''} grow mt-4"
|
|
1262
|
+
bind:clientHeight={tabsHeight.graphHeight}
|
|
1263
|
+
style="min-height: {minTabHeight}px"
|
|
1264
|
+
>
|
|
1188
1265
|
<div class="grid grid-cols-3 border h-full" bind:clientHeight={wrapperHeight}>
|
|
1189
1266
|
<div class="col-span-2 bg-surface-secondary">
|
|
1190
1267
|
<div class="flex flex-col">
|
|
@@ -1231,11 +1308,11 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1231
1308
|
stepDetail = mod
|
|
1232
1309
|
selectedNode = e
|
|
1233
1310
|
if (e.startsWith(AI_TOOL_CALL_PREFIX)) {
|
|
1234
|
-
const [_prefix,
|
|
1311
|
+
const [_prefix, agentModuleId, j, _toolModuleId] = e.split('-')
|
|
1312
|
+
const parentLoopsPrefix = getParentLoopsPrefix(agentModuleId)
|
|
1235
1313
|
const jIdx = Number(j)
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
}
|
|
1314
|
+
const storeKey = parentLoopsPrefix + agentModuleId + '-' + jIdx
|
|
1315
|
+
toolCallStore?.addToolCallToLoad(storeKey)
|
|
1239
1316
|
}
|
|
1240
1317
|
}
|
|
1241
1318
|
} else {
|
|
@@ -1325,6 +1402,7 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1325
1402
|
stepDetail && typeof stepDetail !== 'string' ? stepDetail : undefined}
|
|
1326
1403
|
{@const agentTools =
|
|
1327
1404
|
module && module.value.type === 'aiagent' ? module.value.tools : undefined}
|
|
1405
|
+
{@const parentLoopsPrefix = getParentLoopsPrefix(module?.id ?? '')}
|
|
1328
1406
|
{#if node.flow_jobs_results}
|
|
1329
1407
|
<span class="pl-1 text-tertiary"
|
|
1330
1408
|
>Result of step as collection of all subflows</span
|
|
@@ -1389,7 +1467,7 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1389
1467
|
logs={node.logs}
|
|
1390
1468
|
downloadLogs={!hideDownloadLogs}
|
|
1391
1469
|
aiAgentStatus={agentTools &&
|
|
1392
|
-
node
|
|
1470
|
+
node?.job_id &&
|
|
1393
1471
|
(node.type === 'Success' || node.type === 'Failure')
|
|
1394
1472
|
? {
|
|
1395
1473
|
tools: agentTools,
|
|
@@ -1401,9 +1479,14 @@ let noLogs = $derived(graphTabOpen && !isNodeSelected);
|
|
|
1401
1479
|
success: node.type === 'Success',
|
|
1402
1480
|
type: 'CompletedJob'
|
|
1403
1481
|
},
|
|
1404
|
-
storedToolCallJobs
|
|
1482
|
+
storedToolCallJobs: module
|
|
1483
|
+
? toolCallStore?.getLocalToolCallJobs(parentLoopsPrefix)
|
|
1484
|
+
: undefined,
|
|
1405
1485
|
onToolJobLoaded: (job, idx) => {
|
|
1406
|
-
|
|
1486
|
+
if (module) {
|
|
1487
|
+
const storeKey = parentLoopsPrefix + module.id + '-' + idx
|
|
1488
|
+
toolCallStore?.setStoredToolCallJob(storeKey, job)
|
|
1489
|
+
}
|
|
1407
1490
|
}
|
|
1408
1491
|
}
|
|
1409
1492
|
: undefined}
|
|
@@ -57,6 +57,13 @@ interface Props {
|
|
|
57
57
|
onDone?: ({ job }: {
|
|
58
58
|
job: CompletedJob;
|
|
59
59
|
}) => void;
|
|
60
|
+
toolCallStore?: {
|
|
61
|
+
getStoredToolCallJob: (storeKey: string) => Job | undefined;
|
|
62
|
+
setStoredToolCallJob: (storeKey: string, job: Job) => void;
|
|
63
|
+
getLocalToolCallJobs: (prefix: string) => Record<number, Job>;
|
|
64
|
+
isToolCallToBeLoaded: (storeKey: string) => boolean;
|
|
65
|
+
addToolCallToLoad: (storeKey: string) => void;
|
|
66
|
+
};
|
|
60
67
|
}
|
|
61
68
|
declare const FlowStatusViewerInner: import("svelte").Component<Props, {}, "job" | "localModuleStates" | "selectedNode" | "rightColumnSelect" | "localDurationStatuses">;
|
|
62
69
|
type FlowStatusViewerInner = ReturnType<typeof FlowStatusViewerInner>;
|
|
@@ -32,6 +32,8 @@ let monaco = $state(undefined);
|
|
|
32
32
|
let monacoTemplate = $state(undefined);
|
|
33
33
|
let argInput = $state(undefined);
|
|
34
34
|
let focusedPrev = false;
|
|
35
|
+
const variableMatch = (value) => value.match(/^variable\('([^']+)'\)$/);
|
|
36
|
+
const resourceMatch = (value) => value.match(/^resource\('([^']+)'\)$/);
|
|
35
37
|
const dispatch = createEventDispatcher();
|
|
36
38
|
$effect(() => {
|
|
37
39
|
editor = monaco;
|
|
@@ -144,18 +146,18 @@ function isStaticTemplate(inputCat) {
|
|
|
144
146
|
}
|
|
145
147
|
function connectProperty(rawValue) {
|
|
146
148
|
// Extract path from variable('x') or resource('x') format
|
|
147
|
-
const varMatch = rawValue
|
|
148
|
-
const
|
|
149
|
+
const varMatch = variableMatch(rawValue);
|
|
150
|
+
const resMatch = resourceMatch(rawValue);
|
|
149
151
|
if (varMatch) {
|
|
150
152
|
arg.type = 'static';
|
|
151
153
|
propertyType = 'static';
|
|
152
154
|
arg.value = '$var:' + varMatch[1];
|
|
153
155
|
monacoTemplate?.setCode(arg.value);
|
|
154
156
|
}
|
|
155
|
-
else if (
|
|
157
|
+
else if (resMatch) {
|
|
156
158
|
arg.type = 'static';
|
|
157
159
|
propertyType = 'static';
|
|
158
|
-
arg.value = '$res:' +
|
|
160
|
+
arg.value = '$res:' + resMatch[1];
|
|
159
161
|
monacoTemplate?.setCode(arg.value);
|
|
160
162
|
}
|
|
161
163
|
else {
|
|
@@ -169,12 +171,20 @@ function onFocus() {
|
|
|
169
171
|
focused = true;
|
|
170
172
|
if (isStaticTemplate(inputCat)) {
|
|
171
173
|
focusProp?.(argName, 'append', (path) => {
|
|
172
|
-
|
|
173
|
-
arg.value
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
174
|
+
// Empty field + variable = use $var:/$res: syntax instead of ${...}
|
|
175
|
+
const isEmpty = !arg.value || arg.value.trim() === '';
|
|
176
|
+
if (isEmpty && variableMatch(path)) {
|
|
177
|
+
connectProperty(path);
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
const toAppend = `\$\{${path}}`;
|
|
182
|
+
arg.value = `${arg.value ?? ''}${toAppend}`;
|
|
183
|
+
monacoTemplate?.setCode(arg.value);
|
|
184
|
+
setPropertyType(arg.value);
|
|
185
|
+
argInput?.focus();
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
178
188
|
});
|
|
179
189
|
}
|
|
180
190
|
else {
|
|
@@ -79,7 +79,7 @@ ${Object.entries(args)
|
|
|
79
79
|
{#each Object.entries(args).sort((a, b) => a[0].localeCompare(b[0])) as [arg, value]}
|
|
80
80
|
<Row>
|
|
81
81
|
<Cell first>{arg}</Cell>
|
|
82
|
-
<Cell
|
|
82
|
+
<Cell><ArgInfo {value} /></Cell>
|
|
83
83
|
</Row>
|
|
84
84
|
{/each}
|
|
85
85
|
{:else if args}
|
|
@@ -61,6 +61,6 @@ declare const JobLoader: import("svelte").Component<Props, {
|
|
|
61
61
|
cancelJob: () => Promise<void>;
|
|
62
62
|
clearCurrentJob: () => Promise<void>;
|
|
63
63
|
watchJob: (testId: string, callbacks?: Callbacks) => Promise<void>;
|
|
64
|
-
}, "
|
|
64
|
+
}, "isLoading" | "job" | "notfound" | "jobUpdateLastFetch" | "scriptProgress">;
|
|
65
65
|
type JobLoader = ReturnType<typeof JobLoader>;
|
|
66
66
|
export default JobLoader;
|
|
@@ -4,6 +4,7 @@ import { forLater } from '../forLater';
|
|
|
4
4
|
import DurationMs from './DurationMs.svelte';
|
|
5
5
|
import { Calendar, CheckCircle2, Circle, Clock, Hourglass, Play, XCircle } from 'lucide-svelte';
|
|
6
6
|
import NoWorkerWithTagWarning from './runs/NoWorkerWithTagWarning.svelte';
|
|
7
|
+
import QueuePosition from './QueuePosition.svelte';
|
|
7
8
|
const SMALL_ICON_SIZE = 12;
|
|
8
9
|
export let job;
|
|
9
10
|
</script>
|
|
@@ -56,6 +57,7 @@ export let job;
|
|
|
56
57
|
<div class="flex flex-row gap-1 items-center">
|
|
57
58
|
<Badge color="orange" icon={{ icon: Clock, position: 'left' }}>Queued</Badge>
|
|
58
59
|
<NoWorkerWithTagWarning tag={job.tag} />
|
|
60
|
+
<QueuePosition jobId={job.id} workspaceId={job.workspace_id} minimal />
|
|
59
61
|
</div>
|
|
60
62
|
{:else}
|
|
61
63
|
<Circle size={SMALL_ICON_SIZE} class="text-gray-200" />
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import AnsiUp from 'ansi_up';
|
|
1
|
+
<script lang="ts">import { AnsiUp } from 'ansi_up';
|
|
2
2
|
export let content;
|
|
3
3
|
export let highlighted;
|
|
4
4
|
const ansi_up = new AnsiUp();
|
|
@@ -24,8 +24,8 @@ let html = highlightSnippet(content);
|
|
|
24
24
|
</script>
|
|
25
25
|
|
|
26
26
|
<button on:click class="font-light !m-0 !p-0">
|
|
27
|
-
<pre
|
|
28
|
-
|
|
27
|
+
<pre
|
|
28
|
+
class="bg-surface-secondary hover:bg-surface px-2 py-1 text-secondary text-xs w-[100%] whitespace-pre border min-w-full text-start">
|
|
29
29
|
{@html html}
|
|
30
30
|
</pre>
|
|
31
31
|
</button>
|