From fb445b166d16c28186db6afc1fa8df5caf7a4d46 Mon Sep 17 00:00:00 2001 From: Siddharth Ganesan <33737564+Sg312@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:37:59 -0800 Subject: [PATCH] fix(legacy-start): fix legacy start block execution in new executor --- .../handlers/trigger/trigger-handler.ts | 43 ++++++++++++++++--- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/apps/sim/executor/handlers/trigger/trigger-handler.ts b/apps/sim/executor/handlers/trigger/trigger-handler.ts index 2460eeb165..ca4cb2b23b 100644 --- a/apps/sim/executor/handlers/trigger/trigger-handler.ts +++ b/apps/sim/executor/handlers/trigger/trigger-handler.ts @@ -1,20 +1,18 @@ import { createLogger } from '@/lib/logs/console/logger' +import { BlockType } from '@/executor/consts' import type { BlockHandler, ExecutionContext } from '@/executor/types' import type { SerializedBlock } from '@/serializer/types' const logger = createLogger('TriggerBlockHandler') -/** - * Handler for trigger blocks (Gmail, Webhook, Schedule, etc.) - * These blocks don't execute tools - they provide input data to workflows - */ export class TriggerBlockHandler implements BlockHandler { canHandle(block: SerializedBlock): boolean { - // Handle blocks that are triggers - either by category or by having triggerMode enabled + if (block.metadata?.id === BlockType.STARTER) { + return true + } + const isTriggerCategory = block.metadata?.category === 'triggers' - // For blocks that can be both tools and triggers (like Gmail/Outlook), check if triggerMode is enabled - // This would come from the serialized block config/params const hasTriggerMode = block.config?.params?.triggerMode === true return isTriggerCategory || hasTriggerMode @@ -27,6 +25,10 @@ export class TriggerBlockHandler implements BlockHandler { ): Promise { logger.info(`Executing trigger block: ${block.id} (Type: ${block.metadata?.id})`) + if (block.metadata?.id === BlockType.STARTER) { + return this.executeStarterBlock(ctx, block, inputs) + } + const existingState = ctx.blockStates.get(block.id) if (existingState?.output && Object.keys(existingState.output).length > 0) { const existingOutput = existingState.output as any @@ -151,4 +153,31 @@ export class TriggerBlockHandler implements BlockHandler { logger.debug(`No inputs provided for trigger block ${block.id}, returning empty object`) return {} } + + private executeStarterBlock( + ctx: ExecutionContext, + block: SerializedBlock, + inputs: Record + ): any { + logger.info(`Executing starter block: ${block.id}`, { + blockName: block.metadata?.name, + }) + + const existingState = ctx.blockStates.get(block.id) + if (existingState?.output && Object.keys(existingState.output).length > 0) { + logger.debug('Returning pre-initialized starter block output', { + blockId: block.id, + outputKeys: Object.keys(existingState.output), + }) + return existingState.output + } + + logger.warn('Starter block output not found in context, returning empty output', { + blockId: block.id, + }) + + return { + input: inputs.input || '', + } + } }