diff --git a/blocks/blocks/condition.ts b/blocks/blocks/condition.ts index c5bb403ae3..b10c466648 100644 --- a/blocks/blocks/condition.ts +++ b/blocks/blocks/condition.ts @@ -2,7 +2,21 @@ import { ConditionalIcon } from '@/components/icons' import { CodeExecutionOutput } from '@/tools/function/execute' import { BlockConfig } from '../types' -export const ConditionBlock: BlockConfig = { +interface ConditionBlockOutput { + success: boolean + output: { + content: string + conditionResult: boolean + selectedPath: { + blockId: string + blockType: string + blockTitle: string + } + selectedConditionId: string + } +} + +export const ConditionBlock: BlockConfig = { type: 'condition', name: 'Condition', description: 'Add a condition', @@ -26,9 +40,10 @@ export const ConditionBlock: BlockConfig = { outputs: { response: { type: { - result: 'any', - stdout: 'string', - executionTime: 'number', + content: 'string', + conditionResult: 'boolean', + selectedPath: 'json', + selectedConditionId: 'string', }, }, }, diff --git a/executor/index.ts b/executor/index.ts index 588e9063ab..f7be3f27d8 100644 --- a/executor/index.ts +++ b/executor/index.ts @@ -494,6 +494,21 @@ export class Executor { } if (blockType === 'condition') { + if (output && typeof output === 'object' && 'response' in output) { + return { + response: { + ...output.response, + conditionResult: output.response.conditionResult || false, + selectedPath: output.response.selectedPath || { + blockId: '', + blockType: '', + blockTitle: '', + }, + selectedConditionId: output.response.selectedConditionId || '', + }, + } + } + return { response: { conditionResult: output?.conditionResult || false, diff --git a/executor/resolver.ts b/executor/resolver.ts index ab999f83bb..3dda61cc83 100644 --- a/executor/resolver.ts +++ b/executor/resolver.ts @@ -223,6 +223,9 @@ export class InputResolver { if (currentBlock.metadata?.id === 'condition') { formattedValue = this.stringifyForCondition(replacementValue) + } else if (currentBlock.metadata?.id === 'function' && typeof replacementValue === 'string') { + // For function blocks, we need to properly quote string values to avoid syntax errors + formattedValue = JSON.stringify(replacementValue) } else { formattedValue = typeof replacementValue === 'object'