@@ -348,7 +348,8 @@ export async function importWorkflowFromYaml(
348348 applyAutoLayout : ( ) => void
349349 setSubBlockValue : ( blockId : string , subBlockId : string , value : any ) => void
350350 getExistingBlocks : ( ) => Record < string , any >
351- }
351+ } ,
352+ targetWorkflowId ?: string
352353) : Promise < { success : boolean ; errors : string [ ] ; warnings : string [ ] ; summary ?: string } > {
353354 logger . info ( 'Starting YAML workflow import (complete state creation)' )
354355
@@ -376,7 +377,25 @@ export async function importWorkflowFromYaml(
376377 )
377378
378379 // Get the existing workflow state (to preserve starter blocks if they exist)
379- const existingBlocks = workflowActions . getExistingBlocks ( )
380+ let existingBlocks : Record < string , any > = { }
381+
382+ if ( targetWorkflowId ) {
383+ // For target workflow, fetch from API
384+ try {
385+ const response = await fetch ( `/api/workflows/${ targetWorkflowId } ` )
386+ if ( response . ok ) {
387+ const workflowData = await response . json ( )
388+ existingBlocks = workflowData . data ?. state ?. blocks || { }
389+ logger . debug ( `Fetched existing blocks for target workflow ${ targetWorkflowId } :` , Object . keys ( existingBlocks ) )
390+ }
391+ } catch ( error ) {
392+ logger . warn ( `Failed to fetch existing blocks for workflow ${ targetWorkflowId } :` , error )
393+ }
394+ } else {
395+ // For active workflow, use from store
396+ existingBlocks = workflowActions . getExistingBlocks ( )
397+ }
398+
380399 const existingStarterBlocks = Object . values ( existingBlocks ) . filter (
381400 ( block : any ) => block . type === 'starter'
382401 )
@@ -389,11 +408,13 @@ export async function importWorkflowFromYaml(
389408
390409 // Get current workflow state
391410 const currentWorkflowState = useWorkflowStore . getState ( )
392- const activeWorkflowId = useWorkflowRegistry . getState ( ) . activeWorkflowId
411+ const activeWorkflowId = targetWorkflowId || useWorkflowRegistry . getState ( ) . activeWorkflowId
393412
394413 if ( ! activeWorkflowId ) {
395414 return { success : false , errors : [ 'No active workflow' ] , warnings : [ ] }
396415 }
416+
417+ logger . info ( `Importing YAML into workflow: ${ activeWorkflowId } ${ targetWorkflowId ? '(specified target)' : '(active workflow)' } ` )
397418
398419 // Build complete blocks object
399420 const completeBlocks : Record < string , any > = { }
@@ -593,6 +614,12 @@ export async function importWorkflowFromYaml(
593614
594615 // Save directly to database via API
595616 logger . info ( 'Saving complete workflow state directly to database...' )
617+ logger . debug ( 'Sample block being saved:' , {
618+ firstBlockId : Object . keys ( completeBlocks ) [ 0 ] ,
619+ firstBlock : Object . values ( completeBlocks ) [ 0 ] ,
620+ firstBlockSubBlocks : Object . values ( completeBlocks ) [ 0 ] ?. subBlocks
621+ } )
622+
596623 const response = await fetch ( `/api/workflows/${ activeWorkflowId } /state` , {
597624 method : 'PUT' ,
598625 headers : {
@@ -614,17 +641,26 @@ export async function importWorkflowFromYaml(
614641 const saveResponse = await response . json ( )
615642 logger . info ( 'Successfully saved to database:' , saveResponse )
616643
617- // Update local state for immediate UI display
618- logger . info ( 'Updating local state for immediate display...' )
619- useWorkflowStore . setState ( completeWorkflowState )
620-
621- // Set subblock values in local store
622- useSubBlockStore . setState ( ( state : any ) => ( {
623- workflowValues : {
624- ...state . workflowValues ,
625- [ activeWorkflowId ] : completeSubBlockValues ,
626- } ,
627- } ) )
644+ // Update local state for immediate UI display (only if importing into active workflow)
645+ if ( ! targetWorkflowId ) {
646+ logger . info ( 'Updating local state for immediate display (active workflow)...' )
647+ useWorkflowStore . setState ( completeWorkflowState )
648+
649+ // Set subblock values in local store
650+ logger . debug ( 'Setting SubBlockStore with values:' , completeSubBlockValues )
651+ useSubBlockStore . setState ( ( state : any ) => ( {
652+ workflowValues : {
653+ ...state . workflowValues ,
654+ [ activeWorkflowId ] : completeSubBlockValues ,
655+ } ,
656+ } ) )
657+
658+ // Verify SubBlockStore was updated
659+ const subBlockStoreValues = useSubBlockStore . getState ( ) . workflowValues [ activeWorkflowId ]
660+ logger . debug ( 'SubBlockStore after update:' , subBlockStoreValues )
661+ } else {
662+ logger . info ( 'Skipping local state update (importing into non-active workflow)' )
663+ }
628664
629665 // Brief delay for UI to update
630666 await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) )
0 commit comments