Added Saftey Inputs back

This commit is contained in:
Sirshendu Ganguly
2026-04-03 13:18:35 +05:30
parent 2ab6eccb4e
commit f5a07fe7a9
6 changed files with 107 additions and 11 deletions
+3 -1
View File
@@ -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) {
+66
View File
@@ -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;
+27 -7
View File
@@ -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,)
+2 -2
View File
@@ -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)
+8
View File
@@ -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:
File diff suppressed because one or more lines are too long