From f5a07fe7a9e149acb549812a595ce650946815ec Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Fri, 3 Apr 2026 13:18:35 +0530 Subject: [PATCH] Added Saftey Inputs back --- clientlibs/main.js | 4 +- clientlibs/utils.js | 66 +++++++++++++++++++ modules/safetyInputs.py | 34 ++++++++-- modules/settings.py | 4 +- modules/upscaler.py | 8 +++ ...Runware_Basic_Image_Upscaling_P_image.json | 2 +- 6 files changed, 107 insertions(+), 11 deletions(-) diff --git a/clientlibs/main.js b/clientlibs/main.js index f29bca5..1aa4c22 100644 --- a/clientlibs/main.js +++ b/clientlibs/main.js @@ -1,6 +1,6 @@ import { app } from "../../scripts/app.js"; import { api } from "../../scripts/api.js"; -import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, saveTextHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, textModelSearchFilterHandler, vectorizeModelSearchFilterHandler, vectorizeToggleHandler, useParameterToggleHandler, imageInferenceToggleHandler, imageInferenceAdvancedFeaturesToggleHandler, watermarkAdvancedFeatureToggleHandler, videoInferenceSpeechInputToggleHandler, regionalPromptingRegionsToggleHandler, upscalerToggleHandler, imageUpscalerSettingsToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, audioInferenceSpeechToggleHandler, audioSettingsToggleHandler, textInferenceSettingsToggleHandler, videoSettingsToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, threeDInferenceToggleHandler, threeDInferenceSettingsToggleHandler, threeDInferenceSettingsLatToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, imageInferenceSettingsColorPaletteToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler } from "./utils.js"; +import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, saveTextHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, textModelSearchFilterHandler, vectorizeModelSearchFilterHandler, vectorizeToggleHandler, useParameterToggleHandler, imageInferenceToggleHandler, imageInferenceAdvancedFeaturesToggleHandler, watermarkAdvancedFeatureToggleHandler, videoInferenceSpeechInputToggleHandler, regionalPromptingRegionsToggleHandler, upscalerToggleHandler, imageUpscalerSettingsToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, audioInferenceSpeechToggleHandler, audioSettingsToggleHandler, textInferenceSettingsToggleHandler, videoSettingsToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, threeDInferenceToggleHandler, threeDInferenceSettingsToggleHandler, threeDInferenceSettingsLatToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, safetyInputsToggleHandler, imageInferenceSettingsColorPaletteToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler } from "./utils.js"; import { RUNWARE_NODE_TYPES, RUNWARE_NODE_PROPS, SEARCH_TERMS } from "./types.js"; const nodeInitList = []; @@ -135,6 +135,8 @@ app.registerExtension({ sourcefulProviderSettingsFontsToggleHandler(node); } else if(nodeClass === RUNWARE_NODE_TYPES.SETTINGS) { settingsToggleHandler(node); + } else if(nodeClass === RUNWARE_NODE_TYPES.SAFETYINPUTS) { + safetyInputsToggleHandler(node); } else if(nodeClass === RUNWARE_NODE_TYPES.IMAGEINFERENCESETTINGSCOLORPALETTE) { imageInferenceSettingsColorPaletteToggleHandler(node); } else if(nodeClass === RUNWARE_NODE_TYPES.AUDIOINPUT) { diff --git a/clientlibs/utils.js b/clientlibs/utils.js index 8f59849..8bdeb18 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -4486,6 +4486,7 @@ export { syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, + safetyInputsToggleHandler, imageInferenceSettingsColorPaletteToggleHandler, audioInputToggleHandler, speechInputToggleHandler, @@ -4661,6 +4662,71 @@ function settingsToggleHandler(settingsNode) { } } +function safetyInputsToggleHandler(safetyNode) { + const useModeWidget = safetyNode.widgets.find(w => w.name === "useMode"); + const modeWidget = safetyNode.widgets.find(w => w.name === "mode"); + const useToleranceWidget = safetyNode.widgets.find(w => w.name === "useTolerance"); + const toleranceWidget = safetyNode.widgets.find(w => w.name === "tolerance"); + const useCheckInputsWidget = safetyNode.widgets.find(w => w.name === "useCheckInputs"); + const checkInputsWidget = safetyNode.widgets.find(w => w.name === "checkInputs"); + const useCheckContentWidget = safetyNode.widgets.find(w => w.name === "useCheckContent"); + const checkContentWidget = safetyNode.widgets.find(w => w.name === "checkContent"); + + function toggleWidgetState(useWidget, paramWidget, paramName) { + if (!useWidget || !paramWidget) return; + + function toggleEnabled() { + const enabled = useWidget.value === true; + + if (paramWidget.inputEl) { + paramWidget.inputEl.disabled = !enabled; + paramWidget.inputEl.style.opacity = enabled ? "1" : "0.5"; + paramWidget.inputEl.style.cursor = enabled ? "text" : "not-allowed"; + paramWidget.inputEl.readOnly = !enabled; + } + + paramWidget.disabled = !enabled; + + if (!paramWidget.inputEl) { + const nodeElement = safetyNode.htmlElements?.widgetsContainer || safetyNode.htmlElements; + if (nodeElement) { + const input = nodeElement.querySelector(`input[name="${paramName}"], textarea[name="${paramName}"], select[name="${paramName}"]`); + if (input) { + input.disabled = !enabled; + input.style.opacity = enabled ? "1" : "0.5"; + input.style.cursor = enabled ? "text" : "not-allowed"; + input.readOnly = !enabled; + if (input.tagName === "SELECT") { + input.style.pointerEvents = enabled ? "auto" : "none"; + } + } + } + } + + safetyNode.setDirtyCanvas(true); + } + + appendWidgetCB(useWidget, () => { + setTimeout(toggleEnabled, 50); + }); + + setTimeout(toggleEnabled, 100); + } + + if (useModeWidget && modeWidget) { + toggleWidgetState(useModeWidget, modeWidget, "mode"); + } + if (useToleranceWidget && toleranceWidget) { + toggleWidgetState(useToleranceWidget, toleranceWidget, "tolerance"); + } + if (useCheckInputsWidget && checkInputsWidget) { + toggleWidgetState(useCheckInputsWidget, checkInputsWidget, "checkInputs"); + } + if (useCheckContentWidget && checkContentWidget) { + toggleWidgetState(useCheckContentWidget, checkContentWidget, "checkContent"); + } +} + function imageInferenceSettingsColorPaletteToggleHandler(paletteNode) { function applyParamState(useWidget, paramWidget, paramName) { if (!useWidget || !paramWidget) return; diff --git a/modules/safetyInputs.py b/modules/safetyInputs.py index fb2b303..5e9c54a 100644 --- a/modules/safetyInputs.py +++ b/modules/safetyInputs.py @@ -9,25 +9,41 @@ class safetyInputs: return { "required": {}, "optional": { + "useMode": ("BOOLEAN", { + "tooltip": "Enable to include mode in payload.", + "default": False, + }), "mode": (["none", "fast", "full"], { "tooltip": "Safety moderation mode: none (disable), fast (quick check), or full (comprehensive check).", "default": "none", }), + "useTolerance": ("BOOLEAN", { + "tooltip": "Enable to include tolerance in payload.", + "default": False, + }), "tolerance": ("BOOLEAN", { "tooltip": "Safety tolerance setting for content moderation.", - "default": None, + "default": False, "label_on": "Enabled", "label_off": "Disabled", }), + "useCheckInputs": ("BOOLEAN", { + "tooltip": "Enable to include checkInputs in payload.", + "default": False, + }), "checkInputs": ("BOOLEAN", { "tooltip": "Enable checking of input content for safety violations.", - "default": None, + "default": False, "label_on": "Enabled", "label_off": "Disabled", }), + "useCheckContent": ("BOOLEAN", { + "tooltip": "Enable to include checkContent in payload.", + "default": False, + }), "checkContent": ("BOOLEAN", { "tooltip": "Enable checking of generated content for safety violations.", - "default": None, + "default": False, "label_on": "Enabled", "label_off": "Disabled", }), @@ -42,20 +58,24 @@ class safetyInputs: def createSafetyInputs(self, **kwargs) -> tuple[Dict[str, Any]]: """Create safety inputs dictionary""" + useMode = kwargs.get("useMode", False) mode = kwargs.get("mode", None) + useTolerance = kwargs.get("useTolerance", False) tolerance = kwargs.get("tolerance", None) + useCheckInputs = kwargs.get("useCheckInputs", False) checkInputs = kwargs.get("checkInputs", None) + useCheckContent = kwargs.get("useCheckContent", False) checkContent = kwargs.get("checkContent", None) safetyInputs = {} - if mode is not None: + if useMode and mode is not None: safetyInputs["mode"] = mode - if tolerance is not None: + if useTolerance and tolerance is not None: safetyInputs["tolerance"] = tolerance - if checkInputs is not None: + if useCheckInputs and checkInputs is not None: safetyInputs["checkInputs"] = checkInputs - if checkContent is not None: + if useCheckContent and checkContent is not None: safetyInputs["checkContent"] = checkContent return (safetyInputs,) diff --git a/modules/settings.py b/modules/settings.py index 9b2a866..e086aab 100644 --- a/modules/settings.py +++ b/modules/settings.py @@ -139,8 +139,8 @@ class RunwareSettings: useLayers = kwargs.get("useLayers", False) useTrueCFGScale = kwargs.get("useTrueCFGScale", False) useQuality = kwargs.get("useQuality", False) - usePromptExtend = kwargs.get("usePromptExtend", True) - promptExtend = kwargs.get("promptExtend", True) + usePromptExtend = kwargs.get("usePromptExtend", False) + promptExtend = kwargs.get("promptExtend", False) useEditRegions = kwargs.get("useEditRegions", False) useThinking = kwargs.get("useThinking", False) useSequential = kwargs.get("useSequential", False) diff --git a/modules/upscaler.py b/modules/upscaler.py index ee58f98..c288b5d 100644 --- a/modules/upscaler.py +++ b/modules/upscaler.py @@ -132,6 +132,9 @@ class upscaler: "min": 0, "max": 2, }), + "safetyInputs": ("RUNWARESAFETYINPUTS", { + "tooltip": "Deprecated compatibility socket. Accepted for old workflows but ignored by this node.", + }), "Accelerator": ("RUNWAREACCELERATOR", { "tooltip": "Connect a Runware Accelerator Options Node to configure caching and acceleration settings.", }), @@ -176,6 +179,7 @@ class upscaler: colorFix = kwargs.get("colorFix", False) tileDiffusion = kwargs.get("tileDiffusion", False) clipSkip = kwargs.get("clipSkip", 0) + safetyInputs = kwargs.get("safetyInputs", None) runwareAccelerator = kwargs.get("Accelerator", None) providerSettings = kwargs.get("providerSettings", None) imageUpscalerSettingsBundle = kwargs.get("imageUpscalerSettings", None) @@ -243,6 +247,10 @@ class upscaler: # Add settings to config if any settings were specified if settings: genConfig["settings"] = settings + + # Add safety inputs if provided + if safetyInputs is not None and isinstance(safetyInputs, dict) and len(safetyInputs) > 0: + genConfig["safety"] = safetyInputs # Add accelerator options if provided if runwareAccelerator is not None and isinstance(runwareAccelerator, dict) and len(runwareAccelerator) > 0: diff --git a/workflows/Runware_Basic_Image_Upscaling_P_image.json b/workflows/Runware_Basic_Image_Upscaling_P_image.json index 77febf6..9cb9e74 100644 --- a/workflows/Runware_Basic_Image_Upscaling_P_image.json +++ b/workflows/Runware_Basic_Image_Upscaling_P_image.json @@ -1 +1 @@ -{"id":"99bb8e7d-3e8e-42a4-90cc-c383ca9ecc3b","revision":0,"last_node_id":16,"last_link_id":21,"nodes":[{"id":16,"type":"Runware Image Upscaler Settings","pos":[-632.2396240234375,165.25344848632812],"size":[312.3335876464844,130],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"useEnhanceDetails","name":"useEnhanceDetails","shape":7,"type":"BOOLEAN","widget":{"name":"useEnhanceDetails"},"link":null},{"localized_name":"enhanceDetails","name":"enhanceDetails","shape":7,"type":"BOOLEAN","widget":{"name":"enhanceDetails"},"link":null},{"localized_name":"useRealism","name":"useRealism","shape":7,"type":"BOOLEAN","widget":{"name":"useRealism"},"link":null},{"localized_name":"realism","name":"realism","shape":7,"type":"BOOLEAN","widget":{"name":"realism"},"link":null}],"outputs":[{"localized_name":"Upscaler Settings","name":"Upscaler Settings","type":"RUNWAREIMAGEUPSCALERSETTINGS","links":[20]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"d71fdad61b55ce88c15d1259ecd9407d99040f6d","Node name for S&R":"Runware Image Upscaler Settings"},"widgets_values":[true,false,true,true],"bgcolor":"#5345bf"},{"id":15,"type":"Runware Image Upscaler","pos":[-153.0272216796875,-287.3848876953125],"size":[400,730],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","type":"IMAGE","link":19},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"imageUpscalerSettings","name":"imageUpscalerSettings","shape":7,"type":"RUNWAREIMAGEUPSCALERSETTINGS","link":20},{"localized_name":"useUpscaleFactor","name":"useUpscaleFactor","type":"BOOLEAN","widget":{"name":"useUpscaleFactor"},"link":null},{"localized_name":"upscaleFactor","name":"upscaleFactor","type":"INT","widget":{"name":"upscaleFactor"},"link":null},{"localized_name":"useTargetMegapixels","name":"useTargetMegapixels","type":"BOOLEAN","widget":{"name":"useTargetMegapixels"},"link":null},{"localized_name":"targetMegapixels","name":"targetMegapixels","type":"INT","widget":{"name":"targetMegapixels"},"link":null},{"localized_name":"model","name":"model","shape":7,"type":"STRING","widget":{"name":"model"},"link":null},{"localized_name":"useSteps","name":"useSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","shape":7,"type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useSeed","name":"useSeed","shape":7,"type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","shape":7,"type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useCFGScale","name":"useCFGScale","shape":7,"type":"BOOLEAN","widget":{"name":"useCFGScale"},"link":null},{"localized_name":"CFGScale","name":"CFGScale","shape":7,"type":"FLOAT","widget":{"name":"CFGScale"},"link":null},{"localized_name":"usePrompts","name":"usePrompts","shape":7,"type":"BOOLEAN","widget":{"name":"usePrompts"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"useClarityParams","name":"useClarityParams","shape":7,"type":"BOOLEAN","widget":{"name":"useClarityParams"},"link":null},{"localized_name":"controlNetWeight","name":"controlNetWeight","shape":7,"type":"FLOAT","widget":{"name":"controlNetWeight"},"link":null},{"localized_name":"strength","name":"strength","shape":7,"type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"scheduler","name":"scheduler","shape":7,"type":"STRING","widget":{"name":"scheduler"},"link":null},{"localized_name":"useCCSRParams","name":"useCCSRParams","shape":7,"type":"BOOLEAN","widget":{"name":"useCCSRParams"},"link":null},{"localized_name":"colorFix","name":"colorFix","shape":7,"type":"BOOLEAN","widget":{"name":"colorFix"},"link":null},{"localized_name":"tileDiffusion","name":"tileDiffusion","shape":7,"type":"BOOLEAN","widget":{"name":"tileDiffusion"},"link":null},{"localized_name":"useLatentParams","name":"useLatentParams","shape":7,"type":"BOOLEAN","widget":{"name":"useLatentParams"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","shape":7,"type":"INT","widget":{"name":"clipSkip"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"STRING","links":[21]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"d71fdad61b55ce88c15d1259ecd9407d99040f6d","Node name for S&R":"Runware Image Upscaler"},"widgets_values":[false,2,true,4,"prunaai:p-image@upscale",false,20,false,625,"randomize",false,7,false,"","",false,0.5,0.5,"DPM++ 2M Karras",false,false,false,false,0],"bgcolor":"#5345bf"},{"id":5,"type":"LoadImage","pos":[-657.9480590820312,-359.2391052246094],"size":[320.84613037109375,411.43585205078125],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[19]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["991178bc-54b4-42e2-8b54-ed14d89a2f8e.jpg","image"]},{"id":12,"type":"Runware Save Image","pos":[451.3610534667969,-266.9140319824219],"size":[494.4888916015625,625.6743774414062],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Images","name":"Images","type":"STRING","widget":{"name":"Images"},"link":21},{"localized_name":"filenamePrefix","name":"filenamePrefix","type":"STRING","widget":{"name":"filenamePrefix"},"link":null},{"localized_name":"saveImage","name":"saveImage","type":"BOOLEAN","widget":{"name":"saveImage"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"91646ada844167e36188b535ff60063735d10ca3","Node name for S&R":"Runware Save Image"},"widgets_values":["","ComfyUI",true],"bgcolor":"#5345bf"}],"links":[[19,5,0,15,0,"IMAGE"],[20,16,0,15,3,"RUNWAREIMAGEUPSCALERSETTINGS"],[21,15,0,12,0,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6936329553748826,"offset":[1166.4442641469568,491.38887719446996]}},"version":0.4} \ No newline at end of file +{"id":"99bb8e7d-3e8e-42a4-90cc-c383ca9ecc3b","revision":0,"last_node_id":17,"last_link_id":22,"nodes":[{"id":16,"type":"Runware Image Upscaler Settings","pos":[-632.2396240234375,165.25344848632812],"size":[312.3335876464844,130],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"useEnhanceDetails","name":"useEnhanceDetails","shape":7,"type":"BOOLEAN","widget":{"name":"useEnhanceDetails"},"link":null},{"localized_name":"enhanceDetails","name":"enhanceDetails","shape":7,"type":"BOOLEAN","widget":{"name":"enhanceDetails"},"link":null},{"localized_name":"useRealism","name":"useRealism","shape":7,"type":"BOOLEAN","widget":{"name":"useRealism"},"link":null},{"localized_name":"realism","name":"realism","shape":7,"type":"BOOLEAN","widget":{"name":"realism"},"link":null}],"outputs":[{"localized_name":"Upscaler Settings","name":"Upscaler Settings","type":"RUNWAREIMAGEUPSCALERSETTINGS","links":[20]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"d71fdad61b55ce88c15d1259ecd9407d99040f6d","Node name for S&R":"Runware Image Upscaler Settings"},"widgets_values":[true,false,true,true],"bgcolor":"#5345bf"},{"id":15,"type":"Runware Image Upscaler","pos":[-153.0272216796875,-287.3848876953125],"size":[400,750],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","type":"IMAGE","link":19},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":22},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"imageUpscalerSettings","name":"imageUpscalerSettings","shape":7,"type":"RUNWAREIMAGEUPSCALERSETTINGS","link":20},{"localized_name":"useUpscaleFactor","name":"useUpscaleFactor","type":"BOOLEAN","widget":{"name":"useUpscaleFactor"},"link":null},{"localized_name":"upscaleFactor","name":"upscaleFactor","type":"INT","widget":{"name":"upscaleFactor"},"link":null},{"localized_name":"useTargetMegapixels","name":"useTargetMegapixels","type":"BOOLEAN","widget":{"name":"useTargetMegapixels"},"link":null},{"localized_name":"targetMegapixels","name":"targetMegapixels","type":"INT","widget":{"name":"targetMegapixels"},"link":null},{"localized_name":"model","name":"model","shape":7,"type":"STRING","widget":{"name":"model"},"link":null},{"localized_name":"useSteps","name":"useSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","shape":7,"type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useSeed","name":"useSeed","shape":7,"type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","shape":7,"type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useCFGScale","name":"useCFGScale","shape":7,"type":"BOOLEAN","widget":{"name":"useCFGScale"},"link":null},{"localized_name":"CFGScale","name":"CFGScale","shape":7,"type":"FLOAT","widget":{"name":"CFGScale"},"link":null},{"localized_name":"usePrompts","name":"usePrompts","shape":7,"type":"BOOLEAN","widget":{"name":"usePrompts"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"useClarityParams","name":"useClarityParams","shape":7,"type":"BOOLEAN","widget":{"name":"useClarityParams"},"link":null},{"localized_name":"controlNetWeight","name":"controlNetWeight","shape":7,"type":"FLOAT","widget":{"name":"controlNetWeight"},"link":null},{"localized_name":"strength","name":"strength","shape":7,"type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"scheduler","name":"scheduler","shape":7,"type":"STRING","widget":{"name":"scheduler"},"link":null},{"localized_name":"useCCSRParams","name":"useCCSRParams","shape":7,"type":"BOOLEAN","widget":{"name":"useCCSRParams"},"link":null},{"localized_name":"colorFix","name":"colorFix","shape":7,"type":"BOOLEAN","widget":{"name":"colorFix"},"link":null},{"localized_name":"tileDiffusion","name":"tileDiffusion","shape":7,"type":"BOOLEAN","widget":{"name":"tileDiffusion"},"link":null},{"localized_name":"useLatentParams","name":"useLatentParams","shape":7,"type":"BOOLEAN","widget":{"name":"useLatentParams"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","shape":7,"type":"INT","widget":{"name":"clipSkip"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"STRING","links":[21]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"d71fdad61b55ce88c15d1259ecd9407d99040f6d","Node name for S&R":"Runware Image Upscaler"},"widgets_values":[false,2,true,4,"prunaai:p-image@upscale",false,20,false,1330,"randomize",false,7,false,"","",false,0.5,0.5,"DPM++ 2M Karras",false,false,false,false,0],"bgcolor":"#5345bf"},{"id":5,"type":"LoadImage","pos":[-657.9480590820312,-359.2391052246094],"size":[320.84613037109375,411.43585205078125],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[19]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["991178bc-54b4-42e2-8b54-ed14d89a2f8e.jpg","image"]},{"id":12,"type":"Runware Save Image","pos":[451.3610534667969,-266.9140319824219],"size":[494.4888916015625,625.6743774414062],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"Images","name":"Images","type":"STRING","widget":{"name":"Images"},"link":21},{"localized_name":"filenamePrefix","name":"filenamePrefix","type":"STRING","widget":{"name":"filenamePrefix"},"link":null},{"localized_name":"saveImage","name":"saveImage","type":"BOOLEAN","widget":{"name":"saveImage"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"91646ada844167e36188b535ff60063735d10ca3","Node name for S&R":"Runware Save Image"},"widgets_values":["","ComfyUI",true],"bgcolor":"#5345bf"},{"id":17,"type":"Runware Safety Inputs","pos":[-589.0030517578125,376.23358154296875],"size":[270,226],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"useMode","name":"useMode","shape":7,"type":"BOOLEAN","widget":{"name":"useMode"},"link":null},{"localized_name":"mode","name":"mode","shape":7,"type":"COMBO","widget":{"name":"mode"},"link":null},{"localized_name":"useTolerance","name":"useTolerance","shape":7,"type":"BOOLEAN","widget":{"name":"useTolerance"},"link":null},{"localized_name":"tolerance","name":"tolerance","shape":7,"type":"BOOLEAN","widget":{"name":"tolerance"},"link":null},{"localized_name":"useCheckInputs","name":"useCheckInputs","shape":7,"type":"BOOLEAN","widget":{"name":"useCheckInputs"},"link":null},{"localized_name":"checkInputs","name":"checkInputs","shape":7,"type":"BOOLEAN","widget":{"name":"checkInputs"},"link":null},{"localized_name":"useCheckContent","name":"useCheckContent","shape":7,"type":"BOOLEAN","widget":{"name":"useCheckContent"},"link":null},{"localized_name":"checkContent","name":"checkContent","shape":7,"type":"BOOLEAN","widget":{"name":"checkContent"},"link":null}],"outputs":[{"localized_name":"Safety Inputs","name":"Safety Inputs","type":"RUNWARESAFETYINPUTS","links":[22]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"2ab6eccb4e5882be84b84130d5f70ffedf7ff0c0","Node name for S&R":"Runware Safety Inputs"},"widgets_values":[false,"none",false,true,false,false,true,true],"bgcolor":"#5345bf"}],"links":[[19,5,0,15,0,"IMAGE"],[20,16,0,15,4,"RUNWAREIMAGEUPSCALERSETTINGS"],[21,15,0,12,0,"STRING"],[22,17,0,15,1,"RUNWARESAFETYINPUTS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6936329553748826,"offset":[1166.2260403928415,491.38887719446996]}},"version":0.4} \ No newline at end of file