import template from '../assets/workflow_qwen_edit.json' export const DEFAULT_EDIT_NEGATIVE = 'blurry, low quality, deformed, bad anatomy, watermark, text, extra fingers' type WorkflowNode = { class_type: string; inputs: Record; _meta?: { title?: string } } type WorkflowGraph = Record export interface EditParams { prompt: string negative?: string imageName: string steps: number seed: number cfg: number denoise: number samplerName?: string scheduler?: string filenamePrefix?: string } export function buildEditWorkflow(params: EditParams) { const graph = structuredClone(template) as WorkflowGraph if (graph['4']) graph['4'].inputs.image = params.imageName if (graph['5']) graph['5'].inputs.text = params.prompt if (graph['6']) graph['6'].inputs.text = (params.negative || DEFAULT_EDIT_NEGATIVE).trim() || DEFAULT_EDIT_NEGATIVE if (graph['8']) { graph['8'].inputs.seed = params.seed graph['8'].inputs.steps = params.steps graph['8'].inputs.cfg = params.cfg graph['8'].inputs.denoise = params.denoise graph['8'].inputs.sampler_name = params.samplerName || 'euler' graph['8'].inputs.scheduler = params.scheduler || 'simple' } if (graph['10'] && params.filenamePrefix) { graph['10'].inputs.filename_prefix = params.filenamePrefix } return graph } export const EDIT_NODE_LABELS: Record = { '1': 'Loading Qwen Edit UNET', '11': 'Applying Lightning LoRA', '2': 'Loading Qwen CLIP', '3': 'Loading Qwen VAE', '4': 'Loading input still', '5': 'Encoding prompt', '6': 'Encoding negative', '7': 'Encoding still', '8': 'Sampling edit', '9': 'Decoding still', '10': 'Saving still' }