From ecde94567c5ec43002a06d2d765927e0d89640a4 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 28 Jul 2026 12:34:36 +0200 Subject: [PATCH 01/24] fix: make same worker mutually exclusive with retries and sleeps in the flow editor (#10379) * fix(frontend): make same worker mutually exclusive with retries and sleeps * fix(frontend): cover failure/preprocessor modules and skip agent tools --- .../flows/content/FlowModuleComponent.svelte | 12 ++++- .../flows/content/FlowModuleSleep.svelte | 16 +++++- .../flows/content/FlowRetries.svelte | 26 ++++++++-- .../flows/content/FlowSettings.svelte | 45 +++++++++++------ .../src/lib/components/flows/utils.svelte.ts | 36 +++++++++++++- .../src/lib/components/flows/utils.test.ts | 49 +++++++++++++++++++ 6 files changed, 161 insertions(+), 23 deletions(-) create mode 100644 frontend/src/lib/components/flows/utils.test.ts diff --git a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte index c7ed838b6f..75c0d03d65 100644 --- a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte +++ b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte @@ -1380,7 +1380,11 @@ maximum number of attempts as defined below. {/snippet} - + {:else if advancedSelected === 'runtime' && advancedRuntimeSelected === 'concurrency'}
@@ -1545,7 +1549,11 @@ {:else if advancedSelected === 'sleep'}
- +
{:else if advancedSelected === 'debounce'}
diff --git a/frontend/src/lib/components/flows/content/FlowModuleSleep.svelte b/frontend/src/lib/components/flows/content/FlowModuleSleep.svelte index dc45738338..92086ccd37 100644 --- a/frontend/src/lib/components/flows/content/FlowModuleSleep.svelte +++ b/frontend/src/lib/components/flows/content/FlowModuleSleep.svelte @@ -12,13 +12,16 @@ import Section from '$lib/components/Section.svelte' import Label from '$lib/components/Label.svelte' import { getStepPropPicker } from '../previousResults' + import { SAME_WORKER_INCOMPATIBLE_MSG } from '../utils.svelte' + import { Alert } from '$lib/components/common' interface Props { flowModule: FlowModule previousModuleId: string | undefined + isAgentTool?: boolean } - let { flowModule = $bindable(), previousModuleId }: Props = $props() + let { flowModule = $bindable(), previousModuleId, isAgentTool = false }: Props = $props() const { selectionManager, flowStore, flowStateStore, previewArgs } = getContext('FlowEditorContext') @@ -44,6 +47,8 @@ const result = flowStateStore.val[selectionManager.getSelectedId()]?.previewResult ?? {} let isSleepEnabled = $derived(Boolean(flowModule.sleep)) + // Agent tools never go through the flow scheduler, so `same_worker` doesn't apply to them. + let sameWorker = $derived(Boolean(!isAgentTool && flowStore.val.value.same_worker))
@@ -54,8 +59,15 @@ {/snippet} + {#if sameWorker} + + {SAME_WORKER_INCOMPATIBLE_MSG} Disable `Same Worker` in the flow settings to use a sleep. + + {/if} + { if (isSleepEnabled && flowModule.sleep != undefined) { @@ -72,7 +84,7 @@ }} />