| from .nodes.nodes import ( |
| BOOLConstant, INTConstant, FloatConstant, StringConstant, StringConstantMultiline, |
| ScaleBatchPromptSchedule, GetLatentsFromBatchIndexed, ConditioningMultiCombine, |
| AppendStringsToList, JoinStrings, JoinStringMulti, CondPassThrough, ModelPassThrough, |
| ConditioningSetMaskAndCombine, ConditioningSetMaskAndCombine3, |
| ConditioningSetMaskAndCombine4, ConditioningSetMaskAndCombine5, |
| VRAM_Debug, SomethingToString, Sleep, EmptyLatentImagePresets, |
| EmptyLatentImageCustomPresets, WidgetToString, DummyOut, FlipSigmasAdjusted, |
| CustomSigmas, StringToFloatList, InjectNoiseToLatent, SoundReactive, GenerateNoise, |
| StableZero123_BatchSchedule, SV3D_BatchSchedule, Superprompt, CameraPoseVisualizer, |
| CheckpointPerturbWeights, DifferentialDiffusionAdvanced, FluxBlockLoraSelect, |
| HunyuanVideoBlockLoraSelect, Wan21BlockLoraSelect, LTX2BlockLoraSelect, |
| DiTBlockLoraLoader, CustomControlNetWeightsFluxFromList, |
| SetShakkerLabsUnionControlNetType, ModelSaveKJ, StyleModelApplyAdvanced, |
| AudioConcatenate, LeapfusionHunyuanI2V, ImageNoiseAugmentation, VAELoaderKJ, VAEMergeKJ, |
| ScheduledCFGGuidance, ApplyRifleXRoPE_WanVideo, ApplyRifleXRoPE_HunuyanVideo, |
| TimerNodeKJ, HunyuanVideoEncodeKeyframesToCond, LazySwitchKJ, LatentInpaintTTM, |
| SimpleCalculatorKJ, GetTrackRange, AddNoiseToTrackPath, VAEDecodeLoopKJ, |
| WanImageToVideoSVIPro, DeprecatedCompileNodeKJ, VisualizeSigmasKJ, |
| PreviewLatentNoiseMask, PlaySoundKJ, |
| ) |
| from .nodes.curve_nodes import ( |
| PlotCoordinates, SplineEditor, CreateShapeMaskOnPath, CreateShapeImageOnPath, |
| CreateTextOnPath, CreateGradientFromCoords, GradientToFloat, MaskOrImageToWeight, |
| WeightScheduleConvert, FloatToMask, WeightScheduleExtend, FloatToSigmas, SigmasToFloat, |
| GLIGENTextBoxApplyBatchCoords, CreateInstanceDiffusionTracking, |
| AppendInstanceDiffusionTracking, InterpolateCoords, DrawInstanceDiffusionTracking, |
| PointsEditor, CutAndDragOnPath, |
| ) |
| from .nodes.batchcrop_nodes import ( |
| BatchCropFromMask, BatchUncrop, BatchCropFromMaskAdvanced, |
| FilterZeroMasksAndCorrespondingImages, InsertImageBatchByIndexes, BatchUncropAdvanced, |
| SplitBboxes, BboxToInt, BboxVisualize, |
| ) |
| from .nodes.audioscheduler_nodes import ( |
| NormalizedAmplitudeToMask, NormalizedAmplitudeToFloatList, |
| OffsetMaskByNormalizedAmplitude, ImageTransformByNormalizedAmplitude, |
| ) |
| from .nodes.image_nodes import ( |
| ImagePass, ColorMatch, ColorMatchV2, SaveImageWithAlpha, ImageConcanate, |
| ImageConcatFromBatch, ImageGridComposite2x2, ImageGridComposite3x3, |
| ImageBatchTestPattern, ImageGrabPIL, Screencap_mss, ScreencapStream, WebcamCaptureCV2, |
| AddLabel, GetImageSizeAndCount, GetLatentSizeAndCount, ImageBatchRepeatInterleaving, |
| ImageUpscaleWithModelBatched, ImageNormalize_Neg1_To_1, RemapImageRange, |
| SplitImageChannels, MergeImageChannels, ImagePadForOutpaintMasked, |
| ImagePadForOutpaintTargetSize, ImagePrepForICLora, ImageAndMaskPreview, |
| CrossFadeImages, CrossFadeImagesMulti, TransitionImagesMulti, TransitionImagesInBatch, |
| ImageBatchJoinWithTransition, ShuffleImageBatch, GetImageRangeFromBatch, |
| RandomImageFromBatch, ImageBatchExtendWithOverlap, GetLatentRangeFromBatch, |
| InsertLatentToIndex, ImageBatchFilter, GetImagesFromBatchIndexed, |
| InsertImagesToBatchIndexed, PadImageBatchInterleaved, ReplaceImagesInBatch, |
| ReverseImageBatch, ImageBatchMulti, ImageTensorList, ImageAddMulti, ImageConcatMulti, |
| PreviewAnimation, ImageResizeKJ, ImageResizeKJv2, LoadAndResizeImage, |
| LoadImagesFromFolderKJ, ImageGridtoBatch, SaveImageKJ, SaveStringKJ, FastPreview, |
| FastPreviewBatch, ImageCropByMaskAndResize, ImageCropByMask, ImageUncropByMask, |
| ImageCropByMaskBatch, ImagePadKJ, LoadVideosFromFolder, EncodeVideoComponents, |
| DecodeAndSaveVideo, PreviewImageOrMask, |
| ) |
|
|
| from .nodes.mask_nodes import ( |
| BatchCLIPSeg, DownloadAndLoadCLIPSeg, CreateTextMask, ColorToMask, CreateFluidMask, |
| CreateAudioMask, CreateGradientMask, CreateFadeMask, CreateFadeMaskAdvanced, |
| CreateMagicMask, CreateShapeMask, CreateVoronoiMask, GetMaskSizeAndCount, |
| GrowMaskWithBlur, MaskBatchMulti, OffsetMask, RoundMask, ResizeMask, RemapMaskRange, |
| SeparateMasks, ConsolidateMasksKJ, DrawMaskOnImage, BlockifyMask, |
| ) |
| from .nodes.model_optimization_nodes import ( |
| PathchSageAttentionKJ, PatchFlashAttentionKJ, CheckpointLoaderKJ, DiffusionModelSelector, |
| DiffusionModelLoaderKJ, ModelPatchTorchSettings, PatchModelPatcherOrder, |
| TorchCompileModelFluxAdvancedV2, TorchCompileModelWanVideoV2, |
| TorchCompileModelAdvanced, TorchCompileVAE, TorchCompileControlNet, |
| WanVideoTeaCacheKJ, WanVideoEnhanceAVideoKJ, LTXVEnhanceAVideoKJ, WanVideoNAG, Krea2PromptWeight, |
| SkipLayerGuidanceWanVideo, CFGZeroStarAndInit, GGUFLoaderKJ, NABLA_AttentionKJ, |
| StartRecordCUDAMemoryHistory, EndRecordCUDAMemoryHistory, VisualizeCUDAMemoryHistory, |
| ModelMemoryUseReportPatch, ModelMemoryUsageFactorOverride, WanChunkFeedForward, |
| SamplerSelfRefineVideo, PiDColorBiasCorrection, Ideogram4OptimizationsKJ, |
| ) |
| from .nodes.lora_nodes import LoraExtractKJ, LoraReduceRank |
| from .nodes.image_transform_node import ImageTransformKJ, BBOXToBoundingBoxKJ |
| from .nodes.sharpen_nodes import ImageSharpenKJ |
| from .nodes.hdr_preview_node import HDRPreviewKJ |
| from .nodes.preview_override_node import ModelPreviewOverrideKJ, GetPreviewOverrideFramesKJ |
| from .nodes.context_windows_visualizer import ContextWindowsVisualizerKJ |
| from .nodes.ideogram4_nodes import Ideogram4PromptBuilderKJ |
|
|
| import logging |
|
|
| NODE_CONFIG = { |
| |
| "BOOLConstant": {"class": BOOLConstant, "name": "BOOL Constant"}, |
| "INTConstant": {"class": INTConstant, "name": "INT Constant"}, |
| "FloatConstant": {"class": FloatConstant, "name": "Float Constant"}, |
| "StringConstant": {"class": StringConstant, "name": "String Constant"}, |
| "StringConstantMultiline": {"class": StringConstantMultiline, "name": "String Constant Multiline"}, |
| |
| "ConditioningMultiCombine": {"class": ConditioningMultiCombine, "name": "Conditioning Multi Combine"}, |
| "ConditioningSetMaskAndCombine": {"class": ConditioningSetMaskAndCombine, "name": "ConditioningSetMaskAndCombine"}, |
| "ConditioningSetMaskAndCombine3": {"class": ConditioningSetMaskAndCombine3, "name": "ConditioningSetMaskAndCombine3"}, |
| "ConditioningSetMaskAndCombine4": {"class": ConditioningSetMaskAndCombine4, "name": "ConditioningSetMaskAndCombine4"}, |
| "ConditioningSetMaskAndCombine5": {"class": ConditioningSetMaskAndCombine5, "name": "ConditioningSetMaskAndCombine5"}, |
| "CondPassThrough": {"class": CondPassThrough}, |
| "WanImageToVideoSVIPro": {"class": WanImageToVideoSVIPro, "name": "Wan Image To Video SVIPro"}, |
| |
| "DrawMaskOnImage": {"class": DrawMaskOnImage, "name": "Draw Mask On Image"}, |
| "DownloadAndLoadCLIPSeg": {"class": DownloadAndLoadCLIPSeg, "name": "(Down)load CLIPSeg"}, |
| "BatchCLIPSeg": {"class": BatchCLIPSeg, "name": "Batch CLIPSeg"}, |
| "BlockifyMask": {"class": BlockifyMask, "name": "Blockify Mask"}, |
| "ColorToMask": {"class": ColorToMask, "name": "Color To Mask"}, |
| "CreateGradientMask": {"class": CreateGradientMask, "name": "Create Gradient Mask"}, |
| "CreateTextMask": {"class": CreateTextMask, "name": "Create Text Mask"}, |
| "CreateAudioMask": {"class": CreateAudioMask, "name": "Create Audio Mask"}, |
| "CreateFadeMask": {"class": CreateFadeMask, "name": "Create Fade Mask"}, |
| "CreateFadeMaskAdvanced": {"class": CreateFadeMaskAdvanced, "name": "Create Fade Mask Advanced"}, |
| "CreateFluidMask": {"class": CreateFluidMask, "name": "Create Fluid Mask"}, |
| "CreateShapeMask": {"class": CreateShapeMask, "name": "Create Shape Mask"}, |
| "CreateVoronoiMask": {"class": CreateVoronoiMask, "name": "Create Voronoi Mask"}, |
| "CreateMagicMask": {"class": CreateMagicMask, "name": "Create Magic Mask"}, |
| "GetMaskSizeAndCount": {"class": GetMaskSizeAndCount, "name": "Get Mask Size & Count"}, |
| "GrowMaskWithBlur": {"class": GrowMaskWithBlur, "name": "Grow Mask With Blur"}, |
| "MaskBatchMulti": {"class": MaskBatchMulti, "name": "Mask Batch Multi"}, |
| "OffsetMask": {"class": OffsetMask, "name": "Offset Mask"}, |
| "RemapMaskRange": {"class": RemapMaskRange, "name": "Remap Mask Range"}, |
| "ResizeMask": {"class": ResizeMask, "name": "Resize Mask"}, |
| "RoundMask": {"class": RoundMask, "name": "Round Mask"}, |
| "SeparateMasks": {"class": SeparateMasks, "name": "Separate Masks"}, |
| "ConsolidateMasksKJ": {"class": ConsolidateMasksKJ, "name": "Consolidate Masks"}, |
| |
| "AddLabel": {"class": AddLabel, "name": "Add Label"}, |
| "ColorMatch": {"class": ColorMatch, "name": "Color Match"}, |
| "ColorMatchV2": {"class": ColorMatchV2, "name": "Color Match V2"}, |
| "ImageTensorList": {"class": ImageTensorList, "name": "Image Tensor List"}, |
| "CrossFadeImages": {"class": CrossFadeImages, "name": "Cross Fade Images"}, |
| "CrossFadeImagesMulti": {"class": CrossFadeImagesMulti, "name": "Cross Fade Images Multi"}, |
| "GetImagesFromBatchIndexed": {"class": GetImagesFromBatchIndexed, "name": "Get Images From Batch Indexed"}, |
| "GetImageRangeFromBatch": {"class": GetImageRangeFromBatch, "name": "Get Image or Mask Range From Batch"}, |
| "RandomImageFromBatch": {"class": RandomImageFromBatch, "name": "Random Image From Batch"}, |
| "GetLatentRangeFromBatch": {"class": GetLatentRangeFromBatch, "name": "Get Latent Range From Batch"}, |
| "GetLatentSizeAndCount": {"class": GetLatentSizeAndCount, "name": "Get Latent Size & Count"}, |
| "GetImageSizeAndCount": {"class": GetImageSizeAndCount, "name": "Get Image Size & Count"}, |
| "FastPreview": {"class": FastPreview, "name": "Fast Preview"}, |
| "FastPreviewBatch": {"class": FastPreviewBatch, "name": "Fast Preview Batch"}, |
| "ImageBatchFilter": {"class": ImageBatchFilter, "name": "Image Batch Filter"}, |
| "ImageAndMaskPreview": {"class": ImageAndMaskPreview}, |
| "ImageAddMulti": {"class": ImageAddMulti, "name": "Image Add Multi"}, |
| "ImageBatchJoinWithTransition": {"class": ImageBatchJoinWithTransition, "name": "Image Batch Join With Transition"}, |
| "ImageBatchMulti": {"class": ImageBatchMulti, "name": "Image Batch Multi"}, |
| "ImageBatchRepeatInterleaving": {"class": ImageBatchRepeatInterleaving}, |
| "ImageBatchTestPattern": {"class": ImageBatchTestPattern, "name": "Image Batch Test Pattern"}, |
| "ImageConcanate": {"class": ImageConcanate, "name": "Image Concatenate"}, |
| "ImageConcatFromBatch": {"class": ImageConcatFromBatch, "name": "Image Concatenate From Batch"}, |
| "ImageConcatMulti": {"class": ImageConcatMulti, "name": "Image Concatenate Multi"}, |
| "ImageCropByMask": {"class": ImageCropByMask, "name": "Image Crop By Mask"}, |
| "ImageCropByMaskAndResize": {"class": ImageCropByMaskAndResize, "name": "Image Crop By Mask And Resize"}, |
| "ImageCropByMaskBatch": {"class": ImageCropByMaskBatch, "name": "Image Crop By Mask Batch"}, |
| "ImageUncropByMask": {"class": ImageUncropByMask, "name": "Image Uncrop By Mask"}, |
| "ImageBatchExtendWithOverlap": {"class": ImageBatchExtendWithOverlap, "name": "Image Batch Extend With Overlap"}, |
| "ImageGrabPIL": {"class": ImageGrabPIL, "name": "Image Grab PIL"}, |
| "ImageGridComposite2x2": {"class": ImageGridComposite2x2, "name": "Image Grid Composite 2x2"}, |
| "ImageGridComposite3x3": {"class": ImageGridComposite3x3, "name": "Image Grid Composite 3x3"}, |
| "ImageGridtoBatch": {"class": ImageGridtoBatch, "name": "Image Grid To Batch"}, |
| "ImageNoiseAugmentation": {"class": ImageNoiseAugmentation, "name": "Image Noise Augmentation"}, |
| "ImageNormalize_Neg1_To_1": {"class": ImageNormalize_Neg1_To_1, "name": "Image Normalize -1 to 1"}, |
| "ImagePass": {"class": ImagePass}, |
| "ImagePadKJ": {"class": ImagePadKJ, "name": "ImagePad KJ"}, |
| "ImagePadForOutpaintMasked": {"class": ImagePadForOutpaintMasked, "name": "Image Pad For Outpaint Masked"}, |
| "ImagePadForOutpaintTargetSize": {"class": ImagePadForOutpaintTargetSize, "name": "Image Pad For Outpaint Target Size"}, |
| "ImagePrepForICLora": {"class": ImagePrepForICLora, "name": "Image Prep For ICLora"}, |
| "ImageResizeKJ": {"class": ImageResizeKJ, "name": "Resize Image (deprecated)"}, |
| "ImageResizeKJv2": {"class": ImageResizeKJv2, "name": "Resize Image v2"}, |
| "ImageUpscaleWithModelBatched": {"class": ImageUpscaleWithModelBatched, "name": "Image Upscale With Model Batched"}, |
| "InsertImagesToBatchIndexed": {"class": InsertImagesToBatchIndexed, "name": "Insert Images To Batch Indexed"}, |
| "InsertLatentToIndexed": {"class": InsertLatentToIndex, "name": "Insert Latent To Index"}, |
| "LoadAndResizeImage": {"class": LoadAndResizeImage, "name": "Load & Resize Image"}, |
| "LoadImagesFromFolderKJ": {"class": LoadImagesFromFolderKJ, "name": "Load Images From Folder (KJ)"}, |
| "LoadVideosFromFolder": {"class": LoadVideosFromFolder, "name": "Load Videos From Folder"}, |
| "MergeImageChannels": {"class": MergeImageChannels, "name": "Merge Image Channels"}, |
| "PadImageBatchInterleaved": {"class": PadImageBatchInterleaved, "name": "Pad Image Batch Interleaved"}, |
| "PreviewAnimation": {"class": PreviewAnimation, "name": "Preview Animation"}, |
| "RemapImageRange": {"class": RemapImageRange, "name": "Remap Image Range"}, |
| "ReverseImageBatch": {"class": ReverseImageBatch, "name": "Reverse Image Batch"}, |
| "ReplaceImagesInBatch": {"class": ReplaceImagesInBatch, "name": "Replace Images In Batch"}, |
| "SaveImageWithAlpha": {"class": SaveImageWithAlpha, "name": "Save Image With Alpha"}, |
| "SaveImageKJ": {"class": SaveImageKJ, "name": "Save Image KJ"}, |
| "ShuffleImageBatch": {"class": ShuffleImageBatch, "name": "Shuffle Image Batch"}, |
| "SplitImageChannels": {"class": SplitImageChannels, "name": "Split Image Channels"}, |
| "TransitionImagesMulti": {"class": TransitionImagesMulti, "name": "Transition Images Multi"}, |
| "TransitionImagesInBatch": {"class": TransitionImagesInBatch, "name": "Transition Images In Batch"}, |
| "EncodeVideoComponents": {"class": EncodeVideoComponents, "name": "Encode Video Components"}, |
| "DecodeAndSaveVideo": {"class": DecodeAndSaveVideo, "name": "Decode And Save Video"}, |
| "ImageTransformKJ": {"class": ImageTransformKJ, "name": "Image Transform KJ"}, |
| "BBOXToBoundingBoxKJ": {"class": BBOXToBoundingBoxKJ, "name": "BBOX to Bounding Box KJ"}, |
| "Ideogram4PromptBuilderKJ": {"class": Ideogram4PromptBuilderKJ, "name": "Ideogram 4 Prompt Builder KJ"}, |
| "HDRPreviewKJ": {"class": HDRPreviewKJ, "name": "HDR Preview KJ"}, |
| "ModelPreviewOverrideKJ": {"class": ModelPreviewOverrideKJ, "name": "Model Preview Override KJ"}, |
| "GetPreviewOverrideFramesKJ": {"class": GetPreviewOverrideFramesKJ, "name": "Get Preview Override Frames KJ"}, |
| "PreviewImageOrMask": {"class": PreviewImageOrMask, "name": "Preview Image Or Mask"}, |
| "ImageSharpenKJ": {"class": ImageSharpenKJ, "name": "Image Sharpen KJ"}, |
| |
| "BatchCropFromMask": {"class": BatchCropFromMask, "name": "Batch Crop From Mask"}, |
| "BatchCropFromMaskAdvanced": {"class": BatchCropFromMaskAdvanced, "name": "Batch Crop From Mask Advanced"}, |
| "FilterZeroMasksAndCorrespondingImages": {"class": FilterZeroMasksAndCorrespondingImages}, |
| "InsertImageBatchByIndexes": {"class": InsertImageBatchByIndexes, "name": "Insert Image Batch By Indexes"}, |
| "BatchUncrop": {"class": BatchUncrop, "name": "Batch Uncrop"}, |
| "BatchUncropAdvanced": {"class": BatchUncropAdvanced, "name": "Batch Uncrop Advanced"}, |
| "SplitBboxes": {"class": SplitBboxes, "name": "Split Bboxes"}, |
| "BboxToInt": {"class": BboxToInt, "name": "Bbox To Int"}, |
| "BboxVisualize": {"class": BboxVisualize, "name": "Bbox Visualize"}, |
| |
| "GenerateNoise": {"class": GenerateNoise, "name": "Generate Noise"}, |
| "FlipSigmasAdjusted": {"class": FlipSigmasAdjusted, "name": "Flip Sigmas Adjusted"}, |
| "InjectNoiseToLatent": {"class": InjectNoiseToLatent, "name": "Inject Noise To Latent"}, |
| "CustomSigmas": {"class": CustomSigmas, "name": "Custom Sigmas"}, |
| |
| "StringToFloatList": {"class": StringToFloatList, "name": "String to Float List"}, |
| "WidgetToString": {"class": WidgetToString, "name": "Widget To String"}, |
| "SaveStringKJ": {"class": SaveStringKJ, "name": "Save String KJ"}, |
| "DummyOut": {"class": DummyOut, "name": "Dummy Out"}, |
| "GetLatentsFromBatchIndexed": {"class": GetLatentsFromBatchIndexed, "name": "Get Latents From Batch Indexed"}, |
| "ScaleBatchPromptSchedule": {"class": ScaleBatchPromptSchedule, "name": "Scale Batch Prompt Schedule"}, |
| "CameraPoseVisualizer": {"class": CameraPoseVisualizer, "name": "Camera Pose Visualizer"}, |
| "AppendStringsToList": {"class": AppendStringsToList, "name": "Append Strings To List"}, |
| "JoinStrings": {"class": JoinStrings, "name": "Join Strings"}, |
| "JoinStringMulti": {"class": JoinStringMulti, "name": "Join String Multi"}, |
| "SimpleCalculatorKJ": {"class": SimpleCalculatorKJ, "name": "Simple Calculator KJ"}, |
| "SomethingToString": {"class": SomethingToString, "name": "Something To String"}, |
| "Sleep": {"class": Sleep, "name": "Sleep"}, |
| "VRAM_Debug": {"class": VRAM_Debug, "name": "VRAM Debug"}, |
| "EmptyLatentImagePresets": {"class": EmptyLatentImagePresets, "name": "Empty Latent Image Presets"}, |
| "EmptyLatentImageCustomPresets": {"class": EmptyLatentImageCustomPresets, "name": "Empty Latent Image Custom Presets"}, |
| "ModelPassThrough": {"class": ModelPassThrough, "name": "ModelPass"}, |
| "ModelSaveKJ": {"class": ModelSaveKJ, "name": "Model Save KJ"}, |
| "SetShakkerLabsUnionControlNetType": {"class": SetShakkerLabsUnionControlNetType, "name": "Set Shakker Labs Union ControlNet Type"}, |
| "StyleModelApplyAdvanced": {"class": StyleModelApplyAdvanced, "name": "Style Model Apply Advanced"}, |
| "DiffusionModelSelector": {"class": DiffusionModelSelector, "name": "Diffusion Model Selector"}, |
| "LazySwitchKJ": {"class": LazySwitchKJ, "name": "Lazy Switch KJ"}, |
| "VisualizeSigmasKJ": {"class": VisualizeSigmasKJ, "name": "Visualize Sigmas KJ"}, |
| |
| "NormalizedAmplitudeToMask": {"class": NormalizedAmplitudeToMask}, |
| "NormalizedAmplitudeToFloatList": {"class": NormalizedAmplitudeToFloatList}, |
| "OffsetMaskByNormalizedAmplitude": {"class": OffsetMaskByNormalizedAmplitude}, |
| "ImageTransformByNormalizedAmplitude": {"class": ImageTransformByNormalizedAmplitude}, |
| "AudioConcatenate": {"class": AudioConcatenate}, |
| |
| "SplineEditor": {"class": SplineEditor, "name": "Spline Editor"}, |
| "CreateShapeImageOnPath": {"class": CreateShapeImageOnPath, "name": "Create Shape Image On Path"}, |
| "CreateShapeMaskOnPath": {"class": CreateShapeMaskOnPath, "name": "Create Shape Mask On Path"}, |
| "CreateTextOnPath": {"class": CreateTextOnPath, "name": "Create Text On Path"}, |
| "CreateGradientFromCoords": {"class": CreateGradientFromCoords, "name": "Create Gradient From Coords"}, |
| "CutAndDragOnPath": {"class": CutAndDragOnPath, "name": "Cut And Drag On Path"}, |
| "GradientToFloat": {"class": GradientToFloat, "name": "Gradient To Float"}, |
| "WeightScheduleExtend": {"class": WeightScheduleExtend, "name": "Weight Schedule Extend"}, |
| "MaskOrImageToWeight": {"class": MaskOrImageToWeight, "name": "Mask Or Image To Weight"}, |
| "WeightScheduleConvert": {"class": WeightScheduleConvert, "name": "Weight Schedule Convert"}, |
| "FloatToMask": {"class": FloatToMask, "name": "Float To Mask"}, |
| "FloatToSigmas": {"class": FloatToSigmas, "name": "Float To Sigmas"}, |
| "SigmasToFloat": {"class": SigmasToFloat, "name": "Sigmas To Float"}, |
| "PlotCoordinates": {"class": PlotCoordinates, "name": "Plot Coordinates"}, |
| "InterpolateCoords": {"class": InterpolateCoords, "name": "Interpolate Coords"}, |
| "PointsEditor": {"class": PointsEditor, "name": "Points Editor"}, |
| |
| "SoundReactive": {"class": SoundReactive, "name": "Sound Reactive"}, |
| "StableZero123_BatchSchedule": {"class": StableZero123_BatchSchedule, "name": "Stable Zero123 Batch Schedule"}, |
| "SV3D_BatchSchedule": {"class": SV3D_BatchSchedule, "name": "SV3D Batch Schedule"}, |
| "Superprompt": {"class": Superprompt, "name": "Superprompt"}, |
| "GLIGENTextBoxApplyBatchCoords": {"class": GLIGENTextBoxApplyBatchCoords}, |
| "CheckpointPerturbWeights": {"class": CheckpointPerturbWeights, "name": "CheckpointPerturbWeights"}, |
| "Screencap_mss": {"class": Screencap_mss, "name": "Screencap mss"}, |
| "ScreencapStream": {"class": ScreencapStream, "name": "Screencap Stream"}, |
| "WebcamCaptureCV2": {"class": WebcamCaptureCV2, "name": "Webcam Capture CV2"}, |
| "DifferentialDiffusionAdvanced": {"class": DifferentialDiffusionAdvanced, "name": "Differential Diffusion Advanced"}, |
| "DiTBlockLoraLoader": {"class": DiTBlockLoraLoader, "name": "DiT Block Lora Loader"}, |
| "FluxBlockLoraSelect": {"class": FluxBlockLoraSelect, "name": "Flux Block Lora Select"}, |
| "HunyuanVideoBlockLoraSelect": {"class": HunyuanVideoBlockLoraSelect, "name": "Hunyuan Video Block Lora Select"}, |
| "Wan21BlockLoraSelect": {"class": Wan21BlockLoraSelect, "name": "Wan21 Block Lora Select"}, |
| "LTX2BlockLoraSelect": {"class": LTX2BlockLoraSelect, "name": "LTX2 Block Lora Select"}, |
| "CustomControlNetWeightsFluxFromList": {"class": CustomControlNetWeightsFluxFromList, "name": "Custom ControlNet Weights Flux From List"}, |
| "CheckpointLoaderKJ": {"class": CheckpointLoaderKJ, "name": "CheckpointLoaderKJ"}, |
| "DiffusionModelLoaderKJ": {"class": DiffusionModelLoaderKJ, "name": "Diffusion Model Loader KJ"}, |
| "TorchCompileModelFluxAdvancedV2": {"class": TorchCompileModelFluxAdvancedV2, "name": "TorchCompileModelFluxAdvancedV2"}, |
| "TorchCompileVAE": {"class": TorchCompileVAE, "name": "TorchCompileVAE"}, |
| "TorchCompileControlNet": {"class": TorchCompileControlNet, "name": "TorchCompileControlNet"}, |
| "TorchCompileModelWanVideoV2": {"class": TorchCompileModelWanVideoV2, "name": "TorchCompileModelWanVideoV2"}, |
| "PathchSageAttentionKJ": {"class": PathchSageAttentionKJ, "name": "Patch Sage Attention KJ"}, |
| "PatchFlashAttentionKJ": {"class": PatchFlashAttentionKJ, "name": "Patch Flash Attention KJ"}, |
| "LeapfusionHunyuanI2VPatcher": {"class": LeapfusionHunyuanI2V, "name": "Leapfusion Hunyuan I2V Patcher"}, |
| "VAELoaderKJ": {"class": VAELoaderKJ, "name": "VAELoader KJ"}, |
| "VAEMergeKJ": {"class": VAEMergeKJ, "name": "VAE Merge KJ"}, |
| "VAEDecodeLoopKJ": {"class": VAEDecodeLoopKJ, "name": "VAE Decode Loop KJ"}, |
| "ScheduledCFGGuidance": {"class": ScheduledCFGGuidance, "name": "Scheduled CFG Guidance"}, |
| "ApplyRifleXRoPE_HunuyanVideo": {"class": ApplyRifleXRoPE_HunuyanVideo, "name": "Apply RifleXRoPE HunuyanVideo"}, |
| "ApplyRifleXRoPE_WanVideo": {"class": ApplyRifleXRoPE_WanVideo, "name": "Apply RifleXRoPE WanVideo"}, |
| "WanVideoTeaCacheKJ": {"class": WanVideoTeaCacheKJ, "name": "WanVideo Tea Cache (native)"}, |
| "WanVideoEnhanceAVideoKJ": {"class": WanVideoEnhanceAVideoKJ, "name": "WanVideo Enhance A Video (native)"}, |
| "SkipLayerGuidanceWanVideo": {"class": SkipLayerGuidanceWanVideo, "name": "Skip Layer Guidance WanVideo"}, |
| "TimerNodeKJ": {"class": TimerNodeKJ, "name": "Timer Node KJ"}, |
| "HunyuanVideoEncodeKeyframesToCond": {"class": HunyuanVideoEncodeKeyframesToCond, "name": "HunyuanVideo Encode Keyframes To Cond"}, |
| "CFGZeroStarAndInit": {"class": CFGZeroStarAndInit, "name": "CFG Zero Star/Init"}, |
| "PiDColorBiasCorrection": {"class": PiDColorBiasCorrection, "name": "PiD Color Bias Correction"}, |
| "ModelPatchTorchSettings": {"class": ModelPatchTorchSettings, "name": "Model Patch Torch Settings"}, |
| "WanVideoNAG": {"class": WanVideoNAG, "name": "WanVideoNAG"}, |
| "Krea2PromptWeight": {"class": Krea2PromptWeight, "name": "Krea2 Prompt Weight"}, |
| "GGUFLoaderKJ": {"class": GGUFLoaderKJ, "name": "GGUF Loader KJ"}, |
| "LatentInpaintTTM": {"class": LatentInpaintTTM, "name": "Latent Inpaint TTM"}, |
| "NABLA_AttentionKJ": {"class": NABLA_AttentionKJ, "name": "NABLA Attention KJ"}, |
| "TorchCompileModelAdvanced": {"class": TorchCompileModelAdvanced, "name": "TorchCompileModelAdvanced"}, |
| "StartRecordCUDAMemoryHistory": {"class": StartRecordCUDAMemoryHistory, "name": "Start Recording CUDAMemory History"}, |
| "EndRecordCUDAMemoryHistory": {"class": EndRecordCUDAMemoryHistory, "name": "End Recording CUDAMemory History"}, |
| "VisualizeCUDAMemoryHistory": {"class": VisualizeCUDAMemoryHistory, "name": "Visualize CUDAMemory History"}, |
| "PreviewLatentNoiseMask": {"class": PreviewLatentNoiseMask, "name": "Preview Latent Noise Mask"}, |
| "ModelMemoryUseReportPatch": {"class": ModelMemoryUseReportPatch, "name": "Model Memory Use Report Patch"}, |
| "ModelMemoryUsageFactorOverride": {"class": ModelMemoryUsageFactorOverride, "name": "Model Memory Usage Factor Override"}, |
| "WanChunkFeedForward": {"class": WanChunkFeedForward, "name": "Wan ChunkFeedForward"}, |
| "Ideogram4OptimizationsKJ": {"class": Ideogram4OptimizationsKJ, "name": "Ideogram4 Optimizations KJ"}, |
| "SamplerSelfRefineVideo": {"class": SamplerSelfRefineVideo, "name": "Sampler SelfRefineVideo"}, |
| "PlaySoundKJ": {"class": PlaySoundKJ, "name": "Play Sound KJ"}, |
|
|
| |
| "CreateInstanceDiffusionTracking": {"class": CreateInstanceDiffusionTracking}, |
| "AppendInstanceDiffusionTracking": {"class": AppendInstanceDiffusionTracking}, |
| "DrawInstanceDiffusionTracking": {"class": DrawInstanceDiffusionTracking}, |
|
|
| |
| "LoraExtractKJ": {"class": LoraExtractKJ, "name": "LoraExtractKJ"}, |
| "LoraReduceRankKJ": {"class": LoraReduceRank, "name": "LoraReduceRank"}, |
|
|
| |
| "GetTrackRange": {"class": GetTrackRange, "name": "Get Track Range"}, |
| "AddNoiseToTrackPath": {"class": AddNoiseToTrackPath, "name": "Add Noise To Track"}, |
|
|
| |
| "ContextWindowsVisualizerKJ": {"class": ContextWindowsVisualizerKJ, "name": "Context Windows Visualizer (KJ)"}, |
| |
| "PatchModelPatcherOrder": {"class": PatchModelPatcherOrder, "name": "Patch Model Patcher Order"}, |
| "TorchCompileModelFluxAdvanced": {"class": DeprecatedCompileNodeKJ, "name": "TorchCompileModelFluxAdvanced"}, |
| "TorchCompileLTXModel": {"class": DeprecatedCompileNodeKJ, "name": "TorchCompileLTXModel"}, |
| "TorchCompileCosmosModel": {"class": DeprecatedCompileNodeKJ, "name": "TorchCompileCosmosModel"}, |
| "TorchCompileModelHyVideo": {"class": DeprecatedCompileNodeKJ, "name": "TorchCompileModelHyVideo"}, |
| "TorchCompileModelQwenImage": {"class": DeprecatedCompileNodeKJ, "name": "TorchCompileModelQwenImage"}, |
| "TorchCompileModelWanVideo": {"class": DeprecatedCompileNodeKJ, "name": "TorchCompileModelWanVideo"}, |
| } |
|
|
| |
| try: |
| from .nodes.ltxv_nodes import ( |
| LTXVAddGuideMulti, LTXVAddGuidesFromBatch, LTXVAudioVideoMask, LTX2_NAG, |
| LTXVChunkFeedForward, LTX2SamplingPreviewOverride, |
| LTX2AudioLatentNormalizingSampling, LTXVImgToVideoInplaceKJ, |
| LTX2AttentionTunerPatch, LTX2MemoryEfficientSageAttentionPatch, |
| LTX2LoraLoaderAdvanced, WanVideoMemoryEfficientSageAttentionPatch, |
| MiniMaxH3MemoryEfficientSageAttentionPatch, |
| ) |
| NODE_CONFIG.update({ |
| "LTXVEnhanceAVideoKJ": {"class": LTXVEnhanceAVideoKJ, "name": "LTXV Enhance A Video KJ"}, |
| "LTXVAddGuideMulti": {"class": LTXVAddGuideMulti, "name": "LTXV Add Guide Multi"}, |
| "LTXVAddGuidesFromBatch": {"class": LTXVAddGuidesFromBatch, "name": "LTXV Add Guides From Batch"}, |
| "LTXVAudioVideoMask": {"class": LTXVAudioVideoMask, "name": "LTXV Audio Video Mask"}, |
| "LTX2_NAG": {"class": LTX2_NAG, "name": "LTX2 NAG"}, |
| "LTXVChunkFeedForward": {"class": LTXVChunkFeedForward, "name": "LTXV Chunk Feed Forward"}, |
| "LTX2SamplingPreviewOverride": {"class": LTX2SamplingPreviewOverride, "name": "LTX2 Sampling Preview Override"}, |
| "LTX2AudioLatentNormalizingSampling": {"class": LTX2AudioLatentNormalizingSampling, "name": "LTX2 Audio Latent Normalizing Sampling"}, |
| "LTXVImgToVideoInplaceKJ": {"class": LTXVImgToVideoInplaceKJ, "name": "LTXV Img To Video Inplace KJ"}, |
| "LTX2AttentionTunerPatch": {"class": LTX2AttentionTunerPatch, "name": "LTX2 Attention Tuner Patch"}, |
| "LTX2MemoryEfficientSageAttentionPatch": {"class": LTX2MemoryEfficientSageAttentionPatch, "name": "LTX2 Memory Efficient Sage Attention Patch"}, |
| "LTX2LoraLoaderAdvanced": {"class": LTX2LoraLoaderAdvanced, "name": "LTX2 Lora Loader Advanced"}, |
| "WanVideoMemoryEfficientSageAttentionPatch": {"class": WanVideoMemoryEfficientSageAttentionPatch, "name": "WanVideo Memory Efficient Sage Attention Patch"}, |
| "MiniMaxH3MemoryEfficientSageAttentionPatch": {"class": MiniMaxH3MemoryEfficientSageAttentionPatch, "name": "MiniMax H3 Memory Efficient Sage Attention Patch"}, |
| }) |
| except Exception as e: |
| logging.warning(f"KJNodes: LTXV nodes could not be imported. LTXV nodes will be unavailable. Error: {e}", exc_info=True) |
|
|
| try: |
| from .nodes.triton_vae import PatchTritonVAE |
| NODE_CONFIG.update({ |
| "PatchTritonVAE": {"class": PatchTritonVAE, "name": "Patch Triton VAE"}, |
| }) |
| except Exception: |
| logging.warning("KJNodes: PatchTritonVAE node could not be imported. PatchTritonVAE will be unavailable.", exc_info=True) |
|
|
| def generate_node_mappings(node_config): |
| node_class_mappings = {} |
| node_display_name_mappings = {} |
|
|
| for node_name, node_info in node_config.items(): |
| node_class_mappings[node_name] = node_info["class"] |
| node_display_name_mappings[node_name] = node_info.get("name", node_info["class"].__name__) |
|
|
| return node_class_mappings, node_display_name_mappings |
|
|
| NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS = generate_node_mappings(NODE_CONFIG) |
|
|
| __all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"] |
|
|
| WEB_DIRECTORY = "./web" |
|
|
| from aiohttp import web |
| from server import PromptServer |
| from pathlib import Path |
|
|
| if hasattr(PromptServer, "instance"): |
| |
| if not PromptServer.instance.app.router.frozen: |
| try: |
| PromptServer.instance.app.add_routes( |
| [web.static("/kjweb_async", (Path(__file__).parent.absolute() / "kjweb_async").as_posix())] |
| ) |
| except Exception: |
| logging.exception("KJNodes: failed to register /kjweb_async static route") |
|
|