From 57e62036251f38c75f5694a8d7e25c3ee3143384 Mon Sep 17 00:00:00 2001 From: Vikhyath Mondreti Date: Sun, 25 Jan 2026 22:32:51 -0800 Subject: [PATCH] fix(multi-trigger): resolution paths for triggers --- apps/sim/executor/utils/block-data.ts | 44 ++++++++++++------- .../sim/executor/variables/resolvers/block.ts | 10 +---- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/apps/sim/executor/utils/block-data.ts b/apps/sim/executor/utils/block-data.ts index 694180374..6363bd5b0 100644 --- a/apps/sim/executor/utils/block-data.ts +++ b/apps/sim/executor/utils/block-data.ts @@ -1,7 +1,9 @@ -import { getBlockOutputs } from '@/lib/workflows/blocks/block-outputs' import { normalizeName } from '@/executor/constants' import type { ExecutionContext } from '@/executor/types' import type { OutputSchema } from '@/executor/utils/block-reference' +import type { SerializedBlock } from '@/serializer/types' +import type { ToolConfig } from '@/tools/types' +import { getTool } from '@/tools/utils' export interface BlockDataCollection { blockData: Record @@ -9,6 +11,21 @@ export interface BlockDataCollection { blockOutputSchemas: Record } +export function getBlockSchema( + block: SerializedBlock, + toolConfig?: ToolConfig +): OutputSchema | undefined { + if (block.outputs && Object.keys(block.outputs).length > 0) { + return block.outputs as OutputSchema + } + + if (toolConfig?.outputs && Object.keys(toolConfig.outputs).length > 0) { + return toolConfig.outputs as OutputSchema + } + + return undefined +} + export function collectBlockData(ctx: ExecutionContext): BlockDataCollection { const blockData: Record = {} const blockNameMapping: Record = {} @@ -18,24 +35,21 @@ export function collectBlockData(ctx: ExecutionContext): BlockDataCollection { if (state.output !== undefined) { blockData[id] = state.output } + } - const workflowBlock = ctx.workflow?.blocks?.find((b) => b.id === id) - if (!workflowBlock) continue + const workflowBlocks = ctx.workflow?.blocks ?? [] + for (const block of workflowBlocks) { + const id = block.id - if (workflowBlock.metadata?.name) { - blockNameMapping[normalizeName(workflowBlock.metadata.name)] = id + if (block.metadata?.name) { + blockNameMapping[normalizeName(block.metadata.name)] = id } - const blockType = workflowBlock.metadata?.id - if (blockType) { - const params = workflowBlock.config?.params as Record | undefined - const subBlocks = params - ? Object.fromEntries(Object.entries(params).map(([k, v]) => [k, { value: v }])) - : undefined - const schema = getBlockOutputs(blockType, subBlocks) - if (schema && Object.keys(schema).length > 0) { - blockOutputSchemas[id] = schema - } + const toolId = block.config?.tool + const toolConfig = toolId ? getTool(toolId) : undefined + const schema = getBlockSchema(block, toolConfig) + if (schema && Object.keys(schema).length > 0) { + blockOutputSchemas[id] = schema } } diff --git a/apps/sim/executor/variables/resolvers/block.ts b/apps/sim/executor/variables/resolvers/block.ts index a29339b2b..09d246e80 100644 --- a/apps/sim/executor/variables/resolvers/block.ts +++ b/apps/sim/executor/variables/resolvers/block.ts @@ -1,10 +1,10 @@ -import { getBlockOutputs } from '@/lib/workflows/blocks/block-outputs' import { isReference, normalizeName, parseReferencePath, SPECIAL_REFERENCE_PREFIXES, } from '@/executor/constants' +import { getBlockSchema } from '@/executor/utils/block-data' import { InvalidFieldError, type OutputSchema, @@ -67,15 +67,9 @@ export class BlockResolver implements Resolver { blockData[blockId] = output } - const blockType = block.metadata?.id - const params = block.config?.params as Record | undefined - const subBlocks = params - ? Object.fromEntries(Object.entries(params).map(([k, v]) => [k, { value: v }])) - : undefined const toolId = block.config?.tool const toolConfig = toolId ? getTool(toolId) : undefined - const outputSchema = - toolConfig?.outputs ?? (blockType ? getBlockOutputs(blockType, subBlocks) : block.outputs) + const outputSchema = getBlockSchema(block, toolConfig) if (outputSchema && Object.keys(outputSchema).length > 0) { blockOutputSchemas[blockId] = outputSchema