@ -1166,6 +1166,7 @@ export const useWorkflowStore = create<WorkflowStore>((set, get) => ({
break ;
break ;
case "annotation" : {
case "annotation" : {
try {
// Get connected image and set as source (use first image)
// Get connected image and set as source (use first image)
const { images } = getConnectedInputs ( node . id ) ;
const { images } = getConnectedInputs ( node . id ) ;
const image = images [ 0 ] || null ;
const image = images [ 0 ] || null ;
@ -1177,19 +1178,31 @@ export const useWorkflowStore = create<WorkflowStore>((set, get) => ({
updateNodeData ( node . id , { outputImage : image } ) ;
updateNodeData ( node . id , { outputImage : image } ) ;
}
}
}
}
} catch ( err ) {
const message = err instanceof Error ? err.message : String ( err ) ;
console . error ( ` [Workflow] Annotation node ${ node . id } failed: ` , message ) ;
updateNodeData ( node . id , { error : message } ) ;
}
break ;
break ;
}
}
case "prompt" : {
case "prompt" : {
try {
// Check for connected text input and update prompt if connected
// Check for connected text input and update prompt if connected
const { text : connectedText } = getConnectedInputs ( node . id ) ;
const { text : connectedText } = getConnectedInputs ( node . id ) ;
if ( connectedText !== null ) {
if ( connectedText !== null ) {
updateNodeData ( node . id , { prompt : connectedText } ) ;
updateNodeData ( node . id , { prompt : connectedText } ) ;
}
}
} catch ( err ) {
const message = err instanceof Error ? err.message : String ( err ) ;
console . error ( ` [Workflow] Prompt node ${ node . id } failed: ` , message ) ;
updateNodeData ( node . id , { error : message } ) ;
}
break ;
break ;
}
}
case "promptConstructor" : {
case "promptConstructor" : {
try {
// Get fresh node data from store
// Get fresh node data from store
const freshNode = get ( ) . nodes . find ( ( n ) = > n . id === node . id ) ;
const freshNode = get ( ) . nodes . find ( ( n ) = > n . id === node . id ) ;
const nodeData = ( freshNode ? . data || node . data ) as PromptConstructorNodeData ;
const nodeData = ( freshNode ? . data || node . data ) as PromptConstructorNodeData ;
@ -1221,7 +1234,7 @@ export const useWorkflowStore = create<WorkflowStore>((set, get) => ({
const varName = match [ 1 ] ;
const varName = match [ 1 ] ;
if ( variableMap [ varName ] !== undefined ) {
if ( variableMap [ varName ] !== undefined ) {
// Replace with actual value
// Replace with actual value
resolvedText = resolvedText . replace ( new RegExp ( ` @ ${ varName } ` , 'g' ) , variableMap [ varName ] ) ;
resolvedText = resolvedText . replaceAll ( ` @ ${ varName } ` , variableMap [ varName ] ) ;
} else {
} else {
// Track unresolved variable
// Track unresolved variable
if ( ! unresolvedVars . includes ( varName ) ) {
if ( ! unresolvedVars . includes ( varName ) ) {
@ -1235,6 +1248,11 @@ export const useWorkflowStore = create<WorkflowStore>((set, get) => ({
outputText : resolvedText ,
outputText : resolvedText ,
unresolvedVars ,
unresolvedVars ,
} ) ;
} ) ;
} catch ( err ) {
const message = err instanceof Error ? err.message : String ( err ) ;
console . error ( ` [Workflow] PromptConstructor node ${ node . id } failed: ` , message ) ;
updateNodeData ( node . id , { error : message } ) ;
}
break ;
break ;
}
}