@@ -10,6 +10,7 @@ import { loadWorkflowFromNormalizedTables } from '@/lib/workflows/db-helpers'
1010import { validateWorkflowState } from '@/lib/workflows/validation'
1111import { getAllBlocks } from '@/blocks/registry'
1212import { generateLoopBlocks , generateParallelBlocks } from '@/stores/workflows/workflow/utils'
13+ import { TRIGGER_RUNTIME_SUBBLOCK_IDS } from '@/triggers/consts'
1314
1415interface EditWorkflowOperation {
1516 operation_type : 'add' | 'edit' | 'delete' | 'insert_into_subflow' | 'extract_from_subflow'
@@ -307,6 +308,38 @@ function addConnectionsAsEdges(
307308 } )
308309}
309310
311+ function applyTriggerConfigToBlockSubblocks ( block : any , triggerConfig : Record < string , any > ) {
312+ if ( ! block ?. subBlocks || ! triggerConfig || typeof triggerConfig !== 'object' ) {
313+ return
314+ }
315+
316+ Object . entries ( triggerConfig ) . forEach ( ( [ configKey , configValue ] ) => {
317+ const existingSubblock = block . subBlocks [ configKey ]
318+ if ( existingSubblock ) {
319+ const existingValue = existingSubblock . value
320+ const valuesEqual =
321+ typeof existingValue === 'object' || typeof configValue === 'object'
322+ ? JSON . stringify ( existingValue ) === JSON . stringify ( configValue )
323+ : existingValue === configValue
324+
325+ if ( valuesEqual ) {
326+ return
327+ }
328+
329+ block . subBlocks [ configKey ] = {
330+ ...existingSubblock ,
331+ value : configValue ,
332+ }
333+ } else {
334+ block . subBlocks [ configKey ] = {
335+ id : configKey ,
336+ type : 'short-input' ,
337+ value : configValue ,
338+ }
339+ }
340+ } )
341+ }
342+
310343/**
311344 * Apply operations directly to the workflow JSON state
312345 */
@@ -405,6 +438,9 @@ function applyOperationsToWorkflowState(
405438 if ( params ?. inputs ) {
406439 if ( ! block . subBlocks ) block . subBlocks = { }
407440 Object . entries ( params . inputs ) . forEach ( ( [ key , value ] ) => {
441+ if ( TRIGGER_RUNTIME_SUBBLOCK_IDS . includes ( key ) ) {
442+ return
443+ }
408444 let sanitizedValue = value
409445
410446 // Special handling for inputFormat - ensure it's an array
@@ -432,10 +468,26 @@ function applyOperationsToWorkflowState(
432468 value : sanitizedValue ,
433469 }
434470 } else {
435- block . subBlocks [ key ] . value = sanitizedValue
471+ const existingValue = block . subBlocks [ key ] . value
472+ const valuesEqual =
473+ typeof existingValue === 'object' || typeof sanitizedValue === 'object'
474+ ? JSON . stringify ( existingValue ) === JSON . stringify ( sanitizedValue )
475+ : existingValue === sanitizedValue
476+
477+ if ( ! valuesEqual ) {
478+ block . subBlocks [ key ] . value = sanitizedValue
479+ }
436480 }
437481 } )
438482
483+ if (
484+ Object . prototype . hasOwnProperty . call ( params . inputs , 'triggerConfig' ) &&
485+ block . subBlocks . triggerConfig &&
486+ typeof block . subBlocks . triggerConfig . value === 'object'
487+ ) {
488+ applyTriggerConfigToBlockSubblocks ( block , block . subBlocks . triggerConfig . value )
489+ }
490+
439491 // Update loop/parallel configuration in block.data
440492 if ( block . type === 'loop' ) {
441493 block . data = block . data || { }
0 commit comments