From ff57f1d8753fac826c93c42ff22fc111d9bfd683 Mon Sep 17 00:00:00 2001 From: Siddharth Ganesan Date: Fri, 14 Nov 2025 16:02:10 -0800 Subject: [PATCH] Fix variables block --- .../handlers/variables/variables-handler.ts | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/apps/sim/executor/handlers/variables/variables-handler.ts b/apps/sim/executor/handlers/variables/variables-handler.ts index 6baa601c47..c5d4b59a90 100644 --- a/apps/sim/executor/handlers/variables/variables-handler.ts +++ b/apps/sim/executor/handlers/variables/variables-handler.ts @@ -127,33 +127,22 @@ export class VariablesBlockHandler implements BlockHandler { } if (type === 'object' || type === 'array') { + // If value is already an object or array, accept it as-is + // The type hint is for UI purposes and string parsing, not runtime validation if (typeof value === 'object' && value !== null) { - if (type === 'array' && !Array.isArray(value)) { - throw new Error( - `Invalid array value for variable "${variableName || 'unknown'}": expected an array, got an object` - ) - } - if (type === 'object' && Array.isArray(value)) { - throw new Error( - `Invalid object value for variable "${variableName || 'unknown'}": expected an object, got an array` - ) - } return value } + // If it's a string, try to parse it as JSON if (typeof value === 'string' && value.trim()) { try { const parsed = JSON.parse(value) - if (type === 'array' && !Array.isArray(parsed)) { - throw new Error( - `Invalid array value for variable "${variableName || 'unknown'}": parsed value is not an array` - ) - } - if (type === 'object' && (Array.isArray(parsed) || typeof parsed !== 'object')) { - throw new Error( - `Invalid object value for variable "${variableName || 'unknown'}": parsed value is not an object` - ) + // Accept any valid JSON object or array + if (typeof parsed === 'object' && parsed !== null) { + return parsed } - return parsed + throw new Error( + `Invalid JSON for variable "${variableName || 'unknown'}": parsed value is not an object or array` + ) } catch (error: any) { throw new Error( `Invalid JSON for variable "${variableName || 'unknown'}": ${error.message}`